# Documentation

## Get the analog mode configuration

> Returns the current configuration of the analog mode in the system

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/analog-mode":{"get":{"description":"Returns the current configuration of the analog mode in the system","summary":"Get the analog mode configuration","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.AnalogMode"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.AnalogMode":{"type":"object","required":["enforced"],"properties":{"enforced":{"type":"boolean"}}},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Configure analog mode

> Changes the configuration of the analog mode in the system

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/analog-mode":{"put":{"description":"Changes the configuration of the analog mode in the system","summary":"Configure analog mode","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.AnalogMode"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.AnalogMode"}}},"description":"Analog Mode","required":true}}}},"components":{"schemas":{"api.AnalogMode":{"type":"object","required":["enforced"],"properties":{"enforced":{"type":"boolean"}}},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Get Arrays

> Returns information about all arrays

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/arrays":{"get":{"description":"Returns information about all arrays","summary":"Get Arrays","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Arrays"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.Arrays":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/api.Array"}},"api.Array":{"type":"object","properties":{"health":{"$ref":"#/components/schemas/api.ArrayHealth"},"modules":{"type":"object","additionalProperties":{"type":"string"}},"name":{"type":"string"},"power_status":{"allOf":[{"$ref":"#/components/schemas/api.PowerStatus"}]}}},"api.ArrayHealth":{"type":"object","properties":{"message":{"description":"currently not used and left empty","type":"string"},"status":{"description":"aggregated health status of the array","allOf":[{"$ref":"#/components/schemas/api.HealthStatus"}]}}},"api.HealthStatus":{"type":"string","enum":["unknown","okay","warning","error","critical"]},"api.PowerStatus":{"type":"string","enum":["unknown","going-to-sleep","sleeping","waking-up","awake","rebooting","mixed"]},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Get Array

> Returns information for a specific array

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/arrays/{arrayID}":{"get":{"description":"Returns information for a specific array","summary":"Get Array","parameters":[{"schema":{"type":"string"},"description":"Array ID","name":"arrayID","in":"path","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Array"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"404":{"description":"Array not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.Array":{"type":"object","properties":{"health":{"$ref":"#/components/schemas/api.ArrayHealth"},"modules":{"type":"object","additionalProperties":{"type":"string"}},"name":{"type":"string"},"power_status":{"allOf":[{"$ref":"#/components/schemas/api.PowerStatus"}]}}},"api.ArrayHealth":{"type":"object","properties":{"message":{"description":"currently not used and left empty","type":"string"},"status":{"description":"aggregated health status of the array","allOf":[{"$ref":"#/components/schemas/api.HealthStatus"}]}}},"api.HealthStatus":{"type":"string","enum":["unknown","okay","warning","error","critical"]},"api.PowerStatus":{"type":"string","enum":["unknown","going-to-sleep","sleeping","waking-up","awake","rebooting","mixed"]},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Set Array Blink

> Changes the blink state for a specific array

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/arrays/{arrayID}/blink":{"put":{"description":"Changes the blink state for a specific array","summary":"Set Array Blink","parameters":[{"schema":{"type":"string"},"description":"Array ID","name":"arrayID","in":"path","required":true}],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Blink"}}},"description":"Blink","required":true}}}},"components":{"schemas":{"api.Error":{"type":"object","properties":{"message":{"type":"string"}}},"api.Blink":{"type":"object","required":["on"],"properties":{"on":{"type":"boolean"}}}}}}
```

## Set Array Power State

> Changes the target power state for the array, allowed values are "on" and "sleep"

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/arrays/{arrayID}/power":{"put":{"description":"Changes the target power state for the array, allowed values are \"on\" and \"sleep\"","summary":"Set Array Power State","parameters":[{"schema":{"type":"string"},"description":"Array ID","name":"arrayID","in":"path","required":true}],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Power"}}},"description":"Power","required":true}}}},"components":{"schemas":{"api.Error":{"type":"object","properties":{"message":{"type":"string"}}},"api.Power":{"type":"object","required":["target"],"properties":{"target":{"allOf":[{"$ref":"#/components/schemas/api.PowerTarget"}]}}},"api.PowerTarget":{"type":"string","enum":["unknown","on","sleep"]}}}}
```

## Get Audio Streams

> Returns information about all audio streams

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/audio-streams":{"get":{"description":"Returns information about all audio streams","summary":"Get Audio Streams","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.AudioStreams"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.AudioStreams":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/api.AudioStream"}},"api.AudioStream":{"type":"object","properties":{"backup_stream":{"$ref":"#/components/schemas/api.AudioStreamTransport"},"discovery_method":{"allOf":[{"$ref":"#/components/schemas/api.AudioStreamDiscoveryMethod"}]},"main_stream":{"$ref":"#/components/schemas/api.AudioStreamTransport"},"monitor_config":{"$ref":"#/components/schemas/api.AudioStreamMonitorConfig"},"name":{"type":"string"},"status":{"allOf":[{"$ref":"#/components/schemas/api.AudioStreamStatus"}]},"type":{"allOf":[{"$ref":"#/components/schemas/api.AudioStreamType"}]}}},"api.AudioStreamTransport":{"type":"object","properties":{"analog":{"$ref":"#/components/schemas/api.AnalogAudioStream"},"ravenna":{"$ref":"#/components/schemas/api.RavennaAudioStream"}}},"api.AnalogAudioStream":{"type":"object","properties":{"channel_count":{"type":"integer"}}},"api.RavennaAudioStream":{"type":"object","properties":{"audio_stream_content_type":{"allOf":[{"$ref":"#/components/schemas/api.AudioStreamContentType"}]},"channel_count":{"type":"integer"},"end_to_end_delay":{"type":"integer"},"primary_source":{"$ref":"#/components/schemas/api.RTPMediaSource"},"sample_rate":{"type":"integer"},"secondary_source":{"$ref":"#/components/schemas/api.RTPMediaSource"}}},"api.AudioStreamContentType":{"type":"string","enum":["PCM24"]},"api.RTPMediaSource":{"type":"object","properties":{"clock_domain":{"type":"string"},"destination_address":{"type":"string","format":"ip4"},"frames_per_packet":{"type":"integer"},"media_clock":{"type":"string"},"port":{"type":"integer"},"reference_clock":{"type":"string"},"sender_address":{"type":"string","format":"ip4"},"sync_time":{"type":"integer"},"ttl":{"type":"integer"}}},"api.AudioStreamDiscoveryMethod":{"type":"string","enum":["MANUAL","MDNS","SAP"]},"api.AudioStreamMonitorConfig":{"type":"object","properties":{"network":{"$ref":"#/components/schemas/api.AudioStreamNetworkMonitor"},"pilot_tone":{"$ref":"#/components/schemas/api.AudioStreamPilotToneMonitor"},"type":{"allOf":[{"$ref":"#/components/schemas/api.AudioStreamMonitorType"}]}}},"api.AudioStreamNetworkMonitor":{"type":"object","properties":{"packet_loss_tolerance":{"type":"integer"}}},"api.AudioStreamPilotToneMonitor":{"type":"object","properties":{"channel":{"type":"integer"},"frequency":{"type":"number"},"threshold_db":{"type":"number"}}},"api.AudioStreamMonitorType":{"type":"string","enum":["NETWORK","PILOT_TONE"]},"api.AudioStreamStatus":{"type":"string","enum":["MAIN_ACTIVE","BACKUP_ACTIVE","FAILED"]},"api.AudioStreamType":{"type":"string","enum":["DANTE","RAVENNA","ANALOG"]},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Get Autochecker extra data

