# Device health

## 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"}}}}}}
```

## 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"}}}}}}
````


---

# 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/device-health.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.
