nexSoft exposes a FastAPI application used for JSON ingestion/export, configuration UI, logs, licensing, DICOM configuration tests, MQTT tests, and documentation pages.
The route list below is based on nexsoft/api.py.
API-key protected routes use the Authorization header:
Authorization: APIKey <key>
nexSoft uses permission-specific key verification through verify_key_factory(...). Settings routes require a settings key. Some local service routes require localhost or a signed session.
The web UI login uses:
GET /auth/loginPOST /auth/loginPOST /auth/logoutConfiguration page Basic Auth can also be enabled with environment variables:
CONFIG_USERCONFIG_PASS/postjson/Receives a full NX-JSON payload and dispatches it according to nx-data.endPoint.
Request body:
{
"nx-data": {
"header": {
"jsonVersion": "0.1.5",
"encoding": "UTF-8",
"jsonStylesheetType": "nexio"
},
"entryPoint": "",
"endPoint": ["API:json"],
"dataset": []
}
}
Behavior:
API:POST_JSON datalog entry;Response:
/getjson/Returns the latest JSON stored for API retrieval, then consumes it.
Behavior:
latestJSON exists, returns it and resets latestJSON to None;204 with detail No data available yet.Use this route for polling workflows where another interface has sent data to API:json.
/genkeysGenerates new API keys.
Access:
Response:
{
"read": "...",
"write": "...",
"setting": "..."
}
Exact key names depend on the nexsoft.auth.KEYS implementation.
/getkeysReturns current API keys.
Access:
| Method | Path | Purpose |
|---|---|---|
| GET | / |
Home UI. |
| GET | /home |
Home UI. |
| GET | /ui |
Redirects to /ui/home. |
| GET | /ui/{page} |
Renders a registered UI page. |
| GET | /docs |
Local Swagger UI. |
| GET | /docs-extra |
Markdown documentation portal. |
| GET | /docs-extra/{doc} |
Render one Markdown doc from docs/. |
| GET | /version |
Version/build information. |
/config/test/webhookTests a webhook destination without saving it.
Access:
Request body:
{
"entry": {
"uri": "https://example.com/webhook",
"token": "optional authorization token"
}
}
Behavior:
entry.uri;Content-Type: application/json;Authorization: <token> when provided;502 if the destination fails or returns an error.Success response:
{
"status": "ok",
"http_status": 200,
"reason": "OK"
}
/config/test/mqttTests MQTT broker connectivity without saving it.
Access:
Request body:
{
"config": {
"address": "broker.example.com",
"port": 1883,
"client_id": "optional",
"transport": "tcp",
"tls": false,
"username": "",
"password": ""
}
}
Success response:
{
"status": "ok",
"message": "Connection Accepted."
}
/logsDownloads combined log content as nexsoft.log.
/logsClears log files while recreating the current day log file.
/system/serial-portsReturns detected serial ports from a small known list.
Response:
{
"ports": ["/dev/ttyUSB0"]
}
| Method | Path | Purpose |
|---|---|---|
| GET | /license/interfaces |
Returns available lockable interfaces. |
| GET | /license/trial/{interface} |
Activates a trial for one interface. |
| GET | /license/deactivate/{interface} |
Deactivates a license. |
| GET | /license/status |
Returns license status. |
Valid interface path values:
nfceyecarddicomallPOST /postjson/ does not choose the output destination itself. It reads the nx-data.endPoint array and dispatches to configured interfaces.
Common examples:
"endPoint": ["API:json"]
"endPoint": ["DICOM:local_orthanc"]
"endPoint": ["webHook:emr", "MQTT:refraction/out"]
GET /getjson/ uses HTTP 204 when no data is available.422 for incomplete request data.502 for external destination failures.403.