> Returns extra information about the system for the Autochecker. This information is auxiliary and OS-version dependent.

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/autochecker/extra":{"get":{"description":"Returns extra information about the system for the Autochecker. This information is auxiliary and OS-version dependent.","summary":"Get Autochecker extra data","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.AutocheckerExtraResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.AutocheckerExtraResponse":{"type":"object","required":["active_project","dsp","health"],"properties":{"active_project":{"$ref":"#/components/schemas/api.AutoCheckerActiveProjectExtra"},"dsp":{"$ref":"#/components/schemas/api.AutoCheckerDSPExtra"},"health":{"$ref":"#/components/schemas/api.AutoCheckerHealth"}}},"api.AutoCheckerActiveProjectExtra":{"type":"object","required":["active_environmental_condition_id","date","e2e_delay","environmental_conditions","presets","revision"],"properties":{"active_environmental_condition_id":{"type":"string","format":"uuid"},"date":{"type":"string","format":"date-time"},"e2e_delay":{"type":"integer"},"environmental_conditions":{"type":"array","items":{"$ref":"#/components/schemas/api.AutoCheckerEnvironmentalCondition"}},"presets":{"type":"array","items":{"$ref":"#/components/schemas/api.AutoCheckerPreset"}},"revision":{"type":"string"}}},"api.AutoCheckerEnvironmentalCondition":{"type":"object","required":["atmospheric_pressure","humidity_percent","id","temperature"],"properties":{"atmospheric_pressure":{"type":"number"},"humidity_percent":{"type":"number"},"id":{"type":"string","format":"uuid"},"temperature":{"type":"number"}}},"api.AutoCheckerPreset":{"type":"object","required":["beam_count","id","name"],"properties":{"beam_count":{"type":"integer"},"id":{"type":"string","format":"uuid"},"name":{"type":"string"}}},"api.AutoCheckerDSPExtra":{"type":"object","required":["beam_instances","project"],"properties":{"beam_instances":{"description":"BeamInstances in the current preset","type":"array","items":{"$ref":"#/components/schemas/api.AutoCheckerDSPBeamInstance"}},"function_groups":{"type":"array","items":{"$ref":"#/components/schemas/api.AutoCheckerFunctionGroup"}},"project":{"$ref":"#/components/schemas/api.AutoCheckerDSPProject"}}},"api.AutoCheckerDSPBeamInstance":{"type":"object","required":["auto_delay","auto_eq_md5sum","auto_gain_linear","id","user_delay","user_eq_md5sum","user_gain_linear"],"properties":{"auto_delay":{"type":"number"},"auto_eq_md5sum":{"type":"string","contentEncoding":"base64"},"auto_gain_linear":{"type":"number"},"id":{"type":"string","format":"uuid"},"user_delay":{"type":"number"},"user_eq_md5sum":{"type":"string","contentEncoding":"base64"},"user_gain_linear":{"type":"number"}}},"api.AutoCheckerFunctionGroup":{"type":"object","required":["eq_md5sum","id"],"properties":{"eq_md5sum":{"type":"string","contentEncoding":"base64"},"id":{"type":"string","format":"uuid"}}},"api.AutoCheckerDSPProject":{"type":"object","required":["eq_md5sum"],"properties":{"eq_md5sum":{"type":"string","contentEncoding":"base64"}}},"api.AutoCheckerHealth":{"type":"object","required":["arrays","summary"],"properties":{"arrays":{"description":"Filtered by active preset. Only arrays that have modules with Beams connected to it.","type":"array","items":{"$ref":"#/components/schemas/api.AutoCheckerArrayHealth"}},"summary":{"$ref":"#/components/schemas/api.AutoCheckerHealthSummary"}}},"api.AutoCheckerArrayHealth":{"type":"object","required":["combined","id","modules"],"properties":{"combined":{"$ref":"#/components/schemas/api.HealthStatus"},"id":{"type":"string","format":"uuid"},"modules":{"$ref":"#/components/schemas/api.AutoCheckerHealthPerState"}}},"api.HealthStatus":{"type":"string","enum":["unknown","okay","warning","error","critical"]},"api.AutoCheckerHealthPerState":{"type":"object","required":["critical","error","ok","unknown","warning"],"properties":{"critical":{"type":"integer"},"error":{"type":"integer"},"ok":{"type":"integer"},"unknown":{"type":"integer"},"warning":{"type":"integer"}}},"api.AutoCheckerHealthSummary":{"type":"object","required":["arrays","controllers","processors"],"properties":{"arrays":{"$ref":"#/components/schemas/api.AutoCheckerHealthBreakdown"},"controllers":{"$ref":"#/components/schemas/api.AutoCheckerHealthBreakdown"},"processors":{"$ref":"#/components/schemas/api.AutoCheckerHealthBreakdown"}}},"api.AutoCheckerHealthBreakdown":{"type":"object","required":["combined"],"properties":{"combined":{"$ref":"#/components/schemas/api.HealthStatus"},"per_state":{"$ref":"#/components/schemas/api.AutoCheckerHealthPerState"}}},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Get Autochecker main data

