[{"data":1,"prerenderedAt":1478},["ShallowReactive",2],{"navigation":3,"\u002Fintegrate\u002Fconcepts\u002Faction":750,"\u002Fintegrate\u002Fconcepts\u002Faction-surround":1473},[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":107,"body":752,"description":1467,"extension":1468,"links":1469,"meta":1470,"navigation":888,"path":108,"seo":1471,"stem":109,"__hash__":1472},"docs\u002F02.integrate\u002F10.concepts\u002F30.action.md",{"type":753,"value":754,"toc":1460},"minimark",[755,774,796,804,809,812,935,946,950,953,1004,1020,1024,1027,1112,1119,1123,1126,1241,1244,1337,1369,1373,1376,1453,1456],[756,757,758,759,763,764,769,770,773],"p",{},"An ",[760,761,762],"strong",{},"action"," is anything you can call on a ",[765,766,768],"a",{"href":767},"\u002Fintegrate\u002Fconcepts\u002Fmodule\u002F","module",". Reading the current temperature, subscribing to a file-system change stream, triggering a centrifuge spin — these are all actions. Every action has a ",[760,771,772],{},"type"," that tells you how to consume it:",[775,776,777,784,790],"ul",{},[778,779,780,783],"li",{},[760,781,782],{},"Property"," — read a single scalar value and complete",[778,785,786,789],{},[760,787,788],{},"Sensor"," — subscribe to a stream of values",[778,791,792,795],{},[760,793,794],{},"Control"," — trigger a change, optionally with parameters, and get a result",[756,797,798,799,803],{},"The platform UI groups actions into three sections by type. The SDK and REST API expose the type as a field on each action. See the ",[765,800,802],{"href":801},"\u002Fintegrate\u002Fconcepts\u002Fconnector#terminology","Terminology table"," for the cross-surface mapping.",[805,806,808],"h2",{"id":807},"property-actions","Property actions",[756,810,811],{},"A Property reads a single current value and returns it. Typical examples: server metadata (name, version, UUID), a folder whitelist, a balance's current stable weight.",[813,814,819],"pre",{"className":815,"code":816,"language":817,"meta":818,"style":818},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Read the connector's server name\nname = await file_system.sila_service.server_name()\nprint(name)  # \"FileSystem\"\n\n# Read a structured value — the folder whitelist\nwhitelist = await file_system.folder_service.folder_whitelist()\nprint(whitelist)  # ['\u002Fopt\u002Ffs_demo']\n","python","",[820,821,822,831,865,883,890,896,920],"code",{"__ignoreMap":818},[823,824,827],"span",{"class":825,"line":826},"line",1,[823,828,830],{"class":829},"sHwdD","# Read the connector's server name\n",[823,832,834,838,842,846,849,852,856,858,862],{"class":825,"line":833},2,[823,835,837],{"class":836},"sTEyZ","name ",[823,839,841],{"class":840},"sMK4o","=",[823,843,845],{"class":844},"s7zQu"," await",[823,847,848],{"class":836}," file_system",[823,850,851],{"class":840},".",[823,853,855],{"class":854},"swJcz","sila_service",[823,857,851],{"class":840},[823,859,861],{"class":860},"s2Zo4","server_name",[823,863,864],{"class":840},"()\n",[823,866,868,871,874,877,880],{"class":825,"line":867},3,[823,869,870],{"class":860},"print",[823,872,873],{"class":840},"(",[823,875,876],{"class":860},"name",[823,878,879],{"class":840},")",[823,881,882],{"class":829},"  # \"FileSystem\"\n",[823,884,886],{"class":825,"line":885},4,[823,887,889],{"emptyLinePlaceholder":888},true,"\n",[823,891,893],{"class":825,"line":892},5,[823,894,895],{"class":829},"# Read a structured value — the folder whitelist\n",[823,897,899,902,904,906,908,910,913,915,918],{"class":825,"line":898},6,[823,900,901],{"class":836},"whitelist ",[823,903,841],{"class":840},[823,905,845],{"class":844},[823,907,848],{"class":836},[823,909,851],{"class":840},[823,911,912],{"class":854},"folder_service",[823,914,851],{"class":840},[823,916,917],{"class":860},"folder_whitelist",[823,919,864],{"class":840},[823,921,923,925,927,930,932],{"class":825,"line":922},7,[823,924,870],{"class":860},[823,926,873],{"class":840},[823,928,929],{"class":860},"whitelist",[823,931,879],{"class":840},[823,933,934],{"class":829},"  # ['\u002Fopt\u002Ffs_demo']\n",[756,936,937,938,941,942,945],{},"In the REST API a Property is invoked via ",[820,939,940],{},"\u002Fv1\u002Fdata\u002F{actionId}"," with ",[820,943,944],{},"Accept: application\u002Fjson"," — the endpoint returns the current value and completes.",[805,947,949],{"id":948},"sensor-actions","Sensor actions",[756,951,952],{},"A Sensor exposes a stream of values that change over time. Typical examples: a file-system change watcher, a live temperature feed, weight readings while a sample is being dispensed.",[813,954,956],{"className":815,"code":955,"language":817,"meta":818,"style":818},"# Subscribe to file-system changes\nasync for change in file_system.folder_service.changes():\n    print(change)\n",[820,957,958,963,991],{"__ignoreMap":818},[823,959,960],{"class":825,"line":826},[823,961,962],{"class":829},"# Subscribe to file-system changes\n",[823,964,965,968,971,974,977,979,981,983,985,988],{"class":825,"line":833},[823,966,967],{"class":844},"async",[823,969,970],{"class":844}," for",[823,972,973],{"class":836}," change ",[823,975,976],{"class":844},"in",[823,978,848],{"class":836},[823,980,851],{"class":840},[823,982,912],{"class":854},[823,984,851],{"class":840},[823,986,987],{"class":860},"changes",[823,989,990],{"class":840},"():\n",[823,992,993,996,998,1001],{"class":825,"line":867},[823,994,995],{"class":860},"    print",[823,997,873],{"class":840},[823,999,1000],{"class":860},"change",[823,1002,1003],{"class":840},")\n",[756,1005,1006,1007,1010,1011,941,1013,1016,1017,851],{},"Consuming a Sensor holds open a long-lived stream. See ",[765,1008,111],{"href":1009},"\u002Fintegrate\u002Fconcepts\u002Fsubscription\u002F"," for lifecycle, reliability, and cancellation. In the REST API, Sensors are consumed via ",[820,1012,940],{},[820,1014,1015],{},"Accept: text\u002Fevent-stream",", or registered as explicit subscriptions via ",[820,1018,1019],{},"\u002Fv1\u002Fsubscriptions",[805,1021,1023],{"id":1022},"control-actions","Control actions",[756,1025,1026],{},"A Control triggers a change on the instrument. Typical examples: deleting a file, setting a server name, setting a target temperature, starting a run, opening a door.",[813,1028,1030],{"className":815,"code":1029,"language":817,"meta":818,"style":818},"# Trigger a file deletion\nawait file_system.file_service.delete_file(path=\"\u002Fopt\u002Ffs_demo\u002Fold.txt\")\n\n# Set a parameter the server remembers afterward\nawait file_system.sila_service.set_server_name(server_name=\"FileSystem (Bench 3)\")\n",[820,1031,1032,1037,1073,1077,1082],{"__ignoreMap":818},[823,1033,1034],{"class":825,"line":826},[823,1035,1036],{"class":829},"# Trigger a file deletion\n",[823,1038,1039,1042,1044,1046,1049,1051,1054,1056,1060,1062,1065,1069,1071],{"class":825,"line":833},[823,1040,1041],{"class":844},"await",[823,1043,848],{"class":836},[823,1045,851],{"class":840},[823,1047,1048],{"class":854},"file_service",[823,1050,851],{"class":840},[823,1052,1053],{"class":860},"delete_file",[823,1055,873],{"class":840},[823,1057,1059],{"class":1058},"sHdIc","path",[823,1061,841],{"class":840},[823,1063,1064],{"class":840},"\"",[823,1066,1068],{"class":1067},"sfazB","\u002Fopt\u002Ffs_demo\u002Fold.txt",[823,1070,1064],{"class":840},[823,1072,1003],{"class":840},[823,1074,1075],{"class":825,"line":867},[823,1076,889],{"emptyLinePlaceholder":888},[823,1078,1079],{"class":825,"line":885},[823,1080,1081],{"class":829},"# Set a parameter the server remembers afterward\n",[823,1083,1084,1086,1088,1090,1092,1094,1097,1099,1101,1103,1105,1108,1110],{"class":825,"line":892},[823,1085,1041],{"class":844},[823,1087,848],{"class":836},[823,1089,851],{"class":840},[823,1091,855],{"class":854},[823,1093,851],{"class":840},[823,1095,1096],{"class":860},"set_server_name",[823,1098,873],{"class":840},[823,1100,861],{"class":1058},[823,1102,841],{"class":840},[823,1104,1064],{"class":840},[823,1106,1107],{"class":1067},"FileSystem (Bench 3)",[823,1109,1064],{"class":840},[823,1111,1003],{"class":840},[756,1113,1114,1115,1118],{},"Some Controls complete immediately; others run long enough to emit progress updates before returning their final result. Long-running Controls are consumed as ",[765,1116,1117],{"href":1009},"subscriptions"," — the stream delivers status updates and optional intermediate results until the command completes.",[805,1120,1122],{"id":1121},"discovering-actions-and-their-types","Discovering actions and their types",[756,1124,1125],{},"Ask a module what actions it has, then read each action's type:",[813,1127,1129],{"className":815,"code":1128,"language":817,"meta":818,"style":818},"module = file_system.folder_service\nprint(module.actions.keys())\n# dict_keys(['folder_whitelist', 'changes', 'get_folder_contents'])\n\nfor name, action in module.actions.items():\n    print(name, action.type)\n# folder_whitelist     PROPERTY\n# changes              SENSOR\n# get_folder_contents  CONTROL\n",[820,1130,1131,1145,1166,1171,1175,1205,1224,1229,1235],{"__ignoreMap":818},[823,1132,1133,1136,1138,1140,1142],{"class":825,"line":826},[823,1134,1135],{"class":836},"module ",[823,1137,841],{"class":840},[823,1139,848],{"class":836},[823,1141,851],{"class":840},[823,1143,1144],{"class":854},"folder_service\n",[823,1146,1147,1149,1151,1153,1155,1158,1160,1163],{"class":825,"line":833},[823,1148,870],{"class":860},[823,1150,873],{"class":840},[823,1152,768],{"class":860},[823,1154,851],{"class":840},[823,1156,1157],{"class":854},"actions",[823,1159,851],{"class":840},[823,1161,1162],{"class":860},"keys",[823,1164,1165],{"class":840},"())\n",[823,1167,1168],{"class":825,"line":867},[823,1169,1170],{"class":829},"# dict_keys(['folder_whitelist', 'changes', 'get_folder_contents'])\n",[823,1172,1173],{"class":825,"line":885},[823,1174,889],{"emptyLinePlaceholder":888},[823,1176,1177,1180,1183,1186,1189,1191,1194,1196,1198,1200,1203],{"class":825,"line":892},[823,1178,1179],{"class":844},"for",[823,1181,1182],{"class":836}," name",[823,1184,1185],{"class":840},",",[823,1187,1188],{"class":836}," action ",[823,1190,976],{"class":844},[823,1192,1193],{"class":836}," module",[823,1195,851],{"class":840},[823,1197,1157],{"class":854},[823,1199,851],{"class":840},[823,1201,1202],{"class":860},"items",[823,1204,990],{"class":840},[823,1206,1207,1209,1211,1213,1215,1218,1220,1222],{"class":825,"line":898},[823,1208,995],{"class":860},[823,1210,873],{"class":840},[823,1212,876],{"class":860},[823,1214,1185],{"class":840},[823,1216,1217],{"class":860}," action",[823,1219,851],{"class":840},[823,1221,772],{"class":854},[823,1223,1003],{"class":840},[823,1225,1226],{"class":825,"line":922},[823,1227,1228],{"class":829},"# folder_whitelist     PROPERTY\n",[823,1230,1232],{"class":825,"line":1231},8,[823,1233,1234],{"class":829},"# changes              SENSOR\n",[823,1236,1238],{"class":825,"line":1237},9,[823,1239,1240],{"class":829},"# get_folder_contents  CONTROL\n",[756,1242,1243],{},"From the REST API:",[813,1245,1249],{"className":1246,"code":1247,"language":1248,"meta":818,"style":818},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# All actions on a module — each record carries its type\ncurl \"$BASE_URL\u002Fv1\u002Fmodules\u002F$MODULE_ID\u002Factions\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# One action in detail — type, parameters, responses, source (SiLA URI)\ncurl \"$BASE_URL\u002Fv1\u002Factions\u002F$ACTION_ID\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n","bash",[820,1250,1251,1256,1282,1298,1302,1307,1325],{"__ignoreMap":818},[823,1252,1253],{"class":825,"line":826},[823,1254,1255],{"class":829},"# All actions on a module — each record carries its type\n",[823,1257,1258,1262,1265,1268,1271,1274,1277,1279],{"class":825,"line":833},[823,1259,1261],{"class":1260},"sBMFI","curl",[823,1263,1264],{"class":840}," \"",[823,1266,1267],{"class":836},"$BASE_URL",[823,1269,1270],{"class":1067},"\u002Fv1\u002Fmodules\u002F",[823,1272,1273],{"class":836},"$MODULE_ID",[823,1275,1276],{"class":1067},"\u002Factions",[823,1278,1064],{"class":840},[823,1280,1281],{"class":836}," \\\n",[823,1283,1284,1287,1289,1292,1295],{"class":825,"line":867},[823,1285,1286],{"class":1067},"  -H",[823,1288,1264],{"class":840},[823,1290,1291],{"class":1067},"Authorization: Bearer ",[823,1293,1294],{"class":836},"$TOKEN",[823,1296,1297],{"class":840},"\"\n",[823,1299,1300],{"class":825,"line":885},[823,1301,889],{"emptyLinePlaceholder":888},[823,1303,1304],{"class":825,"line":892},[823,1305,1306],{"class":829},"# One action in detail — type, parameters, responses, source (SiLA URI)\n",[823,1308,1309,1311,1313,1315,1318,1321,1323],{"class":825,"line":898},[823,1310,1261],{"class":1260},[823,1312,1264],{"class":840},[823,1314,1267],{"class":836},[823,1316,1317],{"class":1067},"\u002Fv1\u002Factions\u002F",[823,1319,1320],{"class":836},"$ACTION_ID",[823,1322,1064],{"class":840},[823,1324,1281],{"class":836},[823,1326,1327,1329,1331,1333,1335],{"class":825,"line":922},[823,1328,1286],{"class":1067},[823,1330,1264],{"class":840},[823,1332,1291],{"class":1067},[823,1334,1294],{"class":836},[823,1336,1297],{"class":840},[756,1338,1339,1340,1342,1343,1346,1347,1346,1350,1353,1354,1356,1357,1360,1361,1364,1365,1368],{},"Each action record includes its ",[820,1341,772],{}," (one of ",[820,1344,1345],{},"PROPERTY",", ",[820,1348,1349],{},"SENSOR",[820,1351,1352],{},"CONTROL","), a human-readable ",[820,1355,876],{},", typed ",[820,1358,1359],{},"parameters"," and ",[820,1362,1363],{},"responses"," schemas, and a ",[820,1366,1367],{},"source"," field that identifies the underlying SiLA URI for connector developers who need it.",[805,1370,1372],{"id":1371},"introspection-parameters-and-responses","Introspection: parameters and responses",[756,1374,1375],{},"Every action carries typed schemas describing what it expects and what it returns. The schema is programmatically accessible so you can build UIs, validate payloads before sending them, or generate client code:",[813,1377,1379],{"className":815,"code":1378,"language":817,"meta":818,"style":818},"# What parameters does this Control accept?\nprint(await file_system.sila_service.set_server_name.parameters)\n# {'ServerName': Parameter(name='Server Name', schema={...})}\n\n# What does it return?\nprint(await file_system.sila_service.set_server_name.responses)\n# None\n",[820,1380,1381,1386,1410,1415,1419,1424,1448],{"__ignoreMap":818},[823,1382,1383],{"class":825,"line":826},[823,1384,1385],{"class":829},"# What parameters does this Control accept?\n",[823,1387,1388,1390,1392,1394,1396,1398,1400,1402,1404,1406,1408],{"class":825,"line":833},[823,1389,870],{"class":860},[823,1391,873],{"class":840},[823,1393,1041],{"class":844},[823,1395,848],{"class":860},[823,1397,851],{"class":840},[823,1399,855],{"class":854},[823,1401,851],{"class":840},[823,1403,1096],{"class":854},[823,1405,851],{"class":840},[823,1407,1359],{"class":854},[823,1409,1003],{"class":840},[823,1411,1412],{"class":825,"line":867},[823,1413,1414],{"class":829},"# {'ServerName': Parameter(name='Server Name', schema={...})}\n",[823,1416,1417],{"class":825,"line":885},[823,1418,889],{"emptyLinePlaceholder":888},[823,1420,1421],{"class":825,"line":892},[823,1422,1423],{"class":829},"# What does it return?\n",[823,1425,1426,1428,1430,1432,1434,1436,1438,1440,1442,1444,1446],{"class":825,"line":898},[823,1427,870],{"class":860},[823,1429,873],{"class":840},[823,1431,1041],{"class":844},[823,1433,848],{"class":860},[823,1435,851],{"class":840},[823,1437,855],{"class":854},[823,1439,851],{"class":840},[823,1441,1096],{"class":854},[823,1443,851],{"class":840},[823,1445,1363],{"class":854},[823,1447,1003],{"class":840},[823,1449,1450],{"class":825,"line":922},[823,1451,1452],{"class":829},"# None\n",[756,1454,1455],{},"Parameters come with names, data types, and constraints — units, min \u002F max ranges, enumerations. Responses have the same shape. The SDK uses this schema to serialize your arguments correctly; the platform UI uses it to render a parameter form on Controls and a value view on Properties.",[1457,1458,1459],"style",{},"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 .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 .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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":818,"searchDepth":826,"depth":833,"links":1461},[1462,1463,1464,1465,1466],{"id":807,"depth":833,"text":808},{"id":948,"depth":833,"text":949},{"id":1022,"depth":833,"text":1023},{"id":1121,"depth":833,"text":1122},{"id":1371,"depth":833,"text":1372},"The callable primitive on a module. Every action has a type — Property, Sensor, or Control — that determines how you consume it.","md",null,{},{"title":107,"description":1467},"tRWFMvRvMAmxX7WBIfHicrAyzpQxLi7y3i5JOrcm1_w",[1474,1476],{"title":103,"path":104,"stem":105,"description":1475},"How a connector groups related actions into logical modules you can discover and call.",{"title":111,"path":112,"stem":113,"description":1477},"How you consume Sensor-type actions (and streaming Controls) over time.",1783607760285]