System
The system endpoints expose diagnostic information about the running Elements Hub instance and its host machine. They are useful during deployment, support sessions, and for verifying that a client's error-handling path works end-to-end.
Endpoints Overview
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/system/version |
Hub version and environment information |
| GET | /v1/system/checks |
Run the built-in host system checks |
| POST | /v1/system/errors/raise-exception |
Trigger a controlled error response (testing only) |
Version
GET /v1/system/version
curl http://localhost:42042/v1/system/version
Returns the version of the running hub and which environment it was built for:
{
"version": "1.7.0+abc1234",
"environment": "release",
"componentVersions": {}
}
| Field | Type | Description |
|---|---|---|
version |
string | Hub version including build metadata. |
environment |
string | Build category (e.g. release, debug, nightly). |
componentVersions |
object | Map of internal component → version. May be empty in production builds. |
If
versionreturns"###version###"andenvironmentreturns"###category###", you are running a build whose version placeholders were not replaced — typically a developer build straight from source. Treat this as "unversioned" rather than a real release.
System Checks
GET /v1/system/checks
curl http://localhost:42042/v1/system/checks
Runs a short series of host checks and returns the aggregated result:
{
"passed": true,
"runs": [
{
"runIdentifier": 1,
"status": "Passed",
"details": "USB Controller Version 3"
},
{
"runIdentifier": 2,
"status": "Passed",
"details": "Minimum Memory"
},
{
"runIdentifier": 3,
"status": "Passed",
"details": "Free Memory"
}
]
}
Checks Performed
| Check | Requirement | Severity |
|---|---|---|
| USB Controller Version 3 | At least one xHCI (USB 3.x) controller is present. | Error |
| Minimum Memory | The host has at least 8 GB of installed RAM. | Error |
| Free Memory | At least 2 GB of RAM is currently free. | Warning |
passed reflects the aggregate: it is true only if every error-severity check passed. Warning-severity checks contribute to the per-run status but do not flip the top-level passed flag.
When to Run the Checks
- After installation, before connecting hardware for the first time.
- When a support session starts — the output is small and pastes cleanly into a ticket.
- As an automated readiness probe in container/VM deployments.
Triggering a Controlled Error
POST /v1/system/errors/raise-exception?errorType=device
curl -X POST "http://localhost:42042/v1/system/errors/raise-exception?errorType=device"
Used to verify that a client correctly parses and reacts to `ErrorInfo` responses. The endpoint deliberately fails with the chosen error category.
errorType |
Triggers |
|---|---|
device |
A device-layer exception (ErrorInfo with errorCode = E31). |
notfound |
An HTTP 404 (ErrorInfo with errorCode = E31). |
unhandled |
An uncaught exception, exercising the global exception handler. |
| anything else | HTTP 400 (ErrorInfo with errorCode = E31). |
Use this in integration tests to ensure your client switches on errorCode and surfaces the message correctly. See Error Handling for the full response format.
This endpoint exists exclusively for testing. Do not call it from production code paths.
Best Practices
- Cache the
versionresponse on the client; it does not change at runtime. - Run
/checksonce at start-up and surface failures to the operator before allowing measurements. Use it in CI to verify that test hosts meet the minimum requirements. - Pin client behaviour to
errorCodevalues returned by the test endpoint — if you can handleE31correctly, the rest of the error surface tends to fall in line.