> Returns main information about the system for the Autochecker. Changes to this state should invalidate an Autochecker run.

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/autochecker/main":{"get":{"description":"Returns main information about the system for the Autochecker. Changes to this state should invalidate an Autochecker run.","summary":"Get Autochecker main data","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.AutocheckerMainResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.AutocheckerMainResponse":{"type":"object","required":["active_preset","active_project","dsp","routing"],"properties":{"active_preset":{"$ref":"#/components/schemas/api.AutoCheckerPreset"},"active_project":{"$ref":"#/components/schemas/api.AutoCheckerActiveProject"},"dsp":{"$ref":"#/components/schemas/api.AutoCheckerDSP"},"routing":{"$ref":"#/components/schemas/api.AutoCheckerRouting"}}},"api.AutoCheckerPreset":{"type":"object","required":["beam_count","id","name"],"properties":{"beam_count":{"type":"integer"},"id":{"type":"string","format":"uuid"},"name":{"type":"string"}}},"api.AutoCheckerActiveProject":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}}},"api.AutoCheckerDSP":{"type":"object","required":["system"],"properties":{"system":{"$ref":"#/components/schemas/api.AutoCheckerDSPSystem"}}},"api.AutoCheckerDSPSystem":{"type":"object","required":["gain_linear","mute","mute_beams","solo_beams"],"properties":{"gain_linear":{"type":"number"},"mute":{"type":"boolean"},"mute_beams":{"type":"array","items":{"type":"string"}},"solo_beams":{"type":"array","items":{"type":"string"}}}},"api.AutoCheckerRouting":{"type":"object","required":["audio_input_stream_mappings","processor_output_stream_mapping"],"properties":{"audio_input_stream_mappings":{"type":"array","items":{"$ref":"#/components/schemas/api.AutoCheckerAudioInputStreamMapping"}},"processor_output_stream_mapping":{"type":"array","items":{"$ref":"#/components/schemas/api.AutoCheckerProcessorOutputStreamMapping"}}}},"api.AutoCheckerAudioInputStreamMapping":{"type":"object","required":["audio_input_id","audio_stream_id","channel"],"properties":{"audio_input_id":{"type":"string"},"audio_stream_id":{"type":"string"},"channel":{"type":"integer"}}},"api.AutoCheckerProcessorOutputStreamMapping":{"type":"object","required":["audio_stream_channel_index","audio_stream_id","module_processor_output_mapping_id","processor_id"],"properties":{"audio_stream_channel_index":{"type":"integer"},"audio_stream_id":{"type":"string"},"module_processor_output_mapping_id":{"type":"string"},"processor_id":{"type":"string"}}},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Mute a beam

> Changes the mute state for a specific beam

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/beams/{beamID}/mute":{"put":{"description":"Changes the mute state for a specific beam","summary":"Mute a beam","parameters":[{"schema":{"type":"string"},"description":"Beam ID","name":"beamID","in":"path","required":true}],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Mute"}}},"description":"Mute","required":true}}}},"components":{"schemas":{"api.Error":{"type":"object","properties":{"message":{"type":"string"}}},"api.Mute":{"type":"object","required":["muted"],"properties":{"muted":{"type":"boolean"}}}}}}
```

## Solo beam

> Changes the solo state for a specific beam

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/beams/{beamID}/solo":{"put":{"description":"Changes the solo state for a specific beam","summary":"Solo beam","parameters":[{"schema":{"type":"string"},"description":"Beam ID","name":"beamID","in":"path","required":true}],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Solo"}}},"description":"Solo","required":true}}}},"components":{"schemas":{"api.Error":{"type":"object","properties":{"message":{"type":"string"}}},"api.Solo":{"type":"object","required":["soloed"],"properties":{"soloed":{"type":"boolean"}}}}}}
```

## Get Controllers

> Returns information about all controllers

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/controllers":{"get":{"description":"Returns information about all controllers","summary":"Get Controllers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Controllers"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.Controllers":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/api.Controller"}},"api.Controller":{"type":"object","properties":{"name":{"type":"string"}}},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Get Controller

> Returns information for a specific controller

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/controllers/{controllerID}":{"get":{"description":"Returns information for a specific controller","summary":"Get Controller","parameters":[{"schema":{"type":"string"},"description":"Controller ID","name":"controllerID","in":"path","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Controller"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"404":{"description":"Controller not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.Controller":{"type":"object","properties":{"name":{"type":"string"}}},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## GET /environmental-conditions

> Get all environmental conditions

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/environmental-conditions":{"get":{"summary":"Get all environmental conditions","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.EnvironmentalConditionsMap"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.EnvironmentalConditionsMap":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/api.EnvironmentalConditions"}},"api.EnvironmentalConditions":{"type":"object","required":["atmospheric_pressure_pascal","humidity_percentage","temperature_celsius"],"properties":{"atmospheric_pressure_pascal":{"type":"number"},"humidity_percentage":{"type":"number"},"temperature_celsius":{"type":"number"}}},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Get specific environmental conditions

> Returns information for specific environmental conditions

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/environmental-conditions/{conditionsID}":{"get":{"description":"Returns information for specific environmental conditions","summary":"Get specific environmental conditions","parameters":[{"schema":{"type":"string"},"description":"Environmental Conditions ID","name":"conditionsID","in":"path","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.EnvironmentalConditions"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"404":{"description":"Environmental conditions not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.EnvironmentalConditions":{"type":"object","required":["atmospheric_pressure_pascal","humidity_percentage","temperature_celsius"],"properties":{"atmospheric_pressure_pascal":{"type":"number"},"humidity_percentage":{"type":"number"},"temperature_celsius":{"type":"number"}}},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Get current system gain in dB

> Returns the current system gain in dB (from -120dB to 0dB).

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/gain/db":{"get":{"description":"Returns the current system gain in dB (from -120dB to 0dB).","summary":"Get current system gain in dB","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Gain"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.Gain":{"type":"object","required":["scale","value"],"properties":{"scale":{"allOf":[{"$ref":"#/components/schemas/api.GainScale"}]},"value":{"type":"number"}}},"api.GainScale":{"type":"string","enum":["linear","db"]},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Set current system gain in dB

