[{"data":1,"prerenderedAt":665},["ShallowReactive",2],{"navigation":3,"\u002Fworkflows\u002Fdefinitions":194,"\u002Fworkflows\u002Fdefinitions-surround":660},[4,18,31,64,81,102,111,132,149],{"title":5,"path":6,"stem":7,"children":8,"page":17},"Getting started","\u002Fgetting-started","1.getting-started",[9,13],{"title":10,"path":11,"stem":12},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":14,"path":15,"stem":16},"Run your first workflow","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F2.quickstart",false,{"title":19,"path":20,"stem":21,"children":22,"page":17},"Core concepts","\u002Fconcepts","2.concepts",[23,27],{"title":24,"path":25,"stem":26},"The platform model","\u002Fconcepts\u002Fplatform","2.concepts\u002F1.platform",{"title":28,"path":29,"stem":30},"Architecture and boundaries","\u002Fconcepts\u002Farchitecture","2.concepts\u002F2.architecture",{"title":32,"path":33,"stem":34,"children":35,"page":17},"Installation","\u002Finstallation","3.installation",[36,40,44,48,52,56,60],{"title":37,"path":38,"stem":39},"Overview and requirements","\u002Finstallation\u002Foverview","3.installation\u002F1.overview",{"title":41,"path":42,"stem":43},"Local evaluation","\u002Finstallation\u002Flocal-evaluation","3.installation\u002F2.local-evaluation",{"title":45,"path":46,"stem":47},"Install the server","\u002Finstallation\u002Fserver","3.installation\u002F3.server",{"title":49,"path":50,"stem":51},"Install a runner","\u002Finstallation\u002Frunner","3.installation\u002F4.runner",{"title":53,"path":54,"stem":55},"Verify the installation","\u002Finstallation\u002Fverification","3.installation\u002F5.verification",{"title":57,"path":58,"stem":59},"Upgrade the platform","\u002Finstallation\u002Fupgrades","3.installation\u002F6.upgrades",{"title":61,"path":62,"stem":63},"Guided installer","\u002Finstallation\u002Finstaller","3.installation\u002F7.installer",{"title":65,"path":66,"stem":67,"children":68,"page":17},"Build workflows","\u002Fworkflows","4.workflows",[69,73,77],{"title":70,"path":71,"stem":72},"Build a Definition","\u002Fworkflows\u002Fdefinitions","4.workflows\u002F0.definitions",{"title":74,"path":75,"stem":76},"Deploy and run workflows","\u002Fworkflows\u002Fruns","4.workflows\u002F1.runs",{"title":78,"path":79,"stem":80},"Inputs, context, and secrets","\u002Fworkflows\u002Finputs-and-secrets","4.workflows\u002F2.inputs-and-secrets",{"title":82,"path":83,"stem":84,"children":85,"page":17},"Run and recover","\u002Foperations","5.operations",[86,90,94,98],{"title":87,"path":88,"stem":89},"Monitor Runs","\u002Foperations\u002Fmonitoring","5.operations\u002F1.monitoring",{"title":91,"path":92,"stem":93},"Approve prepared steps","\u002Foperations\u002Fapprovals","5.operations\u002F2.approvals",{"title":95,"path":96,"stem":97},"Recover or cancel execution","\u002Foperations\u002Frecovery","5.operations\u002F3.recovery",{"title":99,"path":100,"stem":101},"Troubleshooting","\u002Foperations\u002Ftroubleshooting","5.operations\u002F4.troubleshooting",{"title":103,"path":104,"stem":105,"children":106,"page":17},"Action catalog","\u002Fcatalog","6.catalog",[107],{"title":108,"path":109,"stem":110},"Find and use Actions","\u002Fcatalog\u002Foverview","6.catalog\u002F1.overview",{"title":112,"path":113,"stem":114,"children":115,"page":17},"Administration","\u002Fadministration","7.administration",[116,120,124,128],{"title":117,"path":118,"stem":119},"Registries and Environments","\u002Fadministration\u002Fenvironments","7.administration\u002F2.environments",{"title":121,"path":122,"stem":123},"Manage runners","\u002Fadministration\u002Frunners","7.administration\u002F3.runners",{"title":125,"path":126,"stem":127},"Access and approval policies","\u002Fadministration\u002Faccess","7.administration\u002F4.access",{"title":129,"path":130,"stem":131},"Backups and upgrades","\u002Fadministration\u002Fmaintenance","7.administration\u002F5.maintenance",{"title":133,"path":134,"stem":135,"children":136,"page":17},"Develop Actions","\u002Factions","8.actions",[137,141,145],{"title":138,"path":139,"stem":140},"Build your first Action","\u002Factions\u002Fquickstart","8.actions\u002F1.quickstart",{"title":142,"path":143,"stem":144},"Local development","\u002Factions\u002Flocal-development","8.actions\u002F2.local-development",{"title":146,"path":147,"stem":148},"Publish an Action","\u002Factions\u002Fpublishing","8.actions\u002F3.publishing",{"title":150,"path":151,"stem":152,"children":153,"page":17},"Reference","\u002Freference","9.reference",[154,158,162,166,170,174,178,182,186,190],{"title":155,"path":156,"stem":157},"Operator CLI","\u002Freference\u002Foperator-cli","9.reference\u002F1.operator-cli",{"title":159,"path":160,"stem":161},"Installer CLI","\u002Freference\u002Finstaller-cli","9.reference\u002F10.installer-cli",{"title":163,"path":164,"stem":165},"Definition syntax","\u002Freference\u002Fdefinition","9.reference\u002F2.definition",{"title":167,"path":168,"stem":169},"CLI configuration","\u002Freference\u002Fconfiguration","9.reference\u002F3.configuration",{"title":171,"path":172,"stem":173},"API integration","\u002Freference\u002Fapi","9.reference\u002F4.api",{"title":175,"path":176,"stem":177},"Action CLI","\u002Freference\u002Faction-cli","9.reference\u002F5.action-cli",{"title":179,"path":180,"stem":181},"Action SDK","\u002Freference\u002Fsdk","9.reference\u002F6.sdk",{"title":183,"path":184,"stem":185},"Contracts and compatibility","\u002Freference\u002Fcontracts","9.reference\u002F7.contracts",{"title":187,"path":188,"stem":189},"Server configuration","\u002Freference\u002Fserver-configuration","9.reference\u002F8.server-configuration",{"title":191,"path":192,"stem":193},"Runner configuration","\u002Freference\u002Frunner-configuration","9.reference\u002F9.runner-configuration",{"id":195,"title":70,"body":196,"description":654,"extension":655,"meta":656,"navigation":657,"path":71,"seo":658,"stem":72,"__hash__":659},"docs\u002F4.workflows\u002F0.definitions.md",{"type":197,"value":198,"toc":648},"minimark",[199,203,208,211,219,524,557,561,570,578,582,595,609,613,631,634,644],[200,201,202],"p",{},"A Definition captures an operational procedure in YAML. It contains the inputs the caller supplies and an ordered list of steps. Each step uses an existing Action; writing the Definition does not require writing Python.",[204,205,207],"h2",{"id":206},"start-with-the-operation","Start with the operation",[200,209,210],{},"Identify the intended effect, the checks needed before it, and how to verify the outcome. Choose Actions with documented contracts, external permissions, and retry behavior. Confirm they are available through the target Environment's registry before deploying.",[200,212,213,214,218],{},"The following ",[215,216,217],"strong",{},"illustrative"," service remediation Definition assumes three Actions with the contracts shown. These names are not claims of published official Actions; substitute integrations available in your installation.",[220,221,224],"code-example",{":line-numbers":222,"caption":223},"true","The restart step runs only when inspection reports that the service is unhealthy.",[225,226,239],"pre",{"className":227,"code":228,"filename":229,"highlights":230,"language":237,"meta":238,"style":238},"language-yaml shiki shiki-themes pyplines-light pyplines-light pyplines-dark","apiVersion: pyplines\u002Fv1\nkind: Definition\nname: service-health\ninputs:\n  service:\n    type: string\n    required: true\nsteps:\n  - name: inspect\n    uses: inspect-service@2026.10.1\n    with:\n      service: \"${{ inputs.service }}\"\n      endpoint: \"${{ context.service_api }}\"\n  - name: restart\n    uses: restart-service@2026.10.1\n    when: \"${{ steps.inspect.outputs.healthy == false }}\"\n    with:\n      service_id: \"${{ steps.inspect.outputs.service_id }}\"\n      token: \"${{ secrets.service_api_token }}\"\n  - name: verify\n    uses: verify-service@2026.10.1\n    with:\n      service: \"${{ inputs.service }}\"\n      endpoint: \"${{ context.service_api }}\"\n","service-health.yaml",[231,232,233,234,235,236],14,15,16,17,18,19,"yaml","",[240,241,242,259,270,281,290,298,309,321,329,343,354,362,379,394,407,417,432,439,454,469,481,491,498,511],"code",{"__ignoreMap":238},[243,244,247,251,255],"span",{"class":245,"line":246},"line",1,[243,248,250],{"class":249},"smnRP","apiVersion",[243,252,254],{"class":253},"sgMYo",":",[243,256,258],{"class":257},"sfDcV"," pyplines\u002Fv1\n",[243,260,262,265,267],{"class":245,"line":261},2,[243,263,264],{"class":249},"kind",[243,266,254],{"class":253},[243,268,269],{"class":257}," Definition\n",[243,271,273,276,278],{"class":245,"line":272},3,[243,274,275],{"class":249},"name",[243,277,254],{"class":253},[243,279,280],{"class":257}," service-health\n",[243,282,284,287],{"class":245,"line":283},4,[243,285,286],{"class":249},"inputs",[243,288,289],{"class":253},":\n",[243,291,293,296],{"class":245,"line":292},5,[243,294,295],{"class":249},"  service",[243,297,289],{"class":253},[243,299,301,304,306],{"class":245,"line":300},6,[243,302,303],{"class":249},"    type",[243,305,254],{"class":253},[243,307,308],{"class":257}," string\n",[243,310,312,315,317],{"class":245,"line":311},7,[243,313,314],{"class":249},"    required",[243,316,254],{"class":253},[243,318,320],{"class":319},"sFGQw"," true\n",[243,322,324,327],{"class":245,"line":323},8,[243,325,326],{"class":249},"steps",[243,328,289],{"class":253},[243,330,332,335,338,340],{"class":245,"line":331},9,[243,333,334],{"class":253},"  -",[243,336,337],{"class":249}," name",[243,339,254],{"class":253},[243,341,342],{"class":257}," inspect\n",[243,344,346,349,351],{"class":245,"line":345},10,[243,347,348],{"class":249},"    uses",[243,350,254],{"class":253},[243,352,353],{"class":257}," inspect-service@2026.10.1\n",[243,355,357,360],{"class":245,"line":356},11,[243,358,359],{"class":249},"    with",[243,361,289],{"class":253},[243,363,365,368,370,373,376],{"class":245,"line":364},12,[243,366,367],{"class":249},"      service",[243,369,254],{"class":253},[243,371,372],{"class":253}," \"",[243,374,375],{"class":257},"${{ inputs.service }}",[243,377,378],{"class":253},"\"\n",[243,380,382,385,387,389,392],{"class":245,"line":381},13,[243,383,384],{"class":249},"      endpoint",[243,386,254],{"class":253},[243,388,372],{"class":253},[243,390,391],{"class":257},"${{ context.service_api }}",[243,393,378],{"class":253},[243,395,398,400,402,404],{"class":396,"line":231},[245,397],"highlight",[243,399,334],{"class":253},[243,401,337],{"class":249},[243,403,254],{"class":253},[243,405,406],{"class":257}," restart\n",[243,408,410,412,414],{"class":409,"line":232},[245,397],[243,411,348],{"class":249},[243,413,254],{"class":253},[243,415,416],{"class":257}," restart-service@2026.10.1\n",[243,418,420,423,425,427,430],{"class":419,"line":233},[245,397],[243,421,422],{"class":249},"    when",[243,424,254],{"class":253},[243,426,372],{"class":253},[243,428,429],{"class":257},"${{ steps.inspect.outputs.healthy == false }}",[243,431,378],{"class":253},[243,433,435,437],{"class":434,"line":234},[245,397],[243,436,359],{"class":249},[243,438,289],{"class":253},[243,440,442,445,447,449,452],{"class":441,"line":235},[245,397],[243,443,444],{"class":249},"      service_id",[243,446,254],{"class":253},[243,448,372],{"class":253},[243,450,451],{"class":257},"${{ steps.inspect.outputs.service_id }}",[243,453,378],{"class":253},[243,455,457,460,462,464,467],{"class":456,"line":236},[245,397],[243,458,459],{"class":249},"      token",[243,461,254],{"class":253},[243,463,372],{"class":253},[243,465,466],{"class":257},"${{ secrets.service_api_token }}",[243,468,378],{"class":253},[243,470,472,474,476,478],{"class":245,"line":471},20,[243,473,334],{"class":253},[243,475,337],{"class":249},[243,477,254],{"class":253},[243,479,480],{"class":257}," verify\n",[243,482,484,486,488],{"class":245,"line":483},21,[243,485,348],{"class":249},[243,487,254],{"class":253},[243,489,490],{"class":257}," verify-service@2026.10.1\n",[243,492,494,496],{"class":245,"line":493},22,[243,495,359],{"class":249},[243,497,289],{"class":253},[243,499,501,503,505,507,509],{"class":245,"line":500},23,[243,502,367],{"class":249},[243,504,254],{"class":253},[243,506,372],{"class":253},[243,508,375],{"class":257},[243,510,378],{"class":253},[243,512,514,516,518,520,522],{"class":245,"line":513},24,[243,515,384],{"class":249},[243,517,254],{"class":253},[243,519,372],{"class":253},[243,521,391],{"class":257},[243,523,378],{"class":253},[200,525,526,527,530,531,534,535,538,539,542,543,545,546,538,549,552,553,556],{},"Here ",[240,528,529],{},"inspect-service"," must return a boolean ",[240,532,533],{},"healthy"," and a string ",[240,536,537],{},"service_id",". ",[240,540,541],{},"restart-service"," must accept ",[240,544,537],{}," and ",[240,547,548],{},"token",[240,550,551],{},"verify-service"," must fail if health does not meet the desired condition: merely returning ",[240,554,555],{},"healthy: false"," is not enough to block a Run automatically.",[204,558,560],{"id":559},"connect-inputs-and-outputs","Connect inputs and outputs",[200,562,563,566,567,569],{},[240,564,565],{},"with"," maps values to the selected Action's input fields. A whole expression such as ",[240,568,375],{}," preserves the referenced JSON type. A step can reference only earlier steps.",[200,571,572,573,577],{},"Keep configuration outside the Definition when it changes by deployment location. Use public Environment context for endpoints and Environment secrets for credentials. See ",[574,575,576],"a",{"href":79},"inputs, context, and secrets",".",[204,579,581],{"id":580},"control-whether-a-step-runs","Control whether a step runs",[200,583,584,587,588,591,592,577],{},[240,585,586],{},"when"," must evaluate to a boolean. A false condition skips the step before its inputs are resolved. A skipped step has status ",[240,589,590],{},"skipped"," and no outputs. Referencing those missing outputs blocks the receiving step; they do not become ",[240,593,594],{},"null",[200,596,597,598,601,602,605,606,608],{},"In the example, ",[240,599,600],{},"verify"," uses the original service input, so it can execute whether ",[240,603,604],{},"restart"," succeeded or was skipped. If ",[240,607,604],{}," fails, the Run blocks before verification until an authorized recovery decision is made.",[204,610,612],{"id":611},"validate-and-deploy","Validate and deploy",[225,614,619],{"className":615,"code":616,"filename":617,"language":618,"meta":238,"style":238},"language-sh shiki shiki-themes pyplines-light pyplines-light pyplines-dark","pyplines validate .\u002Fservice-health.yaml\npyplines deploy .\u002Fservice-health.yaml --environment development\n","Terminal","sh",[240,620,621,626],{"__ignoreMap":238},[243,622,623],{"class":245,"line":246},[243,624,625],{},"pyplines validate .\u002Fservice-health.yaml\n",[243,627,628],{"class":245,"line":261},[243,629,630],{},"pyplines deploy .\u002Fservice-health.yaml --environment development\n",[200,632,633],{},"Local validation checks structure. Deployment validates expressions and available Action contracts, then pins image digests. Preparation validates values only known at execution time. Passing local validation alone does not establish that a workflow is deployable or that external credentials work.",[200,635,636,637,640,641,577],{},"Approvals and access rules are configured separately from the Definition. Continue with ",[574,638,639],{"href":75},"deployments and revisions"," and the ",[574,642,643],{"href":164},"Definition reference",[645,646,647],"style",{},"html pre.shiki code .smnRP, html code.shiki .smnRP{--shiki-light:#243247;--shiki-default:#243247;--shiki-dark:#DCE6F0}html pre.shiki code .sgMYo, html code.shiki .sgMYo{--shiki-light:#54657A;--shiki-default:#54657A;--shiki-dark:#A9B8CA}html pre.shiki code .sfDcV, html code.shiki .sfDcV{--shiki-light:#34694B;--shiki-default:#34694B;--shiki-dark:#9BC9AD}html pre.shiki code .sFGQw, html code.shiki .sFGQw{--shiki-light:#765093;--shiki-default:#765093;--shiki-dark:#CFB1E8}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);}",{"title":238,"searchDepth":261,"depth":261,"links":649},[650,651,652,653],{"id":206,"depth":261,"text":207},{"id":559,"depth":261,"text":560},{"id":580,"depth":261,"text":581},{"id":611,"depth":261,"text":612},"Compose existing Actions into a portable operational workflow.","md",{},true,{"title":70,"description":654},"o5-2Rh_2aKbzpUT4aOUeDRF26qKp8RC0GWBYdBmN-NU",[661,663],{"title":61,"path":62,"stem":63,"description":662,"children":-1},"Configure and install Pyplines services and development tools from one YAML document.",{"title":74,"path":75,"stem":76,"description":664,"children":-1},"Manage installed Definitions, revisions, and Run inputs.",1792213696160]