⚠️This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.Schema of the response body
{"items":{"$ref":"#/components/schemas/ValveStatus"},"type":"array","title":"Response List Valves Valves Get"}
⚠️This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.Schema of the response body
{"properties":{"addr":{"type":"integer","title":"Addr"},"name":{"type":"string","title":"Name","default":""},"ready":{"type":"boolean","title":"Ready"},"initialized":{"type":"boolean","title":"Initialized"},"error_code":{"type":"integer","title":"Error Code"},"error_message":{"type":"string","title":"Error Message"},"valve_position":{"type":"integer","title":"Valve Position"},"valve_type":{"type":"string","title":"Valve Type"},"temperature_f":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature F"},"voltage":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Voltage"},"operating_time_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Operating Time Min"},"firmware":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firmware"}},"type":"object","required":["addr","ready","initialized","error_code","error_message","valve_position","valve_type"],"title":"ValveStatus","description":"Full SmartValve status — valve-only, no plunger/syringe fields."}
⚠️This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.Schema of the response body
⚠️This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.Schema of the response body
⚠️This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.Schema of the request body
{"properties":{"direction":{"$ref":"#/components/schemas/habitat__models__smartvalve__InitDirection","default":"cw"},"speed":{"type":"integer","maximum":25.0,"minimum":4.0,"title":"Speed","description":"Valve homing speed setting (firmware units, 4-25)","default":10},"input_port":{"type":"integer","minimum":0.0,"title":"Input Port","description":"Init input port (0=default)","default":0},"output_port":{"type":"integer","minimum":0.0,"title":"Output Port","description":"Init output port (0=default)","default":0}},"type":"object","title":"InitRequest","description":"Request body for valve initialization."}
⚠️This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.Schema of the response body
{"properties":{"success":{"type":"boolean","title":"Success"},"addr":{"type":"integer","title":"Addr"},"message":{"type":"string","title":"Message","default":""},"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"error_code":{"type":"integer","title":"Error Code","default":0},"error_message":{"type":"string","title":"Error Message","default":""}},"type":"object","required":["success","addr"],"title":"CommandResponse","description":"Generic response from a valve command."}
⚠️This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.Schema of the response body
⚠️This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.Schema of the response body
{"items":{"$ref":"#/components/schemas/habitat__models__smartvalve__CommandResponse"},"type":"array","title":"Response Initialize All Valves Initialize All Post"}
POST /valves/{addr}/move
Rotate the SmartValve to a port
Description
Rotates the SmartValve (standalone, not pump-attached) to a port. Uses the same Cavro serial protocol as CENTRIS valves — in fact the two can share an RS-232 daisy chain. Blocks until the firmware reports the rotation complete (~300 ms typical).
Preconditions: valve initialized; port within max range. Sets device_state.valve_position on success (Fork 1).
Input parameters
Parameter
In
Type
Default
Nullable
Description
addr
path
integer
No
Request body
{"port":0,"direction":"string"}
⚠️This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.Schema of the request body
{"properties":{"port":{"type":"integer","maximum":12.0,"minimum":1.0,"title":"Port","description":"Target port number"},"direction":{"type":"string","title":"Direction","description":"Rotation direction: 'cw' (I command) or 'ccw' (O command)","default":"cw"}},"type":"object","required":["port"],"title":"ValveMoveRequest","description":"Request body for valve movement."}
⚠️This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.Schema of the response body
{"properties":{"success":{"type":"boolean","title":"Success"},"addr":{"type":"integer","title":"Addr"},"message":{"type":"string","title":"Message","default":""},"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"error_code":{"type":"integer","title":"Error Code","default":0},"error_message":{"type":"string","title":"Error Message","default":""}},"type":"object","required":["success","addr"],"title":"CommandResponse","description":"Generic response from a valve command."}
⚠️This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.Schema of the response body
⚠️This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.Schema of the response body
⚠️This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.Schema of the response body
{"properties":{"success":{"type":"boolean","title":"Success"},"addr":{"type":"integer","title":"Addr"},"message":{"type":"string","title":"Message","default":""},"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"error_code":{"type":"integer","title":"Error Code","default":0},"error_message":{"type":"string","title":"Error Message","default":""}},"type":"object","required":["success","addr"],"title":"CommandResponse","description":"Generic response from a valve command."}
⚠️This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.Schema of the response body
⚠️This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.Schema of the response body
{"properties":{"success":{"type":"boolean","title":"Success"},"addr":{"type":"integer","title":"Addr"},"message":{"type":"string","title":"Message","default":""},"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"error_code":{"type":"integer","title":"Error Code","default":0},"error_message":{"type":"string","title":"Error Message","default":""}},"type":"object","required":["success","addr"],"title":"CommandResponse","description":"Generic response from a valve command."}
⚠️This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.Schema of the response body
⚠️This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.Schema of the response body
{"items":{"$ref":"#/components/schemas/habitat__models__smartvalve__CommandResponse"},"type":"array","title":"Response Terminate All Valves Terminate All Post"}
GET /valves/{addr}/diagnostics
Valve diagnostics
Description
Get diagnostic information: temperature, voltage, operating time, firmware.
Input parameters
Parameter
In
Type
Default
Nullable
Description
addr
path
integer
No
Responses
Schema of the response body
{"type":"object","additionalProperties":true,"title":"Response Get Diagnostics Valves Addr Diagnostics Get"}
⚠️This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.Schema of the response body
Atomic parameters keyed by the names declared in the manifest.
provenance
AtomicManifest
Name
Type
Description
authored_by
string
belongs_to_routines
Array<string>
blocking
description
string
device_kind
string
emits_metrics
Array<string>
Advisory list of metric names this atomic is expected to emit. Not populated by any atomic today and not enforced or cross-checked against the telemetry layer -- agent-read-only metadata, not a live emission guarantee.
estimated_fluid_volume_ul
estimated_wear
string
Advisory relative wear estimate. Not derived from any measurement and not read by the runtime -- agent-read-only metadata for planning, not a calibrated cost model.
Advisory pointer to the atomic that would undo this one. Not populated by any atomic today and not enforced or invoked by the runtime -- agent-read-only metadata, not a guarantee a reverse operation exists or is registered.
reversible
boolean
side_effects
Array<string>
summary
string
tier
string
typical_predecessors
Array<string>
typical_successors
Array<string>
validated_on_hardware
Array<string>
version
string
CreateEventRequest
Name
Type
Description
action
string
Action type (e.g. 'feed', 'wash')
color
string
duration_min
number
notes
string
parameters
sample_id
string
Target sample ID
series_id
start_time
string
Scheduled start (ISO 8601). Stored as aware UTC: a naive timestamp is interpreted as host-local time and converted; the response echoes the canonical +00:00 string.
Optional one-shot post-init plunger gap in increments. If provided, ``set_init_gap`` is called BEFORE the Z command on this initialization only. ``None`` means use the previously-configured gap (firmware default ~1600 if never set). DANGER: see ``POST /pumps/{addr}/init-gap`` for hazard details. This path requires ``gap_increments >= 100`` (the safety floor) — there is no override field on this endpoint. Persisting a sub-floor value requires human confirmation via the HITL-gated atomics/job path (``POST /atomics/centris.initialization.set_init_gap`` async + ``POST /jobs/{id}/confirm``); do that first, then initialize without ``init_gap_increments``.
input_port
integer
Distribution-valve input port for homing. Use ``0`` (or omit) for auto-selection from the pump YAML ``port_map``: first waste role, else first port not listed in the map, else port 1. JSON may use the field name ``init_port`` as an alias.
output_port
integer
Init output port (0=default)
speed_ul_per_s
Initialization speed as a volumetric rate in µL/s. None = firmware default homing speed. The driver snaps the value to the nearest firmware-supported discrete rate internally.
ABSOLUTE directory on this host where `habitat.action` records are being written — the input the OCS rig-runner reads for the fluidics ledger. Absolute because the consumer is a DIFFERENT PROCESS: a relative path would be resolved against its working directory, not habitat's, silently naming a directory that does not exist. Null means no action handler is installed (this device writes no action records).
device_name
string
Unique physical unit identifier, e.g. 'MistyForest'.
hostname
string
OS hostname of the device.
product_line
string
Product-line string, e.g. 'Habitat'.
started_at
string
UTC ISO-8601 timestamp when the process started.
uptime_s
number
Seconds since the process started.
version
string
Application semantic version.
SystemStatus
Name
Type
Description
active_jobs
integer
Count of jobs in the RUNNING state.
device_name
string
Unique physical unit identifier.
drivers_initialized
boolean
True once all drivers have connected and are ready for commands.
emergency_stop
boolean
True if an emergency stop is currently active.
kinds
Device-kind name → list of per-kind summary entries.
queued_jobs
integer
Count of jobs in the QUEUED state.
scheduled_events_pending
integer
Count of pending scheduled events.
TestRunRoutineRequest
Name
Type
Description
params
Routine parameters. Merged on top of the routine's manifest defaults before the executor walks the steps.
TimezoneResponse
Name
Type
Description
timezone
string
Display-timezone label — 'UTC', 'local', an IANA name like 'America/Los_Angeles', or a fixed offset like '+06:00'.
ValidateProtocolRequest
Name
Type
Description
yaml_text
string
Raw YAML text of the protocol manifest to validate.
ValidateRoutineRequest
Name
Type
Description
yaml_text
string
Raw YAML text of the routine manifest to validate.