> Changes the target gain level for the system, the values should be in dB (-120dB to 0dB)

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/gain/db":{"put":{"description":"Changes the target gain level for the system, the values should be in dB (-120dB to 0dB)","summary":"Set current system gain in dB","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Gain"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Value"}}},"description":"Gain in dB","required":true}}}},"components":{"schemas":{"api.Gain":{"type":"object","required":["scale","value"],"properties":{"scale":{"allOf":[{"$ref":"#/components/schemas/api.GainScale"}]},"value":{"type":"number"}}},"api.GainScale":{"type":"string","enum":["linear","db"]},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}},"api.Value":{"type":"object","required":["value"],"properties":{"value":{"type":"number"}}}}}}
```

## Decrease System Gain

> Decrease the target system gain by X dB

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/gain/decrease":{"put":{"description":"Decrease the target system gain by X dB","summary":"Decrease System Gain","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Gain"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Value"}}},"description":"Gain difference in dB, positive number","required":true}}}},"components":{"schemas":{"api.Gain":{"type":"object","required":["scale","value"],"properties":{"scale":{"allOf":[{"$ref":"#/components/schemas/api.GainScale"}]},"value":{"type":"number"}}},"api.GainScale":{"type":"string","enum":["linear","db"]},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}},"api.Value":{"type":"object","required":["value"],"properties":{"value":{"type":"number"}}}}}}
```

## Increase System Gain

> Increase the target system gain by X dB

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/gain/increase":{"put":{"description":"Increase the target system gain by X dB","summary":"Increase System Gain","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Gain"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Value"}}},"description":"Gain difference in dB, positive number","required":true}}}},"components":{"schemas":{"api.Gain":{"type":"object","required":["scale","value"],"properties":{"scale":{"allOf":[{"$ref":"#/components/schemas/api.GainScale"}]},"value":{"type":"number"}}},"api.GainScale":{"type":"string","enum":["linear","db"]},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}},"api.Value":{"type":"object","required":["value"],"properties":{"value":{"type":"number"}}}}}}
```

## Get current system gain in linear values

> Returns the current system gain in linear values (from 0 to 1).

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/gain/linear":{"get":{"description":"Returns the current system gain in linear values (from 0 to 1).","summary":"Get current system gain in linear values","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Gain"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.Gain":{"type":"object","required":["scale","value"],"properties":{"scale":{"allOf":[{"$ref":"#/components/schemas/api.GainScale"}]},"value":{"type":"number"}}},"api.GainScale":{"type":"string","enum":["linear","db"]},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Set current system gain in linear values

> Changes the target gain level for the system, the values should be in linear scale (0 to 1)

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/gain/linear":{"put":{"description":"Changes the target gain level for the system, the values should be in linear scale (0 to 1)","summary":"Set current system gain in linear values","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Gain"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Value"}}},"description":"Gain linear","required":true}}}},"components":{"schemas":{"api.Gain":{"type":"object","required":["scale","value"],"properties":{"scale":{"allOf":[{"$ref":"#/components/schemas/api.GainScale"}]},"value":{"type":"number"}}},"api.GainScale":{"type":"string","enum":["linear","db"]},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}},"api.Value":{"type":"object","required":["value"],"properties":{"value":{"type":"number"}}}}}}
```

## Get Modules

> Returns information about all modules.\<br>If a module is not paired, the field "name" will be an empty string.

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/modules":{"get":{"description":"Returns information about all modules.<br>If a module is not paired, the field \"name\" will be an empty string.","summary":"Get Modules","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Modules"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.Modules":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/api.Module"}},"api.Module":{"type":"object","properties":{"analog_mode_status":{"$ref":"#/components/schemas/api.AnalogModeStatus"},"blinking":{"type":"boolean"},"manufacturer":{"type":"string"},"name":{"type":"string"},"online":{"type":"boolean"},"position":{"$ref":"#/components/schemas/api.Coordinates3"},"power_status":{"allOf":[{"$ref":"#/components/schemas/api.PowerStatus"}]},"product":{"type":"string"},"type":{"type":"string"}}},"api.AnalogModeStatus":{"type":"object","properties":{"beam_groups_configured":{"type":"boolean"},"enforced":{"type":"boolean"},"fallback_engaged":{"type":"boolean"},"override_engaged":{"type":"boolean"}}},"api.Coordinates3":{"type":"object","properties":{"front_direction":{"$ref":"#/components/schemas/api.Vec3"},"position":{"$ref":"#/components/schemas/api.Vec3"},"up_direction":{"$ref":"#/components/schemas/api.Vec3"}}},"api.Vec3":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"},"z":{"type":"number"}}},"api.PowerStatus":{"type":"string","enum":["unknown","going-to-sleep","sleeping","waking-up","awake","rebooting","mixed"]},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Get Modules Summary

