Immutable published snapshots of a workflow’s step graph - one row per publish, never edited or deleted. Version history: filter.workflow_sid, sort version desc; items carry the FULL steps JSON - keep page_size small (history rarely exceeds 20). include workflow_records_counts = how many records are pinned to each version and in which statuses (the drift check after a republish). page_size:0 = counts only. To change steps edit the workflow’s draft_steps and publish.
Contract:
MCP tool search_workflow_versions, registry package mcp.playtables/workflow_versions, mount playtables.workflows.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"GetSales","description":"REST API and MCP server of GetSales: tables of people and companies, enrichment columns, data sources, multichannel workflows, the team inbox with the AI SDR, website signals, billing and webhooks.","colors":{"primary":"#4B64FF","light":"#8E92FF","dark":"#4B64FF"},"logo":{"light":"https://mintcdn.com/getsales/um-g-UJLB97yTl7a/logo/light.svg?fit=max\u0026auto=format\u0026n=um-g-UJLB97yTl7a\u0026q=85\u0026s=428985b239f36914fa7e1e44f6211540","dark":"https://mintcdn.com/getsales/um-g-UJLB97yTl7a/logo/dark.svg?fit=max\u0026auto=format\u0026n=um-g-UJLB97yTl7a\u0026q=85\u0026s=5d6ddba134f76dc1a6fc235f12fd2477","href":"https://getsales.io"},"favicon":"https://mintcdn.com/getsales/um-g-UJLB97yTl7a/favicon.svg?fit=max\u0026auto=format\u0026n=um-g-UJLB97yTl7a\u0026q=85\u0026s=6750a85bc743ceebf9a7429797a7d21b","navbar":{"links":[{"href":"https://getsales.io/pricing/","label":"Pricing"},{"href":"https://help.getsales.io/","label":"Help centre"}],"primary":{"type":"button","label":"Start free","href":"https://beta.getsales.io/signup"}},"footer":{"socials":{"github":"https://github.com/getsales-io","website":"https://getsales.io"},"links":[{"header":"Product","items":[{"label":"Home","href":"https://getsales.io"},{"label":"Pricing","href":"https://getsales.io/pricing"},{"label":"Sign in","href":"https://beta.getsales.io/login"}]},{"header":"Resources","items":[{"label":"Blog","href":"https://getsales.io/blog"},{"label":"Help centre","href":"https://help.getsales.io/"}]}]},"seo":{"metatags":{"canonical":"https://docs.getsales.io"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"getsales","hasAudioNarration":false,"actualSubdomain":"getsales","customDomains":[],"gitSource":{"type":"github","owner":"getsales-io","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":"","_id":"6ae6c0b853ca202614c15e7c"},"chroma":{"latestBuiltDeploymentHistoryId":"6ae6c9000339475b5aab52ec","collectionId":"850288c1-9e96-4253-bd95-144e66a0e4fa","liveDeploymentHistoryId":"6ae6c9000339475b5aab52ec","schemaVersion":"v3"},"entitlements":{},"buildId":"6ae6cd2bc01b8679a4aef318","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"API Reference","count":412},{"language":"default","tag":"Playtables API","count":142},{"language":"default","tag":"Unibox API","count":125},{"language":"default","tag":"ID and Teams API","count":88},{"language":"default","tag":"sender_profiles","count":33},{"language":"default","tag":"Signals API","count":30},{"language":"default","tag":"Integrations API","count":26},{"language":"default","tag":"agents","count":14},{"language":"default","tag":"data_sources","count":13},{"language":"default","tag":"playtable_fields","count":13}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/playtables/workflow_versions/search-workflow-versions","slug":"/api-reference/playtables/workflow_versions/search-workflow-versions","pageMetadata":{"title":"Search workflow versions","description":"Immutable published snapshots of a workflow's step graph - one row per publish, never edited or deleted. Version history: filter.workflow_sid, sort version desc; items carry the FULL steps JSON - keep page_size small (history rarely exceeds 20). include workflow_records_counts = how many records are pinned to each version and in which statuses (the drift check after a republish). page_size:0 = counts only. To change steps edit the workflow's draft_steps and publish.\n\nContract:\n- MCP tool `search_workflow_versions`, registry package `mcp.playtables/workflow_versions`, mount `playtables.workflows`.\n- Operation `search`, response envelope `search`.\n- Flags: read only.","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-versions/search","href":"/api-reference/playtables/workflow_versions/search-workflow-versions","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Immutable published snapshots of a workflow’s step graph - one row per publish, never edited or deleted. Version history: filter.workflow_sid, sort version desc; items carry the FULL steps JSON - keep page_size small (history rarely exceeds 20). include workflow_records_counts = how many records are pinned to each version and in which statuses (the drift check after a republish). page_size:0 = counts only. To change steps edit the workflow’s draft_steps and publish.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Contract:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"MCP tool \", _jsx(_components.code, {\n children: \"search_workflow_versions\"\n }), \", registry package \", _jsx(_components.code, {\n children: \"mcp.playtables/workflow_versions\"\n }), \", mount \", _jsx(_components.code, {\n children: \"playtables.workflows\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Operation \", _jsx(_components.code, {\n children: \"search\"\n }), \", response envelope \", _jsx(_components.code, {\n children: \"search\"\n }), \".\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"Flags: read only.\"\n }), \"\\n\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Search workflow versions","description":"Immutable published snapshots of a workflow's step graph - one row per publish, never edited or deleted. Version history: filter.workflow_sid, sort version desc; items carry the FULL steps JSON - keep page_size small (history rarely exceeds 20). include workflow_records_counts = how many records are pinned to each version and in which statuses (the drift check after a republish). page_size:0 = counts only. To change steps edit the workflow's draft_steps and publish.\n\nContract:\n- MCP tool `search_workflow_versions`, registry package `mcp.playtables/workflow_versions`, mount `playtables.workflows`.\n- Operation `search`, response envelope `search`.\n- Flags: read only.","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-versions/search","href":"/api-reference/playtables/workflow_versions/search-workflow-versions","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"search_workflow_versions","summary":"Search workflow versions","description":"Immutable published snapshots of a workflow's step graph - one row per publish, never edited or deleted. Version history: filter.workflow_sid, sort version desc; items carry the FULL steps JSON - keep page_size small (history rarely exceeds 20). include workflow_records_counts = how many records are pinned to each version and in which statuses (the drift check after a republish). page_size:0 = counts only. To change steps edit the workflow's draft_steps and publish.\n\nContract:\n- MCP tool `search_workflow_versions`, registry package `mcp.playtables/workflow_versions`, mount `playtables.workflows`.\n- Operation `search`, response envelope `search`.\n- Flags: read only.","tags":["workflow_versions"],"requestBody":"a704ca68-c4f4-4d4d-a611-c5021fa326a7","responses":{"200":"5dc0d0c0-dc4a-4320-8d81-eae8a5239b92","4XX":"07b95480-a908-49f4-9ad3-7b4dc241f2fa","5XX":"508f1e6d-12e3-467f-8f54-22ed2d4904db"},"x-gs-mcp-tool":"search_workflow_versions","x-gs-mcp-mount":"playtables.workflows","x-gs-entity":"workflow_versions","x-gs-operation":"search","x-gs-envelope":"search","x-gs-availability":"ga","x-gs-dangerous":false,"x-gs-mass-action":false,"x-gs-step-eligible":false,"x-gs-schedule-required":false,"x-gs-tool-class":"typical","method":"post","type":"path","servers":["71624634-b298-4b81-ba22-a05986db64c0"],"security":["d3ab5cdd-2aa1-426f-93da-16562fad923f"],"path":"/api/workflow-versions/search","baseUrlOptions":["https://beta.getsales.io/playtables/v1"],"title":"Search workflow versions","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","description":"Request body of `search_workflow_versions`.","properties":{"filter":{"type":"object","properties":{"sid":{"type":"object","properties":{"eq":{"type":"string","minLength":18,"maxLength":18,"pattern":"^wf_vr_","description":"Workflow version sid (wf_vr_…).","uniqueKey":"filter.sid.eq","typeLabel":"string"},"in":{"type":"array","items":{"type":"string","minLength":18,"maxLength":18,"pattern":"^wf_vr_","description":"Workflow version sid (wf_vr_…).","uniqueKey":"filter.sid.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"filter.sid.in","typeLabel":"string[]"}},"additionalProperties":false,"description":"Version sid(s), wf_vr_ prefix (prefix-validated).","uniqueKey":"filter.sid","typeLabel":"object"},"workflow_sid":{"type":"object","properties":{"eq":{"type":"string","minLength":18,"maxLength":18,"pattern":"^wf_wf_","description":"Parent workflow sid (wf_wf_…).","uniqueKey":"filter.workflow_sid.eq","typeLabel":"string"},"in":{"type":"array","items":{"type":"string","minLength":18,"maxLength":18,"pattern":"^wf_wf_","description":"Parent workflow sid (wf_wf_…).","uniqueKey":"filter.workflow_sid.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"filter.workflow_sid.in","typeLabel":"string[]"}},"additionalProperties":false,"description":"History scope - versions of one workflow (wf_wf_…).","uniqueKey":"filter.workflow_sid","typeLabel":"object"},"version":{"type":"object","properties":{"eq":{"type":"integer","minimum":1,"uniqueKey":"filter.version.eq","typeLabel":"integer"},"gte":{"type":"integer","minimum":1,"uniqueKey":"filter.version.gte","typeLabel":"integer"},"lte":{"type":"integer","minimum":1,"uniqueKey":"filter.version.lte","typeLabel":"integer"},"gt":{"type":"integer","minimum":1,"uniqueKey":"filter.version.gt","typeLabel":"integer"},"lt":{"type":"integer","minimum":1,"uniqueKey":"filter.version.lt","typeLabel":"integer"}},"additionalProperties":false,"description":"Per-workflow sequence number (\"versions after v5\"); meaningful with a workflow_sid filter.","uniqueKey":"filter.version","typeLabel":"object"},"created_at":{"type":"object","properties":{"gte":{"type":"string","uniqueKey":"filter.created_at.gte","typeLabel":"string"},"lte":{"type":"string","uniqueKey":"filter.created_at.lte","typeLabel":"string"},"gt":{"type":"string","uniqueKey":"filter.created_at.gt","typeLabel":"string"},"lt":{"type":"string","uniqueKey":"filter.created_at.lt","typeLabel":"string"}},"additionalProperties":false,"description":"Publish moment, ISO 8601 range (\"what was live last week\"); combine bounds in one object.","uniqueKey":"filter.created_at","typeLabel":"object"}},"description":"Field filters, ANDed: {field: {eq | ne | in | nin | gte | lte | gt | lt | is_null}}; q inside it is free text. Omit for every row.","uniqueKey":"filter","typeLabel":"object"},"include":{"type":"array","items":{"type":"string","enum":["workflow","workflow_records_counts"],"uniqueKey":"include.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Relations to attach to every item; omit for the bare rows.","uniqueKey":"include","typeLabel":"enum\u003cstring>[]"},"sort":{"type":"object","properties":{"field":{"type":"string","enum":["created_at","version"],"description":"The column to order by.","isRequired":true,"uniqueKey":"sort.field","typeLabel":"enum\u003cstring>"},"direction":{"type":"string","enum":["asc","desc"],"description":"asc or desc; default desc.","uniqueKey":"sort.direction","typeLabel":"enum\u003cstring>"}},"required":["field"],"description":"One column and its direction; omit for the default order.","uniqueKey":"sort","typeLabel":"object"},"page_size":{"type":"integer","minimum":0,"maximum":100,"description":"A version row carries the whole step tree, so a page is capped at 100 here (the platform default is 500).","uniqueKey":"page_size","typeLabel":"integer"},"cursor":{"oneOf":[{"type":"string","description":"pagination.next_cursor of the previous page.","uniqueKey":"cursor.oneOf.0","typeLabel":"string"},{"type":"null","description":"pagination.next_cursor of the previous page.","uniqueKey":"cursor.oneOf.1","typeLabel":"null"}],"uniqueKey":"cursor","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"filter":{"sid":{"eq":"\u003cstring>","in":["\u003cstring>"]},"workflow_sid":{"eq":"\u003cstring>","in":["\u003cstring>"]},"version":{"eq":2,"gte":2,"lte":2,"gt":2,"lt":2},"created_at":{"gte":"\u003cstring>","lte":"\u003cstring>","gt":"\u003cstring>","lt":"\u003cstring>"}},"include":[],"page_size":50,"cursor":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"5dc0d0c0-dc4a-4320-8d81-eae8a5239b92":{"description":"`search` success envelope.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"success","typeLabel":"enum\u003cboolean>"},"operation":{"type":"string","enum":["search"],"isRequired":true,"uniqueKey":"operation","typeLabel":"enum\u003cstring>"},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"object","properties":{"sid":{"type":"string","description":"Version sid (wf_vr_…).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.sid","typeLabel":"string"},"team_sid":{"type":"string","description":"Owning team (ts_tm_…, external - gs.service.id).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.team_sid","typeLabel":"string"},"workflow_sid":{"type":"string","description":"Parent workflow (wf_wf_…) - written once at publish, never repointed; see ./workflows.md.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.workflow_sid","typeLabel":"string"},"version":{"type":"integer","minimum":1,"description":"Per-workflow sequence, max+1 at publish (serialized by the publish FOR UPDATE on the workflow row).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.version","typeLabel":"integer"},"steps":{"type":"array","items":{"oneOf":[{"type":"object","required":["id","type"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.0.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_send_connection_request"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.0.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.0.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.0.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.0.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.0.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.0.delay","typeLabel":"string | null"},"message":{"oneOf":[{"type":"string","description":"Invite note template; rendered note \u003c=300 chars - enforced at publish after variable resolution (research: max 300 RENDERED). null/omitted = blank invite.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.0.message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Invite note template; rendered note \u003c=300 chars - enforced at publish after variable resolution (research: max 300 RENDERED). null/omitted = blank invite.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.0.message.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.0.message","typeLabel":"string | null"},"required_fields":{"oneOf":[{"type":"object","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.0.required_fields.oneOf.0.refs.items.[INDEX]","typeLabel":"string"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.0.required_fields.oneOf.0.refs","typeLabel":"string[]"},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.0.required_fields.oneOf.0.on_missing","typeLabel":"enum\u003cstring>"}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the note needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.0.required_fields.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish."},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11."}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the note needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.0.required_fields.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.0.required_fields","typeLabel":"object | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["id","type","message"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.1.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_send_message"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":8000,"description":"Message template ({{people.*}} / {{company.*}} / {{record.\u003cslug>}} / {{ai.\u003ckey>}}); rendered at task time.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.1.message","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.1.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.1.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.1.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.1.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.1.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.1.delay","typeLabel":"string | null"},"required_fields":{"oneOf":[{"type":"object","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.1.required_fields.oneOf.0.refs.items.[INDEX]","typeLabel":"string"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.1.required_fields.oneOf.0.refs","typeLabel":"string[]"},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.1.required_fields.oneOf.0.on_missing","typeLabel":"enum\u003cstring>"}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the text needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.1.required_fields.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish."},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11."}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the text needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.1.required_fields.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.1.required_fields","typeLabel":"object | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["id","type","message"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_send_inmail"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":8000,"description":"InMail body template, 1..8000.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2.message","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2.delay","typeLabel":"string | null"},"subject":{"oneOf":[{"type":"string","maxLength":200,"description":"InMail subject template, max 200.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2.subject.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":200,"description":"InMail subject template, max 200.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2.subject.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2.subject","typeLabel":"string | null"},"required_fields":{"oneOf":[{"type":"object","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2.required_fields.oneOf.0.refs.items.[INDEX]","typeLabel":"string"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2.required_fields.oneOf.0.refs","typeLabel":"string[]"},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2.required_fields.oneOf.0.on_missing","typeLabel":"enum\u003cstring>"}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the text needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2.required_fields.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish."},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11."}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the text needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2.required_fields.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2.required_fields","typeLabel":"object | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["id","type"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.3.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_visit_profile"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.3.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.3.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.3.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.3.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.3.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.3.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["id","type","skills_count"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.4.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_endorse_skills"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"skills_count":{"type":"integer","minimum":1,"maximum":10,"description":"Endorse the person's top N listed skills, 1..10 (named-skill targeting deferred - count-only in v1).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.4.skills_count","typeLabel":"integer"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.4.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.4.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.4.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.4.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.4.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.4.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["id","type"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.5.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_withdraw_connection_request"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.5.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.5.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.5.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.5.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.5.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.5.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["id","type"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.6.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_like_latest_post"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.6.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.6.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.6.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.6.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.6.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.6.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.6.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","required":["id","type","comment"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.7.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_comment_latest_post"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.7.type","typeLabel":"enum\u003cstring>"},"comment":{"type":"string","minLength":1,"maxLength":1250,"description":"Comment template posted on the person's latest post, 1..1250 rendered; same variable namespaces as message templates.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.7.comment","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.7.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.7.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.7.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.7.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.7.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.7.delay","typeLabel":"string | null"},"required_fields":{"oneOf":[{"type":"object","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.7.required_fields.oneOf.0.refs.items.[INDEX]","typeLabel":"string"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.7.required_fields.oneOf.0.refs","typeLabel":"string[]"},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.7.required_fields.oneOf.0.on_missing","typeLabel":"enum\u003cstring>"}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the comment needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.7.required_fields.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish."},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11."}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the comment needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.7.required_fields.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.7.required_fields","typeLabel":"object | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","required":["id","type","subject","body"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.id","typeLabel":"integer"},"type":{"type":"string","enum":["email_send"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.type","typeLabel":"enum\u003cstring>"},"subject":{"type":"string","minLength":1,"maxLength":255,"description":"Email subject template, 1..255.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.subject","typeLabel":"string"},"body":{"type":"string","minLength":1,"maxLength":100000,"description":"Email body template, HTML, 1..100000.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.body","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.delay","typeLabel":"string | null"},"required_fields":{"oneOf":[{"type":"object","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.required_fields.oneOf.0.refs.items.[INDEX]","typeLabel":"string"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.required_fields.oneOf.0.refs","typeLabel":"string[]"},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.required_fields.oneOf.0.on_missing","typeLabel":"enum\u003cstring>"}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the text needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.required_fields.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish."},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11."}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the text needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.required_fields.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.required_fields","typeLabel":"object | null"},"email_field":{"oneOf":[{"type":"string","description":"Which address the send uses: any | work_email | personal_email; omitted or any = the best one.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.email_field.oneOf.0","typeLabel":"string"},{"type":"null","description":"Which address the send uses: any | work_email | personal_email; omitted or any = the best one.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.email_field.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.email_field","typeLabel":"string | null"},"cc":{"oneOf":[{"type":"array","items":{"type":"string","maxLength":320,"format":"email","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.cc.oneOf.0.items.[INDEX]","typeLabel":"string\u003cemail>"},"maxItems":5,"description":"Up to 5 literal copy addresses (no templates: a copy goes to a colleague).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.cc.oneOf.0","typeLabel":"string\u003cemail>[]"},{"type":"null","items":{"type":"string","maxLength":320,"format":"email"},"maxItems":5,"description":"Up to 5 literal copy addresses (no templates: a copy goes to a colleague).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.cc.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.cc","typeLabel":"string\u003cemail>[] | null"},"bcc":{"oneOf":[{"type":"array","items":{"type":"string","maxLength":320,"format":"email","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.bcc.oneOf.0.items.[INDEX]","typeLabel":"string\u003cemail>"},"maxItems":5,"description":"Up to 5 literal blind-copy addresses.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.bcc.oneOf.0","typeLabel":"string\u003cemail>[]"},{"type":"null","items":{"type":"string","maxLength":320,"format":"email"},"maxItems":5,"description":"Up to 5 literal blind-copy addresses.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.bcc.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.bcc","typeLabel":"string\u003cemail>[] | null"},"attachments":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"sid":{"type":"string","minLength":18,"maxLength":18,"pattern":"^wf_at_","description":"A workflow attachment the team uploaded (create_workflow_attachment_upload_url).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.attachments.oneOf.0.items.[INDEX].sid","typeLabel":"string"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"The filename the receiver sees.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.attachments.oneOf.0.items.[INDEX].name","typeLabel":"string"}},"required":["sid","name"],"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.attachments.oneOf.0.items.[INDEX]","typeLabel":"object"},"maxItems":5,"description":"Up to 5 library files sent with the email; the executor reads the bytes at send time.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.attachments.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"sid":{"type":"string","minLength":18,"maxLength":18,"pattern":"^wf_at_","description":"A workflow attachment the team uploaded (create_workflow_attachment_upload_url)."},"name":{"type":"string","minLength":1,"maxLength":255,"description":"The filename the receiver sees."}},"required":["sid","name"],"additionalProperties":false},"maxItems":5,"description":"Up to 5 library files sent with the email; the executor reads the bytes at send time.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.attachments.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.attachments","typeLabel":"object[] | null"},"reply_in_thread":{"oneOf":[{"type":"boolean","description":"True threads the send onto the prior email exchange.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.reply_in_thread.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True threads the send onto the prior email exchange.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.reply_in_thread.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.reply_in_thread","typeLabel":"boolean | null"},"track_opens":{"oneOf":[{"type":"boolean","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.track_opens.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.track_opens.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.track_opens","typeLabel":"boolean | null"},"track_clicks":{"oneOf":[{"type":"boolean","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.track_clicks.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.track_clicks.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.track_clicks","typeLabel":"boolean | null"},"unsubscribe_link":{"oneOf":[{"type":"boolean","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.unsubscribe_link.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.unsubscribe_link.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8.unsubscribe_link","typeLabel":"boolean | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","required":["id","type","for"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.9.id","typeLabel":"integer"},"type":{"type":"string","enum":["wait"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.9.type","typeLabel":"enum\u003cstring>"},"for":{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long to pause the record before the next step - \"45m\" / \"12h\" / \"14d\" (replaces v3 timer.duration_seconds).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.9.for","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.9.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.9.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.9.name","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","required":["id","type","event","timeout"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.id","typeLabel":"integer"},"type":{"type":"string","enum":["wait_for_event"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.type","typeLabel":"enum\u003cstring>"},"event":{"type":"string","enum":["linkedin_connection_request_accepted","email_opened","email_link_clicked"],"description":"Event a wait_for_event step blocks on (observed via activities ingest).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.event","typeLabel":"enum\u003cstring>"},"timeout":{"type":"object","properties":{"after":{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"Timeout duration - bundled: a timeout path cannot exist without one.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.after","typeLabel":"string"},"steps":{"type":"array","items":{"oneOf":[{"type":"object","required":["id","type"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.0.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_send_connection_request"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.0.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.0.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.0.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.0.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.0.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.0.delay","typeLabel":"string | null"},"message":{"oneOf":[{"type":"string","description":"Invite note template; rendered note \u003c=300 chars - enforced at publish after variable resolution (research: max 300 RENDERED). null/omitted = blank invite.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.0.message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Invite note template; rendered note \u003c=300 chars - enforced at publish after variable resolution (research: max 300 RENDERED). null/omitted = blank invite.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.0.message.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.0.message","typeLabel":"string | null"},"required_fields":{"oneOf":[{"type":"object","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.0.required_fields.oneOf.0.refs.items.[INDEX]","typeLabel":"string"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.0.required_fields.oneOf.0.refs","typeLabel":"string[]"},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.0.required_fields.oneOf.0.on_missing","typeLabel":"enum\u003cstring>"}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the note needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.0.required_fields.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish."},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11."}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the note needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.0.required_fields.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.0.required_fields","typeLabel":"object | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["id","type","message"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.1.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_send_message"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":8000,"description":"Message template ({{people.*}} / {{company.*}} / {{record.\u003cslug>}} / {{ai.\u003ckey>}}); rendered at task time.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.1.message","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.1.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.1.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.1.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.1.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.1.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.1.delay","typeLabel":"string | null"},"required_fields":{"oneOf":[{"type":"object","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.1.required_fields.oneOf.0.refs.items.[INDEX]","typeLabel":"string"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.1.required_fields.oneOf.0.refs","typeLabel":"string[]"},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.1.required_fields.oneOf.0.on_missing","typeLabel":"enum\u003cstring>"}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the text needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.1.required_fields.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish."},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11."}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the text needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.1.required_fields.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.1.required_fields","typeLabel":"object | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["id","type","message"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_send_inmail"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":8000,"description":"InMail body template, 1..8000.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2.message","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2.delay","typeLabel":"string | null"},"subject":{"oneOf":[{"type":"string","maxLength":200,"description":"InMail subject template, max 200.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2.subject.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":200,"description":"InMail subject template, max 200.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2.subject.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2.subject","typeLabel":"string | null"},"required_fields":{"oneOf":[{"type":"object","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2.required_fields.oneOf.0.refs.items.[INDEX]","typeLabel":"string"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2.required_fields.oneOf.0.refs","typeLabel":"string[]"},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2.required_fields.oneOf.0.on_missing","typeLabel":"enum\u003cstring>"}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the text needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2.required_fields.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish."},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11."}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the text needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2.required_fields.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2.required_fields","typeLabel":"object | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["id","type"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.3.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_visit_profile"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.3.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.3.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.3.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.3.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.3.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.3.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["id","type","skills_count"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.4.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_endorse_skills"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"skills_count":{"type":"integer","minimum":1,"maximum":10,"description":"Endorse the person's top N listed skills, 1..10 (named-skill targeting deferred - count-only in v1).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.4.skills_count","typeLabel":"integer"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.4.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.4.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.4.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.4.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.4.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.4.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["id","type"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.5.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_withdraw_connection_request"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.5.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.5.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.5.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.5.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.5.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.5.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["id","type"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.6.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_like_latest_post"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.6.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.6.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.6.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.6.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.6.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.6.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.6.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","required":["id","type","comment"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.7.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_comment_latest_post"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.7.type","typeLabel":"enum\u003cstring>"},"comment":{"type":"string","minLength":1,"maxLength":1250,"description":"Comment template posted on the person's latest post, 1..1250 rendered; same variable namespaces as message templates.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.7.comment","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.7.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.7.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.7.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.7.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.7.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.7.delay","typeLabel":"string | null"},"required_fields":{"oneOf":[{"type":"object","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.7.required_fields.oneOf.0.refs.items.[INDEX]","typeLabel":"string"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.7.required_fields.oneOf.0.refs","typeLabel":"string[]"},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.7.required_fields.oneOf.0.on_missing","typeLabel":"enum\u003cstring>"}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the comment needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.7.required_fields.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish."},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11."}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the comment needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.7.required_fields.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.7.required_fields","typeLabel":"object | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","required":["id","type","subject","body"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.id","typeLabel":"integer"},"type":{"type":"string","enum":["email_send"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.type","typeLabel":"enum\u003cstring>"},"subject":{"type":"string","minLength":1,"maxLength":255,"description":"Email subject template, 1..255.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.subject","typeLabel":"string"},"body":{"type":"string","minLength":1,"maxLength":100000,"description":"Email body template, HTML, 1..100000.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.body","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.delay","typeLabel":"string | null"},"required_fields":{"oneOf":[{"type":"object","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.required_fields.oneOf.0.refs.items.[INDEX]","typeLabel":"string"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.required_fields.oneOf.0.refs","typeLabel":"string[]"},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.required_fields.oneOf.0.on_missing","typeLabel":"enum\u003cstring>"}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the text needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.required_fields.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish."},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11."}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the text needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.required_fields.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.required_fields","typeLabel":"object | null"},"email_field":{"oneOf":[{"type":"string","description":"Which address the send uses: any | work_email | personal_email; omitted or any = the best one.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.email_field.oneOf.0","typeLabel":"string"},{"type":"null","description":"Which address the send uses: any | work_email | personal_email; omitted or any = the best one.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.email_field.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.email_field","typeLabel":"string | null"},"cc":{"oneOf":[{"type":"array","items":{"type":"string","maxLength":320,"format":"email","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.cc.oneOf.0.items.[INDEX]","typeLabel":"string\u003cemail>"},"maxItems":5,"description":"Up to 5 literal copy addresses (no templates: a copy goes to a colleague).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.cc.oneOf.0","typeLabel":"string\u003cemail>[]"},{"type":"null","items":{"type":"string","maxLength":320,"format":"email"},"maxItems":5,"description":"Up to 5 literal copy addresses (no templates: a copy goes to a colleague).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.cc.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.cc","typeLabel":"string\u003cemail>[] | null"},"bcc":{"oneOf":[{"type":"array","items":{"type":"string","maxLength":320,"format":"email","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.bcc.oneOf.0.items.[INDEX]","typeLabel":"string\u003cemail>"},"maxItems":5,"description":"Up to 5 literal blind-copy addresses.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.bcc.oneOf.0","typeLabel":"string\u003cemail>[]"},{"type":"null","items":{"type":"string","maxLength":320,"format":"email"},"maxItems":5,"description":"Up to 5 literal blind-copy addresses.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.bcc.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.bcc","typeLabel":"string\u003cemail>[] | null"},"attachments":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"sid":{"type":"string","minLength":18,"maxLength":18,"pattern":"^wf_at_","description":"A workflow attachment the team uploaded (create_workflow_attachment_upload_url).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.attachments.oneOf.0.items.[INDEX].sid","typeLabel":"string"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"The filename the receiver sees.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.attachments.oneOf.0.items.[INDEX].name","typeLabel":"string"}},"required":["sid","name"],"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.attachments.oneOf.0.items.[INDEX]","typeLabel":"object"},"maxItems":5,"description":"Up to 5 library files sent with the email; the executor reads the bytes at send time.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.attachments.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"sid":{"type":"string","minLength":18,"maxLength":18,"pattern":"^wf_at_","description":"A workflow attachment the team uploaded (create_workflow_attachment_upload_url)."},"name":{"type":"string","minLength":1,"maxLength":255,"description":"The filename the receiver sees."}},"required":["sid","name"],"additionalProperties":false},"maxItems":5,"description":"Up to 5 library files sent with the email; the executor reads the bytes at send time.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.attachments.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.attachments","typeLabel":"object[] | null"},"reply_in_thread":{"oneOf":[{"type":"boolean","description":"True threads the send onto the prior email exchange.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.reply_in_thread.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True threads the send onto the prior email exchange.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.reply_in_thread.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.reply_in_thread","typeLabel":"boolean | null"},"track_opens":{"oneOf":[{"type":"boolean","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.track_opens.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.track_opens.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.track_opens","typeLabel":"boolean | null"},"track_clicks":{"oneOf":[{"type":"boolean","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.track_clicks.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.track_clicks.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.track_clicks","typeLabel":"boolean | null"},"unsubscribe_link":{"oneOf":[{"type":"boolean","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.unsubscribe_link.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.unsubscribe_link.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8.unsubscribe_link","typeLabel":"boolean | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","required":["id","type","for"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.9.id","typeLabel":"integer"},"type":{"type":"string","enum":["wait"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.9.type","typeLabel":"enum\u003cstring>"},"for":{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long to pause the record before the next step - \"45m\" / \"12h\" / \"14d\" (replaces v3 timer.duration_seconds).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.9.for","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.9.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.9.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.9.name","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","required":["id","type","event","timeout"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.10.id","typeLabel":"integer"},"type":{"type":"string","enum":["wait_for_event"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.10.type","typeLabel":"enum\u003cstring>"},"event":{"type":"string","enum":["linkedin_connection_request_accepted","email_opened","email_link_clicked"],"description":"Event a wait_for_event step blocks on (observed via activities ingest).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.10.event","typeLabel":"enum\u003cstring>"},"timeout":{"type":"object","properties":{"after":{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"Timeout duration - bundled: a timeout path cannot exist without one.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.10.timeout.after","typeLabel":"string"},"steps":{"type":"array","items":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"Recursive node: the same object shape repeats here. A static OpenAPI document cannot express the cycle, so this level is documented as an open object.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX]","typeLabel":"object"},"description":"Fallback sub-flow; [] = on timeout, continue as if the event fired; falls through to the parent chain unless it ends with `end`.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.10.timeout.steps","typeLabel":"object[]"}},"required":["after","steps"],"additionalProperties":false,"description":"Required since 2026-10-11: a wait always has a time limit (a wait with no end is a stuck journey); steps: [] = on timeout, continue as if the event fired. The reply-pause machinery still applies (KNOWLEDGE §4.9).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.10.timeout","typeLabel":"object"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.10.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.10.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.10.name","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.10","typeLabel":"object"},{"type":"object","required":["id","type","branches","else"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.11.id","typeLabel":"integer"},"type":{"type":"string","enum":["condition"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.11.type","typeLabel":"enum\u003cstring>"},"branches":{"type":"array","items":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.11.branches.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"Recursive node: the same object shape repeats here. A static OpenAPI document cannot express the cycle, so this level is documented as an open object.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.11.branches.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":9,"description":"1..9, evaluated in order, first match wins; the fired branch id lands on the condition task result (workflow_tasks.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.11.branches","typeLabel":"object[]"},"else":{"type":"array","items":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.11.else.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"Recursive node: the same object shape repeats here. A static OpenAPI document cannot express the cycle, so this level is documented as an open object.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.11.else.items.[INDEX]","typeLabel":"object"},"description":"REQUIRED no-match path (may be []); falls through unless it ends with `end`.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.11.else","typeLabel":"object[]"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.11.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.11.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.11.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.11.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.11.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.11.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.11","typeLabel":"object"},{"type":"object","required":["id","type","branches"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.12.id","typeLabel":"integer"},"type":{"type":"string","enum":["ab_test"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.12.type","typeLabel":"enum\u003cstring>"},"branches":{"type":"array","items":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.12.branches.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"Recursive node: the same object shape repeats here. A static OpenAPI document cannot express the cycle, so this level is documented as an open object.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.12.branches.items.[INDEX]","typeLabel":"object"},"minItems":2,"maxItems":9,"description":"2..9 weighted arms; the record is assigned to one deterministically by hashing its sid into the weight distribution (workflow_versions.md). No `else` - weights cover the whole distribution.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.12.branches","typeLabel":"object[]"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.12.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.12.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.12.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.12.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.12.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.12.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.12","typeLabel":"object"},{"type":"object","required":["id","type"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.13.id","typeLabel":"integer"},"type":{"type":"string","enum":["end"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.13.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.13.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.13.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.13.name","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.13","typeLabel":"object"},{"type":"object","required":["id","type","method","url"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.id","typeLabel":"integer"},"type":{"type":"string","enum":["api_call"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.type","typeLabel":"enum\u003cstring>"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"description":"The request method. POST / PUT / PATCH carry the JSON body; GET / DELETE must publish with body null.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.method","typeLabel":"enum\u003cstring>"},"url":{"type":"string","minLength":1,"maxLength":2048,"description":"https-only (publish check), max 2048. A template: {{people.*}} / {{company.*}} / {{record.\u003cslug>}} / {{ai.\u003ckey>}} may stand in the path and the query and are URL-encoded where they stand.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.url","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.delay","typeLabel":"string | null"},"headers":{"oneOf":[{"type":"object","additionalProperties":{"type":"string","maxLength":1024,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.headers.oneOf.0.additionalProperties","typeLabel":"string"},"description":"Up to 20 custom request headers; values are templates. Auth comes from provider_connection_sid, never from a literal here.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.headers.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":{"type":"string","maxLength":1024,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.headers.oneOf.1.additionalProperties","typeLabel":"string"},"description":"Up to 20 custom request headers; values are templates. Auth comes from provider_connection_sid, never from a literal here.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.headers.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.headers","typeLabel":"object | null"},"query":{"oneOf":[{"type":"object","additionalProperties":{"type":"string","maxLength":2048,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.query.oneOf.0.additionalProperties","typeLabel":"string"},"description":"Up to 20 query parameters appended to the URL; values are templates.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.query.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":{"type":"string","maxLength":2048,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.query.oneOf.1.additionalProperties","typeLabel":"string"},"description":"Up to 20 query parameters appended to the URL; values are templates.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.query.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.query","typeLabel":"object | null"},"body":{"oneOf":[{"type":"string","maxLength":16000,"description":"A JSON body template with the variables INSIDE quotes (\"{{people.full_name}}\"), stood in JSON-safely at call time. null = the fixed payload {event, workflow_sid, workflow_record_sid, workflow_task_sid, step_id, people_sid, context}.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.body.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":16000,"description":"A JSON body template with the variables INSIDE quotes (\"{{people.full_name}}\"), stood in JSON-safely at call time. null = the fixed payload {event, workflow_sid, workflow_record_sid, workflow_task_sid, step_id, people_sid, context}.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.body.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.body","typeLabel":"string | null"},"provider_connection_sid":{"oneOf":[{"type":"string","minLength":18,"maxLength":18,"pattern":"^in_cn_","description":"A `custom` provider connection of the team (provider-connections.search filter provider=custom): the integration platform injects its auth (bearer / basic / header / query) when the call fires. null = no auth (a public API).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.provider_connection_sid.oneOf.0","typeLabel":"string"},{"type":"null","minLength":18,"maxLength":18,"pattern":"^in_cn_","description":"A `custom` provider connection of the team (provider-connections.search filter provider=custom): the integration platform injects its auth (bearer / basic / header / query) when the call fires. null = no auth (a public API).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.provider_connection_sid.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.provider_connection_sid","typeLabel":"string | null"},"timeout_secs":{"oneOf":[{"type":"integer","minimum":1,"maximum":120,"description":"The call budget in seconds; null = 15.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.timeout_secs.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"maximum":120,"description":"The call budget in seconds; null = 15.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.timeout_secs.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.timeout_secs","typeLabel":"integer | null"},"retry_on_error":{"oneOf":[{"type":"boolean","description":"null/true: a 5xx, a 429, a timeout or an unreachable target earns a fresh attempt (3 in all, with backoff); false: the record fails on the first error. A 4xx / auth refusal never retries.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.retry_on_error.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"null/true: a 5xx, a 429, a timeout or an unreachable target earns a fresh attempt (3 in all, with backoff); false: the record fails on the first error. A 4xx / auth refusal never retries.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.retry_on_error.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.retry_on_error","typeLabel":"boolean | null"},"remove_empty_values":{"oneOf":[{"type":"boolean","description":"true: empty rendered values leave the query and the body, so they never overwrite the receiver's data; null/false: sent as empty strings.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.remove_empty_values.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"true: empty rendered values leave the query and the body, so they never overwrite the receiver's data; null/false: sent as empty strings.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.remove_empty_values.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.remove_empty_values","typeLabel":"boolean | null"},"output_key":{"oneOf":[{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","description":"The answer's name for the steps after this one (2026-10-11): a slug, unique within the version together with the ask_ai keys (publish check). Later steps read {{api.\u003coutput_key>.\u003cpath>}} (a dotted path into the decoded JSON answer) and condition leaves filter on api.\u003coutput_key>.\u003cpath>; the answer is kept on the done task row, capped at 64 KB. null = the answer is not kept.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.output_key.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[a-z][a-z0-9_]{0,63}$","description":"The answer's name for the steps after this one (2026-10-11): a slug, unique within the version together with the ask_ai keys (publish check). Later steps read {{api.\u003coutput_key>.\u003cpath>}} (a dotted path into the decoded JSON answer) and condition leaves filter on api.\u003coutput_key>.\u003cpath>; the answer is kept on the done task row, capped at 64 KB. null = the answer is not kept.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.output_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14.output_key","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.14","typeLabel":"object"},{"type":"object","required":["id","type","prompt","output_key"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.15.id","typeLabel":"integer"},"type":{"type":"string","enum":["ask_ai"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.15.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"maxLength":8000,"description":"Prompt template, 1..8000 - same variable namespaces as message templates.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.15.prompt","typeLabel":"string"},"output_key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","description":"Slug 1..64, unique within the version (publish check); later steps read {{ai.\u003coutput_key>}} and condition leaves filter on ai.\u003coutput_key>. Outputs live on the completed task row, never on records.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.15.output_key","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.15.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.15.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.15.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.15.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.15.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.15.delay","typeLabel":"string | null"},"preset_sid":{"oneOf":[{"type":"string","description":"gtm-api preset for the AI call (external sid, opaque); null/omitted = team default (service KNOWLEDGE §1).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.15.preset_sid.oneOf.0","typeLabel":"string"},{"type":"null","description":"gtm-api preset for the AI call (external sid, opaque); null/omitted = team default (service KNOWLEDGE §1).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.15.preset_sid.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.15.preset_sid","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.15","typeLabel":"object"},{"type":"object","required":["id","type","title"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.16.id","typeLabel":"integer"},"type":{"type":"string","enum":["manual_task"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.16.type","typeLabel":"enum\u003cstring>"},"title":{"type":"string","minLength":1,"maxLength":255,"description":"Todo title template, 1..255.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.16.title","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.16.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.16.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.16.name","typeLabel":"string | null"},"instructions":{"oneOf":[{"type":"string","maxLength":4000,"description":"Rendered into the human todo, max 4000; the journey waits until the task is completed (workflow_tasks.md manual queue).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.16.instructions.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":4000,"description":"Rendered into the human todo, max 4000; the journey waits until the task is completed (workflow_tasks.md manual queue).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.16.instructions.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.16.instructions","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.16","typeLabel":"object"},{"type":"object","required":["id","type","target_workflow_sid"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.17.id","typeLabel":"integer"},"type":{"type":"string","enum":["move_to_workflow"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.17.type","typeLabel":"enum\u003cstring>"},"target_workflow_sid":{"type":"string","minLength":18,"maxLength":18,"pattern":"^wf_wf_","description":"Enroll the person into this campaign (wf_wf_…); reuses the existing record per the re-entry policy (workflow_records.md). THIS record then completes - terminal-for-this-record.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.17.target_workflow_sid","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.17.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.17.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.17.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.17.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.17.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.17.delay","typeLabel":"string | null"},"mode":{"oneOf":[{"type":"string","enum":["from_start","from_current"],"description":"Re-entry mode when the person is ALREADY in the target (workflow_records.md, Re-entry): from_start (default; reset to the entry step) | from_current (resume the pinned step, else the entry step). A re-entry is loop-guarded at re_entered_count 10.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.17.mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["from_start","from_current"],"description":"Re-entry mode when the person is ALREADY in the target (workflow_records.md, Re-entry): from_start (default; reset to the entry step) | from_current (resume the pinned step, else the entry step). A re-entry is loop-guarded at re_entered_count 10.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.17.mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.17.mode","typeLabel":"enum\u003cstring> | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.17","typeLabel":"object"},{"type":"object","required":["id","type","tag_sids"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.18.id","typeLabel":"integer"},"type":{"type":"string","enum":["add_tag"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.18.type","typeLabel":"enum\u003cstring>"},"tag_sids":{"type":"array","items":{"type":"string","minLength":18,"maxLength":18,"pattern":"^cr_tg_","description":"CRM tag sid (cr_tg_…).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.18.tag_sids.items.[INDEX]","typeLabel":"string"},"minItems":1,"maxItems":20,"description":"1..20 CRM tags (cr_tg_…) attached to the person mid-flow, then falls through (tags.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.18.tag_sids","typeLabel":"string[]"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.18.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.18.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.18.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.18.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.18.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.18.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.18","typeLabel":"object"},{"type":"object","required":["id","type","tag_sids"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.19.id","typeLabel":"integer"},"type":{"type":"string","enum":["remove_tag"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.19.type","typeLabel":"enum\u003cstring>"},"tag_sids":{"type":"array","items":{"type":"string","minLength":18,"maxLength":18,"pattern":"^cr_tg_","description":"CRM tag sid (cr_tg_…).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.19.tag_sids.items.[INDEX]","typeLabel":"string"},"minItems":1,"maxItems":20,"description":"1..20 CRM tags (cr_tg_…) detached from the person mid-flow, then falls through.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.19.tag_sids","typeLabel":"string[]"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.19.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.19.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.19.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.19.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.19.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.19.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.19","typeLabel":"object"},{"type":"object","required":["id","type","field_slug","value"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.20.id","typeLabel":"integer"},"type":{"type":"string","enum":["set_field"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.20.type","typeLabel":"enum\u003cstring>"},"field_slug":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","description":"Playtable field slug to write (pipeline_stage is a scalar_select field - service KNOWLEDGE §3).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.20.field_slug","typeLabel":"string"},"value":{"oneOf":[{"type":"string","description":"Scalar cell value written for the person (one cell; no arrays/objects); null clears the field (playtable_field_values.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.20.value.oneOf.0","typeLabel":"string"},{"type":"number","description":"Scalar cell value written for the person (one cell; no arrays/objects); null clears the field (playtable_field_values.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.20.value.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Scalar cell value written for the person (one cell; no arrays/objects); null clears the field (playtable_field_values.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.20.value.oneOf.2","typeLabel":"boolean"},{"description":"Scalar cell value written for the person (one cell; no arrays/objects); null clears the field (playtable_field_values.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.20.value.oneOf.3","typeLabel":"any"},{"description":"Scalar cell value written for the person (one cell; no arrays/objects); null clears the field (playtable_field_values.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.20.value.oneOf.4","typeLabel":"any"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.20.value","typeLabel":"string · number · boolean · any · any"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.20.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.20.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.20.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.20.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.20.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.20.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.20","typeLabel":"object"},{"type":"object","required":["id","type"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.id","typeLabel":"integer"},"type":{"type":"string","enum":["change_sender"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.delay","typeLabel":"string | null"},"sender_profile_sid":{"oneOf":[{"type":"string","minLength":18,"maxLength":18,"pattern":"^ub_sp_","description":"Explicit forward-only re-pin of workflow_records.sender_profile_sid (ub_sp_…). Exactly one of the three shapes (publish check).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.sender_profile_sid.oneOf.0","typeLabel":"string"},{"type":"null","minLength":18,"maxLength":18,"pattern":"^ub_sp_","description":"Explicit forward-only re-pin of workflow_records.sender_profile_sid (ub_sp_…). Exactly one of the three shapes (publish check).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.sender_profile_sid.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.sender_profile_sid","typeLabel":"string | null"},"rotation":{"oneOf":[{"type":"string","enum":["fair","random","new_sender","prior_engagement"],"description":"Re-pick the sender from the workflow pool by this strategy instead of a fixed sid, forward only. Exactly one of the three shapes (publish check).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.rotation.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["fair","random","new_sender","prior_engagement"],"description":"Re-pick the sender from the workflow pool by this strategy instead of a fixed sid, forward only. Exactly one of the three shapes (publish check).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.rotation.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.rotation","typeLabel":"enum\u003cstring> | null"},"rotations":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"sender_profile_sid":{"oneOf":[{"type":"string","minLength":18,"maxLength":18,"pattern":"^ub_sp_","description":"The sender profile for this pass; null = the workflow's rotation strategy picks, never the sender profile the record already has. Must be in the workflow's pool (publish check).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX].sender_profile_sid.oneOf.0","typeLabel":"string"},{"type":"null","minLength":18,"maxLength":18,"pattern":"^ub_sp_","description":"The sender profile for this pass; null = the workflow's rotation strategy picks, never the sender profile the record already has. Must be in the workflow's pool (publish check).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX].sender_profile_sid.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX].sender_profile_sid","typeLabel":"string | null"},"entry_step_id":{"oneOf":[{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"A step id of THIS document to restart the journey from (publish check); null = the workflow's entry step.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX].entry_step_id.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"exclusiveMinimum":true,"description":"A step id of THIS document to restart the journey from (publish check); null = the workflow's entry step.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX].entry_step_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX].entry_step_id","typeLabel":"integer | null"}},"required":["sender_profile_sid","entry_step_id"],"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":10,"description":"The legacy gs_rotate_sender_profile list (D45): each pass through the node consumes the next entry and RESTARTS the journey from its entry step with its sender profile (touches start over; workflow_records.rotations_done is the cursor); past the end the journey continues. Exactly one of the three shapes (publish check).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.rotations.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"sender_profile_sid":{"oneOf":[{"type":"string","minLength":18,"maxLength":18,"pattern":"^ub_sp_","description":"The sender profile for this pass; null = the workflow's rotation strategy picks, never the sender profile the record already has. Must be in the workflow's pool (publish check)."},{"type":"null","minLength":18,"maxLength":18,"pattern":"^ub_sp_","description":"The sender profile for this pass; null = the workflow's rotation strategy picks, never the sender profile the record already has. Must be in the workflow's pool (publish check)."}]},"entry_step_id":{"oneOf":[{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"A step id of THIS document to restart the journey from (publish check); null = the workflow's entry step."},{"type":"null","minimum":0,"exclusiveMinimum":true,"description":"A step id of THIS document to restart the journey from (publish check); null = the workflow's entry step."}]}},"required":["sender_profile_sid","entry_step_id"],"additionalProperties":false},"minItems":1,"maxItems":10,"description":"The legacy gs_rotate_sender_profile list (D45): each pass through the node consumes the next entry and RESTARTS the journey from its entry step with its sender profile (touches start over; workflow_records.rotations_done is the cursor); past the end the journey continues. Exactly one of the three shapes (publish check).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.rotations.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21.rotations","typeLabel":"object[] | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].oneOf.21","typeLabel":"object"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX]","typeLabel":"object"},"description":"Fallback sub-flow; [] = on timeout, continue as if the event fired; falls through to the parent chain unless it ends with `end`.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout.steps","typeLabel":"object[]"}},"required":["after","steps"],"additionalProperties":false,"description":"Required since 2026-10-11: a wait always has a time limit (a wait with no end is a stuck journey); steps: [] = on timeout, continue as if the event fired. The reply-pause machinery still applies (KNOWLEDGE §4.9).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.timeout","typeLabel":"object"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10.name","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.10","typeLabel":"object"},{"type":"object","required":["id","type","branches","else"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.id","typeLabel":"integer"},"type":{"type":"string","enum":["condition"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.type","typeLabel":"enum\u003cstring>"},"branches":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.branches.items.[INDEX].id","typeLabel":"integer"},"when":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.branches.items.[INDEX].when.additionalProperties","typeLabel":"any"},"description":"Recursive node: the same object shape repeats here. A static OpenAPI document cannot express the cycle, so this level is documented as an open object.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.branches.items.[INDEX].when","typeLabel":"object"},"steps":{"type":"array","items":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.branches.items.[INDEX].steps.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"Recursive node: the same object shape repeats here. A static OpenAPI document cannot express the cycle, so this level is documented as an open object.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.branches.items.[INDEX].steps.items.[INDEX]","typeLabel":"object"},"description":"Branch sub-flow; falls through to the condition's successor unless it ends with `end`.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.branches.items.[INDEX].steps","typeLabel":"object[]"},"label":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor caption.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.branches.items.[INDEX].label.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor caption.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.branches.items.[INDEX].label.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.branches.items.[INDEX].label","typeLabel":"string | null"}},"required":["id","when","steps"],"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.branches.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":9,"description":"1..9, evaluated in order, first match wins; the fired branch id lands on the condition task result (workflow_tasks.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.branches","typeLabel":"object[]"},"else":{"type":"array","items":{"oneOf":[{"type":"object","required":["id","type"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.0.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_send_connection_request"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.0.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.0.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.0.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.0.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.0.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.0.delay","typeLabel":"string | null"},"message":{"oneOf":[{"type":"string","description":"Invite note template; rendered note \u003c=300 chars - enforced at publish after variable resolution (research: max 300 RENDERED). null/omitted = blank invite.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.0.message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Invite note template; rendered note \u003c=300 chars - enforced at publish after variable resolution (research: max 300 RENDERED). null/omitted = blank invite.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.0.message.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.0.message","typeLabel":"string | null"},"required_fields":{"oneOf":[{"type":"object","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.0.required_fields.oneOf.0.refs.items.[INDEX]","typeLabel":"string"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.0.required_fields.oneOf.0.refs","typeLabel":"string[]"},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.0.required_fields.oneOf.0.on_missing","typeLabel":"enum\u003cstring>"}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the note needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.0.required_fields.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish."},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11."}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the note needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.0.required_fields.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.0.required_fields","typeLabel":"object | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["id","type","message"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.1.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_send_message"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":8000,"description":"Message template ({{people.*}} / {{company.*}} / {{record.\u003cslug>}} / {{ai.\u003ckey>}}); rendered at task time.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.1.message","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.1.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.1.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.1.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.1.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.1.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.1.delay","typeLabel":"string | null"},"required_fields":{"oneOf":[{"type":"object","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.1.required_fields.oneOf.0.refs.items.[INDEX]","typeLabel":"string"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.1.required_fields.oneOf.0.refs","typeLabel":"string[]"},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.1.required_fields.oneOf.0.on_missing","typeLabel":"enum\u003cstring>"}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the text needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.1.required_fields.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish."},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11."}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the text needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.1.required_fields.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.1.required_fields","typeLabel":"object | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["id","type","message"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_send_inmail"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":8000,"description":"InMail body template, 1..8000.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2.message","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2.delay","typeLabel":"string | null"},"subject":{"oneOf":[{"type":"string","maxLength":200,"description":"InMail subject template, max 200.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2.subject.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":200,"description":"InMail subject template, max 200.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2.subject.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2.subject","typeLabel":"string | null"},"required_fields":{"oneOf":[{"type":"object","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2.required_fields.oneOf.0.refs.items.[INDEX]","typeLabel":"string"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2.required_fields.oneOf.0.refs","typeLabel":"string[]"},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2.required_fields.oneOf.0.on_missing","typeLabel":"enum\u003cstring>"}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the text needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2.required_fields.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish."},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11."}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the text needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2.required_fields.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2.required_fields","typeLabel":"object | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["id","type"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.3.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_visit_profile"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.3.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.3.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.3.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.3.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.3.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.3.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["id","type","skills_count"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.4.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_endorse_skills"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"skills_count":{"type":"integer","minimum":1,"maximum":10,"description":"Endorse the person's top N listed skills, 1..10 (named-skill targeting deferred - count-only in v1).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.4.skills_count","typeLabel":"integer"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.4.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.4.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.4.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.4.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.4.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.4.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["id","type"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.5.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_withdraw_connection_request"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.5.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.5.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.5.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.5.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.5.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.5.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["id","type"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.6.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_like_latest_post"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.6.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.6.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.6.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.6.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.6.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.6.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.6.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","required":["id","type","comment"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.7.id","typeLabel":"integer"},"type":{"type":"string","enum":["linkedin_comment_latest_post"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.7.type","typeLabel":"enum\u003cstring>"},"comment":{"type":"string","minLength":1,"maxLength":1250,"description":"Comment template posted on the person's latest post, 1..1250 rendered; same variable namespaces as message templates.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.7.comment","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.7.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.7.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.7.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.7.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.7.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.7.delay","typeLabel":"string | null"},"required_fields":{"oneOf":[{"type":"object","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.7.required_fields.oneOf.0.refs.items.[INDEX]","typeLabel":"string"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.7.required_fields.oneOf.0.refs","typeLabel":"string[]"},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.7.required_fields.oneOf.0.on_missing","typeLabel":"enum\u003cstring>"}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the comment needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.7.required_fields.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish."},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11."}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the comment needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.7.required_fields.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.7.required_fields","typeLabel":"object | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","required":["id","type","subject","body"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.id","typeLabel":"integer"},"type":{"type":"string","enum":["email_send"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.type","typeLabel":"enum\u003cstring>"},"subject":{"type":"string","minLength":1,"maxLength":255,"description":"Email subject template, 1..255.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.subject","typeLabel":"string"},"body":{"type":"string","minLength":1,"maxLength":100000,"description":"Email body template, HTML, 1..100000.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.body","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.delay","typeLabel":"string | null"},"required_fields":{"oneOf":[{"type":"object","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.required_fields.oneOf.0.refs.items.[INDEX]","typeLabel":"string"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.required_fields.oneOf.0.refs","typeLabel":"string[]"},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.required_fields.oneOf.0.on_missing","typeLabel":"enum\u003cstring>"}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the text needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.required_fields.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"refs":{"type":"array","items":{"type":"string","maxLength":160,"pattern":"^(people|company|record|ai|api)\\.[a-z][a-z0-9_]*(\\.[a-z0-9_]+)*$"},"maxItems":20,"description":"0..20 bare template refs required on top of the text's own variables (people.first_name, company.name, record.\u003cslug>, company.record.\u003cslug>, ai.\u003ckey>); every variable the text carries without a |fallback is required by itself. Slug existence resolved at RUNTIME per record's playtable, not at publish."},"on_missing":{"type":"string","enum":["fail","skip"],"description":"Policy when a value the step text needs is empty at task time: fail = the task fails at once (required_fields_missing), the record with it, visible as Failed and run again through the task retry once the value is there; skip = skip this step and advance. A variable with a |fallback is never missing; no policy (null) = the text goes as it renders. The wait policy went on 2026-10-11."}},"required":["refs","on_missing"],"additionalProperties":false,"description":"When a value the text needs is empty: refs required on top of the text + on_missing policy.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.required_fields.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.required_fields","typeLabel":"object | null"},"email_field":{"oneOf":[{"type":"string","description":"Which address the send uses: any | work_email | personal_email; omitted or any = the best one.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.email_field.oneOf.0","typeLabel":"string"},{"type":"null","description":"Which address the send uses: any | work_email | personal_email; omitted or any = the best one.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.email_field.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.email_field","typeLabel":"string | null"},"cc":{"oneOf":[{"type":"array","items":{"type":"string","maxLength":320,"format":"email","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.cc.oneOf.0.items.[INDEX]","typeLabel":"string\u003cemail>"},"maxItems":5,"description":"Up to 5 literal copy addresses (no templates: a copy goes to a colleague).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.cc.oneOf.0","typeLabel":"string\u003cemail>[]"},{"type":"null","items":{"type":"string","maxLength":320,"format":"email"},"maxItems":5,"description":"Up to 5 literal copy addresses (no templates: a copy goes to a colleague).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.cc.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.cc","typeLabel":"string\u003cemail>[] | null"},"bcc":{"oneOf":[{"type":"array","items":{"type":"string","maxLength":320,"format":"email","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.bcc.oneOf.0.items.[INDEX]","typeLabel":"string\u003cemail>"},"maxItems":5,"description":"Up to 5 literal blind-copy addresses.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.bcc.oneOf.0","typeLabel":"string\u003cemail>[]"},{"type":"null","items":{"type":"string","maxLength":320,"format":"email"},"maxItems":5,"description":"Up to 5 literal blind-copy addresses.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.bcc.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.bcc","typeLabel":"string\u003cemail>[] | null"},"attachments":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"sid":{"type":"string","minLength":18,"maxLength":18,"pattern":"^wf_at_","description":"A workflow attachment the team uploaded (create_workflow_attachment_upload_url).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.attachments.oneOf.0.items.[INDEX].sid","typeLabel":"string"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"The filename the receiver sees.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.attachments.oneOf.0.items.[INDEX].name","typeLabel":"string"}},"required":["sid","name"],"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.attachments.oneOf.0.items.[INDEX]","typeLabel":"object"},"maxItems":5,"description":"Up to 5 library files sent with the email; the executor reads the bytes at send time.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.attachments.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"sid":{"type":"string","minLength":18,"maxLength":18,"pattern":"^wf_at_","description":"A workflow attachment the team uploaded (create_workflow_attachment_upload_url)."},"name":{"type":"string","minLength":1,"maxLength":255,"description":"The filename the receiver sees."}},"required":["sid","name"],"additionalProperties":false},"maxItems":5,"description":"Up to 5 library files sent with the email; the executor reads the bytes at send time.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.attachments.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.attachments","typeLabel":"object[] | null"},"reply_in_thread":{"oneOf":[{"type":"boolean","description":"True threads the send onto the prior email exchange.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.reply_in_thread.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True threads the send onto the prior email exchange.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.reply_in_thread.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.reply_in_thread","typeLabel":"boolean | null"},"track_opens":{"oneOf":[{"type":"boolean","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.track_opens.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.track_opens.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.track_opens","typeLabel":"boolean | null"},"track_clicks":{"oneOf":[{"type":"boolean","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.track_clicks.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.track_clicks.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.track_clicks","typeLabel":"boolean | null"},"unsubscribe_link":{"oneOf":[{"type":"boolean","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.unsubscribe_link.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.unsubscribe_link.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8.unsubscribe_link","typeLabel":"boolean | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","required":["id","type","for"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.9.id","typeLabel":"integer"},"type":{"type":"string","enum":["wait"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.9.type","typeLabel":"enum\u003cstring>"},"for":{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long to pause the record before the next step - \"45m\" / \"12h\" / \"14d\" (replaces v3 timer.duration_seconds).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.9.for","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.9.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.9.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.9.name","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","required":["id","type","event","timeout"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.10.id","typeLabel":"integer"},"type":{"type":"string","enum":["wait_for_event"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.10.type","typeLabel":"enum\u003cstring>"},"event":{"type":"string","enum":["linkedin_connection_request_accepted","email_opened","email_link_clicked"],"description":"Event a wait_for_event step blocks on (observed via activities ingest).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.10.event","typeLabel":"enum\u003cstring>"},"timeout":{"type":"object","properties":{"after":{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"Timeout duration - bundled: a timeout path cannot exist without one.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.10.timeout.after","typeLabel":"string"},"steps":{"type":"array","items":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"Recursive node: the same object shape repeats here. A static OpenAPI document cannot express the cycle, so this level is documented as an open object.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.10.timeout.steps.items.[INDEX]","typeLabel":"object"},"description":"Fallback sub-flow; [] = on timeout, continue as if the event fired; falls through to the parent chain unless it ends with `end`.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.10.timeout.steps","typeLabel":"object[]"}},"required":["after","steps"],"additionalProperties":false,"description":"Required since 2026-10-11: a wait always has a time limit (a wait with no end is a stuck journey); steps: [] = on timeout, continue as if the event fired. The reply-pause machinery still applies (KNOWLEDGE §4.9).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.10.timeout","typeLabel":"object"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.10.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.10.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.10.name","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.10","typeLabel":"object"},{"type":"object","required":["id","type","branches","else"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.11.id","typeLabel":"integer"},"type":{"type":"string","enum":["condition"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.11.type","typeLabel":"enum\u003cstring>"},"branches":{"type":"array","items":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.11.branches.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"Recursive node: the same object shape repeats here. A static OpenAPI document cannot express the cycle, so this level is documented as an open object.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.11.branches.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":9,"description":"1..9, evaluated in order, first match wins; the fired branch id lands on the condition task result (workflow_tasks.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.11.branches","typeLabel":"object[]"},"else":{"type":"array","items":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.11.else.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"Recursive node: the same object shape repeats here. A static OpenAPI document cannot express the cycle, so this level is documented as an open object.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.11.else.items.[INDEX]","typeLabel":"object"},"description":"REQUIRED no-match path (may be []); falls through unless it ends with `end`.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.11.else","typeLabel":"object[]"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.11.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.11.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.11.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.11.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.11.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.11.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.11","typeLabel":"object"},{"type":"object","required":["id","type","branches"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.12.id","typeLabel":"integer"},"type":{"type":"string","enum":["ab_test"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.12.type","typeLabel":"enum\u003cstring>"},"branches":{"type":"array","items":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.12.branches.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"Recursive node: the same object shape repeats here. A static OpenAPI document cannot express the cycle, so this level is documented as an open object.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.12.branches.items.[INDEX]","typeLabel":"object"},"minItems":2,"maxItems":9,"description":"2..9 weighted arms; the record is assigned to one deterministically by hashing its sid into the weight distribution (workflow_versions.md). No `else` - weights cover the whole distribution.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.12.branches","typeLabel":"object[]"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.12.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.12.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.12.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.12.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.12.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.12.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.12","typeLabel":"object"},{"type":"object","required":["id","type"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.13.id","typeLabel":"integer"},"type":{"type":"string","enum":["end"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.13.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.13.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.13.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.13.name","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.13","typeLabel":"object"},{"type":"object","required":["id","type","method","url"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.id","typeLabel":"integer"},"type":{"type":"string","enum":["api_call"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.type","typeLabel":"enum\u003cstring>"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"description":"The request method. POST / PUT / PATCH carry the JSON body; GET / DELETE must publish with body null.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.method","typeLabel":"enum\u003cstring>"},"url":{"type":"string","minLength":1,"maxLength":2048,"description":"https-only (publish check), max 2048. A template: {{people.*}} / {{company.*}} / {{record.\u003cslug>}} / {{ai.\u003ckey>}} may stand in the path and the query and are URL-encoded where they stand.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.url","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.delay","typeLabel":"string | null"},"headers":{"oneOf":[{"type":"object","additionalProperties":{"type":"string","maxLength":1024,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.headers.oneOf.0.additionalProperties","typeLabel":"string"},"description":"Up to 20 custom request headers; values are templates. Auth comes from provider_connection_sid, never from a literal here.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.headers.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":{"type":"string","maxLength":1024,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.headers.oneOf.1.additionalProperties","typeLabel":"string"},"description":"Up to 20 custom request headers; values are templates. Auth comes from provider_connection_sid, never from a literal here.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.headers.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.headers","typeLabel":"object | null"},"query":{"oneOf":[{"type":"object","additionalProperties":{"type":"string","maxLength":2048,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.query.oneOf.0.additionalProperties","typeLabel":"string"},"description":"Up to 20 query parameters appended to the URL; values are templates.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.query.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":{"type":"string","maxLength":2048,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.query.oneOf.1.additionalProperties","typeLabel":"string"},"description":"Up to 20 query parameters appended to the URL; values are templates.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.query.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.query","typeLabel":"object | null"},"body":{"oneOf":[{"type":"string","maxLength":16000,"description":"A JSON body template with the variables INSIDE quotes (\"{{people.full_name}}\"), stood in JSON-safely at call time. null = the fixed payload {event, workflow_sid, workflow_record_sid, workflow_task_sid, step_id, people_sid, context}.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.body.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":16000,"description":"A JSON body template with the variables INSIDE quotes (\"{{people.full_name}}\"), stood in JSON-safely at call time. null = the fixed payload {event, workflow_sid, workflow_record_sid, workflow_task_sid, step_id, people_sid, context}.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.body.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.body","typeLabel":"string | null"},"provider_connection_sid":{"oneOf":[{"type":"string","minLength":18,"maxLength":18,"pattern":"^in_cn_","description":"A `custom` provider connection of the team (provider-connections.search filter provider=custom): the integration platform injects its auth (bearer / basic / header / query) when the call fires. null = no auth (a public API).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.provider_connection_sid.oneOf.0","typeLabel":"string"},{"type":"null","minLength":18,"maxLength":18,"pattern":"^in_cn_","description":"A `custom` provider connection of the team (provider-connections.search filter provider=custom): the integration platform injects its auth (bearer / basic / header / query) when the call fires. null = no auth (a public API).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.provider_connection_sid.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.provider_connection_sid","typeLabel":"string | null"},"timeout_secs":{"oneOf":[{"type":"integer","minimum":1,"maximum":120,"description":"The call budget in seconds; null = 15.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.timeout_secs.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"maximum":120,"description":"The call budget in seconds; null = 15.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.timeout_secs.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.timeout_secs","typeLabel":"integer | null"},"retry_on_error":{"oneOf":[{"type":"boolean","description":"null/true: a 5xx, a 429, a timeout or an unreachable target earns a fresh attempt (3 in all, with backoff); false: the record fails on the first error. A 4xx / auth refusal never retries.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.retry_on_error.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"null/true: a 5xx, a 429, a timeout or an unreachable target earns a fresh attempt (3 in all, with backoff); false: the record fails on the first error. A 4xx / auth refusal never retries.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.retry_on_error.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.retry_on_error","typeLabel":"boolean | null"},"remove_empty_values":{"oneOf":[{"type":"boolean","description":"true: empty rendered values leave the query and the body, so they never overwrite the receiver's data; null/false: sent as empty strings.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.remove_empty_values.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"true: empty rendered values leave the query and the body, so they never overwrite the receiver's data; null/false: sent as empty strings.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.remove_empty_values.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.remove_empty_values","typeLabel":"boolean | null"},"output_key":{"oneOf":[{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","description":"The answer's name for the steps after this one (2026-10-11): a slug, unique within the version together with the ask_ai keys (publish check). Later steps read {{api.\u003coutput_key>.\u003cpath>}} (a dotted path into the decoded JSON answer) and condition leaves filter on api.\u003coutput_key>.\u003cpath>; the answer is kept on the done task row, capped at 64 KB. null = the answer is not kept.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.output_key.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[a-z][a-z0-9_]{0,63}$","description":"The answer's name for the steps after this one (2026-10-11): a slug, unique within the version together with the ask_ai keys (publish check). Later steps read {{api.\u003coutput_key>.\u003cpath>}} (a dotted path into the decoded JSON answer) and condition leaves filter on api.\u003coutput_key>.\u003cpath>; the answer is kept on the done task row, capped at 64 KB. null = the answer is not kept.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.output_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14.output_key","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.14","typeLabel":"object"},{"type":"object","required":["id","type","prompt","output_key"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.15.id","typeLabel":"integer"},"type":{"type":"string","enum":["ask_ai"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.15.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"maxLength":8000,"description":"Prompt template, 1..8000 - same variable namespaces as message templates.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.15.prompt","typeLabel":"string"},"output_key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","description":"Slug 1..64, unique within the version (publish check); later steps read {{ai.\u003coutput_key>}} and condition leaves filter on ai.\u003coutput_key>. Outputs live on the completed task row, never on records.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.15.output_key","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.15.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.15.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.15.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.15.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.15.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.15.delay","typeLabel":"string | null"},"preset_sid":{"oneOf":[{"type":"string","description":"gtm-api preset for the AI call (external sid, opaque); null/omitted = team default (service KNOWLEDGE §1).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.15.preset_sid.oneOf.0","typeLabel":"string"},{"type":"null","description":"gtm-api preset for the AI call (external sid, opaque); null/omitted = team default (service KNOWLEDGE §1).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.15.preset_sid.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.15.preset_sid","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.15","typeLabel":"object"},{"type":"object","required":["id","type","title"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.16.id","typeLabel":"integer"},"type":{"type":"string","enum":["manual_task"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.16.type","typeLabel":"enum\u003cstring>"},"title":{"type":"string","minLength":1,"maxLength":255,"description":"Todo title template, 1..255.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.16.title","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.16.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.16.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.16.name","typeLabel":"string | null"},"instructions":{"oneOf":[{"type":"string","maxLength":4000,"description":"Rendered into the human todo, max 4000; the journey waits until the task is completed (workflow_tasks.md manual queue).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.16.instructions.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":4000,"description":"Rendered into the human todo, max 4000; the journey waits until the task is completed (workflow_tasks.md manual queue).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.16.instructions.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.16.instructions","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.16","typeLabel":"object"},{"type":"object","required":["id","type","target_workflow_sid"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.17.id","typeLabel":"integer"},"type":{"type":"string","enum":["move_to_workflow"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.17.type","typeLabel":"enum\u003cstring>"},"target_workflow_sid":{"type":"string","minLength":18,"maxLength":18,"pattern":"^wf_wf_","description":"Enroll the person into this campaign (wf_wf_…); reuses the existing record per the re-entry policy (workflow_records.md). THIS record then completes - terminal-for-this-record.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.17.target_workflow_sid","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.17.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.17.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.17.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.17.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.17.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.17.delay","typeLabel":"string | null"},"mode":{"oneOf":[{"type":"string","enum":["from_start","from_current"],"description":"Re-entry mode when the person is ALREADY in the target (workflow_records.md, Re-entry): from_start (default; reset to the entry step) | from_current (resume the pinned step, else the entry step). A re-entry is loop-guarded at re_entered_count 10.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.17.mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["from_start","from_current"],"description":"Re-entry mode when the person is ALREADY in the target (workflow_records.md, Re-entry): from_start (default; reset to the entry step) | from_current (resume the pinned step, else the entry step). A re-entry is loop-guarded at re_entered_count 10.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.17.mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.17.mode","typeLabel":"enum\u003cstring> | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.17","typeLabel":"object"},{"type":"object","required":["id","type","tag_sids"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.18.id","typeLabel":"integer"},"type":{"type":"string","enum":["add_tag"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.18.type","typeLabel":"enum\u003cstring>"},"tag_sids":{"type":"array","items":{"type":"string","minLength":18,"maxLength":18,"pattern":"^cr_tg_","description":"CRM tag sid (cr_tg_…).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.18.tag_sids.items.[INDEX]","typeLabel":"string"},"minItems":1,"maxItems":20,"description":"1..20 CRM tags (cr_tg_…) attached to the person mid-flow, then falls through (tags.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.18.tag_sids","typeLabel":"string[]"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.18.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.18.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.18.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.18.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.18.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.18.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.18","typeLabel":"object"},{"type":"object","required":["id","type","tag_sids"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.19.id","typeLabel":"integer"},"type":{"type":"string","enum":["remove_tag"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.19.type","typeLabel":"enum\u003cstring>"},"tag_sids":{"type":"array","items":{"type":"string","minLength":18,"maxLength":18,"pattern":"^cr_tg_","description":"CRM tag sid (cr_tg_…).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.19.tag_sids.items.[INDEX]","typeLabel":"string"},"minItems":1,"maxItems":20,"description":"1..20 CRM tags (cr_tg_…) detached from the person mid-flow, then falls through.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.19.tag_sids","typeLabel":"string[]"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.19.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.19.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.19.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.19.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.19.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.19.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.19","typeLabel":"object"},{"type":"object","required":["id","type","field_slug","value"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.20.id","typeLabel":"integer"},"type":{"type":"string","enum":["set_field"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.20.type","typeLabel":"enum\u003cstring>"},"field_slug":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","description":"Playtable field slug to write (pipeline_stage is a scalar_select field - service KNOWLEDGE §3).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.20.field_slug","typeLabel":"string"},"value":{"oneOf":[{"type":"string","description":"Scalar cell value written for the person (one cell; no arrays/objects); null clears the field (playtable_field_values.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.20.value.oneOf.0","typeLabel":"string"},{"type":"number","description":"Scalar cell value written for the person (one cell; no arrays/objects); null clears the field (playtable_field_values.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.20.value.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Scalar cell value written for the person (one cell; no arrays/objects); null clears the field (playtable_field_values.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.20.value.oneOf.2","typeLabel":"boolean"},{"description":"Scalar cell value written for the person (one cell; no arrays/objects); null clears the field (playtable_field_values.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.20.value.oneOf.3","typeLabel":"any"},{"description":"Scalar cell value written for the person (one cell; no arrays/objects); null clears the field (playtable_field_values.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.20.value.oneOf.4","typeLabel":"any"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.20.value","typeLabel":"string · number · boolean · any · any"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.20.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.20.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.20.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.20.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.20.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.20.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.20","typeLabel":"object"},{"type":"object","required":["id","type"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.id","typeLabel":"integer"},"type":{"type":"string","enum":["change_sender"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.delay","typeLabel":"string | null"},"sender_profile_sid":{"oneOf":[{"type":"string","minLength":18,"maxLength":18,"pattern":"^ub_sp_","description":"Explicit forward-only re-pin of workflow_records.sender_profile_sid (ub_sp_…). Exactly one of the three shapes (publish check).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.sender_profile_sid.oneOf.0","typeLabel":"string"},{"type":"null","minLength":18,"maxLength":18,"pattern":"^ub_sp_","description":"Explicit forward-only re-pin of workflow_records.sender_profile_sid (ub_sp_…). Exactly one of the three shapes (publish check).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.sender_profile_sid.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.sender_profile_sid","typeLabel":"string | null"},"rotation":{"oneOf":[{"type":"string","enum":["fair","random","new_sender","prior_engagement"],"description":"Re-pick the sender from the workflow pool by this strategy instead of a fixed sid, forward only. Exactly one of the three shapes (publish check).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.rotation.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["fair","random","new_sender","prior_engagement"],"description":"Re-pick the sender from the workflow pool by this strategy instead of a fixed sid, forward only. Exactly one of the three shapes (publish check).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.rotation.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.rotation","typeLabel":"enum\u003cstring> | null"},"rotations":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"sender_profile_sid":{"oneOf":[{"type":"string","minLength":18,"maxLength":18,"pattern":"^ub_sp_","description":"The sender profile for this pass; null = the workflow's rotation strategy picks, never the sender profile the record already has. Must be in the workflow's pool (publish check).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX].sender_profile_sid.oneOf.0","typeLabel":"string"},{"type":"null","minLength":18,"maxLength":18,"pattern":"^ub_sp_","description":"The sender profile for this pass; null = the workflow's rotation strategy picks, never the sender profile the record already has. Must be in the workflow's pool (publish check).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX].sender_profile_sid.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX].sender_profile_sid","typeLabel":"string | null"},"entry_step_id":{"oneOf":[{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"A step id of THIS document to restart the journey from (publish check); null = the workflow's entry step.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX].entry_step_id.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"exclusiveMinimum":true,"description":"A step id of THIS document to restart the journey from (publish check); null = the workflow's entry step.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX].entry_step_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX].entry_step_id","typeLabel":"integer | null"}},"required":["sender_profile_sid","entry_step_id"],"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":10,"description":"The legacy gs_rotate_sender_profile list (D45): each pass through the node consumes the next entry and RESTARTS the journey from its entry step with its sender profile (touches start over; workflow_records.rotations_done is the cursor); past the end the journey continues. Exactly one of the three shapes (publish check).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.rotations.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"sender_profile_sid":{"oneOf":[{"type":"string","minLength":18,"maxLength":18,"pattern":"^ub_sp_","description":"The sender profile for this pass; null = the workflow's rotation strategy picks, never the sender profile the record already has. Must be in the workflow's pool (publish check)."},{"type":"null","minLength":18,"maxLength":18,"pattern":"^ub_sp_","description":"The sender profile for this pass; null = the workflow's rotation strategy picks, never the sender profile the record already has. Must be in the workflow's pool (publish check)."}]},"entry_step_id":{"oneOf":[{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"A step id of THIS document to restart the journey from (publish check); null = the workflow's entry step."},{"type":"null","minimum":0,"exclusiveMinimum":true,"description":"A step id of THIS document to restart the journey from (publish check); null = the workflow's entry step."}]}},"required":["sender_profile_sid","entry_step_id"],"additionalProperties":false},"minItems":1,"maxItems":10,"description":"The legacy gs_rotate_sender_profile list (D45): each pass through the node consumes the next entry and RESTARTS the journey from its entry step with its sender profile (touches start over; workflow_records.rotations_done is the cursor); past the end the journey continues. Exactly one of the three shapes (publish check).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.rotations.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21.rotations","typeLabel":"object[] | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX].oneOf.21","typeLabel":"object"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else.items.[INDEX]","typeLabel":"object"},"description":"REQUIRED no-match path (may be []); falls through unless it ends with `end`.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.else","typeLabel":"object[]"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.11","typeLabel":"object"},{"type":"object","required":["id","type","branches"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12.id","typeLabel":"integer"},"type":{"type":"string","enum":["ab_test"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12.type","typeLabel":"enum\u003cstring>"},"branches":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12.branches.items.[INDEX].id","typeLabel":"integer"},"weight":{"type":"integer","minimum":1,"description":"Relative weight (int >= 1; need not sum to 100). Record assigned by crc32(record.sid) mod sum(weights), first arm whose cumulative range contains it (workflow_versions.md ab_test algorithm).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12.branches.items.[INDEX].weight","typeLabel":"integer"},"steps":{"type":"array","items":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12.branches.items.[INDEX].steps.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"Recursive node: the same object shape repeats here. A static OpenAPI document cannot express the cycle, so this level is documented as an open object.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12.branches.items.[INDEX].steps.items.[INDEX]","typeLabel":"object"},"description":"Arm sub-flow; falls through to the ab_test successor unless it ends with `end`.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12.branches.items.[INDEX].steps","typeLabel":"object[]"},"label":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor caption (\"Variant A\").","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12.branches.items.[INDEX].label.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor caption (\"Variant A\").","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12.branches.items.[INDEX].label.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12.branches.items.[INDEX].label","typeLabel":"string | null"}},"required":["id","weight","steps"],"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12.branches.items.[INDEX]","typeLabel":"object"},"minItems":2,"maxItems":9,"description":"2..9 weighted arms; the record is assigned to one deterministically by hashing its sid into the weight distribution (workflow_versions.md). No `else` - weights cover the whole distribution.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12.branches","typeLabel":"object[]"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.12","typeLabel":"object"},{"type":"object","required":["id","type"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.13.id","typeLabel":"integer"},"type":{"type":"string","enum":["end"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.13.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.13.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.13.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.13.name","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.13","typeLabel":"object"},{"type":"object","required":["id","type","method","url"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.id","typeLabel":"integer"},"type":{"type":"string","enum":["api_call"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.type","typeLabel":"enum\u003cstring>"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"description":"The request method. POST / PUT / PATCH carry the JSON body; GET / DELETE must publish with body null.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.method","typeLabel":"enum\u003cstring>"},"url":{"type":"string","minLength":1,"maxLength":2048,"description":"https-only (publish check), max 2048. A template: {{people.*}} / {{company.*}} / {{record.\u003cslug>}} / {{ai.\u003ckey>}} may stand in the path and the query and are URL-encoded where they stand.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.url","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.delay","typeLabel":"string | null"},"headers":{"oneOf":[{"type":"object","additionalProperties":{"type":"string","maxLength":1024,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.headers.oneOf.0.additionalProperties","typeLabel":"string"},"description":"Up to 20 custom request headers; values are templates. Auth comes from provider_connection_sid, never from a literal here.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.headers.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":{"type":"string","maxLength":1024,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.headers.oneOf.1.additionalProperties","typeLabel":"string"},"description":"Up to 20 custom request headers; values are templates. Auth comes from provider_connection_sid, never from a literal here.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.headers.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.headers","typeLabel":"object | null"},"query":{"oneOf":[{"type":"object","additionalProperties":{"type":"string","maxLength":2048,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.query.oneOf.0.additionalProperties","typeLabel":"string"},"description":"Up to 20 query parameters appended to the URL; values are templates.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.query.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":{"type":"string","maxLength":2048,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.query.oneOf.1.additionalProperties","typeLabel":"string"},"description":"Up to 20 query parameters appended to the URL; values are templates.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.query.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.query","typeLabel":"object | null"},"body":{"oneOf":[{"type":"string","maxLength":16000,"description":"A JSON body template with the variables INSIDE quotes (\"{{people.full_name}}\"), stood in JSON-safely at call time. null = the fixed payload {event, workflow_sid, workflow_record_sid, workflow_task_sid, step_id, people_sid, context}.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.body.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":16000,"description":"A JSON body template with the variables INSIDE quotes (\"{{people.full_name}}\"), stood in JSON-safely at call time. null = the fixed payload {event, workflow_sid, workflow_record_sid, workflow_task_sid, step_id, people_sid, context}.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.body.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.body","typeLabel":"string | null"},"provider_connection_sid":{"oneOf":[{"type":"string","minLength":18,"maxLength":18,"pattern":"^in_cn_","description":"A `custom` provider connection of the team (provider-connections.search filter provider=custom): the integration platform injects its auth (bearer / basic / header / query) when the call fires. null = no auth (a public API).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.provider_connection_sid.oneOf.0","typeLabel":"string"},{"type":"null","minLength":18,"maxLength":18,"pattern":"^in_cn_","description":"A `custom` provider connection of the team (provider-connections.search filter provider=custom): the integration platform injects its auth (bearer / basic / header / query) when the call fires. null = no auth (a public API).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.provider_connection_sid.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.provider_connection_sid","typeLabel":"string | null"},"timeout_secs":{"oneOf":[{"type":"integer","minimum":1,"maximum":120,"description":"The call budget in seconds; null = 15.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.timeout_secs.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"maximum":120,"description":"The call budget in seconds; null = 15.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.timeout_secs.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.timeout_secs","typeLabel":"integer | null"},"retry_on_error":{"oneOf":[{"type":"boolean","description":"null/true: a 5xx, a 429, a timeout or an unreachable target earns a fresh attempt (3 in all, with backoff); false: the record fails on the first error. A 4xx / auth refusal never retries.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.retry_on_error.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"null/true: a 5xx, a 429, a timeout or an unreachable target earns a fresh attempt (3 in all, with backoff); false: the record fails on the first error. A 4xx / auth refusal never retries.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.retry_on_error.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.retry_on_error","typeLabel":"boolean | null"},"remove_empty_values":{"oneOf":[{"type":"boolean","description":"true: empty rendered values leave the query and the body, so they never overwrite the receiver's data; null/false: sent as empty strings.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.remove_empty_values.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"true: empty rendered values leave the query and the body, so they never overwrite the receiver's data; null/false: sent as empty strings.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.remove_empty_values.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.remove_empty_values","typeLabel":"boolean | null"},"output_key":{"oneOf":[{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","description":"The answer's name for the steps after this one (2026-10-11): a slug, unique within the version together with the ask_ai keys (publish check). Later steps read {{api.\u003coutput_key>.\u003cpath>}} (a dotted path into the decoded JSON answer) and condition leaves filter on api.\u003coutput_key>.\u003cpath>; the answer is kept on the done task row, capped at 64 KB. null = the answer is not kept.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.output_key.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[a-z][a-z0-9_]{0,63}$","description":"The answer's name for the steps after this one (2026-10-11): a slug, unique within the version together with the ask_ai keys (publish check). Later steps read {{api.\u003coutput_key>.\u003cpath>}} (a dotted path into the decoded JSON answer) and condition leaves filter on api.\u003coutput_key>.\u003cpath>; the answer is kept on the done task row, capped at 64 KB. null = the answer is not kept.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.output_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14.output_key","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.14","typeLabel":"object"},{"type":"object","required":["id","type","prompt","output_key"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.15.id","typeLabel":"integer"},"type":{"type":"string","enum":["ask_ai"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.15.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"maxLength":8000,"description":"Prompt template, 1..8000 - same variable namespaces as message templates.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.15.prompt","typeLabel":"string"},"output_key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","description":"Slug 1..64, unique within the version (publish check); later steps read {{ai.\u003coutput_key>}} and condition leaves filter on ai.\u003coutput_key>. Outputs live on the completed task row, never on records.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.15.output_key","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.15.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.15.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.15.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.15.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.15.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.15.delay","typeLabel":"string | null"},"preset_sid":{"oneOf":[{"type":"string","description":"gtm-api preset for the AI call (external sid, opaque); null/omitted = team default (service KNOWLEDGE §1).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.15.preset_sid.oneOf.0","typeLabel":"string"},{"type":"null","description":"gtm-api preset for the AI call (external sid, opaque); null/omitted = team default (service KNOWLEDGE §1).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.15.preset_sid.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.15.preset_sid","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.15","typeLabel":"object"},{"type":"object","required":["id","type","title"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.16.id","typeLabel":"integer"},"type":{"type":"string","enum":["manual_task"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.16.type","typeLabel":"enum\u003cstring>"},"title":{"type":"string","minLength":1,"maxLength":255,"description":"Todo title template, 1..255.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.16.title","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.16.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.16.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.16.name","typeLabel":"string | null"},"instructions":{"oneOf":[{"type":"string","maxLength":4000,"description":"Rendered into the human todo, max 4000; the journey waits until the task is completed (workflow_tasks.md manual queue).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.16.instructions.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":4000,"description":"Rendered into the human todo, max 4000; the journey waits until the task is completed (workflow_tasks.md manual queue).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.16.instructions.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.16.instructions","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.16","typeLabel":"object"},{"type":"object","required":["id","type","target_workflow_sid"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.17.id","typeLabel":"integer"},"type":{"type":"string","enum":["move_to_workflow"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.17.type","typeLabel":"enum\u003cstring>"},"target_workflow_sid":{"type":"string","minLength":18,"maxLength":18,"pattern":"^wf_wf_","description":"Enroll the person into this campaign (wf_wf_…); reuses the existing record per the re-entry policy (workflow_records.md). THIS record then completes - terminal-for-this-record.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.17.target_workflow_sid","typeLabel":"string"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.17.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.17.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.17.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.17.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.17.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.17.delay","typeLabel":"string | null"},"mode":{"oneOf":[{"type":"string","enum":["from_start","from_current"],"description":"Re-entry mode when the person is ALREADY in the target (workflow_records.md, Re-entry): from_start (default; reset to the entry step) | from_current (resume the pinned step, else the entry step). A re-entry is loop-guarded at re_entered_count 10.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.17.mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["from_start","from_current"],"description":"Re-entry mode when the person is ALREADY in the target (workflow_records.md, Re-entry): from_start (default; reset to the entry step) | from_current (resume the pinned step, else the entry step). A re-entry is loop-guarded at re_entered_count 10.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.17.mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.17.mode","typeLabel":"enum\u003cstring> | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.17","typeLabel":"object"},{"type":"object","required":["id","type","tag_sids"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.18.id","typeLabel":"integer"},"type":{"type":"string","enum":["add_tag"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.18.type","typeLabel":"enum\u003cstring>"},"tag_sids":{"type":"array","items":{"type":"string","minLength":18,"maxLength":18,"pattern":"^cr_tg_","description":"CRM tag sid (cr_tg_…).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.18.tag_sids.items.[INDEX]","typeLabel":"string"},"minItems":1,"maxItems":20,"description":"1..20 CRM tags (cr_tg_…) attached to the person mid-flow, then falls through (tags.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.18.tag_sids","typeLabel":"string[]"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.18.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.18.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.18.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.18.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.18.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.18.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.18","typeLabel":"object"},{"type":"object","required":["id","type","tag_sids"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.19.id","typeLabel":"integer"},"type":{"type":"string","enum":["remove_tag"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.19.type","typeLabel":"enum\u003cstring>"},"tag_sids":{"type":"array","items":{"type":"string","minLength":18,"maxLength":18,"pattern":"^cr_tg_","description":"CRM tag sid (cr_tg_…).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.19.tag_sids.items.[INDEX]","typeLabel":"string"},"minItems":1,"maxItems":20,"description":"1..20 CRM tags (cr_tg_…) detached from the person mid-flow, then falls through.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.19.tag_sids","typeLabel":"string[]"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.19.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.19.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.19.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.19.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.19.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.19.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.19","typeLabel":"object"},{"type":"object","required":["id","type","field_slug","value"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.20.id","typeLabel":"integer"},"type":{"type":"string","enum":["set_field"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.20.type","typeLabel":"enum\u003cstring>"},"field_slug":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","description":"Playtable field slug to write (pipeline_stage is a scalar_select field - service KNOWLEDGE §3).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.20.field_slug","typeLabel":"string"},"value":{"oneOf":[{"type":"string","description":"Scalar cell value written for the person (one cell; no arrays/objects); null clears the field (playtable_field_values.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.20.value.oneOf.0","typeLabel":"string"},{"type":"number","description":"Scalar cell value written for the person (one cell; no arrays/objects); null clears the field (playtable_field_values.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.20.value.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Scalar cell value written for the person (one cell; no arrays/objects); null clears the field (playtable_field_values.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.20.value.oneOf.2","typeLabel":"boolean"},{"description":"Scalar cell value written for the person (one cell; no arrays/objects); null clears the field (playtable_field_values.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.20.value.oneOf.3","typeLabel":"any"},{"description":"Scalar cell value written for the person (one cell; no arrays/objects); null clears the field (playtable_field_values.md).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.20.value.oneOf.4","typeLabel":"any"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.20.value","typeLabel":"string · number · boolean · any · any"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.20.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.20.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.20.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.20.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.20.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.20.delay","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.20","typeLabel":"object"},{"type":"object","required":["id","type"],"properties":{"id":{"type":"integer","minimum":1,"description":"Server-assigned small int, unique across the whole document (steps + branch ids); immutable, never reused; user-facing in the editor tree.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.id","typeLabel":"integer"},"type":{"type":"string","enum":["change_sender"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Editor label.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.name","typeLabel":"string | null"},"delay":{"oneOf":[{"type":"string","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.delay.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[1-9][0-9]*(m|h|d)$","description":"How long the record waits at this step before it runs: \"45m\" / \"12h\" / \"2d\"; null/omitted = runs as soon as it arrives. Not allowed on wait (use `for`), wait_for_event, manual_task, end.","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.delay","typeLabel":"string | null"},"sender_profile_sid":{"oneOf":[{"type":"string","minLength":18,"maxLength":18,"pattern":"^ub_sp_","description":"Explicit forward-only re-pin of workflow_records.sender_profile_sid (ub_sp_…). Exactly one of the three shapes (publish check).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.sender_profile_sid.oneOf.0","typeLabel":"string"},{"type":"null","minLength":18,"maxLength":18,"pattern":"^ub_sp_","description":"Explicit forward-only re-pin of workflow_records.sender_profile_sid (ub_sp_…). Exactly one of the three shapes (publish check).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.sender_profile_sid.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.sender_profile_sid","typeLabel":"string | null"},"rotation":{"oneOf":[{"type":"string","enum":["fair","random","new_sender","prior_engagement"],"description":"Re-pick the sender from the workflow pool by this strategy instead of a fixed sid, forward only. Exactly one of the three shapes (publish check).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.rotation.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["fair","random","new_sender","prior_engagement"],"description":"Re-pick the sender from the workflow pool by this strategy instead of a fixed sid, forward only. Exactly one of the three shapes (publish check).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.rotation.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.rotation","typeLabel":"enum\u003cstring> | null"},"rotations":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"sender_profile_sid":{"oneOf":[{"type":"string","minLength":18,"maxLength":18,"pattern":"^ub_sp_","description":"The sender profile for this pass; null = the workflow's rotation strategy picks, never the sender profile the record already has. Must be in the workflow's pool (publish check).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX].sender_profile_sid.oneOf.0","typeLabel":"string"},{"type":"null","minLength":18,"maxLength":18,"pattern":"^ub_sp_","description":"The sender profile for this pass; null = the workflow's rotation strategy picks, never the sender profile the record already has. Must be in the workflow's pool (publish check).","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX].sender_profile_sid.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX].sender_profile_sid","typeLabel":"string | null"},"entry_step_id":{"oneOf":[{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"A step id of THIS document to restart the journey from (publish check); null = the workflow's entry step.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX].entry_step_id.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"exclusiveMinimum":true,"description":"A step id of THIS document to restart the journey from (publish check); null = the workflow's entry step.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX].entry_step_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX].entry_step_id","typeLabel":"integer | null"}},"required":["sender_profile_sid","entry_step_id"],"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.rotations.oneOf.0.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":10,"description":"The legacy gs_rotate_sender_profile list (D45): each pass through the node consumes the next entry and RESTARTS the journey from its entry step with its sender profile (touches start over; workflow_records.rotations_done is the cursor); past the end the journey continues. Exactly one of the three shapes (publish check).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.rotations.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"sender_profile_sid":{"oneOf":[{"type":"string","minLength":18,"maxLength":18,"pattern":"^ub_sp_","description":"The sender profile for this pass; null = the workflow's rotation strategy picks, never the sender profile the record already has. Must be in the workflow's pool (publish check)."},{"type":"null","minLength":18,"maxLength":18,"pattern":"^ub_sp_","description":"The sender profile for this pass; null = the workflow's rotation strategy picks, never the sender profile the record already has. Must be in the workflow's pool (publish check)."}]},"entry_step_id":{"oneOf":[{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"A step id of THIS document to restart the journey from (publish check); null = the workflow's entry step."},{"type":"null","minimum":0,"exclusiveMinimum":true,"description":"A step id of THIS document to restart the journey from (publish check); null = the workflow's entry step."}]}},"required":["sender_profile_sid","entry_step_id"],"additionalProperties":false},"minItems":1,"maxItems":10,"description":"The legacy gs_rotate_sender_profile list (D45): each pass through the node consumes the next entry and RESTARTS the journey from its entry step with its sender profile (touches start over; workflow_records.rotations_done is the cursor); past the end the journey continues. Exactly one of the three shapes (publish check).","uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.rotations.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21.rotations","typeLabel":"object[] | null"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX].oneOf.21","typeLabel":"object"}],"uniqueKey":"\\items.items.[INDEX].item.steps.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":100,"description":"Immutable chain-and-blocks snapshot: array order = execution order, entry = steps[0], root-array exhaustion completes the record; 1..100 steps TOTAL incl. nested, \u003c=512 KB serialized. Step ids are stable across versions.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps","typeLabel":"object[]"},"steps_count":{"type":"integer","minimum":1,"maximum":100,"description":"Denormalized total step count (incl. nested) at insert - lets lists/events skip the JSON.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.steps_count","typeLabel":"integer"},"entry_step_id":{"type":"integer","minimum":1,"description":"= steps[0].id, denormalized at publish; every enrollment starts here.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.entry_step_id","typeLabel":"integer"},"created_by":{"type":"object","properties":{"actor_type":{"type":"string","enum":["user","support","api_key","system","agent"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.created_by.actor_type","typeLabel":"enum\u003cstring>"},"actor_sid":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.created_by.actor_sid.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.created_by.actor_sid.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.created_by.actor_sid","typeLabel":"string | null"},"team_sid":{"type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.created_by.team_sid","typeLabel":"string"},"permissions":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"\\items.items.[INDEX].item.created_by.permissions.additionalProperties","typeLabel":"any"},"description":"Internal audit context: the grant set the actor held at write time. Not a contract.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.created_by.permissions","typeLabel":"object"},"actor_name":{"oneOf":[{"type":"string","description":"The OAuth client that acted (\"Claude\", \"n8n\"); null for a user, an API key or a system job.","uniqueKey":"\\items.items.[INDEX].item.created_by.actor_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"The OAuth client that acted (\"Claude\", \"n8n\"); null for a user, an API key or a system job.","uniqueKey":"\\items.items.[INDEX].item.created_by.actor_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.created_by.actor_name","typeLabel":"string | null"},"oauth_client_sid":{"oneOf":[{"type":"string","description":"The acting OAuth client (id_oc_*); null off the OAuth path.","uniqueKey":"\\items.items.[INDEX].item.created_by.oauth_client_sid.oneOf.0","typeLabel":"string"},{"type":"null","description":"The acting OAuth client (id_oc_*); null off the OAuth path.","uniqueKey":"\\items.items.[INDEX].item.created_by.oauth_client_sid.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.created_by.oauth_client_sid","typeLabel":"string | null"},"reason":{"oneOf":[{"type":"string","description":"Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise.","uniqueKey":"\\items.items.[INDEX].item.created_by.reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise.","uniqueKey":"\\items.items.[INDEX].item.created_by.reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.created_by.reason","typeLabel":"string | null"},"cluster_id":{"oneOf":[{"type":"integer","description":"Internal audit context: the cluster that served the write.","uniqueKey":"\\items.items.[INDEX].item.created_by.cluster_id.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Internal audit context: the cluster that served the write.","uniqueKey":"\\items.items.[INDEX].item.created_by.cluster_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.created_by.cluster_id","typeLabel":"integer | null"},"trace_id":{"oneOf":[{"type":"string","description":"Internal audit context: the trace id of the request that wrote the row.","uniqueKey":"\\items.items.[INDEX].item.created_by.trace_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Internal audit context: the trace id of the request that wrote the row.","uniqueKey":"\\items.items.[INDEX].item.created_by.trace_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].item.created_by.trace_id","typeLabel":"string | null"}},"required":["actor_type","actor_sid","team_sid","permissions"],"description":"The PUBLISHER - actor of workflows.publish; answers \"who shipped v7\".","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.created_by","typeLabel":"object"},"created_at":{"type":"string","description":"ISO 8601 UTC - the publish moment. No updated_at: the row never changes.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].item.created_at","typeLabel":"string"}},"required":["sid","team_sid","workflow_sid","version","steps","steps_count","entry_step_id","created_by","created_at"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].item","typeLabel":"object"},"included":{"type":"object","properties":{"workflow":{"type":"object","properties":{"sid":{"type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].included.workflow.sid","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].included.workflow.name","typeLabel":"string"},"status":{"type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].included.workflow.status","typeLabel":"string"},"published_version_sid":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].included.workflow.published_version_sid.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"\\items.items.[INDEX].included.workflow.published_version_sid.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].included.workflow.published_version_sid","typeLabel":"string | null"}},"required":["sid","name","status","published_version_sid"],"description":"Parent workflow (WorkflowDomain - entities/workflows.md): name/status + published_version_sid to check whether THIS row is the live pointer.","uniqueKey":"\\items.items.[INDEX].included.workflow","typeLabel":"object"},"workflow_records_counts":{"type":"object","properties":{"total_count":{"type":"integer","minimum":0,"description":"Records pinned to this version.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].included.workflow_records_counts.total_count","typeLabel":"integer"},"groups":{"type":"object","properties":{"status":{"oneOf":[{"type":"object","description":"Funnel by WorkflowRecordStatusEnum - non-terminal buckets = \"who is still running this version\".","additionalProperties":{"type":"integer","minimum":0,"uniqueKey":"\\items.items.[INDEX].included.workflow_records_counts.groups.status.oneOf.0.additionalProperties","typeLabel":"integer"},"isRequired":true,"uniqueKey":"\\items.items.[INDEX].included.workflow_records_counts.groups.status.oneOf.0","typeLabel":"object"},{"type":"array","items":{"oneOf":[{}],"uniqueKey":"\\items.items.[INDEX].included.workflow_records_counts.groups.status.oneOf.1.items.[INDEX]","typeLabel":"any"},"description":"Funnel by WorkflowRecordStatusEnum - non-terminal buckets = \"who is still running this version\".","isRequired":true,"uniqueKey":"\\items.items.[INDEX].included.workflow_records_counts.groups.status.oneOf.1","typeLabel":"any[]"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].included.workflow_records_counts.groups.status","typeLabel":"object | any[]"}},"required":["status"],"description":"Axes per WorkflowRecordGroupableFieldsEnum (canonical shape - entities/workflow_records.md). PHP empty map serialises as [].","isRequired":true,"uniqueKey":"\\items.items.[INDEX].included.workflow_records_counts.groups","typeLabel":"object"}},"required":["total_count","groups"],"description":"Parent-include counts (§4.17) computed against {workflow_version_sid: parent.sid}: how many records are pinned to this version and in which statuses, without loading rows.","uniqueKey":"\\items.items.[INDEX].included.workflow_records_counts","typeLabel":"object"}},"isRequired":true,"uniqueKey":"\\items.items.[INDEX].included","typeLabel":"object"}},"required":["item","included"],"uniqueKey":"\\items.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"\\items","typeLabel":"object[]"},"pagination":{"type":"object","properties":{"next_cursor":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"pagination.next_cursor.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"pagination.next_cursor.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"pagination.next_cursor","typeLabel":"string | null"},"has_more":{"type":"boolean","isRequired":true,"uniqueKey":"pagination.has_more","typeLabel":"boolean"},"total_count":{"oneOf":[{"type":"integer","isRequired":true,"uniqueKey":"pagination.total_count.oneOf.0","typeLabel":"integer"},{"type":"null","isRequired":true,"uniqueKey":"pagination.total_count.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"pagination.total_count","typeLabel":"integer | null"}},"required":["next_cursor","has_more","total_count"],"isRequired":true,"uniqueKey":"pagination","typeLabel":"object"},"applied_filters":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"applied_filters.additionalProperties","typeLabel":"any"},"isRequired":true,"uniqueKey":"applied_filters","typeLabel":"object"},"includes":{"type":"array","items":{"type":"string","uniqueKey":"includes.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"includes","typeLabel":"string[]"},"meta":{"type":"object","properties":{"trace_id":{"type":"string","description":"UUID v7; same 128-bit value as the X-Trace-Id header.","isRequired":true,"uniqueKey":"meta.trace_id","typeLabel":"string"},"span_id":{"type":"string","pattern":"^[0-9a-f]{16}$","description":"16 hex chars, root span of this request.","isRequired":true,"uniqueKey":"meta.span_id","typeLabel":"string"},"timestamp":{"type":"string","description":"ISO 8601 UTC (Y-m-dTH:i:sZ), response time.","isRequired":true,"uniqueKey":"meta.timestamp","typeLabel":"string"},"duration_ms":{"type":"integer","minimum":0,"description":"Server-side wall clock.","isRequired":true,"uniqueKey":"meta.duration_ms","typeLabel":"integer"},"team_sid":{"oneOf":[{"type":"string","description":"The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends.","uniqueKey":"meta.team_sid.oneOf.0","typeLabel":"string"},{"type":"null","description":"The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends.","uniqueKey":"meta.team_sid.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.team_sid","typeLabel":"string | null"},"actor_type":{"oneOf":[{"type":"string","description":"user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends.","uniqueKey":"meta.actor_type.oneOf.0","typeLabel":"string"},{"type":"null","description":"user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends.","uniqueKey":"meta.actor_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.actor_type","typeLabel":"string | null"}},"required":["trace_id","span_id","timestamp","duration_ms"],"isRequired":true,"uniqueKey":"meta","typeLabel":"object"},"counts":{"type":"object","properties":{"total_count":{"type":"integer","minimum":0,"description":"Versions matching the filter - full filter scope, not the page.","isRequired":true,"uniqueKey":"counts.total_count","typeLabel":"integer"},"groups":{"type":"object","properties":{"workflow_sid":{"oneOf":[{"type":"object","description":"Flat {wf_wf_ sid: version count} - versions-per-workflow distribution; backed by (team_sid, workflow_sid, version DESC).","additionalProperties":{"type":"integer","minimum":0,"uniqueKey":"counts.groups.workflow_sid.oneOf.0.additionalProperties","typeLabel":"integer"},"isRequired":true,"uniqueKey":"counts.groups.workflow_sid.oneOf.0","typeLabel":"object"},{"type":"array","items":{"oneOf":[{}],"uniqueKey":"counts.groups.workflow_sid.oneOf.1.items.[INDEX]","typeLabel":"any"},"description":"Flat {wf_wf_ sid: version count} - versions-per-workflow distribution; backed by (team_sid, workflow_sid, version DESC).","isRequired":true,"uniqueKey":"counts.groups.workflow_sid.oneOf.1","typeLabel":"any[]"}],"isRequired":true,"uniqueKey":"counts.groups.workflow_sid","typeLabel":"object | any[]"}},"required":["workflow_sid"],"description":"One axis per WorkflowVersionGroupableFieldsEnum value (§4.17). PHP empty map serialises as [].","isRequired":true,"uniqueKey":"counts.groups","typeLabel":"object"}},"required":["total_count","groups"],"uniqueKey":"counts","typeLabel":"object"}},"required":["success","operation","items","pagination","applied_filters","includes","meta"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":true,"operation":"search","items":[{"item":{"sid":"\u003cstring>","team_sid":"\u003cstring>","workflow_sid":"\u003cstring>","version":2,"steps":[{"id":2,"type":"linkedin_send_connection_request","name":"\u003cstring>","delay":"\u003cstring>","message":"\u003cstring>","required_fields":{"refs":["\u003cstring>"],"on_missing":"fail"}}],"steps_count":50,"entry_step_id":2,"created_by":{"actor_type":"user","actor_sid":"\u003cstring>","team_sid":"\u003cstring>","permissions":{},"actor_name":"\u003cstring>","oauth_client_sid":"\u003cstring>","reason":"\u003cstring>","cluster_id":123,"trace_id":"\u003cstring>"},"created_at":"\u003cstring>"},"included":{"workflow":{"sid":"\u003cstring>","name":"\u003cstring>","status":"\u003cstring>","published_version_sid":"\u003cstring>"},"workflow_records_counts":{"total_count":1,"groups":{"status":{}}}}}],"pagination":{"next_cursor":"\u003cstring>","has_more":true,"total_count":123},"applied_filters":{},"includes":["\u003cstring>"],"meta":{"trace_id":"\u003cstring>","span_id":"\u003cstring>","timestamp":"\u003cstring>","duration_ms":1,"team_sid":"\u003cstring>","actor_type":"\u003cstring>"},"counts":{"total_count":1,"groups":{"workflow_sid":{}}}}}},"exampleType":"generated"}},"exampleType":"generated"},"07b95480-a908-49f4-9ad3-7b4dc241f2fa":{"description":"MCP error envelope. `error.code` is one of validation_failed, nothing_to_update, not_found, relation_not_found, invalid_transition, limit_exceeded, payment_required, duplicate_rejected, conflict, delete_blocked, unauthorized, forbidden, rate_limited, not_implemented.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"isRequired":true,"uniqueKey":"success","typeLabel":"enum\u003cboolean>"},"error":{"type":"object","properties":{"code":{"type":"string","enum":["validation_failed","nothing_to_update","not_found","relation_not_found","invalid_transition","limit_exceeded","payment_required","duplicate_rejected","conflict","delete_blocked","unauthorized","forbidden","rate_limited","internal_error","service_unavailable","not_implemented"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"recoverable":{"type":"boolean","isRequired":true,"uniqueKey":"error.recoverable","typeLabel":"boolean"},"suggestion":{"type":"string","uniqueKey":"error.suggestion","typeLabel":"string"},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"rule":{"type":"string","isRequired":true,"uniqueKey":"error.field_errors.additionalProperties.items.[INDEX].rule","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.field_errors.additionalProperties.items.[INDEX].message","typeLabel":"string"}},"required":["rule","message"],"uniqueKey":"error.field_errors.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.field_errors.additionalProperties","typeLabel":"object[]"},"uniqueKey":"error.field_errors","typeLabel":"object"},"blockers":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Machine-readable blocker type (active_flow, pending_tasks, …).","isRequired":true,"uniqueKey":"error.blockers.items.[INDEX].type","typeLabel":"string"},"severity":{"type":"string","enum":["hard","soft"],"description":"hard = external action required; soft = acknowledge is enough.","isRequired":true,"uniqueKey":"error.blockers.items.[INDEX].severity","typeLabel":"enum\u003cstring>"},"description":{"type":"string","isRequired":true,"uniqueKey":"error.blockers.items.[INDEX].description","typeLabel":"string"},"entity_sid":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"error.blockers.items.[INDEX].entity_sid.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"error.blockers.items.[INDEX].entity_sid.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.blockers.items.[INDEX].entity_sid","typeLabel":"string | null"},"resolution":{"type":"string","description":"Hard: tool name to call. Soft: code for acknowledge[].","isRequired":true,"uniqueKey":"error.blockers.items.[INDEX].resolution","typeLabel":"string"},"resolution_hint":{"type":"string","isRequired":true,"uniqueKey":"error.blockers.items.[INDEX].resolution_hint","typeLabel":"string"},"count":{"type":"integer","uniqueKey":"error.blockers.items.[INDEX].count","typeLabel":"integer"}},"required":["type","severity","description","entity_sid","resolution","resolution_hint"],"uniqueKey":"error.blockers.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.blockers","typeLabel":"object[]"},"context":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.context.additionalProperties","typeLabel":"any"},"uniqueKey":"error.context","typeLabel":"object"}},"required":["code","message","recoverable"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","properties":{"trace_id":{"type":"string","description":"UUID v7; same 128-bit value as the X-Trace-Id header.","isRequired":true,"uniqueKey":"meta.trace_id","typeLabel":"string"},"span_id":{"type":"string","pattern":"^[0-9a-f]{16}$","description":"16 hex chars, root span of this request.","isRequired":true,"uniqueKey":"meta.span_id","typeLabel":"string"},"timestamp":{"type":"string","description":"ISO 8601 UTC (Y-m-dTH:i:sZ), response time.","isRequired":true,"uniqueKey":"meta.timestamp","typeLabel":"string"},"duration_ms":{"type":"integer","minimum":0,"description":"Server-side wall clock.","isRequired":true,"uniqueKey":"meta.duration_ms","typeLabel":"integer"},"team_sid":{"oneOf":[{"type":"string","description":"The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends.","uniqueKey":"meta.team_sid.oneOf.0","typeLabel":"string"},{"type":"null","description":"The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends.","uniqueKey":"meta.team_sid.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.team_sid","typeLabel":"string | null"},"actor_type":{"oneOf":[{"type":"string","description":"user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends.","uniqueKey":"meta.actor_type.oneOf.0","typeLabel":"string"},{"type":"null","description":"user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends.","uniqueKey":"meta.actor_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.actor_type","typeLabel":"string | null"}},"required":["trace_id","span_id","timestamp","duration_ms"],"uniqueKey":"meta","typeLabel":"object"}},"required":["success","error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":false,"error":{"code":"validation_failed","message":"\u003cstring>","recoverable":true,"suggestion":"\u003cstring>","field_errors":{},"blockers":[{"type":"\u003cstring>","severity":"hard","description":"\u003cstring>","entity_sid":"\u003cstring>","resolution":"\u003cstring>","resolution_hint":"\u003cstring>","count":123}],"context":{}},"meta":{"trace_id":"\u003cstring>","span_id":"\u003cstring>","timestamp":"\u003cstring>","duration_ms":1,"team_sid":"\u003cstring>","actor_type":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"508f1e6d-12e3-467f-8f54-22ed2d4904db":{"description":"MCP error envelope with `error.code` internal_error or service_unavailable.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"isRequired":true,"uniqueKey":"success","typeLabel":"enum\u003cboolean>"},"error":{"type":"object","properties":{"code":{"type":"string","enum":["validation_failed","nothing_to_update","not_found","relation_not_found","invalid_transition","limit_exceeded","payment_required","duplicate_rejected","conflict","delete_blocked","unauthorized","forbidden","rate_limited","internal_error","service_unavailable","not_implemented"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"recoverable":{"type":"boolean","isRequired":true,"uniqueKey":"error.recoverable","typeLabel":"boolean"},"suggestion":{"type":"string","uniqueKey":"error.suggestion","typeLabel":"string"},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"rule":{"type":"string","isRequired":true,"uniqueKey":"error.field_errors.additionalProperties.items.[INDEX].rule","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.field_errors.additionalProperties.items.[INDEX].message","typeLabel":"string"}},"required":["rule","message"],"uniqueKey":"error.field_errors.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.field_errors.additionalProperties","typeLabel":"object[]"},"uniqueKey":"error.field_errors","typeLabel":"object"},"blockers":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Machine-readable blocker type (active_flow, pending_tasks, …).","isRequired":true,"uniqueKey":"error.blockers.items.[INDEX].type","typeLabel":"string"},"severity":{"type":"string","enum":["hard","soft"],"description":"hard = external action required; soft = acknowledge is enough.","isRequired":true,"uniqueKey":"error.blockers.items.[INDEX].severity","typeLabel":"enum\u003cstring>"},"description":{"type":"string","isRequired":true,"uniqueKey":"error.blockers.items.[INDEX].description","typeLabel":"string"},"entity_sid":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"error.blockers.items.[INDEX].entity_sid.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"error.blockers.items.[INDEX].entity_sid.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.blockers.items.[INDEX].entity_sid","typeLabel":"string | null"},"resolution":{"type":"string","description":"Hard: tool name to call. Soft: code for acknowledge[].","isRequired":true,"uniqueKey":"error.blockers.items.[INDEX].resolution","typeLabel":"string"},"resolution_hint":{"type":"string","isRequired":true,"uniqueKey":"error.blockers.items.[INDEX].resolution_hint","typeLabel":"string"},"count":{"type":"integer","uniqueKey":"error.blockers.items.[INDEX].count","typeLabel":"integer"}},"required":["type","severity","description","entity_sid","resolution","resolution_hint"],"uniqueKey":"error.blockers.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.blockers","typeLabel":"object[]"},"context":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.context.additionalProperties","typeLabel":"any"},"uniqueKey":"error.context","typeLabel":"object"}},"required":["code","message","recoverable"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","properties":{"trace_id":{"type":"string","description":"UUID v7; same 128-bit value as the X-Trace-Id header.","isRequired":true,"uniqueKey":"meta.trace_id","typeLabel":"string"},"span_id":{"type":"string","pattern":"^[0-9a-f]{16}$","description":"16 hex chars, root span of this request.","isRequired":true,"uniqueKey":"meta.span_id","typeLabel":"string"},"timestamp":{"type":"string","description":"ISO 8601 UTC (Y-m-dTH:i:sZ), response time.","isRequired":true,"uniqueKey":"meta.timestamp","typeLabel":"string"},"duration_ms":{"type":"integer","minimum":0,"description":"Server-side wall clock.","isRequired":true,"uniqueKey":"meta.duration_ms","typeLabel":"integer"},"team_sid":{"oneOf":[{"type":"string","description":"The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends.","uniqueKey":"meta.team_sid.oneOf.0","typeLabel":"string"},{"type":"null","description":"The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends.","uniqueKey":"meta.team_sid.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.team_sid","typeLabel":"string | null"},"actor_type":{"oneOf":[{"type":"string","description":"user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends.","uniqueKey":"meta.actor_type.oneOf.0","typeLabel":"string"},{"type":"null","description":"user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends.","uniqueKey":"meta.actor_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.actor_type","typeLabel":"string | null"}},"required":["trace_id","span_id","timestamp","duration_ms"],"uniqueKey":"meta","typeLabel":"object"}},"required":["success","error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":false,"error":{"code":"validation_failed","message":"\u003cstring>","recoverable":true,"suggestion":"\u003cstring>","field_errors":{},"blockers":[{"type":"\u003cstring>","severity":"hard","description":"\u003cstring>","entity_sid":"\u003cstring>","resolution":"\u003cstring>","resolution_hint":"\u003cstring>","count":123}],"context":{}},"meta":{"trace_id":"\u003cstring>","span_id":"\u003cstring>","timestamp":"\u003cstring>","duration_ms":1,"team_sid":"\u003cstring>","actor_type":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"d3ab5cdd-2aa1-426f-93da-16562fad923f":{"BearerJwt":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Access token issued by gs.service.id. Its `access_identity` claim carries `team_sid`, `actor_sid` and `actor_type`, and that team scope is authoritative.","scopes":[],"schemeName":"BearerJwt"},"TeamSid":{"type":"apiKey","in":"header","name":"Team-SID","description":"Team scope for tokens that do not carry one. Ignored when the token already names a team.","scopes":[],"schemeName":"TeamSid"}}},"servers":{"71624634-b298-4b81-ba22-a05986db64c0":{"url":"https://beta.getsales.io/playtables/v1","description":"Production (the gateway path on the beta ring; the origin is provisioned per DEPLOY_MAP.md)"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Access token issued by gs.service.id. Its `access_identity` claim carries `team_sid`, `actor_sid` and `actor_type`, and that team scope is authoritative.","scopes":[],"schemeName":"BearerJwt"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Access token issued by gs.service.id. Its `access_identity` claim carries `team_sid`, `actor_sid` and `actor_type`, and that team scope is authoritative.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerJwt","name":"Authorization"},{"scheme":{"type":"apiKey","in":"header","name":"Team-SID","description":"Team scope for tokens that do not carry one. Ignored when the token already names a team.","scopes":[],"schemeName":"TeamSid"},"schema":{"title":"Team-SID","type":"string","description":"Team scope for tokens that do not carry one. Ignored when the token already names a team.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"TeamSid","name":"Team-SID"}],"title":"BearerJwt \u0026 TeamSid"}]},"originalFileLocation":"api-reference/playtables/openapi.yaml"},"subdomain":"getsales","siteName":"GetSales","title":"Search workflow versions - GetSales","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-01T05:07:41.519Z","originalFileLocation":"api-reference/playtables/workflow_versions/search-workflow-versions.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=\"Immutable published snapshots of a workflow\u0026#x27;s step graph - one row per publish, never edited or deleted. Version history: filter.workflow_sid, sort version desc; items carry the FULL steps JSON - keep page_size small (history rarely exceeds 20). include workflow_records_counts = how many records are pinned to each version and in which statuses (the drift check after a republish). page_size:0 = counts only. To change steps edit the workflow\u0026#x27;s draft_steps and publish. Contract: - MCP tool search_workflow_versions, registry package mcp.playtables/workflow_versions, mount playtables.workflows. - Operation search, response envelope search. - Flags: read only.\">\u003cmeta data-mint-head name=\"application-name\" content=\"GetSales\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/getsales/Xk1sYTgBQiFOp0cW/_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/getsales/Xk1sYTgBQiFOp0cW/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/getsales/Xk1sYTgBQiFOp0cW/_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/getsales/Xk1sYTgBQiFOp0cW/_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/getsales/Xk1sYTgBQiFOp0cW/_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/getsales/Xk1sYTgBQiFOp0cW/_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/getsales/Xk1sYTgBQiFOp0cW/_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/getsales/Xk1sYTgBQiFOp0cW/_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/getsales/Xk1sYTgBQiFOp0cW/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Search workflow versions - GetSales\">\u003cmeta data-mint-head property=\"og:description\" content=\"Immutable published snapshots of a workflow\u0026#x27;s step graph - one row per publish, never edited or deleted. Version history: filter.workflow_sid, sort version desc; items carry the FULL steps JSON - keep page_size small (history rarely exceeds 20). include workflow_records_counts = how many records are pinned to each version and in which statuses (the drift check after a republish). page_size:0 = counts only. To change steps edit the workflow\u0026#x27;s draft_steps and publish. Contract: - MCP tool search_workflow_versions, registry package mcp.playtables/workflow_versions, mount playtables.workflows. - Operation search, response envelope search. - Flags: read only.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"GetSales\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.getsales.io/api-reference/playtables/workflow_versions/search-workflow-versions\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://getsales.mintlify.app/_mintlify/api/og/v2?division=workflow_versions\u0026amp;title=Search+workflow+versions\u0026amp;description=Immutable+published+snapshots+of+a+workflow%27s+step+graph+-+one+row+per+publish%2C+never+edited+or+deleted.+Version+history%3A+filter.workflow_sid%2C+sort+version+desc\u0026amp;theme=2557d625acdab73e379ce8c9\u0026amp;signature=c3777cd362e6fc87477c80c1267d3373d648044642b6d06555e6b4c89e95edfd\">\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=\"Search workflow versions - GetSales\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Immutable published snapshots of a workflow\u0026#x27;s step graph - one row per publish, never edited or deleted. Version history: filter.workflow_sid, sort version desc; items carry the FULL steps JSON - keep page_size small (history rarely exceeds 20). include workflow_records_counts = how many records are pinned to each version and in which statuses (the drift check after a republish). page_size:0 = counts only. To change steps edit the workflow\u0026#x27;s draft_steps and publish. Contract: - MCP tool search_workflow_versions, registry package mcp.playtables/workflow_versions, mount playtables.workflows. - Operation search, response envelope search. - Flags: read only.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://getsales.mintlify.app/_mintlify/api/og/v2?division=workflow_versions\u0026amp;title=Search+workflow+versions\u0026amp;description=Immutable+published+snapshots+of+a+workflow%27s+step+graph+-+one+row+per+publish%2C+never+edited+or+deleted.+Version+history%3A+filter.workflow_sid%2C+sort+version+desc\u0026amp;theme=2557d625acdab73e379ce8c9\u0026amp;signature=c3777cd362e6fc87477c80c1267d3373d648044642b6d06555e6b4c89e95edfd\">\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/getsales/Xk1sYTgBQiFOp0cW/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"GetSales\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4B64FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.getsales.io/api-reference/playtables/workflow_versions/search-workflow-versions\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/playtables/workflow_versions/search-workflow-versions.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.getsales.io/#organization\",\"name\":\"GetSales\",\"url\":\"https://docs.getsales.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/getsales/um-g-UJLB97yTl7a/logo/light.svg?fit=max\u0026auto=format\u0026n=um-g-UJLB97yTl7a\u0026q=85\u0026s=428985b239f36914fa7e1e44f6211540\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.getsales.io#website\",\"name\":\"GetSales\",\"url\":\"https://docs.getsales.io\",\"publisher\":{\"@id\":\"https://docs.getsales.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.getsales.io/api-reference/playtables/workflow_versions/search-workflow-versions#webpage\",\"url\":\"https://docs.getsales.io/api-reference/playtables/workflow_versions/search-workflow-versions\",\"name\":\"Search workflow versions\",\"description\":\"Immutable published snapshots of a workflow's step graph - one row per publish, never edited or deleted. Version history: filter.workflow_sid, sort version desc; items carry the FULL steps JSON - keep page_size small (history rarely exceeds 20). include workflow_records_counts = how many records are pinned to each version and in which statuses (the drift check after a republish). page_size:0 = counts only. To change steps edit the workflow's draft_steps and publish. Contract: - MCP tool search_workflow_versions, registry package mcp.playtables/workflow_versions, mount playtables.workflows. - Operation search, response envelope search. - Flags: read only.\",\"dateModified\":\"2026-11-01T05:07:41.519Z\",\"isPartOf\":{\"@id\":\"https://docs.getsales.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.getsales.io/api-reference/playtables/workflow_versions/search-workflow-versions#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.getsales.io/api-reference/playtables/workflow_versions/search-workflow-versions#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Playtables API\",\"item\":\"https://docs.getsales.io/api-reference/playtables/activities/activities-metrics\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Search workflow versions\",\"item\":\"https://docs.getsales.io/api-reference/playtables/workflow_versions/search-workflow-versions\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.getsales.io/api-reference/playtables/workflow_versions/search-workflow-versions#apireference\",\"headline\":\"Search workflow versions\",\"name\":\"Search workflow versions\",\"description\":\"Immutable published snapshots of a workflow's step graph - one row per publish, never edited or deleted. Version history: filter.workflow_sid, sort version desc; items carry the FULL steps JSON - keep page_size small (history rarely exceeds 20). include workflow_records_counts = how many records are pinned to each version and in which statuses (the drift check after a republish). page_size:0 = counts only. To change steps edit the workflow's draft_steps and publish. Contract: - MCP tool search_workflow_versions, registry package mcp.playtables/workflow_versions, mount playtables.workflows. - Operation search, response envelope search. - Flags: read only.\",\"url\":\"https://docs.getsales.io/api-reference/playtables/workflow_versions/search-workflow-versions\",\"mainEntityOfPage\":{\"@id\":\"https://docs.getsales.io/api-reference/playtables/workflow_versions/search-workflow-versions#webpage\"},\"dateModified\":\"2026-11-01T05:07:41.519Z\",\"publisher\":{\"@id\":\"https://docs.getsales.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.getsales.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"GetSales\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"GetSales","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"API reference overview","sidebarTitle":"Overview","href":"/api-reference/overview"}]},{"group":"Playtables API","pages":[{"group":"activities","pages":[{"title":"Activities metrics","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/activities/metrics","href":"/api-reference/playtables/activities/activities-metrics"},{"title":"Search activities","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/activities/search","href":"/api-reference/playtables/activities/search-activities"},{"title":"Act on activity","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/activities/{sid}/act","href":"/api-reference/playtables/activities/act-on-activity"},{"title":"Draft for activity","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/activities/{sid}/draft","href":"/api-reference/playtables/activities/draft-for-activity"}]},{"group":"activity_objects","pages":[{"title":"Search activity objects","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/activity-objects/search","href":"/api-reference/playtables/activity_objects/search-activity-objects"}]},{"group":"companies","pages":[{"title":"Create company","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/companies","href":"/api-reference/playtables/companies/create-company"},{"title":"Companies metrics","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/companies/metrics","href":"/api-reference/playtables/companies/companies-metrics"},{"title":"Read LinkedIn company","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/companies/read-linkedin","href":"/api-reference/playtables/companies/read-linkedin-company"},{"title":"Search companies","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/companies/search","href":"/api-reference/playtables/companies/search-companies"},{"title":"Suggest company filter values","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/companies/suggest","href":"/api-reference/playtables/companies/suggest-company-filter-values"},{"title":"Get company","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml get /api/companies/{sid}","href":"/api-reference/playtables/companies/get-company"},{"title":"Delete company","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml delete /api/companies/{sid}","href":"/api-reference/playtables/companies/delete-company"},{"title":"Update company","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml patch /api/companies/{sid}","href":"/api-reference/playtables/companies/update-company"},{"title":"Detach company from playtable","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/companies/{sid}/detach","href":"/api-reference/playtables/companies/detach-company-from-playtable"},{"title":"Make company primary","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/companies/{sid}/make-primary","href":"/api-reference/playtables/companies/make-company-primary"},{"title":"Merge companies","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/companies/{sid}/merge","href":"/api-reference/playtables/companies/merge-companies"}]},{"group":"credit_ledger_entries","pages":[{"title":"Credit ledger entries metrics","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/credit-ledger-entries/metrics","href":"/api-reference/playtables/credit_ledger_entries/credit-ledger-entries-metrics"},{"title":"Search credit ledger entries","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/credit-ledger-entries/search","href":"/api-reference/playtables/credit_ledger_entries/search-credit-ledger-entries"}]},{"group":"data_source_items","pages":[{"title":"Move data source duplicates","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/data-source-items/move","href":"/api-reference/playtables/data_source_items/move-data-source-duplicates"},{"title":"Search data source items","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/data-source-items/search","href":"/api-reference/playtables/data_source_items/search-data-source-items"}]},{"group":"data_sources","pages":[{"title":"Create data source","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/data-sources","href":"/api-reference/playtables/data_sources/create-data-source"},{"title":"Plan data source filters","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/data-sources/ai-plan","href":"/api-reference/playtables/data_sources/plan-data-source-filters"},{"title":"Suggest data source filter values","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/data-sources/filter-typeahead","href":"/api-reference/playtables/data_sources/suggest-data-source-filter-values"},{"title":"Data sources metrics","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/data-sources/metrics","href":"/api-reference/playtables/data_sources/data-sources-metrics"},{"title":"Preview post engagement","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/data-sources/post-engagement-preview","href":"/api-reference/playtables/data_sources/preview-post-engagement"},{"title":"Search data sources","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/data-sources/search","href":"/api-reference/playtables/data_sources/search-data-sources"},{"title":"Create data source upload URL","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/data-sources/upload-url","href":"/api-reference/playtables/data_sources/create-data-source-upload-url"},{"title":"Get data source","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml get /api/data-sources/{sid}","href":"/api-reference/playtables/data_sources/get-data-source"},{"title":"Delete data source","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml delete /api/data-sources/{sid}","href":"/api-reference/playtables/data_sources/delete-data-source"},{"title":"Update data source","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml patch /api/data-sources/{sid}","href":"/api-reference/playtables/data_sources/update-data-source"},{"title":"Add companies to data source","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/data-sources/{sid}/add-companies","href":"/api-reference/playtables/data_sources/add-companies-to-data-source"},{"title":"Import data source","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/data-sources/{sid}/import","href":"/api-reference/playtables/data_sources/import-data-source"},{"title":"Rotate data source ingest key","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/data-sources/{sid}/rotate-ingest-key","href":"/api-reference/playtables/data_sources/rotate-data-source-ingest-key"}]},{"group":"notes","pages":[{"title":"Create note","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/notes","href":"/api-reference/playtables/notes/create-note"},{"title":"Search notes","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/notes/search","href":"/api-reference/playtables/notes/search-notes"},{"title":"Delete note","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml delete /api/notes/{sid}","href":"/api-reference/playtables/notes/delete-note"},{"title":"Update note","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml patch /api/notes/{sid}","href":"/api-reference/playtables/notes/update-note"}]},{"group":"people","pages":[{"title":"Create person","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/people","href":"/api-reference/playtables/people/create-person"},{"title":"People metrics","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/people/metrics","href":"/api-reference/playtables/people/people-metrics"},{"title":"Read LinkedIn person","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/people/read-linkedin","href":"/api-reference/playtables/people/read-linkedin-person"},{"title":"Search people","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/people/search","href":"/api-reference/playtables/people/search-people"},{"title":"Suggest person filter values","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/people/suggest","href":"/api-reference/playtables/people/suggest-person-filter-values"},{"title":"Get person","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml get /api/people/{sid}","href":"/api-reference/playtables/people/get-person"},{"title":"Delete person","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml delete /api/people/{sid}","href":"/api-reference/playtables/people/delete-person"},{"title":"Update person","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml patch /api/people/{sid}","href":"/api-reference/playtables/people/update-person"},{"title":"Make person primary","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/people/{sid}/make-primary","href":"/api-reference/playtables/people/make-person-primary"}]},{"group":"pipeline_stages","pages":[{"title":"Create pipeline stage","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/pipeline-stages","href":"/api-reference/playtables/pipeline_stages/create-pipeline-stage"},{"title":"Pipeline stages metrics","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/pipeline-stages/metrics","href":"/api-reference/playtables/pipeline_stages/pipeline-stages-metrics"},{"title":"Reset company stage derivation","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/pipeline-stages/reset-derivation","href":"/api-reference/playtables/pipeline_stages/reset-company-stage-derivation"},{"title":"Search pipeline stages","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/pipeline-stages/search","href":"/api-reference/playtables/pipeline_stages/search-pipeline-stages"},{"title":"Delete pipeline stage","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml delete /api/pipeline-stages/{sid}","href":"/api-reference/playtables/pipeline_stages/delete-pipeline-stage"},{"title":"Update pipeline stage","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml patch /api/pipeline-stages/{sid}","href":"/api-reference/playtables/pipeline_stages/update-pipeline-stage"},{"title":"Move objects into a pipeline stage","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/pipeline-stages/{sid}/move","href":"/api-reference/playtables/pipeline_stages/move-objects-into-a-pipeline-stage"}]},{"group":"plays","pages":[{"title":"Create play","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/plays","href":"/api-reference/playtables/plays/create-play"},{"title":"List play catalog","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/plays/catalog","href":"/api-reference/playtables/plays/list-play-catalog"},{"title":"Search plays","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/plays/search","href":"/api-reference/playtables/plays/search-plays"},{"title":"Delete play","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml delete /api/plays/{sid}","href":"/api-reference/playtables/plays/delete-play"},{"title":"Update play","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml patch /api/plays/{sid}","href":"/api-reference/playtables/plays/update-play"},{"title":"Estimate play","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/plays/{sid}/estimate","href":"/api-reference/playtables/plays/estimate-play"},{"title":"Run play","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/plays/{sid}/run","href":"/api-reference/playtables/plays/run-play"}]},{"group":"playtable_field_values","pages":[{"title":"Search playtable field values","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-field-values/search","href":"/api-reference/playtables/playtable_field_values/search-playtable-field-values"},{"title":"Write playtable field value","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-field-values/write","href":"/api-reference/playtables/playtable_field_values/write-playtable-field-value"},{"title":"Get playtable field value","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml get /api/playtable-field-values/{sid}","href":"/api-reference/playtables/playtable_field_values/get-playtable-field-value"},{"title":"Update playtable field value","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml patch /api/playtable-field-values/{sid}","href":"/api-reference/playtables/playtable_field_values/update-playtable-field-value"},{"title":"Reset playtable field value","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-field-values/{sid}/reset","href":"/api-reference/playtables/playtable_field_values/reset-playtable-field-value"}]},{"group":"playtable_fields","pages":[{"title":"Create playtable field","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-fields","href":"/api-reference/playtables/playtable_fields/create-playtable-field"},{"title":"Estimate playtable field AI cost","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-fields/estimate-ai-cost","href":"/api-reference/playtables/playtable_fields/estimate-playtable-field-ai-cost"},{"title":"Estimate playtable field backfill","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-fields/estimate-backfill","href":"/api-reference/playtables/playtable_fields/estimate-playtable-field-backfill"},{"title":"Generate playtable field condition","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-fields/generate-condition","href":"/api-reference/playtables/playtable_fields/generate-playtable-field-condition"},{"title":"Preview playtable field condition","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-fields/preview-condition","href":"/api-reference/playtables/playtable_fields/preview-playtable-field-condition"},{"title":"Preview playtable field run","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-fields/preview-run","href":"/api-reference/playtables/playtable_fields/preview-playtable-field-run"},{"title":"Search playtable fields","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-fields/search","href":"/api-reference/playtables/playtable_fields/search-playtable-fields"},{"title":"Get playtable field","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml get /api/playtable-fields/{sid}","href":"/api-reference/playtables/playtable_fields/get-playtable-field"},{"title":"Delete playtable field","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml delete /api/playtable-fields/{sid}","href":"/api-reference/playtables/playtable_fields/delete-playtable-field"},{"title":"Update playtable field","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml patch /api/playtable-fields/{sid}","href":"/api-reference/playtables/playtable_fields/update-playtable-field"},{"title":"Fill playtable field again","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-fields/{sid}/backfill","href":"/api-reference/playtables/playtable_fields/fill-playtable-field-again"},{"title":"Stop the runs on a playtable field","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-fields/{sid}/cancel-runs","href":"/api-reference/playtables/playtable_fields/stop-the-runs-on-a-playtable-field"},{"title":"Estimate semantic index cost","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-fields/{sid}/estimate-semantic-index","href":"/api-reference/playtables/playtable_fields/estimate-semantic-index-cost"}]},{"group":"playtable_runs","pages":[{"title":"Create playtable run","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-runs","href":"/api-reference/playtables/playtable_runs/create-playtable-run"},{"title":"Estimate playtable run cost","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-runs/estimate","href":"/api-reference/playtables/playtable_runs/estimate-playtable-run-cost"},{"title":"Search playtable runs","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-runs/search","href":"/api-reference/playtables/playtable_runs/search-playtable-runs"},{"title":"Get playtable run","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml get /api/playtable-runs/{sid}","href":"/api-reference/playtables/playtable_runs/get-playtable-run"},{"title":"Cancel playtable run","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-runs/{sid}/cancel","href":"/api-reference/playtables/playtable_runs/cancel-playtable-run"}]},{"group":"playtable_views","pages":[{"title":"Create playtable view","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-views","href":"/api-reference/playtables/playtable_views/create-playtable-view"},{"title":"Search playtable views","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtable-views/search","href":"/api-reference/playtables/playtable_views/search-playtable-views"},{"title":"Get playtable view","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml get /api/playtable-views/{sid}","href":"/api-reference/playtables/playtable_views/get-playtable-view"},{"title":"Delete playtable view","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml delete /api/playtable-views/{sid}","href":"/api-reference/playtables/playtable_views/delete-playtable-view"},{"title":"Update playtable view","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml patch /api/playtable-views/{sid}","href":"/api-reference/playtables/playtable_views/update-playtable-view"}]},{"group":"playtables","pages":[{"title":"Create playtable","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtables","href":"/api-reference/playtables/playtables/create-playtable"},{"title":"Playtables metrics","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtables/metrics","href":"/api-reference/playtables/playtables/playtables-metrics"},{"title":"Search playtables","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtables/search","href":"/api-reference/playtables/playtables/search-playtables"},{"title":"Workspace performance","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtables/workspace-performance","href":"/api-reference/playtables/playtables/workspace-performance"},{"title":"Get playtable","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml get /api/playtables/{sid}","href":"/api-reference/playtables/playtables/get-playtable"},{"title":"Delete playtable","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml delete /api/playtables/{sid}","href":"/api-reference/playtables/playtables/delete-playtable"},{"title":"Update playtable","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml patch /api/playtables/{sid}","href":"/api-reference/playtables/playtables/update-playtable"},{"title":"Stop the runs of a playtable","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtables/{sid}/cancel-runs","href":"/api-reference/playtables/playtables/stop-the-runs-of-a-playtable"},{"title":"Preview playtable delete","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtables/{sid}/delete-preview","href":"/api-reference/playtables/playtables/preview-playtable-delete"},{"title":"Playtable performance","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/playtables/{sid}/performance","href":"/api-reference/playtables/playtables/playtable-performance"}]},{"group":"result_pages","pages":[{"title":"Search result pages","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/result-pages/search","href":"/api-reference/playtables/result_pages/search-result-pages"},{"title":"Delete result page","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml delete /api/result-pages/{sid}","href":"/api-reference/playtables/result_pages/delete-result-page"}]},{"group":"sender_profiles","pages":[{"title":"Sender profile stats","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/sender-profiles/stats","href":"/api-reference/playtables/sender_profiles/sender-profile-stats"},{"title":"Sender profile performance","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/sender-profiles/{sid}/performance","href":"/api-reference/playtables/sender_profiles/sender-profile-performance"}]},{"group":"stoplist_entries","pages":[{"title":"Create stoplist entries","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/stoplist-entries","href":"/api-reference/playtables/stoplist_entries/create-stoplist-entries"},{"title":"Search stoplist entries","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/stoplist-entries/search","href":"/api-reference/playtables/stoplist_entries/search-stoplist-entries"},{"title":"Delete stoplist entry","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml delete /api/stoplist-entries/{sid}","href":"/api-reference/playtables/stoplist_entries/delete-stoplist-entry"}]},{"group":"tags","pages":[{"title":"Create tag","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/tags","href":"/api-reference/playtables/tags/create-tag"},{"title":"Search tags","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/tags/search","href":"/api-reference/playtables/tags/search-tags"},{"title":"Delete tag","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml delete /api/tags/{sid}","href":"/api-reference/playtables/tags/delete-tag"},{"title":"Update tag","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml patch /api/tags/{sid}","href":"/api-reference/playtables/tags/update-tag"}]},{"group":"workflow_attachments","pages":[{"title":"Search workflow attachments","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-attachments/search","href":"/api-reference/playtables/workflow_attachments/search-workflow-attachments"},{"title":"Create workflow attachment upload URL","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-attachments/upload-url","href":"/api-reference/playtables/workflow_attachments/create-workflow-attachment-upload-url"},{"title":"Delete workflow attachment","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml delete /api/workflow-attachments/{sid}","href":"/api-reference/playtables/workflow_attachments/delete-workflow-attachment"}]},{"group":"workflow_records","pages":[{"title":"Workflow records metrics","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-records/metrics","href":"/api-reference/playtables/workflow_records/workflow-records-metrics"},{"title":"Search workflow records","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-records/search","href":"/api-reference/playtables/workflow_records/search-workflow-records"},{"title":"Exit workflow record","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-records/{sid}/exit","href":"/api-reference/playtables/workflow_records/exit-workflow-record"},{"title":"Pause workflow record","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-records/{sid}/pause","href":"/api-reference/playtables/workflow_records/pause-workflow-record"},{"title":"Restart workflow record from top","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-records/{sid}/restart","href":"/api-reference/playtables/workflow_records/restart-workflow-record-from-top"},{"title":"Resume workflow record","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-records/{sid}/resume","href":"/api-reference/playtables/workflow_records/resume-workflow-record"}]},{"group":"workflow_sources","pages":[{"title":"Create workflow source","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-sources","href":"/api-reference/playtables/workflow_sources/create-workflow-source"},{"title":"Search workflow sources","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-sources/search","href":"/api-reference/playtables/workflow_sources/search-workflow-sources"},{"title":"Delete workflow source","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml delete /api/workflow-sources/{sid}","href":"/api-reference/playtables/workflow_sources/delete-workflow-source"},{"title":"Update workflow source","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml patch /api/workflow-sources/{sid}","href":"/api-reference/playtables/workflow_sources/update-workflow-source"},{"title":"Add people to workflow source","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-sources/{sid}/add-people","href":"/api-reference/playtables/workflow_sources/add-people-to-workflow-source"}]},{"group":"workflow_tasks","pages":[{"title":"Search workflow tasks","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-tasks/search","href":"/api-reference/playtables/workflow_tasks/search-workflow-tasks"},{"title":"Update workflow task","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml patch /api/workflow-tasks/{sid}","href":"/api-reference/playtables/workflow_tasks/update-workflow-task"},{"title":"Approve workflow task","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-tasks/{sid}/approve","href":"/api-reference/playtables/workflow_tasks/approve-workflow-task"},{"title":"Cancel workflow task","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-tasks/{sid}/cancel","href":"/api-reference/playtables/workflow_tasks/cancel-workflow-task"},{"title":"Complete workflow task","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-tasks/{sid}/complete","href":"/api-reference/playtables/workflow_tasks/complete-workflow-task"},{"title":"Retry workflow task","description":"Run a stopped step again for one person: a failed, expired or skipped_stoplisted task is re-armed (the same row, attempt+1) and the record is back active on that step. The cap of 3 does not apply. A send_unconfirmed failure is asked of gtm-api first; resend_unverified true is a person's word it never arrived. 409 invalid_transition on done, skipped, cancelled or skipped_reply (resume the record), an open task, a record that moved on. Not for a whole journey from the top.\n\nContract:\n- MCP tool `retry_workflow_task`, registry package `mcp.playtables/workflow_tasks`, mount `playtables.journeys`.\n- Operation `action`, response envelope `action`.\n- Flags: dangerous: the MCP layer gates it behind a preview/commit token, and the effect cannot be undone through this API.","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-tasks/{sid}/retry","href":"/api-reference/playtables/workflow_tasks/retry-workflow-task"}]},{"group":"workflow_versions","pages":[{"title":"Search workflow versions","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflow-versions/search","href":"/api-reference/playtables/workflow_versions/search-workflow-versions"},{"title":"Get workflow version","description":"Resolve a wf_vr_ sid (a record's workflow_version_sid or a workflow's published_version_sid) to its frozen step graph; pair with the record's current_step_id to locate a person inside steps.\n\nContract:\n- MCP tool `get_workflow_version`, registry package `mcp.playtables/workflow_versions`, mount `playtables.workflows`.\n- Operation `get`, response envelope `get`.\n- Flags: read only.","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml get /api/workflow-versions/{sid}","href":"/api-reference/playtables/workflow_versions/get-workflow-version"}]},{"group":"workflows","pages":[{"title":"Create workflow","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflows","href":"/api-reference/playtables/workflows/create-workflow"},{"title":"Workflows metrics","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflows/metrics","href":"/api-reference/playtables/workflows/workflows-metrics"},{"title":"Search workflows","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflows/search","href":"/api-reference/playtables/workflows/search-workflows"},{"title":"Test an API call step","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflows/test-api-call","href":"/api-reference/playtables/workflows/test-an-api-call-step"},{"title":"Validate workflow","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflows/validate","href":"/api-reference/playtables/workflows/validate-workflow"},{"title":"Get workflow","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml get /api/workflows/{sid}","href":"/api-reference/playtables/workflows/get-workflow"},{"title":"Delete workflow","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml delete /api/workflows/{sid}","href":"/api-reference/playtables/workflows/delete-workflow"},{"title":"Update workflow","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml patch /api/workflows/{sid}","href":"/api-reference/playtables/workflows/update-workflow"},{"title":"Pause workflow","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflows/{sid}/pause","href":"/api-reference/playtables/workflows/pause-workflow"},{"title":"Publish workflow","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflows/{sid}/publish","href":"/api-reference/playtables/workflows/publish-workflow"},{"title":"Resume workflow","deprecated":null,"version":null,"openapi":"/api-reference/playtables/openapi.yaml post /api/workflows/{sid}/resume","href":"/api-reference/playtables/workflows/resume-workflow"}]}]},{"group":"Unibox API","pages":[{"group":"agent_answers","pages":[{"title":"Add a Knowledge answer","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-answers","href":"/api-reference/unibox/agent_answers/add-a-knowledge-answer"},{"title":"Ask the Knowledge answers","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-answers/ask","href":"/api-reference/unibox/agent_answers/ask-the-knowledge-answers"},{"title":"Search Knowledge answers","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-answers/search","href":"/api-reference/unibox/agent_answers/search-knowledge-answers"},{"title":"Delete a Knowledge answer","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml delete /api/agent-answers/{sid}","href":"/api-reference/unibox/agent_answers/delete-a-knowledge-answer"},{"title":"Update a Knowledge answer","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml patch /api/agent-answers/{sid}","href":"/api-reference/unibox/agent_answers/update-a-knowledge-answer"}]},{"group":"agent_conversation_uploads","pages":[{"title":"Upload conversations","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-conversation-uploads","href":"/api-reference/unibox/agent_conversation_uploads/upload-conversations"},{"title":"Get a conversations upload","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml get /api/agent-conversation-uploads/{sid}","href":"/api-reference/unibox/agent_conversation_uploads/get-a-conversations-upload"},{"title":"Keep dialogues from an upload","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-conversation-uploads/{sid}/apply","href":"/api-reference/unibox/agent_conversation_uploads/keep-dialogues-from-an-upload"},{"title":"Discard a conversations upload","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-conversation-uploads/{sid}/discard","href":"/api-reference/unibox/agent_conversation_uploads/discard-a-conversations-upload"}]},{"group":"agent_examples","pages":[{"title":"Add to the golden set","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-examples","href":"/api-reference/unibox/agent_examples/add-to-the-golden-set"},{"title":"Forget golden set rows","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-examples/forget","href":"/api-reference/unibox/agent_examples/forget-golden-set-rows"},{"title":"Search the golden set","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-examples/search","href":"/api-reference/unibox/agent_examples/search-the-golden-set"},{"title":"Get golden set row","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml get /api/agent-examples/{sid}","href":"/api-reference/unibox/agent_examples/get-golden-set-row"},{"title":"Forget golden set row","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml delete /api/agent-examples/{sid}","href":"/api-reference/unibox/agent_examples/forget-golden-set-row"},{"title":"Update golden set row","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml patch /api/agent-examples/{sid}","href":"/api-reference/unibox/agent_examples/update-golden-set-row"}]},{"group":"agent_hints","pages":[{"title":"Search the hints","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-hints/search","href":"/api-reference/unibox/agent_hints/search-the-hints"},{"title":"Dismiss a hint","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-hints/{sid}/dismiss","href":"/api-reference/unibox/agent_hints/dismiss-a-hint"},{"title":"Resolve a hint","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-hints/{sid}/resolve","href":"/api-reference/unibox/agent_hints/resolve-a-hint"}]},{"group":"agent_plans","pages":[{"title":"Create agent plan","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-plans","href":"/api-reference/unibox/agent_plans/create-agent-plan"},{"title":"Draft follow-ups","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-plans/draft-followups","href":"/api-reference/unibox/agent_plans/draft-follow-ups"},{"title":"Schedule follow-ups","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-plans/schedule-followups","href":"/api-reference/unibox/agent_plans/schedule-follow-ups"},{"title":"Search agent plans","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-plans/search","href":"/api-reference/unibox/agent_plans/search-agent-plans"},{"title":"Update agent plan","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml patch /api/agent-plans/{sid}","href":"/api-reference/unibox/agent_plans/update-agent-plan"},{"title":"Steer agent plan","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-plans/{sid}/steer","href":"/api-reference/unibox/agent_plans/steer-agent-plan"}]},{"group":"agent_runs","pages":[{"title":"Search agent runs","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-runs/search","href":"/api-reference/unibox/agent_runs/search-agent-runs"},{"title":"Get agent run","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml get /api/agent-runs/{sid}","href":"/api-reference/unibox/agent_runs/get-agent-run"},{"title":"Add agent reply fix","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-runs/{sid}/apply-fix","href":"/api-reference/unibox/agent_runs/add-agent-reply-fix"},{"title":"Rewrite agent reply as a test","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-runs/{sid}/rewrite","href":"/api-reference/unibox/agent_runs/rewrite-agent-reply-as-a-test"},{"title":"Route agent reply fix","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-runs/{sid}/route-fix","href":"/api-reference/unibox/agent_runs/route-agent-reply-fix"}]},{"group":"agent_scenarios","pages":[{"title":"Create agent scenario","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-scenarios","href":"/api-reference/unibox/agent_scenarios/create-agent-scenario"},{"title":"Compose agent scenario","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-scenarios/compose","href":"/api-reference/unibox/agent_scenarios/compose-agent-scenario"},{"title":"Search agent scenarios","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-scenarios/search","href":"/api-reference/unibox/agent_scenarios/search-agent-scenarios"},{"title":"Get agent scenario","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml get /api/agent-scenarios/{sid}","href":"/api-reference/unibox/agent_scenarios/get-agent-scenario"},{"title":"Delete agent scenario","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml delete /api/agent-scenarios/{sid}","href":"/api-reference/unibox/agent_scenarios/delete-agent-scenario"},{"title":"Update agent scenario","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml patch /api/agent-scenarios/{sid}","href":"/api-reference/unibox/agent_scenarios/update-agent-scenario"},{"title":"Reset agent scenario","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-scenarios/{sid}/reset","href":"/api-reference/unibox/agent_scenarios/reset-agent-scenario"}]},{"group":"agent_source_parses","pages":[{"title":"Get a parse record","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml get /api/agent-source-parses/{sid}","href":"/api-reference/unibox/agent_source_parses/get-a-parse-record"},{"title":"Take the answers found into Knowledge","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-source-parses/{sid}/apply","href":"/api-reference/unibox/agent_source_parses/take-the-answers-found-into-knowledge"},{"title":"Discard a parse","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-source-parses/{sid}/discard","href":"/api-reference/unibox/agent_source_parses/discard-a-parse"}]},{"group":"agent_sources","pages":[{"title":"Add a website to the Knowledge","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-sources","href":"/api-reference/unibox/agent_sources/add-a-website-to-the-knowledge"},{"title":"Search Knowledge documents","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-sources/search","href":"/api-reference/unibox/agent_sources/search-knowledge-documents"},{"title":"Get Knowledge document","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml get /api/agent-sources/{sid}","href":"/api-reference/unibox/agent_sources/get-knowledge-document"},{"title":"Delete Knowledge document","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml delete /api/agent-sources/{sid}","href":"/api-reference/unibox/agent_sources/delete-knowledge-document"},{"title":"Update Knowledge document","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml patch /api/agent-sources/{sid}","href":"/api-reference/unibox/agent_sources/update-knowledge-document"},{"title":"Get a Knowledge file link","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml get /api/agent-sources/{sid}/file-link","href":"/api-reference/unibox/agent_sources/get-a-knowledge-file-link"},{"title":"Parse a document into answers","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-sources/{sid}/parse","href":"/api-reference/unibox/agent_sources/parse-a-document-into-answers"},{"title":"Read a document again","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-sources/{sid}/read-again","href":"/api-reference/unibox/agent_sources/read-a-document-again"},{"title":"Suggest how to read a document","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-sources/{sid}/suggest-instruction","href":"/api-reference/unibox/agent_sources/suggest-how-to-read-a-document"}]},{"group":"agent_tests","pages":[{"title":"Test the AI SDR on a reply","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-tests","href":"/api-reference/unibox/agent_tests/test-the-ai-sdr-on-a-reply"},{"title":"Search tests","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agent-tests/search","href":"/api-reference/unibox/agent_tests/search-tests"},{"title":"Get a test","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml get /api/agent-tests/{sid}","href":"/api-reference/unibox/agent_tests/get-a-test"}]},{"group":"agents","pages":[{"title":"Create agent","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agents","href":"/api-reference/unibox/agents/create-agent"},{"title":"Search agents","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agents/search","href":"/api-reference/unibox/agents/search-agents"},{"title":"Probe website","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agents/website-probe","href":"/api-reference/unibox/agents/probe-website"},{"title":"Read website text","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agents/website-text","href":"/api-reference/unibox/agents/read-website-text"},{"title":"Get agent","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml get /api/agents/{sid}","href":"/api-reference/unibox/agents/get-agent"},{"title":"Delete agent","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml delete /api/agents/{sid}","href":"/api-reference/unibox/agents/delete-agent"},{"title":"Update agent","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml patch /api/agents/{sid}","href":"/api-reference/unibox/agents/update-agent"},{"title":"Compose agent brief","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agents/{sid}/compose-brief","href":"/api-reference/unibox/agents/compose-agent-brief"},{"title":"Update agent hosts","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml patch /api/agents/{sid}/hosts","href":"/api-reference/unibox/agents/update-agent-hosts"},{"title":"Get agent overview","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml get /api/agents/{sid}/overview","href":"/api-reference/unibox/agents/get-agent-overview"},{"title":"Read agent website","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/agents/{sid}/read-website","href":"/api-reference/unibox/agents/read-agent-website"},{"title":"Get agent rules","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml get /api/agents/{sid}/rules","href":"/api-reference/unibox/agents/get-agent-rules"},{"title":"Update agent rules","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml patch /api/agents/{sid}/rules","href":"/api-reference/unibox/agents/update-agent-rules"},{"title":"Set a voice line","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml patch /api/agents/{sid}/voice","href":"/api-reference/unibox/agents/set-a-voice-line"}]},{"group":"conversation_events","pages":[{"title":"Search conversation events","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/conversation-events/search","href":"/api-reference/unibox/conversation_events/search-conversation-events"}]},{"group":"conversations","pages":[{"title":"Resolve conversation counterpart","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/conversations/resolve-counterpart","href":"/api-reference/unibox/conversations/resolve-conversation-counterpart"},{"title":"Search conversations","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/conversations/search","href":"/api-reference/unibox/conversations/search-conversations"},{"title":"Get conversation","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml get /api/conversations/{sid}","href":"/api-reference/unibox/conversations/get-conversation"},{"title":"Update conversation","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml patch /api/conversations/{sid}","href":"/api-reference/unibox/conversations/update-conversation"},{"title":"Add participants to a group conversation","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/conversations/{sid}/add-participants","href":"/api-reference/unibox/conversations/add-participants-to-a-group-conversation"},{"title":"Hand a conversation over to a teammate","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/conversations/{sid}/hand-over","href":"/api-reference/unibox/conversations/hand-a-conversation-over-to-a-teammate"},{"title":"Link conversation person","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/conversations/{sid}/link-person","href":"/api-reference/unibox/conversations/link-conversation-person"},{"title":"Get conversation LLM context","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml get /api/conversations/{sid}/llm-context","href":"/api-reference/unibox/conversations/get-conversation-llm-context"},{"title":"Merge conversation","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/conversations/{sid}/merge","href":"/api-reference/unibox/conversations/merge-conversation"},{"title":"Ask the AI SDR to try again on a conversation","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/conversations/{sid}/retry-agent","href":"/api-reference/unibox/conversations/ask-the-ai-sdr-to-try-again-on-a-conversation"},{"title":"Return conversation to orchestration","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/conversations/{sid}/return-to-orchestration","href":"/api-reference/unibox/conversations/return-conversation-to-orchestration"},{"title":"Stoplist conversation counterpart","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/conversations/{sid}/stoplist","href":"/api-reference/unibox/conversations/stoplist-conversation-counterpart"},{"title":"Unlink conversation person","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/conversations/{sid}/unlink-person","href":"/api-reference/unibox/conversations/unlink-conversation-person"}]},{"group":"messages","pages":[{"title":"Approve message drafts","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/messages/approve","href":"/api-reference/unibox/messages/approve-message-drafts"},{"title":"Cancel messages that have not gone out","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/messages/cancel","href":"/api-reference/unibox/messages/cancel-messages-that-have-not-gone-out"},{"title":"Dismiss message drafts","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/messages/dismiss","href":"/api-reference/unibox/messages/dismiss-message-drafts"},{"title":"Send failed messages again","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/messages/retry","href":"/api-reference/unibox/messages/send-failed-messages-again"},{"title":"Search messages","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/messages/search","href":"/api-reference/unibox/messages/search-messages"},{"title":"Send message","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/messages/send","href":"/api-reference/unibox/messages/send-message"},{"title":"Update message draft","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml patch /api/messages/{sid}","href":"/api-reference/unibox/messages/update-message-draft"},{"title":"Get a link to a message file","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml get /api/messages/{sid}/attachment-link","href":"/api-reference/unibox/messages/get-a-link-to-a-message-file"},{"title":"Delete a LinkedIn message for everyone","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/messages/{sid}/delete-on-linkedin","href":"/api-reference/unibox/messages/delete-a-linkedin-message-for-everyone"},{"title":"React to message","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/messages/{sid}/react","href":"/api-reference/unibox/messages/react-to-message"},{"title":"Regenerate message draft","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/messages/{sid}/regenerate","href":"/api-reference/unibox/messages/regenerate-message-draft"}]},{"group":"sender_profiles","pages":[{"title":"Create sender profile","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles","href":"/api-reference/unibox/sender_profiles/create-sender-profile"},{"title":"List available channel accounts","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/available-accounts","href":"/api-reference/unibox/sender_profiles/list-available-channel-accounts"},{"title":"Check a LinkedIn proxy","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/linkedin/check-proxy","href":"/api-reference/unibox/sender_profiles/check-a-linkedin-proxy"},{"title":"List LinkedIn proxy countries","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/linkedin/proxy-countries","href":"/api-reference/unibox/sender_profiles/list-linkedin-proxy-countries"},{"title":"Search sender profiles","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/search","href":"/api-reference/unibox/sender_profiles/search-sender-profiles"},{"title":"Start a mailbox connect for a new sender profile","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/start-email-connect","href":"/api-reference/unibox/sender_profiles/start-a-mailbox-connect-for-a-new-sender-profile"},{"title":"Start a LinkedIn connect for a new sender profile","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/start-linkedin-connect","href":"/api-reference/unibox/sender_profiles/start-a-linkedin-connect-for-a-new-sender-profile"},{"title":"Delete sender profile","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml delete /api/sender-profiles/{sid}","href":"/api-reference/unibox/sender_profiles/delete-sender-profile"},{"title":"Update sender profile","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml patch /api/sender-profiles/{sid}","href":"/api-reference/unibox/sender_profiles/update-sender-profile"},{"title":"Read sender profile limits","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/limits","href":"/api-reference/unibox/sender_profiles/read-sender-profile-limits"},{"title":"Set sender profile smart limits","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/limits/linkedin/smart-limits","href":"/api-reference/unibox/sender_profiles/set-sender-profile-smart-limits"},{"title":"Update a sender profile LinkedIn limit","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml patch /api/sender-profiles/{sid}/limits/linkedin/{smartLimitSid}","href":"/api-reference/unibox/sender_profiles/update-a-sender-profile-linkedin-limit"},{"title":"Attach a LinkedIn account to a sender profile","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/linkedin/attach","href":"/api-reference/unibox/sender_profiles/attach-a-linkedin-account-to-a-sender-profile"},{"title":"Check a sender profile's LinkedIn connect","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/linkedin/connect-status","href":"/api-reference/unibox/sender_profiles/check-a-sender-profiles-linkedin-connect"},{"title":"Detach the LinkedIn account from a sender profile","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/linkedin/detach","href":"/api-reference/unibox/sender_profiles/detach-the-linkedin-account-from-a-sender-profile"},{"title":"Read sender profile LinkedIn limit history","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/linkedin/limit-history","href":"/api-reference/unibox/sender_profiles/read-sender-profile-linkedin-limit-history"},{"title":"Start a LinkedIn connect for a sender profile","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/linkedin/start-connect","href":"/api-reference/unibox/sender_profiles/start-a-linkedin-connect-for-a-sender-profile"},{"title":"Read sender profile LinkedIn sync settings","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/linkedin/sync","href":"/api-reference/unibox/sender_profiles/read-sender-profile-linkedin-sync-settings"},{"title":"Update sender profile LinkedIn sync settings","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml patch /api/sender-profiles/{sid}/linkedin/sync","href":"/api-reference/unibox/sender_profiles/update-sender-profile-linkedin-sync-settings"},{"title":"Attach a mailbox to a sender profile","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/mailboxes/attach","href":"/api-reference/unibox/sender_profiles/attach-a-mailbox-to-a-sender-profile"},{"title":"Connect an IMAP mailbox to a sender profile","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/mailboxes/connect-imap","href":"/api-reference/unibox/sender_profiles/connect-an-imap-mailbox-to-a-sender-profile"},{"title":"Start a mailbox connect for a sender profile","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/mailboxes/start-connect","href":"/api-reference/unibox/sender_profiles/start-a-mailbox-connect-for-a-sender-profile"},{"title":"Update a sender profile mailbox","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml patch /api/sender-profiles/{sid}/mailboxes/{emailAccountSid}","href":"/api-reference/unibox/sender_profiles/update-a-sender-profile-mailbox"},{"title":"Detach a mailbox from a sender profile","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/mailboxes/{emailAccountSid}/detach","href":"/api-reference/unibox/sender_profiles/detach-a-mailbox-from-a-sender-profile"},{"title":"Disconnect a sender profile mailbox","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/mailboxes/{emailAccountSid}/disconnect","href":"/api-reference/unibox/sender_profiles/disconnect-a-sender-profile-mailbox"},{"title":"Pause sending from a sender profile mailbox","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/mailboxes/{emailAccountSid}/pause-sending","href":"/api-reference/unibox/sender_profiles/pause-sending-from-a-sender-profile-mailbox"},{"title":"Reconnect a sender profile mailbox","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/mailboxes/{emailAccountSid}/reconnect","href":"/api-reference/unibox/sender_profiles/reconnect-a-sender-profile-mailbox"},{"title":"Resume sending from a sender profile mailbox","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/mailboxes/{emailAccountSid}/resume-sending","href":"/api-reference/unibox/sender_profiles/resume-sending-from-a-sender-profile-mailbox"},{"title":"Sync a sender profile mailbox","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/mailboxes/{emailAccountSid}/sync","href":"/api-reference/unibox/sender_profiles/sync-a-sender-profile-mailbox"},{"title":"List a sender profile mailbox tracking domains","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/mailboxes/{emailAccountSid}/tracking-domains","href":"/api-reference/unibox/sender_profiles/list-a-sender-profile-mailbox-tracking-domains"},{"title":"Sync sender profile history","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/sender-profiles/{sid}/sync-history","href":"/api-reference/unibox/sender_profiles/sync-sender-profile-history"}]},{"group":"tasks","pages":[{"title":"Create task","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/tasks","href":"/api-reference/unibox/tasks/create-task"},{"title":"Search tasks","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/tasks/search","href":"/api-reference/unibox/tasks/search-tasks"},{"title":"Update task","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml patch /api/tasks/{sid}","href":"/api-reference/unibox/tasks/update-task"}]},{"group":"timeline","pages":[{"title":"Search timeline","deprecated":null,"version":null,"openapi":"/api-reference/unibox/openapi.yaml post /api/timeline/search","href":"/api-reference/unibox/timeline/search-timeline"}]}]},{"group":"Signals API","pages":[{"group":"profile_view_sightings","pages":[{"title":"Search profile view sightings","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml post /api/profile-view-sightings/search","href":"/api-reference/signals/profile_view_sightings/search-profile-view-sightings"},{"title":"Get profile view sighting","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml get /api/profile-view-sightings/{sid}","href":"/api-reference/signals/profile_view_sightings/get-profile-view-sighting"}]},{"group":"signal_preferences","pages":[{"title":"Get signal preferences","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml get /api/signal-preferences","href":"/api-reference/signals/signal_preferences/get-signal-preferences"},{"title":"Update signal preferences","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml patch /api/signal-preferences","href":"/api-reference/signals/signal_preferences/update-signal-preferences"},{"title":"Mark signals seen","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml post /api/signal-preferences/mark-seen","href":"/api-reference/signals/signal_preferences/mark-signals-seen"}]},{"group":"signal_settings","pages":[{"title":"Get signal settings","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml get /api/signal-settings","href":"/api-reference/signals/signal_settings/get-signal-settings"},{"title":"Update signal settings","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml patch /api/signal-settings","href":"/api-reference/signals/signal_settings/update-signal-settings"}]},{"group":"website_key_pages","pages":[{"title":"Create website key page","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml post /api/website-key-pages","href":"/api-reference/signals/website_key_pages/create-website-key-page"},{"title":"Search website key pages","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml post /api/website-key-pages/search","href":"/api-reference/signals/website_key_pages/search-website-key-pages"},{"title":"Delete website key page","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml delete /api/website-key-pages/{sid}","href":"/api-reference/signals/website_key_pages/delete-website-key-page"},{"title":"Update website key page","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml patch /api/website-key-pages/{sid}","href":"/api-reference/signals/website_key_pages/update-website-key-page"}]},{"group":"website_session_owners","pages":[{"title":"Search website session owners","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml post /api/website-session-owners/search","href":"/api-reference/signals/website_session_owners/search-website-session-owners"}]},{"group":"website_sessions","pages":[{"title":"Search website sessions","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml post /api/website-sessions/search","href":"/api-reference/signals/website_sessions/search-website-sessions"},{"title":"Get website session","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml get /api/website-sessions/{sid}","href":"/api-reference/signals/website_sessions/get-website-session"}]},{"group":"website_sites","pages":[{"title":"Create website site","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml post /api/website-sites","href":"/api-reference/signals/website_sites/create-website-site"},{"title":"Search website sites","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml post /api/website-sites/search","href":"/api-reference/signals/website_sites/search-website-sites"},{"title":"Get website site","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml get /api/website-sites/{sid}","href":"/api-reference/signals/website_sites/get-website-site"},{"title":"Delete website site","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml delete /api/website-sites/{sid}","href":"/api-reference/signals/website_sites/delete-website-site"},{"title":"Update website site","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml patch /api/website-sites/{sid}","href":"/api-reference/signals/website_sites/update-website-site"},{"title":"Rotate website site key","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml post /api/website-sites/{sid}/rotate-key","href":"/api-reference/signals/website_sites/rotate-website-site-key"},{"title":"Verify website site","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml post /api/website-sites/{sid}/verify","href":"/api-reference/signals/website_sites/verify-website-site"}]},{"group":"website_tracked_events","pages":[{"title":"Create website tracked event","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml post /api/website-tracked-events","href":"/api-reference/signals/website_tracked_events/create-website-tracked-event"},{"title":"Search website tracked events","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml post /api/website-tracked-events/search","href":"/api-reference/signals/website_tracked_events/search-website-tracked-events"},{"title":"Delete website tracked event","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml delete /api/website-tracked-events/{sid}","href":"/api-reference/signals/website_tracked_events/delete-website-tracked-event"},{"title":"Update website tracked event","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml patch /api/website-tracked-events/{sid}","href":"/api-reference/signals/website_tracked_events/update-website-tracked-event"}]},{"group":"website_visitors","pages":[{"title":"Identify website visitor by email","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml post /api/website-visitors/identify","href":"/api-reference/signals/website_visitors/identify-website-visitor-by-email"},{"title":"Search website visitors","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml post /api/website-visitors/search","href":"/api-reference/signals/website_visitors/search-website-visitors"},{"title":"Get website visitor","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml get /api/website-visitors/{sid}","href":"/api-reference/signals/website_visitors/get-website-visitor"},{"title":"Identify website visitor","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml post /api/website-visitors/{sid}/identify","href":"/api-reference/signals/website_visitors/identify-website-visitor"},{"title":"Unlink website visitor","deprecated":null,"version":null,"openapi":"/api-reference/signals/openapi.yaml post /api/website-visitors/{sid}/unlink","href":"/api-reference/signals/website_visitors/unlink-website-visitor"}]}]},{"group":"Integrations API","pages":[{"group":"custom_tools","pages":[{"title":"Create custom tool","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml post /api/custom-tools","href":"/api-reference/integrations/custom_tools/create-custom-tool"},{"title":"Search custom tools","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml post /api/custom-tools/search","href":"/api-reference/integrations/custom_tools/search-custom-tools"},{"title":"Delete custom tool","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml delete /api/custom-tools/{sid}","href":"/api-reference/integrations/custom_tools/delete-custom-tool"},{"title":"Update custom tool","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml patch /api/custom-tools/{sid}","href":"/api-reference/integrations/custom_tools/update-custom-tool"},{"title":"Test custom tool","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml post /api/custom-tools/{sid}/test","href":"/api-reference/integrations/custom_tools/test-custom-tool"}]},{"group":"provider_calls","pages":[{"title":"Provider calls metrics","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml post /api/provider-calls/metrics","href":"/api-reference/integrations/provider_calls/provider-calls-metrics"},{"title":"Search provider calls","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml post /api/provider-calls/search","href":"/api-reference/integrations/provider_calls/search-provider-calls"},{"title":"Get provider call","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml get /api/provider-calls/{sid}","href":"/api-reference/integrations/provider_calls/get-provider-call"},{"title":"List provider catalog","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml get /api/provider-catalog","href":"/api-reference/integrations/provider_calls/list-provider-catalog"}]},{"group":"provider_connections","pages":[{"title":"Create provider connection","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml post /api/provider-connections","href":"/api-reference/integrations/provider_connections/create-provider-connection"},{"title":"Start provider OAuth connect","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml post /api/provider-connections/oauth/authorize","href":"/api-reference/integrations/provider_connections/start-provider-oauth-connect"},{"title":"Complete provider OAuth connect","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml post /api/provider-connections/oauth/complete","href":"/api-reference/integrations/provider_connections/complete-provider-oauth-connect"},{"title":"Search provider connections","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml post /api/provider-connections/search","href":"/api-reference/integrations/provider_connections/search-provider-connections"},{"title":"Delete provider connection","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml delete /api/provider-connections/{sid}","href":"/api-reference/integrations/provider_connections/delete-provider-connection"},{"title":"Update provider connection","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml patch /api/provider-connections/{sid}","href":"/api-reference/integrations/provider_connections/update-provider-connection"},{"title":"Test provider connection","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml post /api/provider-connections/{sid}/test","href":"/api-reference/integrations/provider_connections/test-provider-connection"}]},{"group":"webhook_logs","pages":[{"title":"Webhook logs metrics","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml post /api/webhook-logs/metrics","href":"/api-reference/integrations/webhook_logs/webhook-logs-metrics"},{"title":"Search webhook logs","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml post /api/webhook-logs/search","href":"/api-reference/integrations/webhook_logs/search-webhook-logs"},{"title":"Cancel webhook delivery","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml post /api/webhook-logs/{sid}/cancel","href":"/api-reference/integrations/webhook_logs/cancel-webhook-delivery"},{"title":"Retry webhook delivery","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml post /api/webhook-logs/{sid}/retry","href":"/api-reference/integrations/webhook_logs/retry-webhook-delivery"}]},{"group":"webhooks","pages":[{"title":"Create webhook","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml post /api/webhooks","href":"/api-reference/integrations/webhooks/create-webhook"},{"title":"Search webhooks","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml post /api/webhooks/search","href":"/api-reference/integrations/webhooks/search-webhooks"},{"title":"Get webhook","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml get /api/webhooks/{sid}","href":"/api-reference/integrations/webhooks/get-webhook"},{"title":"Delete webhook","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml delete /api/webhooks/{sid}","href":"/api-reference/integrations/webhooks/delete-webhook"},{"title":"Update webhook","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml patch /api/webhooks/{sid}","href":"/api-reference/integrations/webhooks/update-webhook"},{"title":"Test webhook","deprecated":null,"version":null,"openapi":"/api-reference/integrations/openapi.yaml post /api/webhooks/{sid}/test","href":"/api-reference/integrations/webhooks/test-webhook"}]}]},{"group":"ID and Teams API","pages":[{"group":"api_keys","pages":[{"title":"Create API key","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/api-keys","href":"/api-reference/id/api_keys/create-api-key"},{"title":"API key metrics","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/api-keys/metrics","href":"/api-reference/id/api_keys/api-key-metrics"},{"title":"Search API keys","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/api-keys/search","href":"/api-reference/id/api_keys/search-api-keys"},{"title":"Get API key","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml get /api/api-keys/{sid}","href":"/api-reference/id/api_keys/get-api-key"},{"title":"Revoke API key","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml delete /api/api-keys/{sid}","href":"/api-reference/id/api_keys/revoke-api-key"},{"title":"Update API key","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml patch /api/api-keys/{sid}","href":"/api-reference/id/api_keys/update-api-key"},{"title":"Rotate API key","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/api-keys/{sid}/rotate","href":"/api-reference/id/api_keys/rotate-api-key"}]},{"group":"billing_payment_methods","pages":[{"title":"List payment methods","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml get /api/billing-payment-methods","href":"/api-reference/id/billing_payment_methods/list-payment-methods"},{"title":"Get add-card link","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/billing-payment-methods/get-add-link","href":"/api-reference/id/billing_payment_methods/get-add-card-link"},{"title":"Delete payment method","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml delete /api/billing-payment-methods/{sid}","href":"/api-reference/id/billing_payment_methods/delete-payment-method"}]},{"group":"billing_products","pages":[{"title":"Search billing products","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/billing-products/search","href":"/api-reference/id/billing_products/search-billing-products"}]},{"group":"billing_subscriptions","pages":[{"title":"Create subscription checkout","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/billing-subscriptions/create-checkout","href":"/api-reference/id/billing_subscriptions/create-subscription-checkout"},{"title":"Quote a billing order","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/billing-subscriptions/quote","href":"/api-reference/id/billing_subscriptions/quote-a-billing-order"},{"title":"Search billing subscriptions","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/billing-subscriptions/search","href":"/api-reference/id/billing_subscriptions/search-billing-subscriptions"},{"title":"Get billing subscription","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml get /api/billing-subscriptions/{sid}","href":"/api-reference/id/billing_subscriptions/get-billing-subscription"},{"title":"Cancel subscription","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/billing-subscriptions/{sid}/cancel","href":"/api-reference/id/billing_subscriptions/cancel-subscription"},{"title":"Change subscription","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/billing-subscriptions/{sid}/change","href":"/api-reference/id/billing_subscriptions/change-subscription"},{"title":"Get update-payment-method link","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/billing-subscriptions/{sid}/get-update-payment-method-link","href":"/api-reference/id/billing_subscriptions/get-update-payment-method-link"},{"title":"Pause subscription","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/billing-subscriptions/{sid}/pause","href":"/api-reference/id/billing_subscriptions/pause-subscription"},{"title":"Preview subscription change","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/billing-subscriptions/{sid}/preview-change","href":"/api-reference/id/billing_subscriptions/preview-subscription-change"},{"title":"Resume subscription","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/billing-subscriptions/{sid}/resume","href":"/api-reference/id/billing_subscriptions/resume-subscription"},{"title":"Undo scheduled cancel","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/billing-subscriptions/{sid}/undo-cancel","href":"/api-reference/id/billing_subscriptions/undo-scheduled-cancel"}]},{"group":"billing_transactions","pages":[{"title":"Billing transaction metrics","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/billing-transactions/metrics","href":"/api-reference/id/billing_transactions/billing-transaction-metrics"},{"title":"Search billing transactions","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/billing-transactions/search","href":"/api-reference/id/billing_transactions/search-billing-transactions"},{"title":"Get billing transaction","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml get /api/billing-transactions/{sid}","href":"/api-reference/id/billing_transactions/get-billing-transaction"},{"title":"Get transaction invoice","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/billing-transactions/{sid}/get-invoice","href":"/api-reference/id/billing_transactions/get-transaction-invoice"}]},{"group":"credit_lots","pages":[{"title":"Credit wallet balance","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/credit-lots/metrics","href":"/api-reference/id/credit_lots/credit-wallet-balance"}]},{"group":"credit_transactions","pages":[{"title":"Credit spend by day","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/credit-transactions/metrics","href":"/api-reference/id/credit_transactions/credit-spend-by-day"}]},{"group":"gtm_connections","pages":[{"title":"Complete gtm workspace link","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/gtm-connections/complete-link","href":"/api-reference/id/gtm_connections/complete-gtm-workspace-link"},{"title":"Search gtm connections","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/gtm-connections/search","href":"/api-reference/id/gtm_connections/search-gtm-connections"},{"title":"Start gtm workspace link","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/gtm-connections/start-link","href":"/api-reference/id/gtm_connections/start-gtm-workspace-link"},{"title":"Revoke gtm connection","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/gtm-connections/{sid}/revoke","href":"/api-reference/id/gtm_connections/revoke-gtm-connection"}]},{"group":"notifications","pages":[{"title":"Mark all notifications read","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/notifications/mark-all-read","href":"/api-reference/id/notifications/mark-all-notifications-read"},{"title":"Search notifications","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/notifications/search","href":"/api-reference/id/notifications/search-notifications"},{"title":"Get notification","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml get /api/notifications/{sid}","href":"/api-reference/id/notifications/get-notification"},{"title":"Dismiss notification","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml delete /api/notifications/{sid}","href":"/api-reference/id/notifications/dismiss-notification"},{"title":"Mark notification read","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/notifications/{sid}/mark-read","href":"/api-reference/id/notifications/mark-notification-read"}]},{"group":"oauth_authorizations","pages":[{"title":"Search connected apps","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/oauth-authorizations/search","href":"/api-reference/id/oauth_authorizations/search-connected-apps"},{"title":"Edit connected app","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml patch /api/oauth-authorizations/{sid}","href":"/api-reference/id/oauth_authorizations/edit-connected-app"},{"title":"Disconnect app (revoke grant)","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/oauth-authorizations/{sid}/revoke","href":"/api-reference/id/oauth_authorizations/disconnect-app-revoke-grant"}]},{"group":"oauth_clients","pages":[{"title":"Create OAuth client","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/oauth-clients","href":"/api-reference/id/oauth_clients/create-oauth-client"},{"title":"Search OAuth clients","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/oauth-clients/search","href":"/api-reference/id/oauth_clients/search-oauth-clients"},{"title":"Get OAuth client","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml get /api/oauth-clients/{sid}","href":"/api-reference/id/oauth_clients/get-oauth-client"},{"title":"Delete OAuth client","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml delete /api/oauth-clients/{sid}","href":"/api-reference/id/oauth_clients/delete-oauth-client"},{"title":"Update OAuth client","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml patch /api/oauth-clients/{sid}","href":"/api-reference/id/oauth_clients/update-oauth-client"},{"title":"Disable OAuth client","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/oauth-clients/{sid}/disable","href":"/api-reference/id/oauth_clients/disable-oauth-client"},{"title":"Enable OAuth client","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/oauth-clients/{sid}/enable","href":"/api-reference/id/oauth_clients/enable-oauth-client"}]},{"group":"sessions","pages":[{"title":"Search sessions","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/sessions/search","href":"/api-reference/id/sessions/search-sessions"},{"title":"Revoke session","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/sessions/{sid}/revoke","href":"/api-reference/id/sessions/revoke-session"}]},{"group":"ssl_certificates","pages":[{"title":"Search SSL certificates","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/ssl-certificates/search","href":"/api-reference/id/ssl_certificates/search-ssl-certificates"},{"title":"Get SSL certificate","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml get /api/ssl-certificates/{sid}","href":"/api-reference/id/ssl_certificates/get-ssl-certificate"},{"title":"Delete SSL certificate","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml delete /api/ssl-certificates/{sid}","href":"/api-reference/id/ssl_certificates/delete-ssl-certificate"},{"title":"Issue SSL certificate","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/ssl-certificates/{sid}/issue","href":"/api-reference/id/ssl_certificates/issue-ssl-certificate"},{"title":"Renew SSL certificate","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/ssl-certificates/{sid}/renew","href":"/api-reference/id/ssl_certificates/renew-ssl-certificate"}]},{"group":"subscription_allocations","pages":[{"title":"Create subscription allocation","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/subscription-allocations","href":"/api-reference/id/subscription_allocations/create-subscription-allocation"},{"title":"Search subscription allocations","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/subscription-allocations/search","href":"/api-reference/id/subscription_allocations/search-subscription-allocations"},{"title":"Get subscription allocation","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml get /api/subscription-allocations/{sid}","href":"/api-reference/id/subscription_allocations/get-subscription-allocation"},{"title":"Delete subscription allocation","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml delete /api/subscription-allocations/{sid}","href":"/api-reference/id/subscription_allocations/delete-subscription-allocation"},{"title":"Update subscription allocation","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml patch /api/subscription-allocations/{sid}","href":"/api-reference/id/subscription_allocations/update-subscription-allocation"}]},{"group":"team_members","pages":[{"title":"Invite team member","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/team-members","href":"/api-reference/id/team_members/invite-team-member"},{"title":"Accept team member invitation","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/team-members/accept-invitation","href":"/api-reference/id/team_members/accept-team-member-invitation"},{"title":"Search team members","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/team-members/search","href":"/api-reference/id/team_members/search-team-members"},{"title":"Remove team member","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml delete /api/team-members/{sid}","href":"/api-reference/id/team_members/remove-team-member"},{"title":"Update team member","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml patch /api/team-members/{sid}","href":"/api-reference/id/team_members/update-team-member"},{"title":"Resend team member invitation","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/team-members/{sid}/resend-invitation","href":"/api-reference/id/team_members/resend-team-member-invitation"}]},{"group":"teams","pages":[{"title":"Create team","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/teams","href":"/api-reference/id/teams/create-team"},{"title":"Search teams","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/teams/search","href":"/api-reference/id/teams/search-teams"},{"title":"Get team","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml get /api/teams/{sid}","href":"/api-reference/id/teams/get-team"},{"title":"Delete team","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml delete /api/teams/{sid}","href":"/api-reference/id/teams/delete-team"},{"title":"Update team","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml patch /api/teams/{sid}","href":"/api-reference/id/teams/update-team"},{"title":"Transfer team ownership","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/teams/{sid}/transfer-ownership","href":"/api-reference/id/teams/transfer-team-ownership"}]},{"group":"user_profiles","pages":[{"title":"Get user profile","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml get /api/user-profile","href":"/api-reference/id/user_profiles/get-user-profile"},{"title":"Update user profile","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml patch /api/user-profile","href":"/api-reference/id/user_profiles/update-user-profile"}]},{"group":"users","pages":[{"title":"Get current user","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml get /api/users/current","href":"/api-reference/id/users/get-current-user"},{"title":"Update current user","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml patch /api/users/current","href":"/api-reference/id/users/update-current-user"}]},{"group":"whitelabel_clients","pages":[{"title":"Search whitelabel clients","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/whitelabel-clients/search","href":"/api-reference/id/whitelabel_clients/search-whitelabel-clients"}]},{"group":"whitelabels","pages":[{"title":"Create whitelabel","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/whitelabels","href":"/api-reference/id/whitelabels/create-whitelabel"},{"title":"Search whitelabels","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/whitelabels/search","href":"/api-reference/id/whitelabels/search-whitelabels"},{"title":"Get whitelabel","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml get /api/whitelabels/{sid}","href":"/api-reference/id/whitelabels/get-whitelabel"},{"title":"Delete whitelabel","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml delete /api/whitelabels/{sid}","href":"/api-reference/id/whitelabels/delete-whitelabel"},{"title":"Update whitelabel","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml patch /api/whitelabels/{sid}","href":"/api-reference/id/whitelabels/update-whitelabel"},{"title":"Activate whitelabel","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/whitelabels/{sid}/activate","href":"/api-reference/id/whitelabels/activate-whitelabel"},{"title":"Open whitelabel client workspace","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/whitelabels/{sid}/clients/{teamSid}/open","href":"/api-reference/id/whitelabels/open-whitelabel-client-workspace"},{"title":"Disable whitelabel","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/whitelabels/{sid}/disable","href":"/api-reference/id/whitelabels/disable-whitelabel"},{"title":"Enable whitelabel","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/whitelabels/{sid}/enable","href":"/api-reference/id/whitelabels/enable-whitelabel"},{"title":"Verify whitelabel email domain","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml post /api/whitelabels/{sid}/verify-email-domain","href":"/api-reference/id/whitelabels/verify-whitelabel-email-domain"}]},{"group":"workspace_profiles","pages":[{"title":"Get workspace profile","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml get /api/workspace-profile","href":"/api-reference/id/workspace_profiles/get-workspace-profile"},{"title":"Update workspace profile","deprecated":null,"version":null,"openapi":"/api-reference/id/openapi.yaml patch /api/workspace-profile","href":"/api-reference/id/workspace_profiles/update-workspace-profile"}]}]}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/overview"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Search workflow versions - GetSales","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}