[{"data":1,"prerenderedAt":4430},["ShallowReactive",2],{"navigation":3,"/build-apps/end-user-authoring":1197,"/build-apps/end-user-authoring-surround":4425},[4,45,67,118,136,209,230],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Use it","/use","00.use/1.index",[9,11,16,21,26,30,35,40],{"title":5,"path":6,"stem":7,"icon":10},"i-lucide-list-checks",{"title":12,"path":13,"stem":14,"icon":15},"Run a workflow from an assistant","/use/run-from-an-assistant","00.use/2.run-from-an-assistant","i-lucide-bot",{"title":17,"path":18,"stem":19,"icon":20},"Connect a cloud and use it","/use/connect-a-cloud","00.use/3.connect-a-cloud","i-lucide-cloud",{"title":22,"path":23,"stem":24,"icon":25},"Put Orkestia in your app","/use/in-your-app","00.use/4.in-your-app","i-lucide-key-round",{"title":27,"path":28,"stem":29,"icon":15},"Stand up an actor","/use/stand-up-an-actor","00.use/5.stand-up-an-actor",{"title":31,"path":32,"stem":33,"icon":34},"Operate a run","/use/operate-a-run","00.use/6.operate-a-run","i-lucide-activity",{"title":36,"path":37,"stem":38,"icon":39},"Work from the desktop app","/use/work-from-the-desktop-app","00.use/7.work-from-the-desktop-app","i-lucide-app-window",{"title":41,"path":42,"stem":43,"icon":44},"Let an agent use your browser","/use/let-an-agent-use-your-browser","00.use/8.let-an-agent-use-your-browser","i-lucide-globe",{"title":46,"path":47,"stem":48,"children":49,"icon":52},"Getting Started","/getting-started","02.getting-started/1.index",[50,53,58,63],{"title":51,"path":47,"stem":48,"icon":52},"Quick Start","i-lucide-rocket",{"title":54,"path":55,"stem":56,"icon":57},"Architecture Overview","/getting-started/architecture-overview","02.getting-started/2.architecture-overview","i-lucide-layout-dashboard",{"title":59,"path":60,"stem":61,"icon":62},"Concepts at a Glance","/getting-started/concepts","02.getting-started/3.concepts","i-lucide-list",{"title":64,"path":65,"stem":66,"icon":15},"Connect an AI Assistant","/getting-started/connect-an-ai-assistant","02.getting-started/4.connect-an-ai-assistant",{"title":68,"path":69,"stem":70,"children":71,"icon":73},"Guides","/guides","04.guides/1.index",[72,74,79,84,89,94,99,104,109,113],{"title":68,"path":69,"stem":70,"icon":73},"i-lucide-compass",{"title":75,"path":76,"stem":77,"icon":78},"Receive webhooks with a re-query","/guides/webhooks-with-requery","04.guides/10.webhooks-with-requery","i-lucide-webhook",{"title":80,"path":81,"stem":82,"icon":83},"Keep scheduled compositions cheap","/guides/composition-runtime-cost","04.guides/11.composition-runtime-cost","i-lucide-gauge",{"title":85,"path":86,"stem":87,"icon":88},"Building with DGI","/guides/building-with-dgi","04.guides/2.building-with-dgi","i-lucide-brain-circuit",{"title":90,"path":91,"stem":92,"icon":93},"Creating & Exposing Virtual Workflows","/guides/virtual-workflows","04.guides/4.virtual-workflows","i-lucide-blocks",{"title":95,"path":96,"stem":97,"icon":98},"Runner Management & Provisioning","/guides/runner-management","04.guides/5.runner-management","i-lucide-server",{"title":100,"path":101,"stem":102,"icon":103},"Security & Compliance","/guides/security-and-compliance","04.guides/7.security-and-compliance","i-lucide-shield",{"title":105,"path":106,"stem":107,"icon":108},"Tickets & Software Delivery","/guides/tickets-and-software-delivery","04.guides/8.tickets-and-software-delivery","i-lucide-ticket",{"title":110,"path":111,"stem":112},"Orkestia for AI-driven cloud infrastructure automation","/guides/cloud-automation-alternatives","04.guides/9.cloud-automation-alternatives",{"title":114,"path":115,"stem":116,"icon":117},"Typed decisions with TypeSafe","/guides/typed-decisions-with-typesafe","04.guides/9.typed-decisions-with-typesafe","i-lucide-git-branch",{"title":119,"path":120,"stem":121,"children":122,"icon":125},"Introduction","/introduction","01.introduction/1.index",[123,126,131],{"title":124,"path":120,"stem":121,"icon":125},"What is Orkestia?","i-lucide-sparkles",{"title":127,"path":128,"stem":129,"icon":130},"Core Philosophy","/introduction/core-philosophy","01.introduction/2.core-philosophy","i-lucide-shield-check",{"title":132,"path":133,"stem":134,"icon":135},"Key Benefits","/introduction/key-benefits","01.introduction/3.key-benefits","i-lucide-trophy",{"title":137,"path":138,"stem":139,"children":140,"icon":142},"Core Concepts","/concepts","03.concepts/01.index",[141,143,148,153,158,163,167,172,176,181,186,191,195,200,204],{"title":137,"path":138,"stem":139,"icon":142},"i-lucide-book-open",{"title":144,"path":145,"stem":146,"icon":147},"Workflows","/concepts/workflows","03.concepts/02.workflows","i-lucide-workflow",{"title":149,"path":150,"stem":151,"icon":152},"DGI — Dialog Generative Interface","/concepts/dgi","03.concepts/03.dgi","i-lucide-brain",{"title":154,"path":155,"stem":156,"icon":157},"How DGI works","/concepts/dgi-how-it-works","03.concepts/03.dgi-how-it-works","i-lucide-cpu",{"title":159,"path":160,"stem":161,"icon":162},"Staff & AI Workforce Governance","/concepts/staff-governance","03.concepts/04.staff-governance","i-lucide-users-round",{"title":164,"path":165,"stem":166,"icon":15},"Agents — the execution substrate","/concepts/agents-platform","03.concepts/05.agents-platform",{"title":168,"path":169,"stem":170,"icon":171},"Runners & Execution Environments","/concepts/runners","03.concepts/06.runners","i-lucide-server-cog",{"title":173,"path":174,"stem":175,"icon":34},"Lumen Observability","/concepts/lumen","03.concepts/07.lumen",{"title":177,"path":178,"stem":179,"icon":180},"Identity & Multi-Tenancy","/concepts/identity-multi-tenancy","03.concepts/08.identity-multi-tenancy","i-lucide-users",{"title":182,"path":183,"stem":184,"icon":185},"Billing, Pricing & Seats","/concepts/billing-and-seats","03.concepts/09.billing-and-seats","i-lucide-credit-card",{"title":187,"path":188,"stem":189,"icon":190},"App Data","/concepts/appdata","03.concepts/10.appdata","i-lucide-database",{"title":192,"path":193,"stem":194,"icon":152},"Engram","/concepts/engram","03.concepts/11.engram",{"title":196,"path":197,"stem":198,"icon":199},"DevKit","/concepts/devkit","03.concepts/12.devkit","i-lucide-terminal",{"title":201,"path":202,"stem":203,"icon":44},"App Host","/concepts/app-host","03.concepts/13.app-host",{"title":205,"path":206,"stem":207,"icon":208},"Agent Exchange","/concepts/agent-exchange","03.concepts/14.agent-exchange","i-lucide-landmark",{"title":210,"path":211,"stem":212,"children":213,"icon":215},"Reference","/reference","05.reference/1.index",[214,216,221,225],{"title":210,"path":211,"stem":212,"icon":215},"i-lucide-library",{"title":217,"path":218,"stem":219,"icon":220},"MCP Integration","/reference/mcp-integration","05.reference/3.mcp-integration","i-lucide-plug-zap",{"title":222,"path":223,"stem":224,"icon":199},"API & Tooling","/reference/api-tooling","05.reference/4.api-tooling",{"title":226,"path":227,"stem":228,"icon":229},"Platform Services","/reference/platform-services","05.reference/7.platform-services","i-lucide-boxes",{"title":231,"path":232,"icon":215,"children":233},"Product pages","/product-pages",[234,261,282,311,346,369,412,439,472,495,565,590,636,650,672,742,785,808,820,910,938,986,1013,1049,1135,1153,1165,1184,1191],{"title":235,"path":236,"stem":237,"children":238,"icon":240},"Advanced Topics","/advanced","06.advanced/1.index",[239,241,246,251,256],{"title":235,"path":236,"stem":237,"icon":240},"i-lucide-flask-conical",{"title":242,"path":243,"stem":244,"icon":245},"Hybrid AI + Deterministic Execution","/advanced/hybrid-execution-model","06.advanced/2.hybrid-execution-model","i-lucide-git-merge",{"title":247,"path":248,"stem":249,"icon":250},"Drift Detection & Self-Healing","/advanced/drift-detection-self-healing","06.advanced/3.drift-detection-self-healing","i-lucide-heart-pulse",{"title":252,"path":253,"stem":254,"icon":255},"Governance & Approvals","/advanced/governance-and-approvals","06.advanced/4.governance-and-approvals","i-lucide-scale",{"title":257,"path":258,"stem":259,"icon":260},"Cost & Performance Optimization","/advanced/cost-and-performance","06.advanced/5.cost-and-performance","i-lucide-zap",{"title":262,"path":263,"stem":264,"children":265,"icon":267},"Operations","/operations","07.operations/1.index",[266,268,272,277],{"title":262,"path":263,"stem":264,"icon":267},"i-lucide-settings-2",{"title":269,"path":270,"stem":271,"icon":229},"Deployment Models","/operations/deployment-models","07.operations/2.deployment-models",{"title":273,"path":274,"stem":275,"icon":276},"Monitoring & Debugging","/operations/monitoring-and-debugging","07.operations/3.monitoring-and-debugging","i-lucide-bug",{"title":278,"path":279,"stem":280,"icon":281},"Best Practices","/operations/best-practices","07.operations/4.best-practices","i-lucide-check-check",{"title":283,"path":284,"stem":285,"children":286,"icon":288},"AWS Connections","/aws-connections","08.aws-connections/1.index",[287,289,292,297,302,307],{"title":283,"path":284,"stem":285,"icon":288},"i-simple-icons-amazonaws",{"title":46,"path":290,"stem":291,"icon":52},"/aws-connections/getting-started","08.aws-connections/2.getting-started",{"title":293,"path":294,"stem":295,"icon":296},"Setup Methods","/aws-connections/setup-methods","08.aws-connections/3.setup-methods","i-lucide-wrench",{"title":298,"path":299,"stem":300,"icon":301},"Managing Connections","/aws-connections/managing-connections","08.aws-connections/4.managing-connections","i-lucide-settings",{"title":303,"path":304,"stem":305,"icon":306},"Security Best Practices","/aws-connections/security-best-practices","08.aws-connections/5.security-best-practices","i-lucide-lock",{"title":308,"path":309,"stem":310,"icon":276},"Troubleshooting","/aws-connections/troubleshooting","08.aws-connections/6.troubleshooting",{"title":312,"path":313,"stem":314,"children":315,"icon":317},"Cloud Connections","/cloud-connections","09.cloud-connections/1.index",[316,318,323,328,332,337,341],{"title":312,"path":313,"stem":314,"icon":317},"i-lucide-cable",{"title":319,"path":320,"stem":321,"icon":322},"Google Cloud (GCP)","/cloud-connections/gcp","09.cloud-connections/2.gcp","i-simple-icons-googlecloud",{"title":324,"path":325,"stem":326,"icon":327},"Microsoft Azure","/cloud-connections/azure","09.cloud-connections/3.azure","i-simple-icons-microsoftazure",{"title":329,"path":330,"stem":331,"icon":20},"Magalu Cloud","/cloud-connections/magalu","09.cloud-connections/4.magalu",{"title":333,"path":334,"stem":335,"icon":336},"Kubernetes","/cloud-connections/kubernetes","09.cloud-connections/5.kubernetes","i-simple-icons-kubernetes",{"title":338,"path":339,"stem":340,"icon":255},"TypeSafe","/cloud-connections/typesafe","09.cloud-connections/6.typesafe",{"title":342,"path":343,"stem":344,"icon":345},"Email mailboxes","/cloud-connections/email","09.cloud-connections/7.email","i-lucide-mail",{"title":347,"path":348,"stem":349,"children":350,"icon":98},"DNS Providers","/dns-providers","10.dns-providers/1.index",[351,353,356,359,362,366],{"title":352,"path":348,"stem":349,"icon":98},"DNS Provider Connections",{"title":46,"path":354,"stem":355,"icon":52},"/dns-providers/getting-started","10.dns-providers/2.getting-started",{"title":293,"path":357,"stem":358,"icon":296},"/dns-providers/setup-methods","10.dns-providers/3.setup-methods",{"title":298,"path":360,"stem":361,"icon":301},"/dns-providers/managing-connections","10.dns-providers/4.managing-connections",{"title":363,"path":364,"stem":365,"icon":62},"Zones and Records","/dns-providers/zones-and-records","10.dns-providers/5.zones-and-records",{"title":308,"path":367,"stem":368,"icon":276},"/dns-providers/troubleshooting","10.dns-providers/6.troubleshooting",{"title":370,"path":371,"stem":372,"children":373,"icon":52},"Cloud Deploy","/cloud-deploy","11.cloud-deploy/01.index",[374,375,378,383,387,392,396,400,405,409],{"title":370,"path":371,"stem":372,"icon":52},{"title":46,"path":376,"stem":377,"icon":52},"/cloud-deploy/getting-started","11.cloud-deploy/02.getting-started",{"title":379,"path":380,"stem":381,"icon":382},"Creating a Site","/cloud-deploy/creating-a-site","11.cloud-deploy/03.creating-a-site","i-lucide-plus-circle",{"title":384,"path":385,"stem":386,"icon":57},"Site Overview and Deployments","/cloud-deploy/site-overview","11.cloud-deploy/04.site-overview",{"title":388,"path":389,"stem":390,"icon":391},"Deployment Progress and Success","/cloud-deploy/deployment-progress","11.cloud-deploy/05.deployment-progress","i-lucide-loader",{"title":393,"path":394,"stem":395,"icon":301},"Settings","/cloud-deploy/settings","11.cloud-deploy/06.settings",{"title":397,"path":398,"stem":399,"icon":44},"Custom Domains","/cloud-deploy/custom-domains","11.cloud-deploy/07.custom-domains",{"title":401,"path":402,"stem":403,"icon":404},"Resources, Releases, and Danger Zone","/cloud-deploy/resources-releases","11.cloud-deploy/08.resources-releases","i-lucide-package",{"title":406,"path":407,"stem":408,"icon":103},"Admin Dashboard","/cloud-deploy/admin-dashboard","11.cloud-deploy/09.admin-dashboard",{"title":308,"path":410,"stem":411,"icon":276},"/cloud-deploy/troubleshooting","11.cloud-deploy/10.troubleshooting",{"title":413,"path":414,"stem":415,"children":416,"icon":419},"User Onboarding","/user-onboarding","12.user-onboarding/1.index",[417,420,423,428,432,436],{"title":418,"path":414,"stem":415,"icon":419},"User Creation and Onboarding","i-lucide-user-plus",{"title":46,"path":421,"stem":422,"icon":52},"/user-onboarding/getting-started","12.user-onboarding/2.getting-started",{"title":424,"path":425,"stem":426,"icon":427},"Creating Your Organization","/user-onboarding/onboarding","12.user-onboarding/3.onboarding","i-lucide-building-2",{"title":429,"path":430,"stem":431,"icon":345},"Invitations","/user-onboarding/invitations","12.user-onboarding/4.invitations",{"title":433,"path":434,"stem":435,"icon":301},"Managing Your Account","/user-onboarding/managing-account","12.user-onboarding/5.managing-account",{"title":308,"path":437,"stem":438,"icon":276},"/user-onboarding/troubleshooting","12.user-onboarding/6.troubleshooting",{"title":393,"path":440,"stem":441,"children":442,"icon":444},"/settings","13.settings/1.index",[443,445,450,454,459,463,467],{"title":393,"path":440,"stem":441,"icon":444},"i-lucide-sliders-horizontal",{"title":446,"path":447,"stem":448,"icon":449},"General Settings","/settings/general","13.settings/2.general","i-lucide-user",{"title":451,"path":452,"stem":453,"icon":180},"Members Settings","/settings/members","13.settings/3.members",{"title":455,"path":456,"stem":457,"icon":458},"Notifications Settings","/settings/notifications","13.settings/4.notifications","i-lucide-bell",{"title":460,"path":461,"stem":462,"icon":103},"Security Settings","/settings/security","13.settings/5.security",{"title":464,"path":465,"stem":466,"icon":25},"Signing Keys","/settings/keys","13.settings/6.keys",{"title":468,"path":469,"stem":470,"icon":471},"API Tokens","/settings/api-tokens","13.settings/7.api-tokens","i-lucide-key",{"title":473,"path":474,"stem":475,"children":476,"icon":52},"App Enablement","/app-enablement","14.app-enablement/1.index",[477,478,482,486,490],{"title":473,"path":474,"stem":475,"icon":52},{"title":479,"path":480,"stem":481,"icon":25},"Sign in with Orkestia","/app-enablement/sign-in-with-orkestia","14.app-enablement/2.sign-in-with-orkestia",{"title":483,"path":484,"stem":485,"icon":190},"End-user data","/app-enablement/end-user-data","14.app-enablement/3.end-user-data",{"title":487,"path":488,"stem":489,"icon":93},"Compositions — use, invoke, share","/app-enablement/compositions","14.app-enablement/4.compositions",{"title":491,"path":492,"stem":493,"icon":494},"Scoped SQL on your own database","/app-enablement/scoped-sql","14.app-enablement/5.scoped-sql","i-lucide-database-zap",{"title":496,"path":497,"stem":498,"children":499,"icon":34},"Lumen","/lumen","15.lumen/1.index",[500,501,506,510,515,519,523,527,532,537,542,546,550,555,560],{"title":496,"path":497,"stem":498,"icon":34},{"title":502,"path":503,"stem":504,"icon":505},"Explore and correlate","/lumen/explore-and-correlate","15.lumen/10.explore-and-correlate","i-lucide-link-2",{"title":507,"path":508,"stem":509,"icon":125},"AI analytics in the Cockpit app","/lumen/ai-analytics-in-cockpit","15.lumen/11.ai-analytics-in-cockpit",{"title":511,"path":512,"stem":513,"icon":514},"Pulse in the Cockpit app","/lumen/pulse-in-cockpit","15.lumen/12.pulse-in-cockpit","i-lucide-bar-chart-3",{"title":516,"path":517,"stem":518,"icon":444},"Rules in the Cockpit app","/lumen/rules-in-cockpit","15.lumen/13.rules-in-cockpit",{"title":520,"path":521,"stem":522,"icon":185},"Plans, usage and API keys in the Cockpit app","/lumen/plans-usage-and-keys","15.lumen/14.plans-usage-and-keys",{"title":524,"path":525,"stem":526,"icon":267},"Settings and bulk actions","/lumen/settings-and-bulk-actions","15.lumen/15.settings-and-bulk-actions",{"title":528,"path":529,"stem":530,"icon":531},"Enable Lumen","/lumen/enable","15.lumen/2.enable","i-lucide-power",{"title":533,"path":534,"stem":535,"icon":536},"Send data","/lumen/send-data","15.lumen/3.send-data","i-lucide-upload",{"title":538,"path":539,"stem":540,"icon":541},"Collector","/lumen/collector","15.lumen/4.collector","i-lucide-container",{"title":543,"path":544,"stem":545,"icon":57},"Use Lumen","/lumen/observe","15.lumen/5.observe",{"title":547,"path":548,"stem":549,"icon":15},"Lumen MCP","/lumen/mcp","15.lumen/6.mcp",{"title":551,"path":552,"stem":553,"icon":554},"Query API","/lumen/query-api","15.lumen/7.query-api","i-lucide-search",{"title":556,"path":557,"stem":558,"icon":559},"Lumen in the Cockpit app","/lumen/cockpit-mode","15.lumen/8.cockpit-mode","i-lucide-monitor-smartphone",{"title":561,"path":562,"stem":563,"icon":564},"Dashboards in the Cockpit app","/lumen/dashboards-in-cockpit","15.lumen/9.dashboards-in-cockpit","i-lucide-layout-grid",{"title":566,"path":567,"stem":568,"children":569,"icon":571},"SDKs","/sdks","16.sdks/1.index",[570,572,577,582,586],{"title":566,"path":567,"stem":568,"icon":571},"i-lucide-code",{"title":573,"path":574,"stem":575,"icon":576},"Workflows SDK — Node / TypeScript","/sdks/workflows-nodejs","16.sdks/2.workflows-nodejs","i-lucide-file-ts",{"title":578,"path":579,"stem":580,"icon":581},"Workflows SDK — Python","/sdks/workflows-python","16.sdks/3.workflows-python","i-simple-icons-python",{"title":583,"path":584,"stem":585,"icon":25},"Auth SDK — Sign in with Orkestia","/sdks/auth","16.sdks/4.auth",{"title":587,"path":588,"stem":589,"icon":514},"Pulse SDK — product analytics for your app","/sdks/lumen-pulse","16.sdks/5.lumen-pulse",{"title":187,"path":591,"stem":592,"children":593,"icon":190},"/appdata","17.appdata/1.index",[594,595,599,604,609,613,617,622,627,632],{"title":187,"path":591,"stem":592,"icon":190},{"title":596,"path":597,"stem":598,"icon":15},"Agents over App Data","/appdata/end-user-agents","17.appdata/10.end-user-agents",{"title":600,"path":601,"stem":602,"icon":603},"Declare structures","/appdata/declare","17.appdata/2.declare","i-lucide-table",{"title":605,"path":606,"stem":607,"icon":608},"Records & Data API","/appdata/data-api","17.appdata/3.data-api","i-lucide-rows-3",{"title":610,"path":611,"stem":612,"icon":427},"Ownership & workspaces","/appdata/ownership","17.appdata/4.ownership",{"title":614,"path":615,"stem":616,"icon":39},"Expose App Data to end-users","/appdata/expose","17.appdata/5.expose",{"title":618,"path":619,"stem":620,"icon":621},"PostgREST HTTP","/appdata/postgrest","17.appdata/6.postgrest","i-lucide-unplug",{"title":623,"path":624,"stem":625,"icon":626},"Ordered append","/appdata/append","17.appdata/7.append","i-lucide-list-ordered",{"title":628,"path":629,"stem":630,"icon":631},"Databases and instances","/appdata/instances","17.appdata/8.instances","i-lucide-hard-drive",{"title":633,"path":634,"stem":635,"icon":199},"Query console and SQL","/appdata/query","17.appdata/9.query",{"title":192,"path":637,"stem":638,"children":639,"icon":152},"/engram","18.engram/1.index",[640,641,645],{"title":192,"path":637,"stem":638,"icon":152},{"title":642,"path":643,"stem":644,"icon":117},"Write & recall","/engram/write-recall","18.engram/2.write-recall",{"title":646,"path":647,"stem":648,"icon":649},"Field & feed","/engram/agent-memory","18.engram/3.agent-memory","i-lucide-radio",{"title":196,"path":651,"stem":652,"children":653,"icon":199},"/devkit","19.devkit/1.index",[654,655,660,664,668],{"title":196,"path":651,"stem":652,"icon":199},{"title":656,"path":657,"stem":658,"icon":659},"Install DevKit","/devkit/install","19.devkit/2.install","i-lucide-download",{"title":661,"path":662,"stem":663,"icon":621},"Hook redirect","/devkit/hooks","19.devkit/3.hooks",{"title":665,"path":666,"stem":667,"icon":157},"Local coding runner","/devkit/local-runner","19.devkit/4.local-runner",{"title":669,"path":670,"stem":671,"icon":93},"Compositions from DevKit","/devkit/compositions","19.devkit/5.compositions",{"title":673,"path":674,"stem":675,"children":676,"icon":15},"Staff & Agents","/staff-and-agents","20.staff-and-agents/01.index",[677,678,682,686,690,694,698,702,706,711,715,720,725,729,732,737],{"title":673,"path":674,"stem":675,"icon":15},{"title":679,"path":680,"stem":681,"icon":10},"Prerequisites","/staff-and-agents/prerequisites","20.staff-and-agents/02.prerequisites",{"title":683,"path":684,"stem":685,"icon":419},"Hire an actor","/staff-and-agents/hire-an-actor","20.staff-and-agents/03.hire-an-actor",{"title":687,"path":688,"stem":689,"icon":57},"Console","/staff-and-agents/console","20.staff-and-agents/04.console",{"title":691,"path":692,"stem":693,"icon":125},"Configs, skills, and MCP","/staff-and-agents/configs-skills-mcp","20.staff-and-agents/05.configs-skills-mcp",{"title":695,"path":696,"stem":697,"icon":98},"Agent runner groups","/staff-and-agents/runner-groups","20.staff-and-agents/06.runner-groups",{"title":699,"path":700,"stem":701,"icon":130},"Governance","/staff-and-agents/governance","20.staff-and-agents/07.governance",{"title":703,"path":704,"stem":705,"icon":25},"Identity and tokens","/staff-and-agents/identity","20.staff-and-agents/08.identity",{"title":707,"path":708,"stem":709,"icon":710},"Memory and cost","/staff-and-agents/memory-and-cost","20.staff-and-agents/09.memory-and-cost","i-lucide-wallet",{"title":712,"path":713,"stem":714,"icon":117},"Coding agents","/staff-and-agents/coding-agents","20.staff-and-agents/10.coding-agents",{"title":716,"path":717,"stem":718,"icon":719},"Wire a repository for coding agents","/staff-and-agents/wire-a-repository","20.staff-and-agents/11.wire-a-repository","i-lucide-link",{"title":721,"path":722,"stem":723,"icon":724},"Run a ticket end to end","/staff-and-agents/run-a-ticket","20.staff-and-agents/12.run-a-ticket","i-lucide-play",{"title":726,"path":727,"stem":728,"icon":162},"Build a product team of actors","/staff-and-agents/build-a-product-team","20.staff-and-agents/13.build-a-product-team",{"title":308,"path":730,"stem":731,"icon":296},"/staff-and-agents/troubleshooting","20.staff-and-agents/14.troubleshooting",{"title":733,"path":734,"stem":735,"icon":736},"Media actors","/staff-and-agents/media-actors","20.staff-and-agents/15.media-actors","i-lucide-clapperboard",{"title":738,"path":739,"stem":740,"icon":741},"Agents that serve people","/staff-and-agents/agents-that-serve-people","20.staff-and-agents/16.agents-that-serve-people","i-lucide-hand-helping",{"title":201,"path":743,"stem":744,"children":745,"icon":44},"/app-host","21.app-host/1.index",[746,747,752,756,759,764,768,773,777,781],{"title":201,"path":743,"stem":744,"icon":44},{"title":748,"path":749,"stem":750,"icon":751},"Static egress IP","/app-host/static-egress-ip","21.app-host/10.static-egress-ip","i-lucide-network",{"title":753,"path":754,"stem":755,"icon":39},"Your app and site","/app-host/your-app","21.app-host/2.your-app",{"title":187,"path":757,"stem":758,"icon":190},"/app-host/app-data","21.app-host/3.app-data",{"title":760,"path":761,"stem":762,"icon":763},"Website and process","/app-host/hosting","21.app-host/4.hosting","i-lucide-cloud-upload",{"title":765,"path":766,"stem":767,"icon":649},"Buzz","/app-host/buzz","21.app-host/5.buzz",{"title":769,"path":770,"stem":771,"icon":772},"Files","/app-host/files","21.app-host/6.files","i-lucide-folder",{"title":774,"path":775,"stem":776,"icon":44},"Your own domain","/app-host/your-domain","21.app-host/7.your-domain",{"title":778,"path":779,"stem":780,"icon":276},"Troubleshooting App Host","/app-host/troubleshooting","21.app-host/8.troubleshooting",{"title":782,"path":783,"stem":784,"icon":25},"Signing keys","/app-host/signing-keys","21.app-host/9.signing-keys",{"title":205,"path":786,"stem":787,"children":788,"icon":208},"/agent-exchange","22.agent-exchange/01.index",[789,790,793,797,801,805],{"title":205,"path":786,"stem":787,"icon":208},{"title":683,"path":791,"stem":792,"icon":419},"/agent-exchange/hire","22.agent-exchange/02.hire",{"title":794,"path":795,"stem":796,"icon":255},"List an actor","/agent-exchange/list","22.agent-exchange/03.list",{"title":798,"path":799,"stem":800,"icon":199},"Invoke & leases","/agent-exchange/invoke","22.agent-exchange/04.invoke",{"title":802,"path":803,"stem":804,"icon":103},"Settlement & trust","/agent-exchange/settlement","22.agent-exchange/05.settlement",{"title":144,"path":806,"stem":807,"icon":147},"/agent-exchange/workflows","22.agent-exchange/06.workflows",{"title":809,"path":810,"stem":811,"children":812,"icon":171},"Runners","/runners","23.runners/1.index",[813,815],{"title":814,"path":810,"stem":811,"icon":171},"Runner groups",{"title":816,"path":817,"stem":818,"icon":819},"Purposes & integrations","/runners/purposes","23.runners/16.purposes","i-lucide-layers",{"title":821,"path":822,"stem":823,"children":824,"icon":826},"Chat","/chat","24.chat/01.index",[825,827,831,836,840,845,850,854,859,863,868,873,877,882,887,891,895,900,905],{"title":821,"path":822,"stem":823,"icon":826},"i-lucide-messages-square",{"title":828,"path":829,"stem":830,"icon":531},"Enable and publish","/chat/enable-and-publish","24.chat/02.enable-and-publish",{"title":832,"path":833,"stem":834,"icon":835},"Theme and customization","/chat/theme-and-customization","24.chat/03.theme-and-customization","i-lucide-palette",{"title":837,"path":838,"stem":839,"icon":180},"Members and moderation","/chat/members-and-moderation","24.chat/04.members-and-moderation",{"title":841,"path":842,"stem":843,"icon":844},"Channels","/chat/channels","24.chat/05.channels","i-lucide-hash",{"title":846,"path":847,"stem":848,"icon":849},"Using the chat","/chat/using-the-chat","24.chat/06.using-the-chat","i-lucide-message-circle",{"title":851,"path":852,"stem":853,"icon":15},"Actors in chat","/chat/actors-in-chat","24.chat/07.actors-in-chat",{"title":855,"path":856,"stem":857,"icon":858},"Internal support actor","/chat/internal-support-actor","24.chat/08.internal-support-actor","i-lucide-life-buoy",{"title":860,"path":861,"stem":862,"icon":199},"API and console","/chat/api-and-console","24.chat/09.api-and-console",{"title":864,"path":865,"stem":866,"icon":867},"Limits","/chat/limits","24.chat/10.limits","i-lucide-triangle-alert",{"title":869,"path":870,"stem":871,"icon":872},"Structured chat with DGI","/chat/structured-chat","24.chat/11.structured-chat","i-lucide-layout-list",{"title":874,"path":875,"stem":876,"icon":44},"Option A: hosted chat with DGI","/chat/option-a-hosted-chat","24.chat/12.option-a-hosted-chat",{"title":878,"path":879,"stem":880,"icon":881},"Option B: embed the chat component","/chat/option-b-embed-component","24.chat/13.option-b-embed-component","i-lucide-component",{"title":883,"path":884,"stem":885,"icon":886},"Option C: custom client (wire contract)","/chat/option-c-custom-client","24.chat/14.option-c-custom-client","i-lucide-braces",{"title":888,"path":889,"stem":890,"icon":649},"Cards, live updates and proactive posts","/chat/cards-live-and-proactive","24.chat/16.cards-live-and-proactive",{"title":892,"path":893,"stem":894,"icon":130},"Structured chat security model","/chat/structured-chat-security","24.chat/17.structured-chat-security",{"title":896,"path":897,"stem":898,"icon":899},"Option D: any app or API (dgi.chat)","/chat/option-d-chat-api","24.chat/18.option-d-chat-api","i-lucide-plug",{"title":901,"path":902,"stem":903,"icon":904},"Living Surfaces","/chat/living-surfaces","24.chat/20.living-surfaces","i-lucide-sprout",{"title":906,"path":907,"stem":908,"icon":909},"Connect your WhatsApp number","/chat/whatsapp","24.chat/21.whatsapp","i-lucide-phone",{"title":911,"path":912,"stem":913,"children":914,"icon":152},"DGI","/dgi","25.dgi/1.index",[915,917,921,925,929,933],{"title":916,"path":912,"stem":913,"icon":152},"What is DGI",{"title":154,"path":918,"stem":919,"icon":920},"/dgi/how-it-works","25.dgi/2.how-it-works","i-lucide-cog",{"title":922,"path":923,"stem":924,"icon":564},"Interfaces","/dgi/interfaces","25.dgi/3.interfaces",{"title":926,"path":927,"stem":928,"icon":52},"Quickstart","/dgi/quickstart","25.dgi/4.quickstart",{"title":930,"path":931,"stem":932,"icon":130},"Trust and safety","/dgi/trust-and-safety","25.dgi/5.trust-and-safety",{"title":934,"path":935,"stem":936,"icon":937},"FAQ","/dgi/faq","25.dgi/6.faq","i-lucide-circle-help",{"title":939,"path":940,"stem":941,"children":942,"icon":736},"Media","/media","26.media/01.index",[943,944,948,953,957,962,967,971,975,979,982],{"title":939,"path":940,"stem":941,"icon":736},{"title":945,"path":946,"stem":947,"icon":899},"Set up the studio","/media/set-up","26.media/02.set-up",{"title":949,"path":950,"stem":951,"icon":952},"Files, covers and looks","/media/files-covers-and-looks","26.media/03.files-covers-and-looks","i-lucide-images",{"title":841,"path":954,"stem":955,"icon":956},"/media/channels","26.media/04.channels","i-lucide-tv",{"title":958,"path":959,"stem":960,"icon":961},"Posts and review","/media/posts-and-review","26.media/05.posts-and-review","i-lucide-send",{"title":963,"path":964,"stem":965,"icon":966},"Video templates","/media/video-templates","26.media/06.video-templates","i-lucide-film",{"title":968,"path":969,"stem":970,"icon":736},"Render videos","/media/render-videos","26.media/07.render-videos",{"title":972,"path":973,"stem":974,"icon":571},"Templates as code","/media/templates-as-code","26.media/08.templates-as-code",{"title":976,"path":977,"stem":978,"icon":15},"Agents and media","/media/agents-and-media","26.media/09.agents-and-media",{"title":210,"path":980,"stem":981,"icon":142},"/media/reference","26.media/10.reference",{"title":983,"path":984,"stem":985,"icon":858},"Limits and troubleshooting","/media/limits-and-troubleshooting","26.media/11.limits-and-troubleshooting",{"title":987,"path":988,"stem":989,"children":990,"icon":992},"Vault","/vault","27.vault/01.index",[991,993,997,1001,1005,1010],{"title":987,"path":988,"stem":989,"icon":992},"i-lucide-vault",{"title":994,"path":995,"stem":996,"icon":25},"Secrets","/vault/secrets","27.vault/02.secrets",{"title":998,"path":999,"stem":1000,"icon":130},"Access policies","/vault/access-policies","27.vault/03.access-policies",{"title":1002,"path":1003,"stem":1004,"icon":961},"API access","/vault/api-access","27.vault/04.api-access",{"title":1006,"path":1007,"stem":1008,"icon":1009},"Audit log and keys","/vault/audit-and-keys","27.vault/05.audit-and-keys","i-lucide-scroll-text",{"title":210,"path":1011,"stem":1012,"icon":142},"/vault/reference","27.vault/06.reference",{"title":1014,"path":1015,"stem":1016,"children":1017,"icon":39},"Build apps","/build-apps","28.build-apps/01.index",[1018,1019,1023,1028,1032,1036,1040,1045],{"title":1014,"path":1015,"stem":1016,"icon":39},{"title":1020,"path":1021,"stem":1022,"icon":147},"Backend","/build-apps/backend","28.build-apps/02.backend",{"title":1024,"path":1025,"stem":1026,"icon":1027},"Modules and feature flags","/build-apps/modules-and-feature-flags","28.build-apps/03.modules-and-feature-flags","i-lucide-toggle-right",{"title":1029,"path":1030,"stem":1031,"icon":117},"Environments","/build-apps/environments","28.build-apps/04.environments",{"title":1033,"path":1034,"stem":1035,"icon":83},"Pricing and limits","/build-apps/pricing-and-limits","28.build-apps/05.pricing-and-limits",{"title":1037,"path":1038,"stem":1039,"icon":162},"Workspaces","/build-apps/workspaces","28.build-apps/06.workspaces",{"title":1041,"path":1042,"stem":1043,"icon":1044},"End-user authoring","/build-apps/end-user-authoring","28.build-apps/07.end-user-authoring","i-lucide-pencil-ruler",{"title":1046,"path":1047,"stem":1048,"icon":34},"Operate","/build-apps/operate","28.build-apps/08.operate",{"title":1050,"path":1051,"stem":1052,"children":1053,"icon":39},"Cockpit app","/cockpit","28.cockpit/1.index",[1054,1055,1060,1064,1068,1072,1076,1080,1084,1088,1092,1096,1100,1105,1110,1114,1118,1122,1127,1132],{"title":1050,"path":1051,"stem":1052,"icon":39},{"title":1056,"path":1057,"stem":1058,"icon":1059},"Overview, Decisions and Activity","/cockpit/overview-decisions-activity","28.cockpit/10.overview-decisions-activity","i-lucide-inbox",{"title":1061,"path":1062,"stem":1063,"icon":108},"Tickets","/cockpit/tickets","28.cockpit/11.tickets",{"title":1065,"path":1066,"stem":1067,"icon":147},"Workflows builder","/cockpit/workflows-builder","28.cockpit/12.workflows-builder",{"title":1069,"path":1070,"stem":1071,"icon":15},"Agents and Coding","/cockpit/agents-and-coding","28.cockpit/13.agents-and-coding",{"title":1073,"path":1074,"stem":1075,"icon":39},"Runners and Connections","/cockpit/apps-runners-connections","28.cockpit/14.apps-runners-connections",{"title":1077,"path":1078,"stem":1079,"icon":427},"Organization — people, access and cost","/cockpit/organization-people-access-cost","28.cockpit/15.organization-people-access-cost",{"title":1081,"path":1082,"stem":1083,"icon":899},"AI tools and MCP","/cockpit/ai-tools-and-mcp","28.cockpit/16.ai-tools-and-mcp",{"title":1085,"path":1086,"stem":1087,"icon":826},"App chats and shared chats","/cockpit/app-chats","28.cockpit/17.app-chats",{"title":1089,"path":1090,"stem":1091,"icon":564},"Apps mode","/cockpit/apps-mode","28.cockpit/18.apps-mode",{"title":1093,"path":1094,"stem":1095,"icon":83},"App infrastructure","/cockpit/app-infrastructure","28.cockpit/19.app-infrastructure",{"title":1097,"path":1098,"stem":1099,"icon":659},"Install and sign in","/cockpit/install-and-sign-in","28.cockpit/2.install-and-sign-in",{"title":1101,"path":1102,"stem":1103,"icon":1104},"App files, settings and flags","/cockpit/app-files-settings-flags","28.cockpit/20.app-files-settings-flags","i-lucide-folder-cog",{"title":1106,"path":1107,"stem":1108,"icon":1109},"Cards in the chat","/cockpit/chat-cards","28.cockpit/21.chat-cards","i-lucide-layout-panel-left",{"title":1111,"path":1112,"stem":1113,"icon":229},"App modules","/cockpit/app-modules","28.cockpit/22.app-modules",{"title":1115,"path":1116,"stem":1117,"icon":117},"App environments","/cockpit/app-environments","28.cockpit/23.app-environments",{"title":1119,"path":1120,"stem":1121,"icon":125},"First run and onboarding","/cockpit/first-run-onboarding","28.cockpit/3.first-run-onboarding",{"title":1123,"path":1124,"stem":1125,"icon":1126},"Navigation and shortcuts","/cockpit/navigation-and-shortcuts","28.cockpit/4.navigation-and-shortcuts","i-lucide-keyboard",{"title":1128,"path":1129,"stem":1130,"icon":1131},"About, settings and updates","/cockpit/about-settings-and-updates","28.cockpit/5.about-settings-and-updates","i-lucide-info",{"title":308,"path":1133,"stem":1134,"icon":858},"/cockpit/troubleshooting","28.cockpit/6.troubleshooting",{"title":1136,"path":1137,"stem":1138,"children":1139,"icon":1141},"CRM","/crm","29.crm/01.index",[1140,1142,1146,1150],{"title":1136,"path":1137,"stem":1138,"icon":1141},"i-lucide-contact",{"title":1143,"path":1144,"stem":1145,"icon":180},"Contacts and leads","/crm/contacts-and-leads","29.crm/02.contacts-and-leads",{"title":1147,"path":1148,"stem":1149,"icon":130},"Privacy and erasure","/crm/privacy-and-erasure","29.crm/03.privacy-and-erasure",{"title":210,"path":1151,"stem":1152,"icon":142},"/crm/reference","29.crm/04.reference",{"title":1154,"path":1155,"stem":1156,"children":1157,"icon":631},"Storage","/storage","29.storage/1.index",[1158,1160],{"title":1159,"path":1155,"stem":1156,"icon":631},"Orkestia storage",{"title":1161,"path":1162,"stem":1163,"icon":1164},"Where to use it","/storage/where-to-use","29.storage/2.where-to-use","i-lucide-map",{"title":1166,"path":1167,"stem":1168,"children":1169,"icon":44},"Browser","/browser","30.browser/01.index",[1170,1172,1176,1180],{"title":1171,"path":1167,"stem":1168,"icon":44},"Orkestia Browser",{"title":1173,"path":1174,"stem":1175,"icon":899},"Connect your Chrome","/browser/connect","30.browser/02.connect",{"title":1177,"path":1178,"stem":1179,"icon":130},"Sessions and approvals","/browser/sessions-and-approvals","30.browser/03.sessions-and-approvals",{"title":1181,"path":1182,"stem":1183,"icon":296},"Agent tools","/browser/agent-tools","30.browser/04.agent-tools",{"title":1185,"path":1186,"stem":1187,"children":1188,"icon":541},"Registry","/registry","31.registry/1.index",[1189],{"title":1190,"path":1186,"stem":1187,"icon":541},"Orkestia Registry",{"title":1192,"path":1193,"stem":1194,"children":1195,"icon":404},"Packages and Git","/packages-and-git","32.packages-and-git/1.index",[1196],{"title":1192,"path":1193,"stem":1194,"icon":404},{"id":1198,"title":1041,"body":1199,"description":4418,"extension":4419,"links":4420,"meta":4421,"navigation":4422,"path":1042,"seo":4423,"stem":1043,"__hash__":4424},"docs/28.build-apps/07.end-user-authoring.md",{"type":1200,"value":1201,"toc":4391},"minimark",[1202,1216,1221,1254,1261,1265,1268,1293,1302,1306,1325,1330,1340,1398,1501,1537,1553,1557,1562,1601,1701,1704,1741,1783,1803,1807,1817,1821,1828,1885,1888,1951,1954,1978,1981,1984,1994,2003,2357,2372,2385,2389,2445,2449,2457,2553,2556,2606,2656,2660,2696,2699,2707,2729,2732,2894,2910,2924,2927,2952,2987,3035,3068,3092,3095,3115,3119,3136,3196,3199,3242,3254,3257,3275,3366,3433,3446,3450,3457,3462,3542,3583,3598,3614,3618,3648,3921,3923,3990,4004,4008,4023,4026,4044,4053,4222,4254,4258,4275,4279,4291,4319,4358,4374,4387],[1203,1204,1205,1206,1210,1211,1215],"p",{},"Your app's end users can build their own automations. Each one is a ",[1207,1208,1209],"strong",{},"composition",": a small workflow made of steps you allow. A person builds it, checks it, saves drafts, publishes it, runs it and puts it on a schedule, all inside their ",[1212,1213,1214],"a",{"href":1038},"workspace",".",[1217,1218,1220],"h2",{"id":1219},"how-it-works","How it works",[1222,1223,1224,1236,1242,1248],"ul",{},[1225,1226,1227,1230,1231,1235],"li",{},[1207,1228,1229],{},"A workspace owns it."," A composition belongs to the workspace that was active when it was saved. Other workspaces cannot see it, run it or change it. A composition of another workspace answers ",[1232,1233,1234],"code",{},"NOT_FOUND",", the same answer as one that does not exist.",[1225,1237,1238,1241],{},[1207,1239,1240],{},"Steps come from your catalog."," You choose which workflow types your end users may use as steps. A step outside that catalog is refused.",[1225,1243,1244,1247],{},[1207,1245,1246],{},"It runs as the person."," A run of an end user's composition has that person's authority in that workspace, never more. The organization, app, person and workspace always come from the session, never from the request.",[1225,1249,1250,1253],{},[1207,1251,1252],{},"Roles decide who does what."," By default, members can build drafts and run compositions. Admins and owners can also publish and archive. You choose which groups get these rights.",[1203,1255,1256,1257,1260],{},"The platform calls this ",[1207,1258,1259],{},"end-user composition authoring",". You turn it on per app.",[1217,1262,1264],{"id":1263},"availability","Availability",[1203,1266,1267],{},"Two switches must both be on:",[1269,1270,1271,1285],"ol",{},[1225,1272,1273,1276,1277,1280,1281,1284],{},[1207,1274,1275],{},"Your organization is on the authoring allowlist."," Authoring is live for customer organizations on an allowlist. Ask Orkestia to add your organization. Until then, ",[1232,1278,1279],{},"identity.app.enable-authoring"," fails with ",[1232,1282,1283],{},"AUTHORING_NOT_ENABLED"," and nothing is written.",[1225,1286,1287,1290,1291,1215],{},[1207,1288,1289],{},"Your app turns it on"," with ",[1232,1292,1279],{},[1203,1294,1295,1296,1298,1299,1215],{},"You need an app with ",[1212,1297,479],{"href":480}," end users and ",[1212,1300,1301],{"href":1038},"workspaces",[1217,1303,1305],{"id":1304},"turn-it-on","Turn it on",[1203,1307,1308,1309,1312,1313,1316,1317,1320,1321,1324],{},"Three admin workflows control authoring for an app. A person who is an admin or owner of your organization must run them. Agent tokens and end users are refused. Each takes ",[1232,1310,1311],{},"identity_app_uuid",", plus ",[1232,1314,1315],{},"actor"," and ",[1232,1318,1319],{},"organization_uuid"," like every ",[1232,1322,1323],{},"identity.app.*"," admin workflow.",[1326,1327,1329],"h3",{"id":1328},"_1-choose-the-steps","1. Choose the steps",[1203,1331,1332,1335,1336,1339],{},[1232,1333,1334],{},"identity.app.set-authoring-catalog"," sets the ",[1207,1337,1338],{},"authoring catalog",": the workflow types your end users may use as steps.",[1341,1342,1343,1356],"table",{},[1344,1345,1346],"thead",{},[1347,1348,1349,1353],"tr",{},[1350,1351,1352],"th",{},"Input",[1350,1354,1355],{},"Meaning",[1357,1358,1359,1378],"tbody",{},[1347,1360,1361,1367],{},[1362,1363,1364],"td",{},[1232,1365,1366],{},"workflow_types",[1362,1368,1369,1370,1373,1374,1377],{},"A list of library workflow types. Required. With ",[1232,1371,1372],{},"mode: \"replace\"",", ",[1232,1375,1376],{},"[]"," empties the catalog.",[1347,1379,1380,1385],{},[1362,1381,1382],{},[1232,1383,1384],{},"mode",[1362,1386,1387,1390,1391,1394,1395],{},[1232,1388,1389],{},"replace"," (default), ",[1232,1392,1393],{},"add"," or ",[1232,1396,1397],{},"remove",[1399,1400,1405],"pre",{"className":1401,"code":1402,"language":1403,"meta":1404,"style":1404},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"identity_app_uuid\": \"\u003Cidentity_app_uuid>\",\n  \"workflow_types\": [\"\u003Cstep-type-a>\", \"\u003Cstep-type-b>\"],\n  \"mode\": \"replace\"\n}\n","json","",[1232,1406,1407,1416,1443,1477,1495],{"__ignoreMap":1404},[1408,1409,1412],"span",{"class":1410,"line":1411},"line",1,[1408,1413,1415],{"class":1414},"sMK4o","{\n",[1408,1417,1419,1422,1425,1428,1431,1434,1438,1440],{"class":1410,"line":1418},2,[1408,1420,1421],{"class":1414},"  \"",[1408,1423,1311],{"class":1424},"spNyl",[1408,1426,1427],{"class":1414},"\"",[1408,1429,1430],{"class":1414},":",[1408,1432,1433],{"class":1414}," \"",[1408,1435,1437],{"class":1436},"sfazB","\u003Cidentity_app_uuid>",[1408,1439,1427],{"class":1414},[1408,1441,1442],{"class":1414},",\n",[1408,1444,1446,1448,1450,1452,1454,1457,1459,1462,1464,1467,1469,1472,1474],{"class":1410,"line":1445},3,[1408,1447,1421],{"class":1414},[1408,1449,1366],{"class":1424},[1408,1451,1427],{"class":1414},[1408,1453,1430],{"class":1414},[1408,1455,1456],{"class":1414}," [",[1408,1458,1427],{"class":1414},[1408,1460,1461],{"class":1436},"\u003Cstep-type-a>",[1408,1463,1427],{"class":1414},[1408,1465,1466],{"class":1414},",",[1408,1468,1433],{"class":1414},[1408,1470,1471],{"class":1436},"\u003Cstep-type-b>",[1408,1473,1427],{"class":1414},[1408,1475,1476],{"class":1414},"],\n",[1408,1478,1480,1482,1484,1486,1488,1490,1492],{"class":1410,"line":1479},4,[1408,1481,1421],{"class":1414},[1408,1483,1384],{"class":1424},[1408,1485,1427],{"class":1414},[1408,1487,1430],{"class":1414},[1408,1489,1433],{"class":1414},[1408,1491,1389],{"class":1436},[1408,1493,1494],{"class":1414},"\"\n",[1408,1496,1498],{"class":1410,"line":1497},5,[1408,1499,1500],{"class":1414},"}\n",[1222,1502,1503,1522,1527,1534],{},[1225,1504,1505,1506,1394,1508,1510,1511,1514,1515,1373,1518,1521],{},"Every type that ",[1232,1507,1389],{},[1232,1509,1393],{}," puts in the catalog must be marked end-user eligible by the platform. An app override from ",[1232,1512,1513],{},"identity.app.set-workflow-eligibility"," does not count, because the end user controls every input of the step. Otherwise the run fails with ",[1232,1516,1517],{},"STEP_NOT_AUTHORABLE",[1232,1519,1520],{},"failure_details.workflow_types"," lists the types, and nothing is written.",[1225,1523,1524,1526],{},[1232,1525,1397],{}," is never checked, so you can always take a type out.",[1225,1528,1529,1530,1533],{},"Compositions (",[1232,1531,1532],{},"virtual.*",") and composition references cannot be catalog entries.",[1225,1535,1536],{},"You can set the catalog before or after you enable authoring.",[1203,1538,1539,1540,1543,1544,1373,1547,1316,1550,1215],{},"It returns ",[1232,1541,1542],{},"authoring_catalog"," (after the change), ",[1232,1545,1546],{},"added",[1232,1548,1549],{},"removed",[1232,1551,1552],{},"changed",[1326,1554,1556],{"id":1555},"_2-enable-authoring","2. Enable authoring",[1203,1558,1559,1561],{},[1232,1560,1279],{}," turns authoring on.",[1341,1563,1564,1572],{},[1344,1565,1566],{},[1347,1567,1568,1570],{},[1350,1569,1352],{},[1350,1571,1355],{},[1357,1573,1574,1587],{},[1347,1575,1576,1581],{},[1362,1577,1578],{},[1232,1579,1580],{},"groups",[1362,1582,1583,1584,1215],{},"Access group slugs to grant authoring to. Default ",[1232,1585,1586],{},"[\"owner\", \"admin\", \"member\"]",[1347,1588,1589,1594],{},[1362,1590,1591],{},[1232,1592,1593],{},"limits",[1362,1595,1596,1597,1600],{},"Overrides of the ",[1212,1598,1593],{"href":1599},"#limits",", key by key. Positive integers. An unknown key is refused.",[1399,1602,1604],{"className":1401,"code":1603,"language":1403,"meta":1404,"style":1404},"{\n  \"identity_app_uuid\": \"\u003Cidentity_app_uuid>\",\n  \"groups\": [\"owner\", \"admin\", \"member\"],\n  \"limits\": { \"live_lineages_per_workspace\": 10 }\n}\n",[1232,1605,1606,1610,1628,1667,1697],{"__ignoreMap":1404},[1408,1607,1608],{"class":1410,"line":1411},[1408,1609,1415],{"class":1414},[1408,1611,1612,1614,1616,1618,1620,1622,1624,1626],{"class":1410,"line":1418},[1408,1613,1421],{"class":1414},[1408,1615,1311],{"class":1424},[1408,1617,1427],{"class":1414},[1408,1619,1430],{"class":1414},[1408,1621,1433],{"class":1414},[1408,1623,1437],{"class":1436},[1408,1625,1427],{"class":1414},[1408,1627,1442],{"class":1414},[1408,1629,1630,1632,1634,1636,1638,1640,1642,1645,1647,1649,1651,1654,1656,1658,1660,1663,1665],{"class":1410,"line":1445},[1408,1631,1421],{"class":1414},[1408,1633,1580],{"class":1424},[1408,1635,1427],{"class":1414},[1408,1637,1430],{"class":1414},[1408,1639,1456],{"class":1414},[1408,1641,1427],{"class":1414},[1408,1643,1644],{"class":1436},"owner",[1408,1646,1427],{"class":1414},[1408,1648,1466],{"class":1414},[1408,1650,1433],{"class":1414},[1408,1652,1653],{"class":1436},"admin",[1408,1655,1427],{"class":1414},[1408,1657,1466],{"class":1414},[1408,1659,1433],{"class":1414},[1408,1661,1662],{"class":1436},"member",[1408,1664,1427],{"class":1414},[1408,1666,1476],{"class":1414},[1408,1668,1669,1671,1673,1675,1677,1680,1682,1686,1688,1690,1694],{"class":1410,"line":1479},[1408,1670,1421],{"class":1414},[1408,1672,1593],{"class":1424},[1408,1674,1427],{"class":1414},[1408,1676,1430],{"class":1414},[1408,1678,1679],{"class":1414}," {",[1408,1681,1433],{"class":1414},[1408,1683,1685],{"class":1684},"sBMFI","live_lineages_per_workspace",[1408,1687,1427],{"class":1414},[1408,1689,1430],{"class":1414},[1408,1691,1693],{"class":1692},"sbssI"," 10",[1408,1695,1696],{"class":1414}," }\n",[1408,1698,1699],{"class":1410,"line":1497},[1408,1700,1500],{"class":1414},[1203,1702,1703],{},"It does three things:",[1269,1705,1706,1709,1722],{},[1225,1707,1708],{},"Turns authoring on for the app.",[1225,1710,1711,1712,1716,1717,1316,1719,1721],{},"Grants the ",[1212,1713,1715],{"href":1714},"#who-can-do-what","capabilities"," to the chosen groups. ",[1232,1718,1644],{},[1232,1720,1653],{}," get read, run, draft and publish. Every other chosen group gets read, run and draft. Grants are only added, never removed, so grants you made yourself stay.",[1225,1723,1724,1725,1728,1729,1732,1733,1736,1737,1215],{},"Publishes and exposes the app's ",[1207,1726,1727],{},"entry points",": one small composition per action, named ",[1232,1730,1731],{},"composer-\u003Ckey>-\u003Capp12>",". ",[1232,1734,1735],{},"\u003Capp12>"," is the first 12 hex characters of the app's UUID, without dashes. See ",[1212,1738,1740],{"href":1739},"#entry-points","Entry points",[1203,1742,1539,1743,1373,1746,1373,1749,1373,1751,1754,1755,1758,1759,1762,1763,1373,1766,1316,1769,1732,1772,1774,1775,1778,1779,1782],{},[1232,1744,1745],{},"authoring_enabled",[1232,1747,1748],{},"was_enabled",[1232,1750,1580],{},[1232,1752,1753],{},"capabilities_added"," (",[1232,1756,1757],{},"{group: [capabilities]}","), ",[1232,1760,1761],{},"authoring_limits"," (the limits now in effect), ",[1232,1764,1765],{},"entrypoints",[1232,1767,1768],{},"published",[1232,1770,1771],{},"exposed",[1232,1773,1765],{}," maps each key to ",[1232,1776,1777],{},"{workflow_type, composition_uuid, version, name, wraps, revision, exposed}",". Keep the ",[1232,1780,1781],{},"workflow_type"," values: your app starts them.",[1222,1784,1785,1788,1795],{},[1225,1786,1787],{},"The run can take a few minutes, because it publishes the entry points before it finishes.",[1225,1789,1790,1791,1794],{},"It is safe to run again. A second run only adds what is missing: a capability, an entry point, or an entry point whose definition changed in a platform update. If it fails with ",[1232,1792,1793],{},"AUTHORING_ENTRYPOINT_FAILED",", run it again and it continues where it stopped.",[1225,1796,1797,1799,1800,1802],{},[1232,1798,1593],{}," replaces the app's earlier overrides. A key you leave out goes back to its default. Leave ",[1232,1801,1593],{}," out to keep the current overrides.",[1326,1804,1806],{"id":1805},"_3-give-people-a-workspace","3. Give people a workspace",[1203,1808,1809,1810,1813,1814,1816],{},"Authoring works only in an ",[1207,1811,1812],{},"active workspace"," of the app. Add people to a workspace with a role, as described in ",[1212,1815,1037],{"href":1038},". Their role in that workspace decides what they can do there.",[1217,1818,1820],{"id":1819},"who-can-do-what","Who can do what",[1203,1822,1823,1824,1827],{},"Capabilities are resolved ",[1207,1825,1826],{},"per workspace",", from the person's role in their active workspace.",[1341,1829,1830,1840],{},[1344,1831,1832],{},[1347,1833,1834,1837],{},[1350,1835,1836],{},"Capability",[1350,1838,1839],{},"Lets the person",[1357,1841,1842,1852,1862,1872],{},[1347,1843,1844,1849],{},[1362,1845,1846],{},[1232,1847,1848],{},"compositions:read",[1362,1850,1851],{},"List and read the workspace's compositions",[1347,1853,1854,1859],{},[1362,1855,1856],{},[1232,1857,1858],{},"compositions:run",[1362,1860,1861],{},"Start a published composition of the workspace",[1347,1863,1864,1869],{},[1362,1865,1866],{},[1232,1867,1868],{},"compositions:draft",[1362,1870,1871],{},"Check compositions, see the step catalog, and save drafts of new compositions and of compositions they started",[1347,1873,1874,1879],{},[1362,1875,1876],{},[1232,1877,1878],{},"compositions:publish",[1362,1880,1881,1882,1884],{},"Everything ",[1232,1883,1868],{}," allows, plus publish, archive, change compositions other people started, and see everyone's drafts",[1203,1886,1887],{},"With the default grant:",[1341,1889,1890,1902],{},[1344,1891,1892],{},[1347,1893,1894,1896,1899],{},[1350,1895],{},[1350,1897,1898],{},"Member",[1350,1900,1901],{},"Admin or owner",[1357,1903,1904,1914,1923,1933,1942],{},[1347,1905,1906,1909,1912],{},[1362,1907,1908],{},"List, read and run published compositions",[1362,1910,1911],{},"Yes",[1362,1913,1911],{},[1347,1915,1916,1919,1921],{},[1362,1917,1918],{},"Check, see the step catalog, and save drafts of their own compositions",[1362,1920,1911],{},[1362,1922,1911],{},[1347,1924,1925,1928,1931],{},[1362,1926,1927],{},"See other people's drafts",[1362,1929,1930],{},"No",[1362,1932,1911],{},[1347,1934,1935,1938,1940],{},[1362,1936,1937],{},"Change a composition someone else started",[1362,1939,1930],{},[1362,1941,1911],{},[1347,1943,1944,1947,1949],{},[1362,1945,1946],{},"Publish and archive",[1362,1948,1930],{},[1362,1950,1911],{},[1203,1952,1953],{},"Two more rules:",[1222,1955,1956,1967],{},[1225,1957,1958,1961,1962,1394,1964,1966],{},[1207,1959,1960],{},"Authors keep access to their own work."," A person can always read and run a composition they wrote, even without ",[1232,1963,1848],{},[1232,1965,1858],{},", while they are a member of the workspace.",[1225,1968,1969,1972,1973,1975,1976,1215],{},[1207,1970,1971],{},"Drafts stay private to their author and to publishers."," Without ",[1232,1974,1878],{},", a person sees the published compositions up to their live version, plus everything they started or wrote. Anything else answers ",[1232,1977,1234],{},[1203,1979,1980],{},"So a member can prepare a composition, and an admin reviews and publishes it.",[1217,1982,1740],{"id":1983},"entry-points",[1203,1985,1986,1987,1989,1990,1993],{},"An end user's browser can start only compositions your app exposes, never a library workflow. So ",[1232,1988,1279],{}," publishes one entry point per action. Each one is a one-step composition that wraps a ",[1232,1991,1992],{},"composition.app.*"," verb (or a workspace or schedule verb) and passes the caller's inputs through unchanged.",[1203,1995,1996,1997,1999,2000,2002],{},"Start an entry point with the end user's token, using the ",[1232,1998,1781],{}," from ",[1232,2001,1765],{},". The verbs read the app, the workspace and the person from the session. You never send them.",[1341,2004,2005,2021],{},[1344,2006,2007],{},[1347,2008,2009,2012,2015,2018],{},[1350,2010,2011],{},"Key",[1350,2013,2014],{},"Wraps",[1350,2016,2017],{},"Inputs",[1350,2019,2020],{},"Needs",[1357,2022,2023,2051,2085,2106,2136,2168,2200,2226,2246,2269,2299],{},[1347,2024,2025,2030,2035,2046],{},[1362,2026,2027],{},[1232,2028,2029],{},"list",[1362,2031,2032],{},[1232,2033,2034],{},"composition.app.list",[1362,2036,2037,1373,2040,1373,2043],{},[1232,2038,2039],{},"status",[1232,2041,2042],{},"limit",[1232,2044,2045],{},"cursor",[1362,2047,2048,2050],{},[1232,2049,1848],{}," (or own compositions only)",[1347,2052,2053,2058,2063,2080],{},[1362,2054,2055],{},[1232,2056,2057],{},"get",[1362,2059,2060],{},[1232,2061,2062],{},"composition.app.get",[1362,2064,2065,2068,2069,2072,2073,2076,2077],{},[1232,2066,2067],{},"composition_uuid",", or ",[1232,2070,2071],{},"lineage_name"," / ",[1232,2074,2075],{},"slug"," with optional ",[1232,2078,2079],{},"version",[1362,2081,2082,2084],{},[1232,2083,1848],{}," (or the author)",[1347,2086,2087,2092,2097,2100],{},[1362,2088,2089],{},[1232,2090,2091],{},"catalog",[1362,2093,2094],{},[1232,2095,2096],{},"composition.app.catalog",[1362,2098,2099],{},"none",[1362,2101,2102,1394,2104],{},[1232,2103,1868],{},[1232,2105,1878],{},[1347,2107,2108,2113,2118,2130],{},[1362,2109,2110],{},[1232,2111,2112],{},"validate",[1362,2114,2115],{},[1232,2116,2117],{},"composition.app.validate",[1362,2119,2120,2123,2124,1373,2127],{},[1232,2121,2122],{},"definition"," (required), ",[1232,2125,2126],{},"include_dry_run",[1232,2128,2129],{},"summary_only",[1362,2131,2132,1394,2134],{},[1232,2133,1868],{},[1232,2135,1878],{},[1347,2137,2138,2143,2148,2162],{},[1362,2139,2140],{},[1232,2141,2142],{},"save-draft",[1362,2144,2145],{},[1232,2146,2147],{},"composition.app.save-draft",[1362,2149,2150,2123,2152,1373,2154,1373,2156,1373,2159],{},[1232,2151,2122],{},[1232,2153,2075],{},[1232,2155,2071],{},[1232,2157,2158],{},"title",[1232,2160,2161],{},"expected_version",[1362,2163,2164,1394,2166],{},[1232,2165,1868],{},[1232,2167,1878],{},[1347,2169,2170,2175,2180,2196],{},[1362,2171,2172],{},[1232,2173,2174],{},"publish",[1362,2176,2177],{},[1232,2178,2179],{},"composition.app.publish",[1362,2181,2182,1373,2184,1373,2186,2189,2190,1373,2192,1373,2194],{},[1232,2183,2122],{},[1232,2185,2161],{},[1232,2187,2188],{},"idempotency_key"," (all required), ",[1232,2191,2075],{},[1232,2193,2071],{},[1232,2195,2158],{},[1362,2197,2198],{},[1232,2199,1878],{},[1347,2201,2202,2207,2212,2222],{},[1362,2203,2204],{},[1232,2205,2206],{},"archive",[1362,2208,2209],{},[1232,2210,2211],{},"composition.app.archive",[1362,2213,2214,2068,2216,2072,2218,1290,2220],{},[1232,2215,2067],{},[1232,2217,2071],{},[1232,2219,2075],{},[1232,2221,2079],{},[1362,2223,2224],{},[1232,2225,1878],{},[1347,2227,2228,2233,2238,2243],{},[1362,2229,2230],{},[1232,2231,2232],{},"publish-status",[1362,2234,2235],{},[1232,2236,2237],{},"composition.app.publish-status",[1362,2239,2240,2242],{},[1232,2241,2188],{}," (required)",[1362,2244,2245],{},"The person who published",[1347,2247,2248,2252,2257,2266],{},[1362,2249,2250],{},[1232,2251,1301],{},[1362,2253,2254],{},[1232,2255,2256],{},"identity.end-user.organization.query",[1362,2258,2259,2260,1373,2263],{},"none. Returns ",[1232,2261,2262],{},"items",[1232,2264,2265],{},"total",[1362,2267,2268],{},"—",[1347,2270,2271,2276,2281,2296],{},[1362,2272,2273],{},[1232,2274,2275],{},"workspace-switch",[1362,2277,2278],{},[1232,2279,2280],{},"identity.end-user.organization.switch",[1362,2282,2283,2286,2287,1373,2290,1373,2293],{},[1232,2284,2285],{},"workspace_uuid"," (required). Returns ",[1232,2288,2289],{},"active_app_organization_uuid",[1232,2291,2292],{},"app_organization_ref",[1232,2294,2295],{},"membership_status",[1362,2297,2298],{},"A member of that workspace",[1347,2300,2301,2324,2347,2354],{},[1362,2302,2303,1373,2306,1373,2309,1373,2312,1373,2315,1373,2318,1373,2321],{},[1232,2304,2305],{},"schedule-list",[1232,2307,2308],{},"schedule-runs",[1232,2310,2311],{},"schedule-create",[1232,2313,2314],{},"schedule-update",[1232,2316,2317],{},"schedule-pause",[1232,2319,2320],{},"schedule-resume",[1232,2322,2323],{},"schedule-delete",[1362,2325,2326,1373,2329,1373,2332,1373,2335,1373,2338,1373,2341,1373,2344],{},[1232,2327,2328],{},"schedule.app.list",[1232,2330,2331],{},".runs",[1232,2333,2334],{},".create",[1232,2336,2337],{},".update",[1232,2339,2340],{},".pause",[1232,2342,2343],{},".resume",[1232,2345,2346],{},".delete",[1362,2348,2349,2350],{},"The verb's inputs. See ",[1212,2351,2353],{"href":2352},"#schedules","Schedules",[1362,2355,2356],{},"Changes only the person's own schedules",[1203,2358,2359,2360,2363,2364,2367,2368,2371],{},"Read each verb's fields from the entry point run's output. They can sit under the step's name, which is the key with ",[1232,2361,2362],{},"-"," written as ",[1232,2365,2366],{},"_"," (for example ",[1232,2369,2370],{},"save_draft",").",[1203,2373,2374,2375,2377,2378,2381,2382,1215],{},"A ",[1232,2376,2122],{}," is a composition definition in the same format ",[1232,2379,2380],{},"composition.save"," takes. See ",[1212,2383,2384],{"href":488},"Compositions",[1326,2386,2388],{"id":2387},"names-titles-and-versions","Names, titles and versions",[1222,2390,2391,2407,2419,2424],{},[1225,2392,2393,2394,2397,2398,2400,2401,2404,2405,1215],{},"A composition is one ",[1207,2395,2396],{},"lineage"," of numbered versions. Name it with a ",[1232,2399,2075],{},": lowercase ",[1232,2402,2403],{},"a-z0-9"," words joined by single hyphens, at most 64 characters. Without a slug, one is made from ",[1232,2406,2158],{},[1225,2408,2409,2410,1732,2413,2415,2416,2418],{},"The stored name is ",[1232,2411,2412],{},"ws-\u003Cworkspace id>-\u003Cslug>",[1232,2414,2029],{}," returns it as ",[1232,2417,2071],{},". You can pass it back instead of the slug.",[1225,2420,2421,2423],{},[1232,2422,2158],{}," is the display name, at most 200 characters. A new composition needs one. Later saves keep it when you leave it out.",[1225,2425,2426,2428,2429,2432,2433,1316,2436,2439,2440,2442,2443,1215],{},[1232,2427,2161],{}," is the newest version your editor holds, of any status. Send ",[1232,2430,2431],{},"0"," for a new composition. If someone saved a newer version meanwhile, the write is refused with ",[1232,2434,2435],{},"VERSION_CONFLICT",[1232,2437,2438],{},"head_version",". It is optional on ",[1232,2441,2142],{}," and required on ",[1232,2444,2174],{},[1326,2446,2448],{"id":2447},"check","Check",[1203,2450,2451,2453,2454,2456],{},[1232,2452,2112],{}," writes nothing. It runs the platform's validation and the authoring rules, and tells you whether ",[1232,2455,2174],{}," would accept the definition.",[1341,2458,2459,2468],{},[1344,2460,2461],{},[1347,2462,2463,2466],{},[1350,2464,2465],{},"Output",[1350,2467,1355],{},[1357,2469,2470,2486,2499,2525,2543],{},[1347,2471,2472,2483],{},[1362,2473,2474,1373,2477,1373,2480],{},[1232,2475,2476],{},"passed",[1232,2478,2479],{},"errors",[1232,2481,2482],{},"warnings",[1362,2484,2485],{},"The platform's validation",[1347,2487,2488,2493],{},[1362,2489,2490],{},[1232,2491,2492],{},"authoring",[1362,2494,2495,2496],{},"The authoring rules: ",[1232,2497,2498],{},"{passed, findings, codes, step_count, step_types}",[1347,2500,2501,2506],{},[1362,2502,2503],{},[1232,2504,2505],{},"findings",[1362,2507,2508,2509,2512,2513,1373,2516,1373,2519,1394,2521,2524],{},"Each problem: ",[1232,2510,2511],{},"{code, message, ...}",", with ",[1232,2514,2515],{},"step_name",[1232,2517,2518],{},"path",[1232,2520,1781],{},[1232,2522,2523],{},"field"," when known",[1347,2526,2527,2532],{},[1362,2528,2529],{},[1232,2530,2531],{},"publishable",[1362,2533,2534,1316,2536,1732,2539,2542],{},[1232,2535,2476],{},[1232,2537,2538],{},"authoring.passed",[1232,2540,2541],{},"valid"," is the same value.",[1347,2544,2545,2550],{},[1362,2546,2547],{},[1232,2548,2549],{},"pinned_children",[1362,2551,2552],{},"Nested compositions of this workspace that a publish would pin to their live version",[1203,2554,2555],{},"The authoring rules, with the code each finding carries:",[1222,2557,2558,2563,2586,2597],{},[1225,2559,2560,2561,2371],{},"Every step type, at every depth, is end-user eligible, and every top-level step is in the app's catalog (",[1232,2562,1517],{},[1225,2564,2565,2566,1373,2568,1373,2571,1373,2574,1394,2576,2579,2580,2582,2583,2371],{},"No step sets ",[1232,2567,1319],{},[1232,2569,2570],{},"user_uuid",[1232,2572,2573],{},"end_user_uuid",[1232,2575,1311],{},[1232,2577,2578],{},"app_organization_uuid"," as a fixed value. Only ",[1232,2581,1319],{}," may come from the run's input (",[1232,2584,2585],{},"UNSCOPED_INPUT",[1225,2587,2588,2589,2592,2593,2596],{},"A nested composition is pinned to one exact version, belongs to this workspace or the organization, and is exposed to this workspace (",[1232,2590,2591],{},"NESTED_NOT_IN_WORKSPACE","). A nested composition of this workspace referenced as ",[1232,2594,2595],{},"@latest"," is pinned for you to its live version.",[1225,2598,2599,2600,1754,2603,2371],{},"The step count is within ",[1232,2601,2602],{},"steps_per_composition",[1232,2604,2605],{},"QUOTA_EXCEEDED",[1203,2607,2608,2610,2611,1373,2613,1373,2616,1373,2619,2622,2623,1290,2626,1316,2629,2632,2633,2636,2637,2640,2641,1754,2644,1394,2647,2650,2651,2653,2654,1215],{},[1232,2609,2091],{}," lists the allowed steps in catalog order: ",[1232,2612,1781],{},[1232,2614,2615],{},"name",[1232,2617,2618],{},"description",[1232,2620,2621],{},"authorable",", and ",[1232,2624,2625],{},"schema",[1232,2627,2628],{},"input_fields",[1232,2630,2631],{},"output_fields",". An input field with ",[1232,2634,2635],{},"server_controlled: true"," is filled by the platform: don't ask the person for it. A type that is no longer eligible stays in the list with ",[1232,2638,2639],{},"authorable: false"," and a ",[1232,2642,2643],{},"reason",[1232,2645,2646],{},"not_end_user_eligible",[1232,2648,2649],{},"unknown_type","). ",[1232,2652,2091],{}," also returns the app's ",[1232,2655,1593],{},[1326,2657,2659],{"id":2658},"save-a-draft","Save a draft",[1203,2661,2662,2664,2665,2668,2669,1373,2671,1373,2673,1373,2675,1373,2677,1373,2679,1373,2681,1754,2683,1758,2685,1373,2687,1373,2690,1316,2693,1215],{},[1232,2663,2142],{}," saves a new version with status ",[1232,2666,2667],{},"draft",". It never publishes or exposes anything. It returns ",[1232,2670,2067],{},[1232,2672,2071],{},[1232,2674,2075],{},[1232,2676,2158],{},[1232,2678,2079],{},[1232,2680,2438],{},[1232,2682,2039],{},[1232,2684,2667],{},[1232,2686,1781],{},[1232,2688,2689],{},"validation_passed",[1232,2691,2692],{},"validation_errors",[1232,2694,2695],{},"validation_warnings",[1326,2697,2698],{"id":2174},"Publish",[1203,2700,2701,2703,2704,1215],{},[1232,2702,2174],{}," saves a new version, checks it, makes it the live version and exposes it to ",[1207,2705,2706],{},"this workspace only, at this version only",[1222,2708,2709,2723],{},[1225,2710,2711,2715,2716,2719,2720,1215],{},[1207,2712,2713],{},[1232,2714,2188],{},": choose one per publish attempt (for example a UUID, at most 128 characters) and reuse it on every retry of that attempt. A retry of a finished key returns the stored outcome with ",[1232,2717,2718],{},"replayed: true",". Nothing new is written. The same key used by another person, workspace or lineage is refused with ",[1232,2721,2722],{},"IDEMPOTENCY_KEY_REUSED",[1225,2724,2725,2726,2728],{},"Nested compositions of this workspace referenced as ",[1232,2727,2595],{}," are pinned to their live version. Those that were not yet exposed to the workspace are exposed with it.",[1203,2730,2731],{},"The output is the publish request:",[1341,2733,2734,2743],{},[1344,2735,2736],{},[1347,2737,2738,2741],{},[1350,2739,2740],{},"Field",[1350,2742,1355],{},[1357,2744,2745,2765,2797,2823,2860,2873],{},[1347,2746,2747,2751],{},[1362,2748,2749],{},[1232,2750,2039],{},[1362,2752,2753,1373,2755,1373,2758,2068,2761,2764],{},[1232,2754,1768],{},[1232,2756,2757],{},"refused",[1232,2759,2760],{},"failed",[1232,2762,2763],{},"accepted"," (still running)",[1347,2766,2767,2772],{},[1362,2768,2769],{},[1232,2770,2771],{},"refusal_code",[1362,2773,2774,2775,2777,2778,1394,2781,2784,2785,2777,2787,2784,2790,2777,2792,2784,2795],{},"The code when ",[1232,2776,2757],{},"; ",[1232,2779,2780],{},"INTERNAL_ERROR",[1232,2782,2783],{},"PUBLISH_ABANDONED"," when ",[1232,2786,2760],{},[1232,2788,2789],{},"PUBLISH_IN_PROGRESS",[1232,2791,2763],{},[1232,2793,2794],{},"null",[1232,2796,1768],{},[1347,2798,2799,2804],{},[1362,2800,2801],{},[1232,2802,2803],{},"refusal",[1362,2805,2806,2808,2809,1373,2811,1373,2813,1373,2815,1316,2817,2068,2820],{},[1232,2807,2511],{}," with what the refusal names: ",[1232,2810,2438],{},[1232,2812,2505],{},[1232,2814,2479],{},[1232,2816,2042],{},[1232,2818,2819],{},"maximum",[1232,2821,2822],{},"capability",[1347,2824,2825,2830],{},[1362,2826,2827],{},[1232,2828,2829],{},"receipt",[1362,2831,2832,2833,2835,2836,1373,2838,1373,2841,1373,2843,1373,2845,1373,2847,1373,2849,1373,2852,1373,2855,1373,2858],{},"When ",[1232,2834,1768],{},": ",[1232,2837,2067],{},[1232,2839,2840],{},"lineage_uuid",[1232,2842,2071],{},[1232,2844,2158],{},[1232,2846,2079],{},[1232,2848,1781],{},[1232,2850,2851],{},"orn_pinned",[1232,2853,2854],{},"published_at",[1232,2856,2857],{},"request_uuid",[1232,2859,2549],{},[1347,2861,2862,2867],{},[1362,2863,2864],{},[1232,2865,2866],{},"replayed",[1362,2868,2869,2872],{},[1232,2870,2871],{},"true"," when this key was already used",[1347,2874,2875,2891],{},[1362,2876,2877,1373,2879,1373,2881,1373,2883,1373,2885,1373,2888],{},[1232,2878,2857],{},[1232,2880,2188],{},[1232,2882,2071],{},[1232,2884,2161],{},[1232,2886,2887],{},"created_at",[1232,2889,2890],{},"finished_at",[1362,2892,2893],{},"The request itself",[1203,2895,2896,2897,2900,2901,2903,2904,2907,2908,1215],{},"After the request is accepted, a refusal does not fail the run. It is recorded and returned with ",[1232,2898,2899],{},"status: \"refused\"",", so ",[1232,2902,2232],{}," can report it later. A definition that fails validation is kept as a draft and refused with ",[1232,2905,2906],{},"VALIDATION_FAILED",". Refusals found before the request is recorded fail the run instead: no workspace, authoring off for the organization, a malformed input, or another workspace's ",[1232,2909,2071],{},[1203,2911,2912,2913,2915,2916,2918,2919,1290,2921,2923],{},"If a publish times out on your side, call ",[1232,2914,2232],{}," with the same key before you retry. It returns the same shape. A request still ",[1232,2917,2763],{}," after 15 minutes is reported as ",[1232,2920,2760],{},[1232,2922,2783],{},". Publish again with a new key.",[1326,2925,2926],{"id":2029},"List",[1203,2928,2929,2931,2932,2934,2935,2938,2939,2941,2942,2835,2944,1373,2947,1394,2949,1215],{},[1232,2930,2029],{}," returns one item per lineage, newest change first, up to ",[1232,2933,2042],{}," (default 50, at most 200). Pass ",[1232,2936,2937],{},"next_cursor"," back as ",[1232,2940,2045],{}," for the next page. Filter with ",[1232,2943,2039],{},[1232,2945,2946],{},"live",[1232,2948,2667],{},[1232,2950,2951],{},"retired",[1203,2953,2954,2955,1373,2957,1373,2959,1373,2961,1373,2963,1316,2966,2968,2969,1758,2971,1373,2974,1373,2977,1754,2980,1758,2983,1316,2985,1430],{},"Each item has ",[1232,2956,2071],{},[1232,2958,2075],{},[1232,2960,2158],{},[1232,2962,2039],{},[1232,2964,2965],{},"head",[1232,2967,2946],{}," (or ",[1232,2970,2794],{},[1232,2972,2973],{},"step_count",[1232,2975,2976],{},"updated_at",[1232,2978,2979],{},"author",[1232,2981,2982],{},"{mine, display_name}",[1232,2984,1771],{},[1232,2986,1263],{},[1341,2988,2989,2999],{},[1344,2990,2991],{},[1347,2992,2993,2997],{},[1350,2994,2995],{},[1232,2996,1263],{},[1350,2998,1355],{},[1357,3000,3001,3011,3025],{},[1347,3002,3003,3008],{},[1362,3004,3005],{},[1232,3006,3007],{},"available",[1362,3009,3010],{},"Published and served to this workspace. People can run it.",[1347,3012,3013,3018],{},[1362,3014,3015],{},[1232,3016,3017],{},"unexposed",[1362,3019,3020,3021,3024],{},"Published, but not served to this workspace, for example after authoring was turned off with ",[1232,3022,3023],{},"unexpose",". Publish it again to expose it.",[1347,3026,3027,3032],{},[1362,3028,3029],{},[1232,3030,3031],{},"not_published",[1362,3033,3034],{},"No live version.",[1203,3036,3037,3039,3040,1754,3043,1373,3045,1394,3047,3050,3051,2835,3053,3056,3057,3059,3060,3063,3064,3067],{},[1232,3038,2029],{}," also returns ",[1232,3041,3042],{},"view",[1232,3044,1214],{},[1232,3046,1768],{},[1232,3048,3049],{},"own",", depending on what the person may see) and ",[1232,3052,1715],{},[1232,3054,3055],{},"{read, run, draft, publish}"," for the person in this workspace. Use ",[1232,3058,1715],{}," to show or hide actions. ",[1232,3061,3062],{},"author.display_name"," is the part of the person's email before the ",[1232,3065,3066],{},"@",". No member UUID is returned.",[1203,3069,3070,3072,3073,1373,3075,1373,3078,1373,3080,1373,3083,1373,3085,1373,3087,1316,3090,1215],{},[1232,3071,2057],{}," returns one version with its ",[1232,3074,2122],{},[1232,3076,3077],{},"validation",[1232,3079,2438],{},[1232,3081,3082],{},"live_version",[1232,3084,1771],{},[1232,3086,2979],{},[1232,3088,3089],{},"lineage_author",[1232,3091,1715],{},[1326,3093,3094],{"id":2206},"Archive",[1203,3096,3097,3099,3100,1373,3102,1373,3104,1373,3106,1754,3108,1758,3110,1316,3113,1215],{},[1232,3098,2206],{}," retires one version: it can no longer be started, and its exposure to the workspace is removed. Schedules that fire it stop at their next firing. It returns ",[1232,3101,2067],{},[1232,3103,2071],{},[1232,3105,2079],{},[1232,3107,2039],{},[1232,3109,2951],{},[1232,3111,3112],{},"previous_status",[1232,3114,3017],{},[1217,3116,3118],{"id":3117},"run-a-published-composition","Run a published composition",[1203,3120,3121,3122,3125,3126,3129,3130,1999,3133,3135],{},"A published version is a normal workflow type, ",[1232,3123,3124],{},"virtual.\u003Ccomposition_uuid>@\u003Cversion>",". Find it in the publish ",[1232,3127,3128],{},"receipt.workflow_type",", or in ",[1232,3131,3132],{},"live.workflow_type",[1232,3134,2029],{},". Start it with the end user's token:",[1399,3137,3141],{"className":3138,"code":3139,"language":3140,"meta":1404,"style":1404},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const run = await client.start(\"virtual.\u003Ccomposition_uuid>@\u003Cversion>\", {\n  // the composition's own inputs only\n})\n","ts",[1232,3142,3143,3182,3188],{"__ignoreMap":1404},[1408,3144,3145,3148,3152,3155,3159,3162,3164,3168,3171,3173,3175,3177,3179],{"class":1410,"line":1411},[1408,3146,3147],{"class":1424},"const",[1408,3149,3151],{"class":3150},"sTEyZ"," run ",[1408,3153,3154],{"class":1414},"=",[1408,3156,3158],{"class":3157},"s7zQu"," await",[1408,3160,3161],{"class":3150}," client",[1408,3163,1215],{"class":1414},[1408,3165,3167],{"class":3166},"s2Zo4","start",[1408,3169,3170],{"class":3150},"(",[1408,3172,1427],{"class":1414},[1408,3174,3124],{"class":1436},[1408,3176,1427],{"class":1414},[1408,3178,1466],{"class":1414},[1408,3180,3181],{"class":1414}," {\n",[1408,3183,3184],{"class":1410,"line":1418},[1408,3185,3187],{"class":3186},"sHwdD","  // the composition's own inputs only\n",[1408,3189,3190,3193],{"class":1410,"line":1445},[1408,3191,3192],{"class":1414},"}",[1408,3194,3195],{"class":3150},")\n",[1203,3197,3198],{},"The start succeeds only when:",[1222,3200,3201,3215,3229],{},[1225,3202,3203,3204,3207,3208,1290,3211,3214],{},"the version is exposed to the person's ",[1207,3205,3206],{},"active"," workspace, otherwise ",[1232,3209,3210],{},"403",[1232,3212,3213],{},"NOT_EXPOSED_TO_END_USERS",";",[1225,3216,3217,3218,3220,3221,1290,3223,1316,3226,3214],{},"the person holds ",[1232,3219,1858],{}," in that workspace or wrote the composition, otherwise ",[1232,3222,3210],{},[1232,3224,3225],{},"CAPABILITY_REQUIRED",[1232,3227,3228],{},"capability: \"compositions:run\"",[1225,3230,3231,3232,1290,3234,3237,3238,2371],{},"a session bound to a workspace is still in that workspace, otherwise ",[1232,3233,3210],{},[1232,3235,3236],{},"WORKSPACE_MISMATCH"," (see ",[1212,3239,3241],{"href":3240},"/build-apps/workspaces#sessions-bound-to-a-workspace","Sessions bound to a workspace",[1203,3243,3244,3245,3247,3248,3250,3251,1215],{},"Don't send ",[1232,3246,2578],{}," in the input. The active workspace comes from the session, and a start whose ",[1232,3249,2578],{}," differs from it is refused with ",[1232,3252,3253],{},"PRINCIPAL_OVERRIDE_REJECTED",[1217,3255,2353],{"id":3256},"schedules",[1203,3258,3259,3260,3263,3264,3267,3268,3270,3271,3274],{},"End users schedule published compositions with the ",[1232,3261,3262],{},"schedule.app.*"," workflows, through the app's ",[1232,3265,3266],{},"composer-schedule-\u003Cverb>-\u003Capp12>"," ",[1212,3269,1727],{"href":1739},". A schedule runs ",[1207,3272,3273],{},"as the person who created it",", in their workspace.",[1341,3276,3277,3287],{},[1344,3278,3279],{},[1347,3280,3281,3284],{},[1350,3282,3283],{},"Workflow",[1350,3285,3286],{},"What it does",[1357,3288,3289,3318,3331,3347,3356],{},[1347,3290,3291,3296],{},[1362,3292,3293],{},[1232,3294,3295],{},"schedule.app.create",[1362,3297,3298,3299,1373,3302,1373,3304,1394,3307,1290,3310,1373,3313,1373,3316],{},"Create a schedule. Inputs: ",[1232,3300,3301],{},"target_workflow_type",[1232,3303,2615],{},[1232,3305,3306],{},"interval_minutes",[1232,3308,3309],{},"schedule_expression",[1232,3311,3312],{},"timezone",[1232,3314,3315],{},"initial_data",[1232,3317,3206],{},[1347,3319,3320,3325],{},[1362,3321,3322],{},[1232,3323,3324],{},"schedule.app.update",[1362,3326,3327,3328,3330],{},"Change the name, cadence, target, inputs or ",[1232,3329,3206],{}," of your own schedule",[1347,3332,3333,3344],{},[1362,3334,3335,1373,3338,1373,3341],{},[1232,3336,3337],{},"schedule.app.pause",[1232,3339,3340],{},"schedule.app.resume",[1232,3342,3343],{},"schedule.app.delete",[1362,3345,3346],{},"Act on your own schedule",[1347,3348,3349,3353],{},[1362,3350,3351],{},[1232,3352,2328],{},[1362,3354,3355],{},"The schedules you can see in this workspace",[1347,3357,3358,3363],{},[1362,3359,3360],{},[1232,3361,3362],{},"schedule.app.runs",[1362,3364,3365],{},"The recent runs (last 30 days) one schedule started: status and timing",[1222,3367,3368,3390,3403,3412,3424],{},[1225,3369,3370,3373,3374,2068,3376,3378,3379,3382,3383,3385,3386,3389],{},[1207,3371,3372],{},"Cadence",": either ",[1232,3375,3306],{},[1232,3377,3309],{}," (five cron fields, for example ",[1232,3380,3381],{},"0 8 * * 1-5",") read in ",[1232,3384,3312],{},", an IANA name such as ",[1232,3387,3388],{},"America/Sao_Paulo",". Not more often than every 15 minutes.",[1225,3391,3392,3395,3396,3399,3400,1215],{},[1207,3393,3394],{},"Target",": a composition your app exposes to the person's workspace, as ",[1232,3397,3398],{},"virtual.\u003Cuuid>@\u003Cversion>"," or a composition reference. A raw workflow type is refused with ",[1232,3401,3402],{},"schedule_target_not_exposed",[1225,3404,3405,3408,3409,1215],{},[1207,3406,3407],{},"New schedules start paused"," unless you send ",[1232,3410,3411],{},"active: true",[1225,3413,3414,3416,3417,3420,3421,1215],{},[1207,3415,864],{},": by default a person may hold 10 schedules in an app and an app 50, paused ones included (",[1232,3418,3419],{},"schedule_quota_exceeded","). A cadence that is too short is refused with ",[1232,3422,3423],{},"schedule_interval_too_short",[1225,3425,3426,3429,3430,1215],{},[1207,3427,3428],{},"Ownership",": people change only the schedules they created. Anything else answers ",[1232,3431,3432],{},"schedule_not_found",[1203,3434,3435,3436,3438,3439,3442,3443,3445],{},"The ",[1232,3437,3262],{}," workflows are library workflows, so the browser starts them through the ",[1232,3440,3441],{},"schedule-*"," entry points. An app that turned authoring on before those entry points existed gets them by running ",[1232,3444,1279],{}," again; nothing else changes.",[1326,3447,3449],{"id":3448},"skipped-firings","Skipped firings",[1203,3451,3452,3453,3456],{},"Before each firing, the platform checks again that the creator is still an active member of the workspace and that the composition is still exposed to it. If not, it ",[1207,3454,3455],{},"skips"," the firing and starts nothing. So when a person leaves the workspace, their schedules stop running.",[1203,3458,3459,3461],{},[1232,3460,2328],{}," shows it on each schedule:",[1341,3463,3464,3472],{},[1344,3465,3466],{},[1347,3467,3468,3470],{},[1350,3469,2740],{},[1350,3471,1355],{},[1357,3473,3474,3486,3512,3522,3532],{},[1347,3475,3476,3481],{},[1362,3477,3478],{},[1232,3479,3480],{},"last_fire_skipped",[1362,3482,3483,3485],{},[1232,3484,2871],{}," when the last occurrence started nothing",[1347,3487,3488,3493],{},[1362,3489,3490],{},[1232,3491,3492],{},"last_error_code",[1362,3494,3495,3496,1373,3499,1394,3502,3505,3506,1394,3509,1215],{},"Why, for example ",[1232,3497,3498],{},"creator_not_in_workspace",[1232,3500,3501],{},"workspace_inactive",[1232,3503,3504],{},"target_not_exposed_to_workspace",". Other values describe failed runs, such as ",[1232,3507,3508],{},"run_failed",[1232,3510,3511],{},"start_rejected",[1347,3513,3514,3519],{},[1362,3515,3516],{},[1232,3517,3518],{},"last_error_reason",[1362,3520,3521],{},"A fixed sentence for the code, safe to show to the person",[1347,3523,3524,3529],{},[1362,3525,3526],{},[1232,3527,3528],{},"last_run_at",[1362,3530,3531],{},"When the last occurrence came due, run or skipped",[1347,3533,3534,3539],{},[1362,3535,3536],{},[1232,3537,3538],{},"run_count",[1362,3540,3541],{},"Occurrences that started a run. Skips are not counted.",[1203,3543,3544,3545,1373,3548,1373,3550,1373,3553,1373,3556,1373,3558,1373,3560,1373,3562,1373,3565,1373,3568,1373,3571,1373,3574,1316,3577,1732,3580,3582],{},"Each item also has ",[1232,3546,3547],{},"schedule_uuid",[1232,3549,2615],{},[1232,3551,3552],{},"target",[1232,3554,3555],{},"interval_seconds",[1232,3557,3309],{},[1232,3559,3312],{},[1232,3561,3206],{},[1232,3563,3564],{},"next_run_at",[1232,3566,3567],{},"last_status",[1232,3569,3570],{},"consecutive_failures",[1232,3572,3573],{},"paused_reason",[1232,3575,3576],{},"locked_by_admin",[1232,3578,3579],{},"mine",[1232,3581,3315],{}," appears only on the person's own schedules.",[1203,3584,3585,3587,3588,2835,3591,3594,3595,3597],{},[1232,3586,3362],{}," lists only runs, so it adds ",[1232,3589,3590],{},"last_skip",[1232,3592,3593],{},"{at, code, reason}"," for the latest skip, or ",[1232,3596,2794],{},". Only the latest skip is kept.",[1203,3599,3600,3601,3604,3605,3608,3609,3611,3612,1215],{},"A person who holds ",[1232,3602,3603],{},"schedules:manage"," in the workspace can also pause, resume, edit the timing of, archive, reassign or delete other people's schedules with ",[1232,3606,3607],{},"schedule.app.admin.*",". An admin pause locks the schedule, so its creator cannot resume it until an admin unlocks it. ",[1232,3610,1279],{}," does not grant ",[1232,3613,3603],{},[1217,3615,3617],{"id":3616},"refusal-codes","Refusal codes",[1203,3619,3620,3621,3624,3625,3628,3629,3632,3633,3636,3637,3639,3640,1732,3642,3644,3645,3647],{},"A refused verb fails its run. ",[1232,3622,3623],{},"failure_reason"," starts with the code, for example ",[1232,3626,3627],{},"VERSION_CONFLICT: the composition changed: ...",". On the verb's own run, ",[1232,3630,3631],{},"failure_details"," holds ",[1232,3634,3635],{},"{code, ...}"," with what the refusal names. When you call the verb through an entry point, ",[1232,3638,3631],{}," may be missing from the entry point's run, so read the code from the start of ",[1232,3641,3623],{},[1232,3643,2174],{}," is the exception: once a request is recorded, it returns the code in ",[1232,3646,2771],{}," instead of failing.",[1341,3649,3650,3662],{},[1344,3651,3652],{},[1347,3653,3654,3657,3659],{},[1350,3655,3656],{},"Code",[1350,3658,1355],{},[1350,3660,3661],{},"What your app should do",[1357,3663,3664,3678,3694,3708,3723,3735,3755,3770,3785,3797,3809,3821,3840,3856,3872,3884,3896,3907],{},[1347,3665,3666,3670,3673],{},[1362,3667,3668],{},[1232,3669,1283],{},[1362,3671,3672],{},"The organization is not on the allowlist, or the app has not enabled authoring",[1362,3674,3675,3676,1215],{},"Hide the authoring screens. Ask an admin to run ",[1232,3677,1279],{},[1347,3679,3680,3685,3688],{},[1362,3681,3682],{},[1232,3683,3684],{},"WORKSPACE_REQUIRED",[1362,3686,3687],{},"The session has no active workspace",[1362,3689,3690,3691,3693],{},"Let the person pick a workspace (",[1232,3692,2275],{},")",[1347,3695,3696,3700,3705],{},[1362,3697,3698],{},[1232,3699,3236],{},[1362,3701,3702,3703,2371],{},"The active workspace is not an active workspace of this app. At start, a session bound to another workspace (see ",[1232,3704,2643],{},[1362,3706,3707],{},"Switch workspace, or refresh the session for the active one",[1347,3709,3710,3714,3720],{},[1362,3711,3712],{},[1232,3713,3225],{},[1362,3715,3716,3717,3719],{},"The person lacks the capability named in ",[1232,3718,2822],{}," in this workspace",[1362,3721,3722],{},"Show the screen read-only. A workspace admin can publish for them.",[1347,3724,3725,3729,3732],{},[1362,3726,3727],{},[1232,3728,1234],{},[1362,3730,3731],{},"No such composition or publish in this workspace, or one the person may not see",[1362,3733,3734],{},"Refresh the list",[1347,3736,3737,3741,3747],{},[1362,3738,3739],{},[1232,3740,2435],{},[1362,3742,3743,3744,3746],{},"Someone saved a newer version; ",[1232,3745,2438],{}," names it",[1362,3748,3749,3750,3752,3753],{},"Reload with ",[1232,3751,2057],{},", let the person review, then retry with the new ",[1232,3754,2161],{},[1347,3756,3757,3761,3764],{},[1362,3758,3759],{},[1232,3760,2789],{},[1362,3762,3763],{},"A publish with this key is still running",[1362,3765,3766,3767,3769],{},"Poll ",[1232,3768,2232],{}," with the same key",[1347,3771,3772,3776,3782],{},[1362,3773,3774],{},[1232,3775,2906],{},[1362,3777,3778,3779,3781],{},"The definition does not validate; on publish it was kept as a draft. ",[1232,3780,2479],{}," lists why.",[1362,3783,3784],{},"Show the errors and let the person fix them",[1347,3786,3787,3791,3794],{},[1362,3788,3789],{},[1232,3790,1517],{},[1362,3792,3793],{},"A step is not in the app's catalog or not end-user eligible",[1362,3795,3796],{},"Remove the step. An admin can add an eligible type to the catalog.",[1347,3798,3799,3803,3806],{},[1362,3800,3801],{},[1232,3802,2585],{},[1362,3804,3805],{},"A step sets or takes a platform-controlled field",[1362,3807,3808],{},"Remove that mapping",[1347,3810,3811,3815,3818],{},[1362,3812,3813],{},[1232,3814,2591],{},[1362,3816,3817],{},"A nested composition is not pinned to one version, not in this workspace, or not exposed to it",[1362,3819,3820],{},"Publish the nested composition first, then retry",[1347,3822,3823,3827,3837],{},[1362,3824,3825],{},[1232,3826,2605],{},[1362,3828,2374,3829,3831,3832,1316,3834,3836],{},[1212,3830,2042],{"href":1599}," is reached; ",[1232,3833,2042],{},[1232,3835,2819],{}," name it",[1362,3838,3839],{},"Tell the person. Archive old work, or raise the limit.",[1347,3841,3842,3847,3853],{},[1362,3843,3844],{},[1232,3845,3846],{},"INVALID_NAME",[1362,3848,3849,3850,3852],{},"The slug, ",[1232,3851,2071],{}," or title is malformed, or a new composition has no title",[1362,3854,3855],{},"Ask for a valid name",[1347,3857,3858,3863,3869],{},[1362,3859,3860],{},[1232,3861,3862],{},"RESERVED_NAME",[1362,3864,3435,3865,3868],{},[1232,3866,3867],{},"ws-"," name prefix is reserved for workspace compositions",[1362,3870,3871],{},"Use another name",[1347,3873,3874,3878,3881],{},[1362,3875,3876],{},[1232,3877,2722],{},[1362,3879,3880],{},"The key was used for another publish",[1362,3882,3883],{},"Publish with a new key",[1347,3885,3886,3890,3893],{},[1362,3887,3888],{},[1232,3889,2783],{},[1362,3891,3892],{},"A publish never finished",[1362,3894,3895],{},"Publish again with a new key",[1347,3897,3898,3902,3905],{},[1362,3899,3900],{},[1232,3901,2780],{},[1362,3903,3904],{},"The publish failed for a reason that is not a refusal. If exposing failed, the version was kept as a draft.",[1362,3906,3895],{},[1347,3908,3909,3913,3918],{},[1362,3910,3911],{},[1232,3912,1793],{},[1362,3914,3915,3917],{},[1232,3916,1279],{}," could not publish an entry point",[1362,3919,3920],{},"Run it again",[1217,3922,864],{"id":1593},[1341,3924,3925,3935],{},[1344,3926,3927],{},[1347,3928,3929,3932],{},[1350,3930,3931],{},"Limit",[1350,3933,3934],{},"Default",[1357,3936,3937,3947,3958,3968,3979],{},[1347,3938,3939,3944],{},[1362,3940,3941,3943],{},[1232,3942,1685],{},": published compositions in one workspace",[1362,3945,3946],{},"25",[1347,3948,3949,3955],{},[1362,3950,3951,3954],{},[1232,3952,3953],{},"versions_per_lineage",": versions of one composition",[1362,3956,3957],{},"200",[1347,3959,3960,3965],{},[1362,3961,3962,3964],{},[1232,3963,2602],{},": steps in one composition",[1362,3966,3967],{},"40",[1347,3969,3970,3976],{},[1362,3971,3972,3975],{},[1232,3973,3974],{},"publishes_per_person_per_day",": successful publishes per person in 24 hours",[1362,3977,3978],{},"50",[1347,3980,3981,3987],{},[1362,3982,3983,3986],{},[1232,3984,3985],{},"drafts_per_person",": drafts one person keeps in a workspace",[1362,3988,3989],{},"100",[1203,3991,3992,3993,3995,3996,3998,3999,4001,4002,1215],{},"Change them with ",[1232,3994,1593],{}," on ",[1232,3997,1279],{},". A limit that is reached refuses with ",[1232,4000,2605],{},". Schedules have their own ",[1212,4003,1593],{"href":2352},[1217,4005,4007],{"id":4006},"the-ready-made-editor","The ready-made editor",[1203,4009,4010,4018,4019,4022],{},[1212,4011,4015],{"href":4012,"rel":4013},"https://github.com/orkestia/orkestia-composer",[4014],"nofollow",[1232,4016,4017],{},"@orkestia/composer"," is an open-source (MIT) React editor for compositions: the list, each composition as steps or a diagram, checks, runs and schedules. Its ",[1232,4020,4021],{},"appBackend"," uses the entry points above.",[1203,4024,4025],{},"It is not on npm. Install the release tarball from GitHub, and pin the version you tested:",[1399,4027,4031],{"className":4028,"code":4029,"language":4030,"meta":1404,"style":1404},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add https://github.com/orkestia/orkestia-composer/releases/download/v0.1.2/orkestia-composer-0.1.2.tgz\n","bash",[1232,4032,4033],{"__ignoreMap":1404},[1408,4034,4035,4038,4041],{"class":1410,"line":1411},[1408,4036,4037],{"class":1684},"pnpm",[1408,4039,4040],{"class":1436}," add",[1408,4042,4043],{"class":1436}," https://github.com/orkestia/orkestia-composer/releases/download/v0.1.2/orkestia-composer-0.1.2.tgz\n",[1203,4045,4046,1316,4049,4052],{},[1232,4047,4048],{},"react",[1232,4050,4051],{},"react-dom"," 19.2 or later are peer dependencies.",[1399,4054,4058],{"className":4055,"code":4056,"language":4057,"meta":1404,"style":1404},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { appBackend, CompositionEditor } from '@orkestia/composer'\nimport '@xyflow/react/dist/style.css'\nimport '@orkestia/composer/style.css'\n\n// endUserClient runs workflows with the end user's token.\nconst backend = appBackend(endUserClient)\n\nexport function Automations() {\n  return \u003CCompositionEditor backend={backend} host={{ scopeKey: `${appId}:${workspaceId}` }} />\n}\n","tsx",[1232,4059,4060,4089,4100,4111,4117,4122,4137,4142,4159,4217],{"__ignoreMap":1404},[1408,4061,4062,4065,4067,4070,4072,4075,4078,4081,4084,4086],{"class":1410,"line":1411},[1408,4063,4064],{"class":3157},"import",[1408,4066,1679],{"class":1414},[1408,4068,4069],{"class":3150}," appBackend",[1408,4071,1466],{"class":1414},[1408,4073,4074],{"class":3150}," CompositionEditor",[1408,4076,4077],{"class":1414}," }",[1408,4079,4080],{"class":3157}," from",[1408,4082,4083],{"class":1414}," '",[1408,4085,4017],{"class":1436},[1408,4087,4088],{"class":1414},"'\n",[1408,4090,4091,4093,4095,4098],{"class":1410,"line":1418},[1408,4092,4064],{"class":3157},[1408,4094,4083],{"class":1414},[1408,4096,4097],{"class":1436},"@xyflow/react/dist/style.css",[1408,4099,4088],{"class":1414},[1408,4101,4102,4104,4106,4109],{"class":1410,"line":1445},[1408,4103,4064],{"class":3157},[1408,4105,4083],{"class":1414},[1408,4107,4108],{"class":1436},"@orkestia/composer/style.css",[1408,4110,4088],{"class":1414},[1408,4112,4113],{"class":1410,"line":1479},[1408,4114,4116],{"emptyLinePlaceholder":4115},true,"\n",[1408,4118,4119],{"class":1410,"line":1497},[1408,4120,4121],{"class":3186},"// endUserClient runs workflows with the end user's token.\n",[1408,4123,4125,4127,4130,4132,4134],{"class":1410,"line":4124},6,[1408,4126,3147],{"class":1424},[1408,4128,4129],{"class":3150}," backend ",[1408,4131,3154],{"class":1414},[1408,4133,4069],{"class":3166},[1408,4135,4136],{"class":3150},"(endUserClient)\n",[1408,4138,4140],{"class":1410,"line":4139},7,[1408,4141,4116],{"emptyLinePlaceholder":4115},[1408,4143,4145,4148,4151,4154,4157],{"class":1410,"line":4144},8,[1408,4146,4147],{"class":3157},"export",[1408,4149,4150],{"class":1424}," function",[1408,4152,4153],{"class":3166}," Automations",[1408,4155,4156],{"class":1414},"()",[1408,4158,3181],{"class":1414},[1408,4160,4162,4165,4168,4171,4174,4177,4180,4183,4186,4189,4193,4195,4198,4201,4203,4205,4208,4211,4214],{"class":1410,"line":4161},9,[1408,4163,4164],{"class":3157},"  return",[1408,4166,4167],{"class":1414}," \u003C",[1408,4169,4170],{"class":1684},"CompositionEditor",[1408,4172,4173],{"class":1424}," backend",[1408,4175,4176],{"class":1414},"={",[1408,4178,4179],{"class":3150},"backend",[1408,4181,4182],{"class":1414},"} ",[1408,4184,4185],{"class":1424},"host",[1408,4187,4188],{"class":1414},"={{",[1408,4190,4192],{"class":4191},"swJcz"," scopeKey",[1408,4194,1430],{"class":1414},[1408,4196,4197],{"class":1414}," `${",[1408,4199,4200],{"class":3150},"appId",[1408,4202,3192],{"class":1414},[1408,4204,1430],{"class":1436},[1408,4206,4207],{"class":1414},"${",[1408,4209,4210],{"class":3150},"workspaceId",[1408,4212,4213],{"class":1414},"}`",[1408,4215,4216],{"class":1414}," }} />\n",[1408,4218,4220],{"class":1410,"line":4219},10,[1408,4221,1500],{"class":1414},[1203,4223,4224,4226,4227,4229,4230,4233,4234,4237,4238,4241,4242,4244,4245,4247,4248,4253],{},[1232,4225,4021],{}," finds the ",[1232,4228,1731],{}," entry points among your organization's compositions. If more than one app in your organization has authoring on, pass ",[1232,4231,4232],{},"appBackend(endUserClient, { app12 })",", where ",[1232,4235,4236],{},"app12"," is the first 12 hex characters of your identity app's UUID, or pass ",[1232,4239,4240],{},"entryPoints"," with the ",[1232,4243,1781],{}," values ",[1232,4246,1279],{}," returned. The step picker offers only your app's authorable steps, and the editor offers only what the person's capabilities in the workspace allow. See the ",[1212,4249,4252],{"href":4250,"rel":4251},"https://github.com/orkestia/orkestia-composer#readme",[4014],"repository README"," for the client interface, theming, languages and schedules.",[1217,4255,4257],{"id":4256},"not-in-this-phase","Not in this phase",[1222,4259,4260,4263,4269,4272],{},[1225,4261,4262],{},"Event triggers: an end user's composition starts by hand or on a schedule, not on an event.",[1225,4264,4265,4266,4268],{},"Step-by-step run logs for end users. ",[1232,4267,3362],{}," gives status and timing only.",[1225,4270,4271],{},"A calendar source by date range.",[1225,4273,4274],{},"Checks at publish time that a referenced vault credential is usable.",[1217,4276,4278],{"id":4277},"turn-it-off","Turn it off",[1203,4280,4281,4284,4285,4287,4288,4290],{},[1232,4282,4283],{},"identity.app.disable-authoring"," turns authoring off for the app. The ",[1232,4286,1992],{}," verbs then refuse with ",[1232,4289,1283],{},". It works even if your organization has left the allowlist, so you can always roll back.",[1341,4292,4293,4301],{},[1344,4294,4295],{},[1347,4296,4297,4299],{},[1350,4298,1352],{},[1350,4300,1355],{},[1357,4302,4303],{},[1347,4304,4305,4309],{},[1362,4306,4307],{},[1232,4308,3023],{},[1362,4310,4311,4312,4315,4316,4318],{},"Default ",[1232,4313,4314],{},"false",". With ",[1232,4317,2871],{},", also remove every workspace exposure. Those compositions can no longer be started, and schedules that fire them stop at their next firing.",[1399,4320,4322],{"className":1401,"code":4321,"language":1403,"meta":1404,"style":1404},"{ \"identity_app_uuid\": \"\u003Cidentity_app_uuid>\", \"unexpose\": true }\n",[1232,4323,4324],{"__ignoreMap":1404},[1408,4325,4326,4329,4331,4333,4335,4337,4339,4341,4343,4345,4347,4349,4351,4353,4356],{"class":1410,"line":1411},[1408,4327,4328],{"class":1414},"{",[1408,4330,1433],{"class":1414},[1408,4332,1311],{"class":1424},[1408,4334,1427],{"class":1414},[1408,4336,1430],{"class":1414},[1408,4338,1433],{"class":1414},[1408,4340,1437],{"class":1436},[1408,4342,1427],{"class":1414},[1408,4344,1466],{"class":1414},[1408,4346,1433],{"class":1414},[1408,4348,3023],{"class":1424},[1408,4350,1427],{"class":1414},[1408,4352,1430],{"class":1414},[1408,4354,4355],{"class":1414}," true",[1408,4357,1696],{"class":1414},[1203,4359,1539,4360,1754,4362,1758,4364,1373,4366,1316,4368,1754,4370,4373],{},[1232,4361,1745],{},[1232,4363,4314],{},[1232,4365,1552],{},[1232,4367,3023],{},[1232,4369,3017],{},[1232,4371,4372],{},"[{composition_uuid, version, app_organization_uuid}]","). It is safe to run again.",[1203,4375,4376,4377,4379,4380,4382,4383,4386],{},"Nothing is deleted. Compositions, the catalog, the limits, the capability grants and the app-wide entry points stay. Running ",[1232,4378,1279],{}," again turns authoring back on as it was. Workspace exposures removed with ",[1232,4381,3023],{}," do not come back: those compositions show ",[1232,4384,4385],{},"availability: \"unexposed\""," until someone publishes them again.",[4388,4389,4390],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":1404,"searchDepth":1411,"depth":1418,"links":4392},[4393,4394,4395,4400,4401,4409,4410,4413,4414,4415,4416,4417],{"id":1219,"depth":1418,"text":1220},{"id":1263,"depth":1418,"text":1264},{"id":1304,"depth":1418,"text":1305,"children":4396},[4397,4398,4399],{"id":1328,"depth":1445,"text":1329},{"id":1555,"depth":1445,"text":1556},{"id":1805,"depth":1445,"text":1806},{"id":1819,"depth":1418,"text":1820},{"id":1983,"depth":1418,"text":1740,"children":4402},[4403,4404,4405,4406,4407,4408],{"id":2387,"depth":1445,"text":2388},{"id":2447,"depth":1445,"text":2448},{"id":2658,"depth":1445,"text":2659},{"id":2174,"depth":1445,"text":2698},{"id":2029,"depth":1445,"text":2926},{"id":2206,"depth":1445,"text":3094},{"id":3117,"depth":1418,"text":3118},{"id":3256,"depth":1418,"text":2353,"children":4411},[4412],{"id":3448,"depth":1445,"text":3449},{"id":3616,"depth":1418,"text":3617},{"id":1593,"depth":1418,"text":864},{"id":4006,"depth":1418,"text":4007},{"id":4256,"depth":1418,"text":4257},{"id":4277,"depth":1418,"text":4278},"Let the end users of your app build, check, publish, run and schedule their own small workflows (compositions) inside their workspace.","md",null,{},{"icon":1044},{"title":1041,"description":4418},"kYQaPC4ZV02nOF0GIHWvFc_nH7TrmOkb3wQ-3t6_QUE",[4426,4428],{"title":1037,"path":1038,"stem":1039,"description":4427,"icon":162,"children":-1},"A workspace is a tenant inside your app — a farm, a company, an office — that members join with a role, so data can belong to a group instead of one person.",{"title":1046,"path":1047,"stem":1048,"description":4429,"icon":34,"children":-1},"Watch an app in production — a public readiness probe for sign-in, continuation grants for work that outlives a session, and where logs, hosting usage and troubleshooting live.",1794361944085]