[{"data":1,"prerenderedAt":1636},["ShallowReactive",2],{"navigation":3,"\u002Fautomate\u002Fguides\u002Frun-a-workflow":750,"\u002Fautomate\u002Fguides\u002Frun-a-workflow-surround":1631},[4,80,134,364,428,530,567,646],{"title":5,"path":6,"stem":7,"children":8,"page":42},"Get Started","\u002Fget-started","01.get-started",[9,13,17,43,47],{"title":10,"path":11,"stem":12},"Welcome to UniteLabs","\u002Fget-started\u002Fwelcome","01.get-started\u002F00.welcome",{"title":14,"path":15,"stem":16},"How it works","\u002Fget-started\u002Fhow-it-works","01.get-started\u002F01.how-it-works",{"title":18,"path":19,"stem":20,"children":21,"page":42},"Use Cases","\u002Fget-started\u002Fuse-cases","01.get-started\u002F02.use-cases",[22,26,30,34,38],{"title":23,"path":24,"stem":25},"Instrument Control","\u002Fget-started\u002Fuse-cases\u002Flow-level-instrument-control","01.get-started\u002F02.use-cases\u002F10.low-level-instrument-control",{"title":27,"path":28,"stem":29},"Multi-device Control","\u002Fget-started\u002Fuse-cases\u002Fmulti-device-control","01.get-started\u002F02.use-cases\u002F20.multi-device-control",{"title":31,"path":32,"stem":33},"Workflow Orchestration","\u002Fget-started\u002Fuse-cases\u002Fworkflow-orchestration","01.get-started\u002F02.use-cases\u002F30.workflow-orchestration",{"title":35,"path":36,"stem":37},"Custom Apps and LIMS Integration","\u002Fget-started\u002Fuse-cases\u002Fcustom-apps-lims","01.get-started\u002F02.use-cases\u002F40.custom-apps-lims",{"title":39,"path":40,"stem":41},"Scale and Fleet Management","\u002Fget-started\u002Fuse-cases\u002Fscale-and-fleet","01.get-started\u002F02.use-cases\u002F50.scale-and-fleet",false,{"title":44,"path":45,"stem":46},"Lab as Code","\u002Fget-started\u002Fwhy-code","01.get-started\u002F03.why-code",{"title":48,"path":49,"stem":50,"children":51,"page":42},"Setup","\u002Fget-started\u002Fsetup","01.get-started\u002F20.setup",[52,56,60,64,68,72,76],{"title":53,"path":54,"stem":55},"GroundControl","\u002Fget-started\u002Fsetup\u002Fgroundcontrol","01.get-started\u002F20.setup\u002F10.groundcontrol",{"title":57,"path":58,"stem":59},"Network requirements","\u002Fget-started\u002Fsetup\u002Fnetwork-requirements","01.get-started\u002F20.setup\u002F20.network-requirements",{"title":61,"path":62,"stem":63},"Multi-device Networking","\u002Fget-started\u002Fsetup\u002Fmultiple-devices","01.get-started\u002F20.setup\u002F30.multiple-devices",{"title":65,"path":66,"stem":67},"Connect to Platform","\u002Fget-started\u002Fsetup\u002Fconnect-to-platform","01.get-started\u002F20.setup\u002F40.connect-to-platform",{"title":69,"path":70,"stem":71},"Headless install","\u002Fget-started\u002Fsetup\u002Fheadless-install","01.get-started\u002F20.setup\u002F50.headless-install",{"title":73,"path":74,"stem":75},"Raspberry Pi","\u002Fget-started\u002Fsetup\u002Fraspberry-pi","01.get-started\u002F20.setup\u002F55.raspberry-pi",{"title":77,"path":78,"stem":79},"Installation","\u002Fget-started\u002Fsetup\u002Fsdk-installation","01.get-started\u002F20.setup\u002F60.sdk-installation",{"title":81,"path":82,"stem":83,"children":84,"page":42},"Integrate","\u002Fintegrate","02.integrate",[85,89,93,118],{"title":86,"path":87,"stem":88},"What is a connector?","\u002Fintegrate\u002Fwhat-is-a-connector","02.integrate\u002F00.what-is-a-connector",{"title":90,"path":91,"stem":92},"Calling a Connector","\u002Fintegrate\u002Fcontrol-with-code","02.integrate\u002F05.control-with-code",{"title":94,"path":95,"stem":96,"children":97,"page":42},"Concepts","\u002Fintegrate\u002Fconcepts","02.integrate\u002F10.concepts",[98,102,106,110,114],{"title":99,"path":100,"stem":101},"Connector","\u002Fintegrate\u002Fconcepts\u002Fconnector","02.integrate\u002F10.concepts\u002F10.connector",{"title":103,"path":104,"stem":105},"Module","\u002Fintegrate\u002Fconcepts\u002Fmodule","02.integrate\u002F10.concepts\u002F20.module",{"title":107,"path":108,"stem":109},"Action","\u002Fintegrate\u002Fconcepts\u002Faction","02.integrate\u002F10.concepts\u002F30.action",{"title":111,"path":112,"stem":113},"Subscription","\u002Fintegrate\u002Fconcepts\u002Fsubscription","02.integrate\u002F10.concepts\u002F40.subscription",{"title":115,"path":116,"stem":117},"Device","\u002Fintegrate\u002Fconcepts\u002Fdevice","02.integrate\u002F10.concepts\u002F50.device",{"title":119,"path":120,"stem":121,"children":122,"page":42},"Use a connector","\u002Fintegrate\u002Fuse-a-connector","02.integrate\u002F30.use-a-connector",[123,126,130],{"title":53,"path":124,"stem":125},"\u002Fintegrate\u002Fuse-a-connector\u002Fgroundcontrol","02.integrate\u002F30.use-a-connector\u002F10.groundcontrol",{"title":127,"path":128,"stem":129},"Platform","\u002Fintegrate\u002Fuse-a-connector\u002Fplatform","02.integrate\u002F30.use-a-connector\u002F20.platform",{"title":131,"path":132,"stem":133},"UniteLabs SDK & REST API","\u002Fintegrate\u002Fuse-a-connector\u002Fpython","02.integrate\u002F30.use-a-connector\u002F30.python",{"title":135,"path":136,"stem":137,"children":138,"page":42},"Operate","\u002Foperate","03.operate",[139,142,146,186,259],{"title":135,"path":140,"stem":141},"\u002Foperate\u002Foverview","03.operate\u002F00.overview",{"title":143,"path":144,"stem":145},"Your First Protocol","\u002Foperate\u002Fyour-first-protocol","03.operate\u002F05.your-first-protocol",{"title":94,"path":147,"stem":148,"children":149,"page":42},"\u002Foperate\u002Fconcepts","03.operate\u002F10.concepts",[150,154,158,162,166,170,174,178,182],{"title":151,"path":152,"stem":153},"Liquid Handling","\u002Foperate\u002Fconcepts\u002Fliquid-handling","03.operate\u002F10.concepts\u002F10.liquid-handling",{"title":155,"path":156,"stem":157},"Modules","\u002Foperate\u002Fconcepts\u002Fmodules","03.operate\u002F10.concepts\u002F20.modules",{"title":159,"path":160,"stem":161},"Deck","\u002Foperate\u002Fconcepts\u002Fdeck","03.operate\u002F10.concepts\u002F30.deck",{"title":163,"path":164,"stem":165},"Labware","\u002Foperate\u002Fconcepts\u002Flabware","03.operate\u002F10.concepts\u002F40.labware",{"title":167,"path":168,"stem":169},"Liquids","\u002Foperate\u002Fconcepts\u002Fliquids","03.operate\u002F10.concepts\u002F50.liquids",{"title":171,"path":172,"stem":173},"Liquid Classes","\u002Foperate\u002Fconcepts\u002Fliquid-classes","03.operate\u002F10.concepts\u002F60.liquid-classes",{"title":175,"path":176,"stem":177},"Tips and Tip Tracking","\u002Foperate\u002Fconcepts\u002Ftips","03.operate\u002F10.concepts\u002F70.tips",{"title":179,"path":180,"stem":181},"Simulation","\u002Foperate\u002Fconcepts\u002Fsimulation","03.operate\u002F10.concepts\u002F80.simulation",{"title":183,"path":184,"stem":185},"Error Handling","\u002Foperate\u002Fconcepts\u002Ferror-handling","03.operate\u002F10.concepts\u002F90.error-handling",{"title":187,"path":188,"stem":189,"children":190,"page":42},"Guides","\u002Foperate\u002Fguides","03.operate\u002F20.guides",[191,220,232,256],{"title":163,"path":192,"stem":193,"children":194},"\u002Foperate\u002Fguides\u002Flabware","03.operate\u002F20.guides\u002F10.labware\u002Findex",[195,196,200,204,208,212,216],{"title":163,"path":192,"stem":193},{"title":197,"path":198,"stem":199},"Standard Labware","\u002Foperate\u002Fguides\u002Flabware\u002Fstandard-labware","03.operate\u002F20.guides\u002F10.labware\u002F05.standard-labware",{"title":201,"path":202,"stem":203},"Plates","\u002Foperate\u002Fguides\u002Flabware\u002Fplates","03.operate\u002F20.guides\u002F10.labware\u002F10.plates",{"title":205,"path":206,"stem":207},"Tips and Tip Racks","\u002Foperate\u002Fguides\u002Flabware\u002Ftips-and-racks","03.operate\u002F20.guides\u002F10.labware\u002F20.tips-and-racks",{"title":209,"path":210,"stem":211},"Tubes and Tube Racks","\u002Foperate\u002Fguides\u002Flabware\u002Ftubes-and-tube-racks","03.operate\u002F20.guides\u002F10.labware\u002F30.tubes-and-tube-racks",{"title":213,"path":214,"stem":215},"Troughs","\u002Foperate\u002Fguides\u002Flabware\u002Ftroughs","03.operate\u002F20.guides\u002F10.labware\u002F35.troughs",{"title":217,"path":218,"stem":219},"Carriers and Adapters","\u002Foperate\u002Fguides\u002Flabware\u002Fcarriers-and-adapters","03.operate\u002F20.guides\u002F10.labware\u002F40.carriers-and-adapters",{"title":159,"path":221,"stem":222,"children":223,"page":42},"\u002Foperate\u002Fguides\u002Fdeck","03.operate\u002F20.guides\u002F20.deck",[224,228],{"title":225,"path":226,"stem":227},"Building a Deck","\u002Foperate\u002Fguides\u002Fdeck\u002Fbuilding-a-deck","03.operate\u002F20.guides\u002F20.deck\u002F10.building-a-deck",{"title":229,"path":230,"stem":231},"Save\u002FLoad a Deck","\u002Foperate\u002Fguides\u002Fdeck\u002Fsave-load-deck","03.operate\u002F20.guides\u002F20.deck\u002F20.save-load-deck",{"title":233,"path":234,"stem":235,"children":236,"page":42},"Pipetting","\u002Foperate\u002Fguides\u002Fpipetting","03.operate\u002F20.guides\u002F30.pipetting",[237,241,245,249,252],{"title":238,"path":239,"stem":240},"Basic Pipetting","\u002Foperate\u002Fguides\u002Fpipetting\u002Fbasic-pipetting","03.operate\u002F20.guides\u002F30.pipetting\u002F10.basic-pipetting",{"title":242,"path":243,"stem":244},"Advanced Pipetting","\u002Foperate\u002Fguides\u002Fpipetting\u002Fadvanced-pipetting","03.operate\u002F20.guides\u002F30.pipetting\u002F20.advanced-pipetting",{"title":246,"path":247,"stem":248},"Tip Handling","\u002Foperate\u002Fguides\u002Fpipetting\u002Ftip-handling","03.operate\u002F20.guides\u002F30.pipetting\u002F30.tip-handling",{"title":171,"path":250,"stem":251},"\u002Foperate\u002Fguides\u002Fpipetting\u002Fliquid-classes","03.operate\u002F20.guides\u002F30.pipetting\u002F40.liquid-classes",{"title":253,"path":254,"stem":255},"Labware Transport","\u002Foperate\u002Fguides\u002Fpipetting\u002Flabware-transport","03.operate\u002F20.guides\u002F30.pipetting\u002F50.labware-transport",{"title":179,"path":257,"stem":258},"\u002Foperate\u002Fguides\u002Fsimulation","03.operate\u002F20.guides\u002F40.simulation",{"title":260,"path":261,"stem":262,"children":263,"page":42},"Liquid Handler Guides","\u002Foperate\u002Fdevices","03.operate\u002F30.devices",[264,305,330,347],{"title":265,"path":266,"stem":267,"children":268,"page":42},"Hamilton STAR","\u002Foperate\u002Fdevices\u002Fhamilton-star","03.operate\u002F30.devices\u002F10.hamilton-star",[269,273,277,281,285,289,293,297,301],{"title":270,"path":271,"stem":272},"Positioning & Movement","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fpositioning","03.operate\u002F30.devices\u002F10.hamilton-star\u002F10.positioning",{"title":274,"path":275,"stem":276},"Gripper Module","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fcore-gripper","03.operate\u002F30.devices\u002F10.hamilton-star\u002F20.core-gripper",{"title":278,"path":279,"stem":280},"iSWAP Module","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fiswap","03.operate\u002F30.devices\u002F10.hamilton-star\u002F30.iswap",{"title":282,"path":283,"stem":284},"Using TADM","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Ftadm","03.operate\u002F30.devices\u002F10.hamilton-star\u002F40.tadm",{"title":286,"path":287,"stem":288},"Autoload Module","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fautoload","03.operate\u002F30.devices\u002F10.hamilton-star\u002F50.autoload",{"title":290,"path":291,"stem":292},"Waste Block","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fwaste-block","03.operate\u002F30.devices\u002F10.hamilton-star\u002F60.waste-block",{"title":294,"path":295,"stem":296},"Complex Mixing","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fcomplex-mixing","03.operate\u002F30.devices\u002F10.hamilton-star\u002F66.complex-mixing",{"title":298,"path":299,"stem":300},"Teaching Gripper Paddle Positions","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fgripper-positions","03.operate\u002F30.devices\u002F10.hamilton-star\u002F70.gripper-positions",{"title":302,"path":303,"stem":304},"Training a Custom Deck Position With the iSWAP","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fcustom-deck-position","03.operate\u002F30.devices\u002F10.hamilton-star\u002F75.custom-deck-position",{"title":306,"path":307,"stem":308,"children":309,"page":42},"Hamilton Vantage","\u002Foperate\u002Fdevices\u002Fhamilton-vantage","03.operate\u002F30.devices\u002F20.hamilton-vantage",[310,314,318,322,326],{"title":311,"path":312,"stem":313},"Waste Configuration","\u002Foperate\u002Fdevices\u002Fhamilton-vantage\u002Fwaste-configuration","03.operate\u002F30.devices\u002F20.hamilton-vantage\u002F05.waste-configuration",{"title":315,"path":316,"stem":317},"Covers and Lights","\u002Foperate\u002Fdevices\u002Fhamilton-vantage\u002Fcovers-and-lights","03.operate\u002F30.devices\u002F20.hamilton-vantage\u002F10.covers-and-lights",{"title":319,"path":320,"stem":321},"IDL Module","\u002Foperate\u002Fdevices\u002Fhamilton-vantage\u002Fidl","03.operate\u002F30.devices\u002F20.hamilton-vantage\u002F20.idl",{"title":323,"path":324,"stem":325},"IPG Module","\u002Foperate\u002Fdevices\u002Fhamilton-vantage\u002Fipg","03.operate\u002F30.devices\u002F20.hamilton-vantage\u002F30.ipg",{"title":327,"path":328,"stem":329},"XL Pipettes","\u002Foperate\u002Fdevices\u002Fhamilton-vantage\u002Fxl-channels","03.operate\u002F30.devices\u002F20.hamilton-vantage\u002F40.xl-channels",{"title":331,"path":332,"stem":333,"children":334,"page":42},"Agilent Bravo","\u002Foperate\u002Fdevices\u002Fagilent-bravo","03.operate\u002F30.devices\u002F30.agilent-bravo",[335,338,341,344],{"title":246,"path":336,"stem":337},"\u002Foperate\u002Fdevices\u002Fagilent-bravo\u002Ftip-handling","03.operate\u002F30.devices\u002F30.agilent-bravo\u002F10.tip-handling",{"title":238,"path":339,"stem":340},"\u002Foperate\u002Fdevices\u002Fagilent-bravo\u002Fbasic-pipetting","03.operate\u002F30.devices\u002F30.agilent-bravo\u002F20.basic-pipetting",{"title":171,"path":342,"stem":343},"\u002Foperate\u002Fdevices\u002Fagilent-bravo\u002Fliquid-classes","03.operate\u002F30.devices\u002F30.agilent-bravo\u002F25.liquid-classes",{"title":274,"path":345,"stem":346},"\u002Foperate\u002Fdevices\u002Fagilent-bravo\u002Fusing-the-gripper","03.operate\u002F30.devices\u002F30.agilent-bravo\u002F30.using-the-gripper",{"title":348,"path":349,"stem":350,"children":351,"page":42},"Tecan FluentControl","\u002Foperate\u002Fdevices\u002Ftecan-fluentcontrol","03.operate\u002F30.devices\u002F40.tecan-fluentcontrol",[352,356,360],{"title":353,"path":354,"stem":355},"Connect & Run a Method","\u002Foperate\u002Fdevices\u002Ftecan-fluentcontrol\u002Fconnect-and-run","03.operate\u002F30.devices\u002F40.tecan-fluentcontrol\u002F10.connect-and-run",{"title":357,"path":358,"stem":359},"Sending XML Commands","\u002Foperate\u002Fdevices\u002Ftecan-fluentcontrol\u002Fsending-xml-commands","03.operate\u002F30.devices\u002F40.tecan-fluentcontrol\u002F20.sending-xml-commands",{"title":361,"path":362,"stem":363},"Full Workflow Example","\u002Foperate\u002Fdevices\u002Ftecan-fluentcontrol\u002Ffull-workflow-example","03.operate\u002F30.devices\u002F40.tecan-fluentcontrol\u002F30.full-workflow-example",{"title":365,"path":366,"stem":367,"children":368,"page":42},"Device Guides","\u002Fdevice-guides","06.device-guides",[369,372,385,402,415],{"title":365,"path":370,"stem":371},"\u002Fdevice-guides\u002Foverview","06.device-guides\u002F00.overview",{"title":373,"path":374,"stem":375,"children":376,"page":42},"Incubation","\u002Fdevice-guides\u002Fincubation","06.device-guides\u002F20.incubation",[377,381],{"title":378,"path":379,"stem":380},"Inheco ODTC","\u002Fdevice-guides\u002Fincubation\u002Finheco-odtc","06.device-guides\u002F20.incubation\u002F10.inheco-odtc",{"title":382,"path":383,"stem":384},"Inheco SCILA","\u002Fdevice-guides\u002Fincubation\u002Finheco-scila","06.device-guides\u002F20.incubation\u002F20.inheco-scila",{"title":386,"path":387,"stem":388,"children":389,"page":42},"Heater-Shakers","\u002Fdevice-guides\u002Fheater-shakers","06.device-guides\u002F30.heater-shakers",[390,394,398],{"title":391,"path":392,"stem":393},"Inheco Thermoshake","\u002Fdevice-guides\u002Fheater-shakers\u002Finheco-thermoshake","06.device-guides\u002F30.heater-shakers\u002F10.inheco-thermoshake",{"title":395,"path":396,"stem":397},"QInstruments Bioshake","\u002Fdevice-guides\u002Fheater-shakers\u002Fqinstruments-bioshake","06.device-guides\u002F30.heater-shakers\u002F20.qinstruments-bioshake",{"title":399,"path":400,"stem":401},"QInstruments ColdPlate","\u002Fdevice-guides\u002Fheater-shakers\u002Fqinstruments-coldplate","06.device-guides\u002F30.heater-shakers\u002F30.qinstruments-coldplate",{"title":403,"path":404,"stem":405,"children":406,"page":42},"Readers","\u002Fdevice-guides\u002Freaders","06.device-guides\u002F40.readers",[407,411],{"title":408,"path":409,"stem":410},"Biotek Gen5","\u002Fdevice-guides\u002Freaders\u002Fbiotek-gen5","06.device-guides\u002F40.readers\u002F10.biotek-gen5",{"title":412,"path":413,"stem":414},"Biotek Synergy H1","\u002Fdevice-guides\u002Freaders\u002Fbiotek-synergy-h1","06.device-guides\u002F40.readers\u002F20.biotek-synergy-H1",{"title":416,"path":417,"stem":418,"children":419,"page":42},"Tilt & Turn","\u002Fdevice-guides\u002Ftilt-and-turn","06.device-guides\u002F50.tilt-and-turn",[420,424],{"title":421,"path":422,"stem":423},"TurnStation","\u002Fdevice-guides\u002Ftilt-and-turn\u002Fqinstruments-turnstation","06.device-guides\u002F50.tilt-and-turn\u002F10.qinstruments-turnstation",{"title":425,"path":426,"stem":427},"TiltStation","\u002Fdevice-guides\u002Ftilt-and-turn\u002Fqinstruments-tiltstation","06.device-guides\u002F50.tilt-and-turn\u002F20.qinstruments-tiltstation",{"title":429,"path":430,"stem":431,"children":432,"page":42},"Automate","\u002Fautomate","07.automate",[433,437,441,445,494],{"title":434,"path":435,"stem":436},"What is a workflow?","\u002Fautomate\u002Fwhat-is-a-workflow","07.automate\u002F00.what-is-a-workflow",{"title":438,"path":439,"stem":440},"Workflow template","\u002Fautomate\u002Fworkflow-template","07.automate\u002F05.workflow-template",{"title":442,"path":443,"stem":444},"Your First Workflow","\u002Fautomate\u002Fyour-first-workflow","07.automate\u002F08.your-first-workflow",{"title":94,"pages":446,"path":456,"stem":457,"children":458,"page":42},[447,448,449,450,451,452,453,454,455],"workflow","phase","step","runs","input","artifacts","logs","human-in-the-loop","error-handling","\u002Fautomate\u002Fconcepts","07.automate\u002F10.concepts",[459,463,467,471,475,479,483,487,491],{"title":460,"path":461,"stem":462},"Workflow","\u002Fautomate\u002Fconcepts\u002Fworkflow","07.automate\u002F10.concepts\u002F10.workflow",{"title":464,"path":465,"stem":466},"Phase","\u002Fautomate\u002Fconcepts\u002Fphase","07.automate\u002F10.concepts\u002F20.phase",{"title":468,"path":469,"stem":470},"Step","\u002Fautomate\u002Fconcepts\u002Fstep","07.automate\u002F10.concepts\u002F30.step",{"title":472,"path":473,"stem":474},"Runs","\u002Fautomate\u002Fconcepts\u002Fruns","07.automate\u002F10.concepts\u002F40.runs",{"title":476,"path":477,"stem":478},"Input","\u002Fautomate\u002Fconcepts\u002Finput","07.automate\u002F10.concepts\u002F50.input",{"title":480,"path":481,"stem":482},"Artifacts","\u002Fautomate\u002Fconcepts\u002Fartifacts","07.automate\u002F10.concepts\u002F60.artifacts",{"title":484,"path":485,"stem":486},"Logs","\u002Fautomate\u002Fconcepts\u002Flogs","07.automate\u002F10.concepts\u002F70.logs",{"title":488,"path":489,"stem":490},"Human in the Loop","\u002Fautomate\u002Fconcepts\u002Fhuman-in-the-loop","07.automate\u002F10.concepts\u002F80.human-in-the-loop",{"title":183,"path":492,"stem":493},"\u002Fautomate\u002Fconcepts\u002Ferror-handling","07.automate\u002F10.concepts\u002F90.error-handling",{"title":187,"path":495,"stem":496,"children":497,"page":42},"\u002Fautomate\u002Fguides","07.automate\u002F25.guides",[498,502,506,510,514,518,522,526],{"title":499,"path":500,"stem":501},"Deploy a workflow","\u002Fautomate\u002Fguides\u002Fdeploy-a-workflow","07.automate\u002F25.guides\u002F30.deploy-a-workflow",{"title":503,"path":504,"stem":505},"Run a workflow","\u002Fautomate\u002Fguides\u002Frun-a-workflow","07.automate\u002F25.guides\u002F35.run-a-workflow",{"title":507,"path":508,"stem":509},"CI\u002FCD for workflows","\u002Fautomate\u002Fguides\u002Fcicd-for-workflows","07.automate\u002F25.guides\u002F40.cicd-for-workflows",{"title":511,"path":512,"stem":513},"HITL basics","\u002Fautomate\u002Fguides\u002Fbasic-hitl","07.automate\u002F25.guides\u002F50.basic-hitl",{"title":515,"path":516,"stem":517},"Typed operator inputs","\u002Fautomate\u002Fguides\u002Ftyped-operator-inputs","07.automate\u002F25.guides\u002F55.typed-operator-inputs",{"title":519,"path":520,"stem":521},"Error recovery","\u002Fautomate\u002Fguides\u002Fbasic-error-handling","07.automate\u002F25.guides\u002F60.basic-error-handling",{"title":523,"path":524,"stem":525},"Advanced error handling","\u002Fautomate\u002Fguides\u002Fadvanced-error-handling","07.automate\u002F25.guides\u002F70.advanced-error-handling",{"title":527,"path":528,"stem":529},"Workflows REST API","\u002Fautomate\u002Fguides\u002Fworkflows-api","07.automate\u002F25.guides\u002F80.workflows-api",{"title":531,"path":532,"stem":533,"children":534,"page":42},"Observe","\u002Fobserve","08.observe",[535,539,555],{"title":536,"path":537,"stem":538},"Overview","\u002Fobserve\u002Foverview","08.observe\u002F10.overview",{"title":94,"path":540,"stem":541,"children":542,"page":42},"\u002Fobserve\u002Fconcepts","08.observe\u002F20.concepts",[543,547,551],{"title":544,"path":545,"stem":546},"Object Storage","\u002Fobserve\u002Fconcepts\u002Fstorage","08.observe\u002F20.concepts\u002F10.storage",{"title":548,"path":549,"stem":550},"Secrets","\u002Fobserve\u002Fconcepts\u002Fsecrets","08.observe\u002F20.concepts\u002F20.secrets",{"title":552,"path":553,"stem":554},"Data sources","\u002Fobserve\u002Fconcepts\u002Fdata-sources","08.observe\u002F20.concepts\u002F30.data-sources",{"title":187,"path":556,"stem":557,"children":558,"page":42},"\u002Fobserve\u002Fguides","08.observe\u002F30.guides",[559,563],{"title":560,"path":561,"stem":562},"File System Connector","\u002Fobserve\u002Fguides\u002Ffilesystem-connector","08.observe\u002F30.guides\u002F10.filesystem-connector",{"title":564,"path":565,"stem":566},"Building an ETL","\u002Fobserve\u002Fguides\u002Fbuilding-an-etl","08.observe\u002F30.guides\u002F20.building-an-etl",{"title":568,"path":569,"stem":570,"children":571,"page":42},"Technical Reference","\u002Ftechnical-reference","10.technical-reference",[572,576,580,592,603,614,624,635],{"title":573,"path":574,"stem":575},"Introduction","\u002Ftechnical-reference\u002Fplatform-blueprint","10.technical-reference\u002F00.platform-blueprint",{"title":577,"path":578,"stem":579},"REST API","\u002Ftechnical-reference\u002Frest-api","10.technical-reference\u002F01.rest-api",{"title":53,"path":581,"stem":582,"children":583,"page":42},"\u002Ftechnical-reference\u002Fgroundcontrol","10.technical-reference\u002F10.groundcontrol",[584,588],{"title":585,"path":586,"stem":587},"Install & Setup","\u002Ftechnical-reference\u002Fgroundcontrol\u002Finstall","10.technical-reference\u002F10.groundcontrol\u002F10.install",{"title":589,"path":590,"stem":591},"Changelog","\u002Ftechnical-reference\u002Fgroundcontrol\u002Fchangelog","10.technical-reference\u002F10.groundcontrol\u002F20.changelog",{"title":593,"path":594,"stem":595,"children":596,"page":42},"UniteLabs SDK","\u002Ftechnical-reference\u002Fpython-sdk","10.technical-reference\u002F20.python-sdk",[597,600],{"title":585,"path":598,"stem":599},"\u002Ftechnical-reference\u002Fpython-sdk\u002Finstall","10.technical-reference\u002F20.python-sdk\u002F10.install",{"title":589,"path":601,"stem":602},"\u002Ftechnical-reference\u002Fpython-sdk\u002Fchangelog","10.technical-reference\u002F20.python-sdk\u002F20.changelog",{"title":604,"path":605,"stem":606,"children":607,"page":42},"Liquid Handling SDK","\u002Ftechnical-reference\u002Fpython-liquid-handling-sdk","10.technical-reference\u002F30.python-liquid-handling-sdk",[608,611],{"title":585,"path":609,"stem":610},"\u002Ftechnical-reference\u002Fpython-liquid-handling-sdk\u002Finstall","10.technical-reference\u002F30.python-liquid-handling-sdk\u002F10.install",{"title":589,"path":612,"stem":613},"\u002Ftechnical-reference\u002Fpython-liquid-handling-sdk\u002Fchangelog","10.technical-reference\u002F30.python-liquid-handling-sdk\u002F20.changelog",{"title":163,"path":615,"stem":616,"children":617,"page":42},"\u002Ftechnical-reference\u002Flabware","10.technical-reference\u002F40.labware",[618,621],{"title":585,"path":619,"stem":620},"\u002Ftechnical-reference\u002Flabware\u002Finstall","10.technical-reference\u002F40.labware\u002F10.install",{"title":589,"path":622,"stem":623},"\u002Ftechnical-reference\u002Flabware\u002Fchangelog","10.technical-reference\u002F40.labware\u002F20.changelog",{"title":625,"path":626,"stem":627,"children":628,"page":42},"Python Omnibus","\u002Ftechnical-reference\u002Fpython-omnibus","10.technical-reference\u002F50.python-omnibus",[629,632],{"title":585,"path":630,"stem":631},"\u002Ftechnical-reference\u002Fpython-omnibus\u002Finstall","10.technical-reference\u002F50.python-omnibus\u002F10.install",{"title":589,"path":633,"stem":634},"\u002Ftechnical-reference\u002Fpython-omnibus\u002Fchangelog","10.technical-reference\u002F50.python-omnibus\u002F20.changelog",{"title":636,"path":637,"stem":638,"children":639,"page":42},"Python CDK","\u002Ftechnical-reference\u002Fpython-cdk","10.technical-reference\u002F60.python-cdk",[640,643],{"title":585,"path":641,"stem":642},"\u002Ftechnical-reference\u002Fpython-cdk\u002Finstall","10.technical-reference\u002F60.python-cdk\u002F10.install",{"title":589,"path":644,"stem":645},"\u002Ftechnical-reference\u002Fpython-cdk\u002Fchangelog","10.technical-reference\u002F60.python-cdk\u002F20.changelog",{"title":647,"path":648,"stem":649,"children":650},"Connector Development (CDK)","\u002Fconnector-development","20.connector-development",[651,653,672,705,713,744],{"title":647,"path":648,"stem":652},"20.connector-development\u002Findex",{"title":654,"path":655,"stem":656,"children":657,"page":42},"Getting Started","\u002Fconnector-development\u002Fgetting-started","20.connector-development\u002F10.getting-started",[658,661,665,668],{"title":536,"path":659,"stem":660},"\u002Fconnector-development\u002Fgetting-started\u002Foverview","20.connector-development\u002F10.getting-started\u002F10.overview",{"title":662,"path":663,"stem":664},"What's new","\u002Fconnector-development\u002Fgetting-started\u002Fwhats-new","20.connector-development\u002F10.getting-started\u002F20.whats-new",{"title":77,"path":666,"stem":667},"\u002Fconnector-development\u002Fgetting-started\u002Finstallation","20.connector-development\u002F10.getting-started\u002F30.installation",{"title":669,"path":670,"stem":671},"Contributing","\u002Fconnector-development\u002Fgetting-started\u002Fcontributing","20.connector-development\u002F10.getting-started\u002F40.contributing",{"title":673,"path":674,"stem":675,"children":676,"page":42},"Tutorial","\u002Fconnector-development\u002Ftutorial","20.connector-development\u002F20.tutorial",[677,681,685,689,693,697,701],{"title":678,"path":679,"stem":680},"Walkthrough","\u002Fconnector-development\u002Ftutorial\u002Fwalkthrough","20.connector-development\u002F20.tutorial\u002F00.walkthrough",{"title":682,"path":683,"stem":684},"SiLA Endpoints","\u002Fconnector-development\u002Ftutorial\u002Fsila-endpoints","20.connector-development\u002F20.tutorial\u002F10.sila-endpoints",{"title":686,"path":687,"stem":688},"Data Endpoints","\u002Fconnector-development\u002Ftutorial\u002Fdata-endpoints","20.connector-development\u002F20.tutorial\u002F20.data-endpoints",{"title":690,"path":691,"stem":692},"Controls","\u002Fconnector-development\u002Ftutorial\u002Fcontrols","20.connector-development\u002F20.tutorial\u002F30.controls",{"title":694,"path":695,"stem":696},"SiLA Data Types","\u002Fconnector-development\u002Ftutorial\u002Fdata-types","20.connector-development\u002F20.tutorial\u002F40.data-types",{"title":698,"path":699,"stem":700},"Feature","\u002Fconnector-development\u002Ftutorial\u002Fconnector-structure","20.connector-development\u002F20.tutorial\u002F70.connector-structure",{"title":702,"path":703,"stem":704},"Hardware Communication","\u002Fconnector-development\u002Ftutorial\u002Fhardware-communication","20.connector-development\u002F20.tutorial\u002F90.hardware-communication",{"title":94,"path":706,"stem":707,"children":708,"page":42},"\u002Fconnector-development\u002Fconcepts","20.connector-development\u002F30.concepts",[709],{"title":710,"path":711,"stem":712},"SiLA","\u002Fconnector-development\u002Fconcepts\u002Fsila","20.connector-development\u002F30.concepts\u002Fsila",{"title":187,"path":714,"stem":715,"children":716,"page":42},"\u002Fconnector-development\u002Fguides","20.connector-development\u002F40.guides",[717,721,725,729,733,736,740],{"title":718,"path":719,"stem":720},"Configuration","\u002Fconnector-development\u002Fguides\u002Fconfiguration","20.connector-development\u002F40.guides\u002F20.configuration",{"title":722,"path":723,"stem":724},"Deployment","\u002Fconnector-development\u002Fguides\u002Fdeployment","20.connector-development\u002F40.guides\u002F30.deployment",{"title":726,"path":727,"stem":728},"Security","\u002Fconnector-development\u002Fguides\u002Fsecurity","20.connector-development\u002F40.guides\u002F40.security",{"title":730,"path":731,"stem":732},"Subscriptions","\u002Fconnector-development\u002Fguides\u002Fsubscriptions","20.connector-development\u002F40.guides\u002F45.subscriptions",{"title":183,"path":734,"stem":735},"\u002Fconnector-development\u002Fguides\u002Ferror-handling","20.connector-development\u002F40.guides\u002F50.error-handling",{"title":737,"path":738,"stem":739},"Serial Troubleshooting","\u002Fconnector-development\u002Fguides\u002Fserial-troubleshooting","20.connector-development\u002F40.guides\u002F70.serial-troubleshooting",{"title":741,"path":742,"stem":743},"Testing","\u002Fconnector-development\u002Fguides\u002Ftesting","20.connector-development\u002F40.guides\u002F80.testing",{"title":745,"path":746,"stem":747,"children":748},"References","\u002Fconnector-development\u002Freference","20.connector-development\u002F50.reference\u002Findex",[749],{"title":745,"path":746,"stem":747},{"id":751,"title":503,"body":752,"description":1625,"extension":1626,"links":1627,"meta":1628,"navigation":899,"path":504,"seo":1629,"stem":505,"__hash__":1630},"docs\u002F07.automate\u002F25.guides\u002F35.run-a-workflow.md",{"type":753,"value":754,"toc":1618},"minimark",[755,765,771,784,789,824,839,843,850,1270,1286,1290,1293,1577,1581,1587,1591,1614],[756,757,758,759,764],"p",{},"Once a workflow is ",[760,761,763],"a",{"href":762},"\u002Fautomate\u002Fguides\u002Fdeploy-a-workflow\u002F","deployed",", you can run it from the platform UI, a Python script, or directly via the REST API.",[756,766,767],{},[768,769,770],"strong",{},"Prerequisites",[772,773,774,781],"ul",{},[775,776,777,778,780],"li",{},"A deployed workflow (see ",[760,779,499],{"href":762},")",[775,782,783],{},"API credentials if triggering programmatically",[785,786,788],"h2",{"id":787},"from-the-platform-ui","From the platform UI",[790,791,792,799,806,821],"ol",{},[775,793,794,795,798],{},"Go to the ",[768,796,797],{},"Workflows"," section and select the workflow you want to run.",[775,800,801,802,805],{},"Click ",[768,803,804],{},"Run",". If the workflow has required inputs, a form appears — fill them in and confirm.",[775,807,808,809,811,812,816,817,820],{},"The run appears in the ",[768,810,472],{}," list with status ",[813,814,815],"code",{},"SCHEDULED",", transitioning to ",[813,818,819],{},"RUNNING"," within seconds.",[775,822,823],{},"Click the run to see phase progress, step-level logs, and any artifacts produced.",[756,825,826,827,830,831,834,835,838],{},"If the workflow reaches a phase that pauses for operator input, the run transitions to ",[813,828,829],{},"AWAITING_INPUT",". Fill in the form that appears and click ",[768,832,833],{},"Submit"," to continue, or ",[768,836,837],{},"Resume"," for a simple pause with no form.",[785,840,842],{"id":841},"from-python","From Python",[756,844,845,846,849],{},"Use the ",[813,847,848],{},"AsyncApiClient"," from the SDK to trigger a run programmatically:",[851,852,858],"pre",{"className":853,"code":854,"filename":855,"language":856,"meta":857,"style":857},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import asyncio\nfrom unitelabs.sdk import AsyncApiClient\n\nasync def main():\n    async with AsyncApiClient(\n        base_url=\"https:\u002F\u002Fapi.unitelabs.io\u002F{tenant-id}\",\n        auth_url=\"https:\u002F\u002Fauth.unitelabs.io\u002Frealms\u002F{tenant-id}\u002Fprotocol\u002Fopenid-connect\",\n        client_id=\"{client-id}\",\n        client_secret=\"{client-secret}\",\n    ) as client:\n        response = await client.post(\n            url=\"\u002Fworkflows\u002F{workflow-id}\u002Fruns\",\n            json={\n                \"name\": \"Plate QC — Batch 42\",\n                \"parameters\": {\n                    \"sample_id\": \"B42\",\n                    \"min_concentration\": 250.0,\n                },\n            },\n        )\n        run = response.json()\n        print(f\"Run started: {run['id']} ({run['status']})\")\n\nasyncio.run(main())\n","trigger.py","python","",[813,859,860,873,894,901,918,933,955,972,989,1006,1021,1041,1058,1067,1091,1106,1128,1146,1152,1158,1164,1183,1247,1252],{"__ignoreMap":857},[861,862,865,869],"span",{"class":863,"line":864},"line",1,[861,866,868],{"class":867},"s7zQu","import",[861,870,872],{"class":871},"sTEyZ"," asyncio\n",[861,874,876,879,882,886,889,891],{"class":863,"line":875},2,[861,877,878],{"class":867},"from",[861,880,881],{"class":871}," unitelabs",[861,883,885],{"class":884},"sMK4o",".",[861,887,888],{"class":871},"sdk ",[861,890,868],{"class":867},[861,892,893],{"class":871}," AsyncApiClient\n",[861,895,897],{"class":863,"line":896},3,[861,898,900],{"emptyLinePlaceholder":899},true,"\n",[861,902,904,908,911,915],{"class":863,"line":903},4,[861,905,907],{"class":906},"spNyl","async",[861,909,910],{"class":906}," def",[861,912,914],{"class":913},"s2Zo4"," main",[861,916,917],{"class":884},"():\n",[861,919,921,924,927,930],{"class":863,"line":920},5,[861,922,923],{"class":867},"    async",[861,925,926],{"class":867}," with",[861,928,929],{"class":913}," AsyncApiClient",[861,931,932],{"class":884},"(\n",[861,934,936,940,943,946,950,952],{"class":863,"line":935},6,[861,937,939],{"class":938},"sHdIc","        base_url",[861,941,942],{"class":884},"=",[861,944,945],{"class":884},"\"",[861,947,949],{"class":948},"sfazB","https:\u002F\u002Fapi.unitelabs.io\u002F{tenant-id}",[861,951,945],{"class":884},[861,953,954],{"class":884},",\n",[861,956,958,961,963,965,968,970],{"class":863,"line":957},7,[861,959,960],{"class":938},"        auth_url",[861,962,942],{"class":884},[861,964,945],{"class":884},[861,966,967],{"class":948},"https:\u002F\u002Fauth.unitelabs.io\u002Frealms\u002F{tenant-id}\u002Fprotocol\u002Fopenid-connect",[861,969,945],{"class":884},[861,971,954],{"class":884},[861,973,975,978,980,982,985,987],{"class":863,"line":974},8,[861,976,977],{"class":938},"        client_id",[861,979,942],{"class":884},[861,981,945],{"class":884},[861,983,984],{"class":948},"{client-id}",[861,986,945],{"class":884},[861,988,954],{"class":884},[861,990,992,995,997,999,1002,1004],{"class":863,"line":991},9,[861,993,994],{"class":938},"        client_secret",[861,996,942],{"class":884},[861,998,945],{"class":884},[861,1000,1001],{"class":948},"{client-secret}",[861,1003,945],{"class":884},[861,1005,954],{"class":884},[861,1007,1009,1012,1015,1018],{"class":863,"line":1008},10,[861,1010,1011],{"class":884},"    )",[861,1013,1014],{"class":867}," as",[861,1016,1017],{"class":871}," client",[861,1019,1020],{"class":884},":\n",[861,1022,1024,1027,1029,1032,1034,1036,1039],{"class":863,"line":1023},11,[861,1025,1026],{"class":871},"        response ",[861,1028,942],{"class":884},[861,1030,1031],{"class":867}," await",[861,1033,1017],{"class":871},[861,1035,885],{"class":884},[861,1037,1038],{"class":913},"post",[861,1040,932],{"class":884},[861,1042,1044,1047,1049,1051,1054,1056],{"class":863,"line":1043},12,[861,1045,1046],{"class":938},"            url",[861,1048,942],{"class":884},[861,1050,945],{"class":884},[861,1052,1053],{"class":948},"\u002Fworkflows\u002F{workflow-id}\u002Fruns",[861,1055,945],{"class":884},[861,1057,954],{"class":884},[861,1059,1061,1064],{"class":863,"line":1060},13,[861,1062,1063],{"class":938},"            json",[861,1065,1066],{"class":884},"={\n",[861,1068,1070,1073,1076,1078,1081,1084,1087,1089],{"class":863,"line":1069},14,[861,1071,1072],{"class":884},"                \"",[861,1074,1075],{"class":948},"name",[861,1077,945],{"class":884},[861,1079,1080],{"class":884},":",[861,1082,1083],{"class":884}," \"",[861,1085,1086],{"class":948},"Plate QC — Batch 42",[861,1088,945],{"class":884},[861,1090,954],{"class":884},[861,1092,1094,1096,1099,1101,1103],{"class":863,"line":1093},15,[861,1095,1072],{"class":884},[861,1097,1098],{"class":948},"parameters",[861,1100,945],{"class":884},[861,1102,1080],{"class":884},[861,1104,1105],{"class":884}," {\n",[861,1107,1109,1112,1115,1117,1119,1121,1124,1126],{"class":863,"line":1108},16,[861,1110,1111],{"class":884},"                    \"",[861,1113,1114],{"class":948},"sample_id",[861,1116,945],{"class":884},[861,1118,1080],{"class":884},[861,1120,1083],{"class":884},[861,1122,1123],{"class":948},"B42",[861,1125,945],{"class":884},[861,1127,954],{"class":884},[861,1129,1131,1133,1136,1138,1140,1144],{"class":863,"line":1130},17,[861,1132,1111],{"class":884},[861,1134,1135],{"class":948},"min_concentration",[861,1137,945],{"class":884},[861,1139,1080],{"class":884},[861,1141,1143],{"class":1142},"sbssI"," 250.0",[861,1145,954],{"class":884},[861,1147,1149],{"class":863,"line":1148},18,[861,1150,1151],{"class":884},"                },\n",[861,1153,1155],{"class":863,"line":1154},19,[861,1156,1157],{"class":884},"            },\n",[861,1159,1161],{"class":863,"line":1160},20,[861,1162,1163],{"class":884},"        )\n",[861,1165,1167,1170,1172,1175,1177,1180],{"class":863,"line":1166},21,[861,1168,1169],{"class":871},"        run ",[861,1171,942],{"class":884},[861,1173,1174],{"class":871}," response",[861,1176,885],{"class":884},[861,1178,1179],{"class":913},"json",[861,1181,1182],{"class":884},"()\n",[861,1184,1186,1189,1192,1195,1198,1201,1204,1207,1210,1213,1215,1218,1221,1224,1226,1228,1230,1232,1235,1237,1239,1241,1244],{"class":863,"line":1185},22,[861,1187,1188],{"class":913},"        print",[861,1190,1191],{"class":884},"(",[861,1193,1194],{"class":906},"f",[861,1196,1197],{"class":948},"\"Run started: ",[861,1199,1200],{"class":1142},"{",[861,1202,1203],{"class":913},"run",[861,1205,1206],{"class":884},"[",[861,1208,1209],{"class":884},"'",[861,1211,1212],{"class":948},"id",[861,1214,1209],{"class":884},[861,1216,1217],{"class":884},"]",[861,1219,1220],{"class":1142},"}",[861,1222,1223],{"class":948}," (",[861,1225,1200],{"class":1142},[861,1227,1203],{"class":913},[861,1229,1206],{"class":884},[861,1231,1209],{"class":884},[861,1233,1234],{"class":948},"status",[861,1236,1209],{"class":884},[861,1238,1217],{"class":884},[861,1240,1220],{"class":1142},[861,1242,1243],{"class":948},")\"",[861,1245,1246],{"class":884},")\n",[861,1248,1250],{"class":863,"line":1249},23,[861,1251,900],{"emptyLinePlaceholder":899},[861,1253,1255,1258,1260,1262,1264,1267],{"class":863,"line":1254},24,[861,1256,1257],{"class":871},"asyncio",[861,1259,885],{"class":884},[861,1261,1203],{"class":913},[861,1263,1191],{"class":884},[861,1265,1266],{"class":913},"main",[861,1268,1269],{"class":884},"())\n",[756,1271,1272,1273,1276,1277,1276,1279,1281,1282,1285],{},"Replace ",[813,1274,1275],{},"{tenant-id}",", ",[813,1278,984],{},[813,1280,1001],{},", and ",[813,1283,1284],{},"{workflow-id}"," with your actual values. The workflow ID appears in the platform URL when you open a workflow.",[785,1287,1289],{"id":1288},"watching-run-progress","Watching run progress",[756,1291,1292],{},"Poll the run status until it reaches a terminal state:",[851,1294,1297],{"className":853,"code":1295,"filename":1296,"language":856,"meta":857,"style":857},"import asyncio\nimport time\nfrom unitelabs.sdk import AsyncApiClient\n\nTERMINAL = {\"COMPLETED\", \"FAILED\", \"CANCELLED\"}\n\nasync def wait_for_run(client, run_id: str, poll_interval: int = 5):\n    while True:\n        response = await client.get(f\"\u002Fruns\u002F{run_id}\")\n        run = response.json()\n        print(f\"[{run['statusSince']}] {run['status']}\")\n        if run[\"status\"] in TERMINAL:\n            return run\n        await asyncio.sleep(poll_interval)\n","wait_for_run.py",[813,1298,1299,1305,1312,1326,1330,1369,1373,1417,1425,1458,1472,1523,1549,1557],{"__ignoreMap":857},[861,1300,1301,1303],{"class":863,"line":864},[861,1302,868],{"class":867},[861,1304,872],{"class":871},[861,1306,1307,1309],{"class":863,"line":875},[861,1308,868],{"class":867},[861,1310,1311],{"class":871}," time\n",[861,1313,1314,1316,1318,1320,1322,1324],{"class":863,"line":896},[861,1315,878],{"class":867},[861,1317,881],{"class":871},[861,1319,885],{"class":884},[861,1321,888],{"class":871},[861,1323,868],{"class":867},[861,1325,893],{"class":871},[861,1327,1328],{"class":863,"line":903},[861,1329,900],{"emptyLinePlaceholder":899},[861,1331,1332,1335,1337,1340,1342,1345,1347,1350,1352,1355,1357,1359,1361,1364,1366],{"class":863,"line":920},[861,1333,1334],{"class":871},"TERMINAL ",[861,1336,942],{"class":884},[861,1338,1339],{"class":884}," {",[861,1341,945],{"class":884},[861,1343,1344],{"class":948},"COMPLETED",[861,1346,945],{"class":884},[861,1348,1349],{"class":884},",",[861,1351,1083],{"class":884},[861,1353,1354],{"class":948},"FAILED",[861,1356,945],{"class":884},[861,1358,1349],{"class":884},[861,1360,1083],{"class":884},[861,1362,1363],{"class":948},"CANCELLED",[861,1365,945],{"class":884},[861,1367,1368],{"class":884},"}\n",[861,1370,1371],{"class":863,"line":935},[861,1372,900],{"emptyLinePlaceholder":899},[861,1374,1375,1377,1379,1382,1384,1387,1389,1392,1394,1398,1400,1403,1405,1408,1411,1414],{"class":863,"line":957},[861,1376,907],{"class":906},[861,1378,910],{"class":906},[861,1380,1381],{"class":913}," wait_for_run",[861,1383,1191],{"class":884},[861,1385,1386],{"class":938},"client",[861,1388,1349],{"class":884},[861,1390,1391],{"class":938}," run_id",[861,1393,1080],{"class":884},[861,1395,1397],{"class":1396},"sBMFI"," str",[861,1399,1349],{"class":884},[861,1401,1402],{"class":938}," poll_interval",[861,1404,1080],{"class":884},[861,1406,1407],{"class":1396}," int",[861,1409,1410],{"class":884}," =",[861,1412,1413],{"class":1142}," 5",[861,1415,1416],{"class":884},"):\n",[861,1418,1419,1422],{"class":863,"line":974},[861,1420,1421],{"class":867},"    while",[861,1423,1424],{"class":884}," True:\n",[861,1426,1427,1429,1431,1433,1435,1437,1440,1442,1444,1447,1449,1452,1454,1456],{"class":863,"line":991},[861,1428,1026],{"class":871},[861,1430,942],{"class":884},[861,1432,1031],{"class":867},[861,1434,1017],{"class":871},[861,1436,885],{"class":884},[861,1438,1439],{"class":913},"get",[861,1441,1191],{"class":884},[861,1443,1194],{"class":906},[861,1445,1446],{"class":948},"\"\u002Fruns\u002F",[861,1448,1200],{"class":1142},[861,1450,1451],{"class":913},"run_id",[861,1453,1220],{"class":1142},[861,1455,945],{"class":948},[861,1457,1246],{"class":884},[861,1459,1460,1462,1464,1466,1468,1470],{"class":863,"line":1008},[861,1461,1169],{"class":871},[861,1463,942],{"class":884},[861,1465,1174],{"class":871},[861,1467,885],{"class":884},[861,1469,1179],{"class":913},[861,1471,1182],{"class":884},[861,1473,1474,1476,1478,1480,1483,1485,1487,1489,1491,1494,1496,1498,1500,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521],{"class":863,"line":1023},[861,1475,1188],{"class":913},[861,1477,1191],{"class":884},[861,1479,1194],{"class":906},[861,1481,1482],{"class":948},"\"[",[861,1484,1200],{"class":1142},[861,1486,1203],{"class":913},[861,1488,1206],{"class":884},[861,1490,1209],{"class":884},[861,1492,1493],{"class":948},"statusSince",[861,1495,1209],{"class":884},[861,1497,1217],{"class":884},[861,1499,1220],{"class":1142},[861,1501,1502],{"class":948},"] ",[861,1504,1200],{"class":1142},[861,1506,1203],{"class":913},[861,1508,1206],{"class":884},[861,1510,1209],{"class":884},[861,1512,1234],{"class":948},[861,1514,1209],{"class":884},[861,1516,1217],{"class":884},[861,1518,1220],{"class":1142},[861,1520,945],{"class":948},[861,1522,1246],{"class":884},[861,1524,1525,1528,1531,1533,1535,1537,1539,1541,1544,1547],{"class":863,"line":1043},[861,1526,1527],{"class":867},"        if",[861,1529,1530],{"class":871}," run",[861,1532,1206],{"class":884},[861,1534,945],{"class":884},[861,1536,1234],{"class":948},[861,1538,945],{"class":884},[861,1540,1217],{"class":884},[861,1542,1543],{"class":884}," in",[861,1545,1546],{"class":871}," TERMINAL",[861,1548,1020],{"class":884},[861,1550,1551,1554],{"class":863,"line":1060},[861,1552,1553],{"class":867},"            return",[861,1555,1556],{"class":871}," run\n",[861,1558,1559,1562,1565,1567,1570,1572,1575],{"class":863,"line":1069},[861,1560,1561],{"class":867},"        await",[861,1563,1564],{"class":871}," asyncio",[861,1566,885],{"class":884},[861,1568,1569],{"class":913},"sleep",[861,1571,1191],{"class":884},[861,1573,1574],{"class":913},"poll_interval",[861,1576,1246],{"class":884},[785,1578,1580],{"id":1579},"running-specific-phases","Running specific phases",[756,1582,1583,1584,885],{},"You can start execution from a particular phase — useful when resuming after an interruption or replaying a stage with different inputs. From the platform UI, select the phase from the run detail view and click ",[768,1585,1586],{},"Run from here",[785,1588,1590],{"id":1589},"next-steps","Next steps",[772,1592,1593,1600,1607],{},[775,1594,1595,1599],{},[760,1596,1598],{"href":1597},"\u002Fautomate\u002Fguides\u002Fworkflows-api\u002F","Workflows and runs via REST API",": full API reference for creating, listing, and monitoring runs",[775,1601,1602,1606],{},[760,1603,1605],{"href":1604},"\u002Fautomate\u002Fguides\u002Fbasic-hitl\u002F","Human in the loop",": how to handle paused runs waiting for operator input",[775,1608,1609,1613],{},[760,1610,1612],{"href":1611},"\u002Fautomate\u002Fguides\u002Fbasic-error-handling\u002F","Basic error handling",": what to do when a run fails",[1615,1616,1617],"style",{},"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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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}",{"title":857,"searchDepth":864,"depth":875,"links":1619},[1620,1621,1622,1623,1624],{"id":787,"depth":875,"text":788},{"id":841,"depth":875,"text":842},{"id":1288,"depth":875,"text":1289},{"id":1579,"depth":875,"text":1580},{"id":1589,"depth":875,"text":1590},"Trigger a workflow run from the platform UI, the UniteLabs SDK, or the REST API.","md",null,{},{"title":503,"description":1625},"Hmuaqq47noMmLuPYhi4FHkXV_kl7_bazXuRAviorzIE",[1632,1634],{"title":499,"path":500,"stem":501,"description":1633},"Bundle a workflow from a workflow-template repo and ship it to the UniteLabs platform with scripts\u002Fdeploy.py.",{"title":507,"path":508,"stem":509,"description":1635},"Automate workflow deploys to UniteLabs with three channels — DEV (manual), STG (push to main), PRD (per-workflow release tags) — on GitHub Actions or GitLab CI.",1783607789544]