> Returns summary of all modules in TSV format (delimiter is \`\t\`). This includes health information, online and power statuses, software version, etc.

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/modules/summary":{"get":{"description":"Returns summary of all modules in TSV format (delimiter is `\\t`). This includes health information, online and power statuses, software version, etc.","summary":"Get Modules Summary","responses":{"200":{"description":"OK","content":{"text/tab-separated-values":{"schema":{"type":"string"}}}},"500":{"description":"Internal server error","content":{"text/tab-separated-values":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Get Module

> Returns information for a specific module.\<br>If a module is not paired, the field "name" will be an empty string.

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/modules/{moduleID}":{"get":{"description":"Returns information for a specific module.<br>If a module is not paired, the field \"name\" will be an empty string.","summary":"Get Module","parameters":[{"schema":{"type":"string"},"description":"Module ID","name":"moduleID","in":"path","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Module"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"404":{"description":"Module not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.Module":{"type":"object","properties":{"analog_mode_status":{"$ref":"#/components/schemas/api.AnalogModeStatus"},"blinking":{"type":"boolean"},"manufacturer":{"type":"string"},"name":{"type":"string"},"online":{"type":"boolean"},"position":{"$ref":"#/components/schemas/api.Coordinates3"},"power_status":{"allOf":[{"$ref":"#/components/schemas/api.PowerStatus"}]},"product":{"type":"string"},"type":{"type":"string"}}},"api.AnalogModeStatus":{"type":"object","properties":{"beam_groups_configured":{"type":"boolean"},"enforced":{"type":"boolean"},"fallback_engaged":{"type":"boolean"},"override_engaged":{"type":"boolean"}}},"api.Coordinates3":{"type":"object","properties":{"front_direction":{"$ref":"#/components/schemas/api.Vec3"},"position":{"$ref":"#/components/schemas/api.Vec3"},"up_direction":{"$ref":"#/components/schemas/api.Vec3"}}},"api.Vec3":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"},"z":{"type":"number"}}},"api.PowerStatus":{"type":"string","enum":["unknown","going-to-sleep","sleeping","waking-up","awake","rebooting","mixed"]},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Set Module Blink

> Changes the blink state for a specific module

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/modules/{moduleID}/blink":{"put":{"description":"Changes the blink state for a specific module","summary":"Set Module Blink","parameters":[{"schema":{"type":"string"},"description":"Module ID","name":"moduleID","in":"path","required":true}],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Blink"}}},"description":"Blink","required":true}}}},"components":{"schemas":{"api.Error":{"type":"object","properties":{"message":{"type":"string"}}},"api.Blink":{"type":"object","required":["on"],"properties":{"on":{"type":"boolean"}}}}}}
```

## Set Module Power State

> Changes the target power state for the module, allowed values are "on" and "sleep"

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/modules/{moduleID}/power":{"put":{"description":"Changes the target power state for the module, allowed values are \"on\" and \"sleep\"","summary":"Set Module Power State","parameters":[{"schema":{"type":"string"},"description":"Module ID","name":"moduleID","in":"path","required":true}],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Power"}}},"description":"Power","required":true}}}},"components":{"schemas":{"api.Error":{"type":"object","properties":{"message":{"type":"string"}}},"api.Power":{"type":"object","required":["target"],"properties":{"target":{"allOf":[{"$ref":"#/components/schemas/api.PowerTarget"}]}}},"api.PowerTarget":{"type":"string","enum":["unknown","on","sleep"]}}}}
```

## Get System Mute

> Returns the system mute state

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/mute":{"get":{"description":"Returns the system mute state","summary":"Get System Mute","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Mute"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.Mute":{"type":"object","required":["muted"],"properties":{"muted":{"type":"boolean"}}},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Set System Mute

> Changes the system mute state

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/mute":{"put":{"description":"Changes the system mute state","summary":"Set System Mute","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Mute"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Mute"}}},"description":"Mute","required":true}}}},"components":{"schemas":{"api.Mute":{"type":"object","required":["muted"],"properties":{"muted":{"type":"boolean"}}},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Get Power State

> Returns the target power state for the system

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/power":{"get":{"description":"Returns the target power state for the system","summary":"Get Power State","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.SystemPower"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.SystemPower":{"type":"object","required":["system"],"properties":{"system":{"allOf":[{"$ref":"#/components/schemas/api.PowerTarget"}]}}},"api.PowerTarget":{"type":"string","enum":["unknown","on","sleep"]},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Set Power State

> Changes the target power state for the system, allowed values are "on" and "sleep"

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/power":{"put":{"description":"Changes the target power state for the system, allowed values are \"on\" and \"sleep\"","summary":"Set Power State","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.SystemPower"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.SystemPower"}}},"description":"Power","required":true}}}},"components":{"schemas":{"api.SystemPower":{"type":"object","required":["system"],"properties":{"system":{"allOf":[{"$ref":"#/components/schemas/api.PowerTarget"}]}}},"api.PowerTarget":{"type":"string","enum":["unknown","on","sleep"]},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Get all Presets

> Returns information for all presets

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/presets":{"get":{"description":"Returns information for all presets","summary":"Get all Presets","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Presets"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.Presets":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/api.Preset"}},"api.Preset":{"type":"object","properties":{"beams":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/api.Beam"}},"name":{"type":"string"}}},"api.Beam":{"type":"object","properties":{"beam_type":{"allOf":[{"$ref":"#/components/schemas/api.BeamType"}]},"mute":{"type":"boolean"},"name":{"type":"string"},"solo":{"type":"boolean"}}},"api.BeamType":{"type":"string","enum":["coverage-beam","optimized-virtual-source","virtual-source","parametric-beam","generic-beam","generic-source-config"]},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Get Preset

> Returns information for a specific preset

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/presets/{presetID}":{"get":{"description":"Returns information for a specific preset","summary":"Get Preset","parameters":[{"schema":{"type":"string"},"description":"Preset ID","name":"presetID","in":"path","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Preset"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"404":{"description":"Preset not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.Preset":{"type":"object","properties":{"beams":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/api.Beam"}},"name":{"type":"string"}}},"api.Beam":{"type":"object","properties":{"beam_type":{"allOf":[{"$ref":"#/components/schemas/api.BeamType"}]},"mute":{"type":"boolean"},"name":{"type":"string"},"solo":{"type":"boolean"}}},"api.BeamType":{"type":"string","enum":["coverage-beam","optimized-virtual-source","virtual-source","parametric-beam","generic-beam","generic-source-config"]},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Get Processors

> Returns information about all processors

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/processors":{"get":{"description":"Returns information about all processors","summary":"Get Processors","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Processors"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.Processors":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/api.Processor"}},"api.Processor":{"type":"object","properties":{"active_pairing_physical_processor":{"type":"string"},"backup_pairing_physical_processor":{"type":"string"},"main_pairing_physical_processor":{"type":"string"},"name":{"type":"string"},"type":{"allOf":[{"$ref":"#/components/schemas/api.ProcessorType"}]}}},"api.ProcessorType":{"type":"string","enum":["XR5610"]},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Get Processor

> Returns information for a specific processor

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/processors/{processorID}":{"get":{"description":"Returns information for a specific processor","summary":"Get Processor","parameters":[{"schema":{"type":"string"},"description":"Processor ID","name":"processorID","in":"path","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Processor"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"404":{"description":"Processor not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.Processor":{"type":"object","properties":{"active_pairing_physical_processor":{"type":"string"},"backup_pairing_physical_processor":{"type":"string"},"main_pairing_physical_processor":{"type":"string"},"name":{"type":"string"},"type":{"allOf":[{"$ref":"#/components/schemas/api.ProcessorType"}]}}},"api.ProcessorType":{"type":"string","enum":["XR5610"]},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Set Processor Active Pairing

> Changes the target active pairing for a processor. The pairing is specified by a physical processor ID

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/processors/{processorID}/active-pairing":{"patch":{"description":"Changes the target active pairing for a processor. The pairing is specified by a physical processor ID","summary":"Set Processor Active Pairing","parameters":[{"schema":{"type":"string"},"description":"Processor ID","name":"processorID","in":"path","required":true}],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.ProcessorActivePairing"}}},"description":"Active pairing","required":true}}}},"components":{"schemas":{"api.Error":{"type":"object","properties":{"message":{"type":"string"}}},"api.ProcessorActivePairing":{"type":"object","properties":{"physical_id":{"type":"string"}}}}}}
```

## Get Spaces

> Returns information about all physical spaces in the venue

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/spaces":{"get":{"description":"Returns information about all physical spaces in the venue","summary":"Get Spaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Spaces"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.Spaces":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/api.Space"}},"api.Space":{"type":"object","properties":{"active_environmental_conditions_id":{"type":"string","format":"uuid"},"active_preset_id":{"type":"string","format":"uuid"},"environmental_conditions":{"$ref":"#/components/schemas/api.EnvironmentalConditions"},"name":{"type":"string"},"preset_ids":{"type":"array","items":{"type":"string"}}}},"api.EnvironmentalConditions":{"type":"object","required":["atmospheric_pressure_pascal","humidity_percentage","temperature_celsius"],"properties":{"atmospheric_pressure_pascal":{"type":"number"},"humidity_percentage":{"type":"number"},"temperature_celsius":{"type":"number"}}},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Get Space

> Returns information for a specific physical space in the venue

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/spaces/{spaceID}":{"get":{"description":"Returns information for a specific physical space in the venue","summary":"Get Space","parameters":[{"schema":{"type":"string"},"description":"Space ID","name":"spaceID","in":"path","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Space"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"404":{"description":"Space not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.Space":{"type":"object","properties":{"active_environmental_conditions_id":{"type":"string","format":"uuid"},"active_preset_id":{"type":"string","format":"uuid"},"environmental_conditions":{"$ref":"#/components/schemas/api.EnvironmentalConditions"},"name":{"type":"string"},"preset_ids":{"type":"array","items":{"type":"string"}}}},"api.EnvironmentalConditions":{"type":"object","required":["atmospheric_pressure_pascal","humidity_percentage","temperature_celsius"],"properties":{"atmospheric_pressure_pascal":{"type":"number"},"humidity_percentage":{"type":"number"},"temperature_celsius":{"type":"number"}}},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Change details of a space

> This endpoint can be used to modify details of a physical space in the venue.\
> \
> \### Environmental Conditions\
> \
> To set the environmental conditions for a space make a PATCH request to \`/spaces/{spaceID}\` with a body that contains the \`environmental\_conditions\` key,\
> like in the following example:\
> \
> \`\`\`\
> {\
> &#x20; "environmental\_conditions": {\
> &#x20;   "atmospheric\_pressure\_pascal": 101345,\
> &#x20;   "humidity\_percentage": 34,\
> &#x20;   "temperature\_celsius": 23.4\
> &#x20; }\
> }\
> \`\`\`\
> \
> When environmental conditions are submitted, the system will persist them.\
> To activate and identify the closest matching set of stored conditions for\
> the currently selected preset you have to apply the environmental condition\
> with a post request to \`/spaces/{spaceID}/environmental-conditions/apply\`.\
> \
> \### Active Preset\
> \
> The following request body changes the active preset of the space:\
> \`\`\`\
> {\
> &#x20; "active\_preset\_id": "7aa69f98-b697-11ed-b9c5-b445062a7e37"\
> }\
> \`\`\`\
> \
> Note that the ID used here must match one of the presets listed for the space, or the\
> request will get a response of \`400 Bad Request\`.\
> \
> A change of the active preset will trigger a match of the environmental conditions.<br>

````json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/spaces/{spaceID}":{"patch":{"description":"This endpoint can be used to modify details of a physical space in the venue.\n\n### Environmental Conditions\n\nTo set the environmental conditions for a space make a PATCH request to `/spaces/{spaceID}` with a body that contains the `environmental_conditions` key,\nlike in the following example:\n\n```\n{\n  \"environmental_conditions\": {\n    \"atmospheric_pressure_pascal\": 101345,\n    \"humidity_percentage\": 34,\n    \"temperature_celsius\": 23.4\n  }\n}\n```\n\nWhen environmental conditions are submitted, the system will persist them.\nTo activate and identify the closest matching set of stored conditions for\nthe currently selected preset you have to apply the environmental condition\nwith a post request to `/spaces/{spaceID}/environmental-conditions/apply`.\n\n### Active Preset\n\nThe following request body changes the active preset of the space:\n```\n{\n  \"active_preset_id\": \"7aa69f98-b697-11ed-b9c5-b445062a7e37\"\n}\n```\n\nNote that the ID used here must match one of the presets listed for the space, or the\nrequest will get a response of `400 Bad Request`.\n\nA change of the active preset will trigger a match of the environmental conditions.\n","summary":"Change details of a space","parameters":[{"schema":{"type":"string"},"description":"Space ID","name":"spaceID","in":"path","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Space"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.SpacePatch"}}},"description":"Space","required":true}}}},"components":{"schemas":{"api.Space":{"type":"object","properties":{"active_environmental_conditions_id":{"type":"string","format":"uuid"},"active_preset_id":{"type":"string","format":"uuid"},"environmental_conditions":{"$ref":"#/components/schemas/api.EnvironmentalConditions"},"name":{"type":"string"},"preset_ids":{"type":"array","items":{"type":"string"}}}},"api.EnvironmentalConditions":{"type":"object","required":["atmospheric_pressure_pascal","humidity_percentage","temperature_celsius"],"properties":{"atmospheric_pressure_pascal":{"type":"number"},"humidity_percentage":{"type":"number"},"temperature_celsius":{"type":"number"}}},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}},"api.SpacePatch":{"type":"object","properties":{"active_preset_id":{"type":"string","format":"uuid"},"environmental_conditions":{"$ref":"#/components/schemas/api.EnvironmentalConditions"}}}}}}
````

## Apply the stored environmental conditions for a space

> This endpoint is used to apply the environmental conditions in a space.\
> The algorithm will identify the closest set of stored conditions for the current\
> active preset and will activate those.\
> This might result in an audible effect, glitch.<br>

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/spaces/{spaceID}/environmental-conditions/apply":{"post":{"description":"This endpoint is used to apply the environmental conditions in a space.\nThe algorithm will identify the closest set of stored conditions for the current\nactive preset and will activate those.\nThis might result in an audible effect, glitch.\n","summary":"Apply the stored environmental conditions for a space","parameters":[{"schema":{"type":"string"},"description":"Space ID","name":"spaceID","in":"path","required":true}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"404":{"description":"Space not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Get Cluster Readiness state

> Returns status 200 if the Kubernetes cluster is ready, and status 5XX otherwise

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/status/cluster/ready":{"get":{"description":"Returns status 200 if the Kubernetes cluster is ready, and status 5XX otherwise","summary":"Get Cluster Readiness state","responses":{"200":{"description":"Cluster is ready"},"500":{"description":"Internal server error"},"503":{"description":"Cluster is not ready"}}}}}}
```

## Get Health

> Get health information for the system, all controllers and all modules

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/status/health":{"get":{"description":"Get health information for the system, all controllers and all modules","summary":"Get Health","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Health"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.Health":{"type":"object","properties":{"arrays":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/api.ArrayHealth"}},"controllers":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/api.ControllerHealth"}},"modules":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/api.ModuleHealth"}},"processors":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/api.ProcessorExtendedHealth"}},"system":{"$ref":"#/components/schemas/api.SystemHealth"}}},"api.ArrayHealth":{"type":"object","properties":{"message":{"description":"currently not used and left empty","type":"string"},"status":{"description":"aggregated health status of the array","allOf":[{"$ref":"#/components/schemas/api.HealthStatus"}]}}},"api.HealthStatus":{"type":"string","enum":["unknown","okay","warning","error","critical"]},"api.ControllerHealth":{"type":"object","properties":{"hardware_status":{"description":"status of hardware components (hard drives, fans, PSUs, etc.)","allOf":[{"$ref":"#/components/schemas/api.HealthStatus"}]},"message":{"description":"currently not used and left empty","type":"string"},"network_status":{"description":"status of network setup (network interfaces, NTP, internet connection, etc.)","allOf":[{"$ref":"#/components/schemas/api.HealthStatus"}]},"status":{"description":"combined health status","allOf":[{"$ref":"#/components/schemas/api.HealthStatus"}]}}},"api.ModuleHealth":{"type":"object","properties":{"hardware_status":{"description":"status of hardware components (amplifiers, drivers, PSUs, etc.)","allOf":[{"$ref":"#/components/schemas/api.HealthStatus"}]},"message":{"description":"currently not used and left empty","type":"string"},"network_status":{"description":"status of network setup (network interfaces, NTP, PTP, etc.)","allOf":[{"$ref":"#/components/schemas/api.HealthStatus"}]},"status":{"description":"combined health status","allOf":[{"$ref":"#/components/schemas/api.HealthStatus"}]}}},"api.ProcessorExtendedHealth":{"type":"object","properties":{"health":{"$ref":"#/components/schemas/api.ProcessorHealth"},"pairing":{"type":"string","format":"uuid"}}},"api.ProcessorHealth":{"type":"object","properties":{"hardware_status":{"description":"status of hardware components (hard drives, fans, PSUs, etc.)","allOf":[{"$ref":"#/components/schemas/api.HealthStatus"}]},"message":{"description":"currently not used and left empty","type":"string"},"network_status":{"description":"status of network setup (network interfaces, NTP, internet connection, etc.)","allOf":[{"$ref":"#/components/schemas/api.HealthStatus"}]},"software_status":{"description":"status of software setup (configuration and audio engine state, CPU usage,  etc.)","allOf":[{"$ref":"#/components/schemas/api.HealthStatus"}]},"status":{"description":"combined health status","allOf":[{"$ref":"#/components/schemas/api.HealthStatus"}]}}},"api.SystemHealth":{"type":"object","properties":{"message":{"description":"currently not used and left empty","type":"string"},"status":{"description":"aggregated health status of the system","allOf":[{"$ref":"#/components/schemas/api.HealthStatus"}]}}},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## Get Module Power States

> Get power information for all modules

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/status/power":{"get":{"description":"Get power information for all modules","summary":"Get Module Power States","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.SystemPowerStatus"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api.Error"}}}}}}}},"components":{"schemas":{"api.SystemPowerStatus":{"type":"object","properties":{"modules":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/api.ModulePowerStatus"}}}},"api.ModulePowerStatus":{"type":"object","properties":{"status":{"allOf":[{"$ref":"#/components/schemas/api.PowerStatus"}]}}},"api.PowerStatus":{"type":"string","enum":["unknown","going-to-sleep","sleeping","waking-up","awake","rebooting","mixed"]},"api.Error":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## GET /ws/gain/db

> Stream System Gain updates, dB scale

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"tags":[{"description":"Get updates via WebSockets","name":"stream"}],"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/ws/gain/db":{"get":{"tags":["stream"],"summary":"Stream System Gain updates, dB scale","responses":{"200":{"description":"OK"}}}}}}
```

## GET /ws/gain/linear

> Stream System Gain updates, linear scale

```json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"tags":[{"description":"Get updates via WebSockets","name":"stream"}],"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/ws/gain/linear":{"get":{"tags":["stream"],"summary":"Stream System Gain updates, linear scale","responses":{"200":{"description":"OK"}}}}}}
```

## Stream Mute Updates

> This endpoint can be used to stream updates about the system mute state through WebSockets.\
> The payload returned is the same as in \`GET /mute\`.\
> \
> Find a Javascript client to use use this endpoint below.\
> \
> \`\`\`js\
> const WebSocket = require('ws');\
> \
> const client = new WebSocket('ws\://localhost:6789/ws/mute');\
> client.on('message', msg => console.log("Mute update:" + msg.toString()));\
> \`\`\`

````json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"tags":[{"description":"Get updates via WebSockets","name":"stream"}],"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/ws/mute":{"get":{"description":"This endpoint can be used to stream updates about the system mute state through WebSockets.\nThe payload returned is the same as in `GET /mute`.\n\nFind a Javascript client to use use this endpoint below.\n\n```js\nconst WebSocket = require('ws');\n\nconst client = new WebSocket('ws://localhost:6789/ws/mute');\nclient.on('message', msg => console.log(\"Mute update:\" + msg.toString()));\n```","tags":["stream"],"summary":"Stream Mute Updates","responses":{"200":{"description":"OK"}}}}}}
````

## Stream Power Updates

> This endpoint can be used to stream updates about the system power state through WebSockets.\
> The payload returned is the same as in \`GET /power\`.\
> \
> Find a Javascript client to use use this endpoint below.\
> \
> \`\`\`js\
> const WebSocket = require('ws');\
> \
> const client = new WebSocket('ws\://localhost:6789/ws/power');\
> client.on('message', msg => console.log("Power update:" + msg.toString()));\
> \`\`\`

````json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"tags":[{"description":"Get updates via WebSockets","name":"stream"}],"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/ws/power":{"get":{"description":"This endpoint can be used to stream updates about the system power state through WebSockets.\nThe payload returned is the same as in `GET /power`.\n\nFind a Javascript client to use use this endpoint below.\n\n```js\nconst WebSocket = require('ws');\n\nconst client = new WebSocket('ws://localhost:6789/ws/power');\nclient.on('message', msg => console.log(\"Power update:\" + msg.toString()));\n```","tags":["stream"],"summary":"Stream Power Updates","responses":{"200":{"description":"OK"}}}}}}
````

## Stream processor updates

> This endpoint can be used to stream updates about virtual processors through WebSockets.\
> The payload returned is the same as in \`GET /processors\` but only the processor that has\
> changed will be populated.\
> \
> Find a Javascript client to use use this endpoint below.\
> \
> \`\`\`js\
> const WebSocket = require('ws');\
> \
> const client = new WebSocket('ws\://localhost:6789/ws/processors');\
> client.on('message', msg => console.log("Processors update:" + msg.toString()));\
> \`\`\`<br>

````json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"tags":[{"description":"Get updates via WebSockets","name":"stream"}],"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/ws/processors":{"get":{"description":"This endpoint can be used to stream updates about virtual processors through WebSockets.\nThe payload returned is the same as in `GET /processors` but only the processor that has\nchanged will be populated.\n\nFind a Javascript client to use use this endpoint below.\n\n```js\nconst WebSocket = require('ws');\n\nconst client = new WebSocket('ws://localhost:6789/ws/processors');\nclient.on('message', msg => console.log(\"Processors update:\" + msg.toString()));\n```\n","tags":["stream"],"summary":"Stream processor updates","responses":{"200":{"description":"OK"}}}}}}
````

## Stream Spaces Updates

> This endpoint can be used to stream updates about spaces through WebSockets.\
> The payload returned is the same as in \`GET /spaces\` but only the space that has\
> changed will be populated.\
> \
> Find a Javascript client to use use this endpoint below.\
> \
> \`\`\`js\
> const WebSocket = require('ws');\
> \
> const client = new WebSocket('ws\://localhost:6789/ws/spaces');\
> client.on('message', msg => console.log("Spaces update:" + msg.toString()));\
> \`\`\`

````json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"tags":[{"description":"Get updates via WebSockets","name":"stream"}],"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/ws/spaces":{"get":{"description":"This endpoint can be used to stream updates about spaces through WebSockets.\nThe payload returned is the same as in `GET /spaces` but only the space that has\nchanged will be populated.\n\nFind a Javascript client to use use this endpoint below.\n\n```js\nconst WebSocket = require('ws');\n\nconst client = new WebSocket('ws://localhost:6789/ws/spaces');\nclient.on('message', msg => console.log(\"Spaces update:\" + msg.toString()));\n```","tags":["stream"],"summary":"Stream Spaces Updates","responses":{"200":{"description":"OK"}}}}}}
````

## Stream System Health

> This endpoint can be used to stream system health status information through WebSockets.\
> The payload returned is the same as in \`GET /status/health\` but only the fields that have\
> changed will be populated.\
> \
> Upon reception of a message through the WebSocket, a full system status can be\
> retrieved by issuing a \`GET\` request to \`/status/health\`.\
> \
> Find a Javascript client to use use this endpoint below.\
> \
> \`\`\`js\
> const WebSocket = require('ws');\
> \
> const client = new WebSocket('ws\://localhost:6789/ws/status/health');\
> client.on('message', msg => console.log("Health status update:" + msg.toString()));\
> \`\`\`<br>

````json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"tags":[{"description":"Get updates via WebSockets","name":"stream"}],"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/ws/status/health":{"get":{"description":"This endpoint can be used to stream system health status information through WebSockets.\nThe payload returned is the same as in `GET /status/health` but only the fields that have\nchanged will be populated.\n\nUpon reception of a message through the WebSocket, a full system status can be\nretrieved by issuing a `GET` request to `/status/health`.\n\nFind a Javascript client to use use this endpoint below.\n\n```js\nconst WebSocket = require('ws');\n\nconst client = new WebSocket('ws://localhost:6789/ws/status/health');\nclient.on('message', msg => console.log(\"Health status update:\" + msg.toString()));\n```\n","tags":["stream"],"summary":"Stream System Health","responses":{"200":{"description":"OK"}}}}}}
````

## Stream power information for all modules

> This endpoint can be used to stream system power status information through WebSockets.\
> The payload returned is the same as in \`GET /status/power\` but only the fields that have\
> changed will be populated.\
> \
> Upon reception of a message through the Websocket, a full system status can be\
> retrieved by issuing a \`GET\` request to \`/status/power\`.\
> \
> Find a Javascript client to use use this endpoint below.\
> \
> \`\`\`js\
> const WebSocket = require('ws');\
> \
> const client = new WebSocket('ws\://localhost:6789/ws/status/power');\
> client.on('message', msg => console.log("Power status update:" + msg.toString()));\
> \`\`\`

````json
{"openapi":"3.1.1","info":{"title":"HOLOPLOT Public System API","version":"1.5.1"},"tags":[{"description":"Get updates via WebSockets","name":"stream"}],"servers":[{"url":"http://ABC-1234.local/psapi"}],"paths":{"/ws/status/power":{"get":{"description":"This endpoint can be used to stream system power status information through WebSockets.\nThe payload returned is the same as in `GET /status/power` but only the fields that have\nchanged will be populated.\n\nUpon reception of a message through the Websocket, a full system status can be\nretrieved by issuing a `GET` request to `/status/power`.\n\nFind a Javascript client to use use this endpoint below.\n\n```js\nconst WebSocket = require('ws');\n\nconst client = new WebSocket('ws://localhost:6789/ws/status/power');\nclient.on('message', msg => console.log(\"Power status update:\" + msg.toString()));\n```","tags":["stream"],"summary":"Stream power information for all modules","responses":{"200":{"description":"OK"}}}}}}
````


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.holoplot.com/holoplot-api/documentation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
