Skip to main content

Aurora API reference

Aurora is a dashboard API for tenants, production lines, machines, DataStone edge PCs, dashboards, API keys, pairing, WebRTC control, and billing.

Base URL and authentication

API familyBase pathAuthentication
Browser/session API/api/tenants/..., /api/dashboard/..., /api/user-preferencesSigned-in user session.
API-key API/api/lines, /api/machines, /api/edgepcs, /api/api-keysAuthorization: Bearer <API_KEY> or X-API-Key: <API_KEY>.
DataStone host API/api/webrtc/...Pairing token or signed host request, depending on endpoint.

Mutating browser/session API calls are protected by same-origin CSRF checks. /api/webrtc/registrations and /api/webrtc/host-session are exempt so DataStone hosts can call them directly.

Error responses use JSON:

{
"error": "Forbidden."
}

Common status codes are 400 for invalid input, 401 for missing or invalid auth, 403 for insufficient permission or API-key restrictions, 404 for missing resources, 409 for conflicts, 429 for API-key rate limits, and 503 when a required service is not configured.

API keys

API-key authenticated endpoints accept either:

Authorization: Bearer <API_KEY>

or:

X-API-Key: <API_KEY>

API-key responses include these rate-limit headers when a key has a limit configured:

HeaderDescription
RateLimit-LimitAllowed requests per window.
RateLimit-RemainingRemaining requests in the current window.
RateLimit-ResetUNIX timestamp when the current window resets.

Supported managed scopes:

ScopeAllows
line:read, line:writeRead or manage lines.
machine:read, machine:writeRead or manage machines.
edgepc:read, edgepc:writeRead or manage DataStone edge PCs.
device:readRead proxied DataStone devices.
data:readRead proxied DataStone data streams, latest values, and statistics.

API keys may include managed restrictions:

{
"lineIds": [1],
"machineIds": [10],
"edgePcIds": [20]
}

Aurora also understands lower-level restrictions such as deviceIds and dataIds when filtering proxied DataStone responses.

Tenant/session endpoints

These endpoints require a signed-in user and tenant permissions.

MethodPathPermissionDescription
GET/api/tenantsauthenticatedList tenants visible to the user. Admins receive all tenants.
POST/api/tenantsany tenant:writeCreate a tenant with a name string.
GET/api/tenants/:idtenant:readRetrieve a tenant.
PATCH/api/tenants/:idtenant:writeRename a tenant.
DELETE/api/tenants/:idtenant:writeDelete a tenant.
GET/api/user-preferencesauthenticatedRead user preferences.
PUT/api/user-preferencesauthenticated plus tenant read for selected tenantUpdate active_tenant_id to a tenant ID or null.

Lines

Session endpoints:

MethodPathPermissionDescription
GET/api/tenants/:tenantId/linesline:readList tenant lines.
POST/api/tenants/:tenantId/linesline:writeCreate a line with a name string.
PATCH/api/tenants/:tenantId/lines/:lineIdline:writeRename a line.
DELETE/api/tenants/:tenantId/lines/:lineIdline:writeDelete a line.

API-key endpoints:

MethodPathScopeDescription
GET/api/linesline:readList allowed lines.
POST/api/linesline:writeCreate a line. Disallowed when the key is restricted to specific line IDs.
GET/api/lines/:lineIdline:readRetrieve a line.
PATCH/api/lines/:lineIdline:writeRename a line.
DELETE/api/lines/:lineIdline:writeDelete a line.

Machines

Session endpoints:

MethodPathPermissionDescription
GET/api/tenants/:tenantId/machinesmachine:readList machines.
POST/api/tenants/:tenantId/machinesmachine:writeCreate a machine. Accepts JSON or multipart/form-data with optional image.
PATCH/api/tenants/:tenantId/machines/:machineIdmachine:writeUpdate name, line group, or image.
DELETE/api/tenants/:tenantId/machines/:machineIdmachine:writeDelete a machine.
GET/api/tenants/:tenantId/machine-images/:fileNamemachine:readRead a private machine image.
GET/api/tenants/:tenantId/machines/:machineId/aasxmachine:readDownload an AASX export.
POST/api/tenants/:tenantId/machines/:machineId/aasxmachine:readDownload an AASX export using supplied edge catalog seeds.

Create machine JSON:

{
"name": "Compressor 1",
"group": 2,
"image_url": "/api/tenants/1/machine-images/example.png"
}

API-key endpoints:

MethodPathScopeDescription
GET/api/machinesmachine:readList allowed machines.
POST/api/machinesmachine:writeCreate a machine with name, line_id or group, and optional image_url.
GET/api/machines/:machineIdmachine:readRetrieve a machine.
PATCH/api/machines/:machineIdmachine:writeUpdate a machine.
DELETE/api/machines/:machineIdmachine:writeDelete a machine.

DataStone edge PCs

Session endpoints:

MethodPathPermissionDescription
GET/api/tenants/:tenantId/edgepcsedgepc:readList DataStones.
POST/api/tenants/:tenantId/edgepcsedgepc:writeCreate a DataStone.
GET/api/tenants/:tenantId/edgepcs/:edgeIdedgepc:readRetrieve a DataStone.
PATCH/api/tenants/:tenantId/edgepcs/:edgeIdedgepc:writeUpdate a DataStone.
DELETE/api/tenants/:tenantId/edgepcs/:edgeIdedgepc:writeDelete a DataStone.

Payload fields for create/update:

FieldRequiredDescription
nameYesDisplay name.
base_urlYes on createDataStone base URL. Update preserves current URL when empty.
network_typeNoNetwork access type. Empty create uses the default network type.
machine_idNoAssociated machine ID or null.
api_keyNoDataStone API key used by Aurora for proxy calls. Empty update clears the key.
webrtc_host_idNoHost ID for P2P WebRTC.
signal_analysis_enabledNoSession API only. Enables signal analysis flag.

API-key endpoints:

MethodPathScopeDescription
GET/api/edgepcsedgepc:readList allowed DataStones.
POST/api/edgepcsedgepc:writeCreate a DataStone.
GET/api/edgepcs/:edgeIdedgepc:readRetrieve a DataStone.
PATCH/api/edgepcs/:edgeIdedgepc:writeUpdate a DataStone.
DELETE/api/edgepcs/:edgeIdedgepc:writeDelete a DataStone.

Proxied DataStone data

Aurora can proxy DataStone API calls through a registered edge PC. API-key endpoints are scoped to the caller tenant and filtered by API-key restrictions.

MethodPathScopeDescription
GET/api/edgepcs/:edgeId/devicesdevice:readProxy DataStone /api/device/.
GET/api/edgepcs/:edgeId/devices/:deviceId/datadata:readProxy and filter DataStone data streams for one device.
GET/api/edgepcs/:edgeId/datadata:readProxy DataStone /api/data/.
GET/api/edgepcs/:edgeId/data/:dataIddata:readProxy one DataStone data stream.
GET/api/edgepcs/:edgeId/data/:dataId/latestdata:readProxy latest value endpoint.
GET/api/edgepcs/:edgeId/data/:dataId/statisticdata:readProxy and cache DataStone statistics. Query parameters are forwarded.

Session users can use the general proxy:

MethodPathPermissionDescription
GET, POST, PATCH, PUT, DELETE/api/tenants/:tenantId/edgepcs/:edgeId/proxy/:pathDepends on first path segmentProxy a safe DataStone API path.

Proxy permission mapping:

First path segmentAurora resource permission
groupline
devicedevice
datamachine
valuemetric
statisticmetric
readyz, healthzedgepc

GET and HEAD require read permission. Other methods require write permission.

Dashboards

MethodPathPermissionDescription
GET`/api/tenants/:tenantId/machines/:machineId/dashboard?mode=statsrealtime`metric:read
PUT`/api/tenants/:tenantId/machines/:machineId/dashboard?mode=statsrealtime`metric:write
POST`/api/tenants/:tenantId/machines/:machineId/dashboard/preflight?mode=statsrealtime`metric:write
GET`/api/tenants/:tenantId/machines/:machineId/dashboard/collab?mode=statsrealtime`metric:read
POST`/api/tenants/:tenantId/machines/:machineId/dashboard/collab?mode=statsrealtime`metric:write
GET/api/tenants/:tenantId/machines/:machineId/dashboard/realtime/video-sessionmetric:readReturn the current realtime video session state. Currently disabled.
GET/api/dashboard/search?tenantId=&q=authenticatedReturn dashboard search suggestions. Query length below two characters returns an empty result.

Dashboard PUT payload:

{
"baseRevision": 7,
"widgets": []
}

Preflight payload:

{
"edgeId": 20,
"dataId": 300,
"dataMode": "realtime"
}

Managed API-key administration

Session endpoints require tenant:write. API-key endpoints require apikeys:read or apikeys:write; those scopes are supported for legacy keys even though they are not part of the managed UI scope list.

MethodPathAuthDescription
GET/api/tenants/:tenantId/api-keyssessionList tenant API keys.
POST/api/tenants/:tenantId/api-keyssessionCreate an API key. Response includes secret once.
PATCH/api/tenants/:tenantId/api-keys/:keyIdsessionUpdate label, scopes, restrictions, expiry, or rate limit.
POST/api/tenants/:tenantId/api-keys/:keyId/revokesessionRevoke a key.
DELETE/api/tenants/:tenantId/api-keys/:keyIdsessionDelete a key after revocation.
GET/api/api-keysAPI keyList API keys for the caller tenant.
POST/api/api-keysAPI keyCreate an API key.
PATCH/api/api-keys/:keyIdAPI keyUpdate an API key.
POST/api/api-keys/:keyId/revokeAPI keyRevoke an API key.
DELETE/api/api-keys/:keyIdAPI keyDelete a revoked API key.

Create API key payload:

{
"label": "Line A reader",
"scopes": ["line:read", "machine:read", "edgepc:read", "device:read", "data:read"],
"restrictions": {
"lineIds": [1]
},
"expires_at": "2026-12-31T00:00:00Z",
"rate_limit_limit": 600,
"rate_limit_period_seconds": 60
}

Pairing and WebRTC

MethodPathAuthDescription
POST/api/tenants/:tenantId/edgepcs/pairing-tokenssession edgepc:writeCreate a pairing token. Payload: optional label, expiresInSeconds with a minimum of 300.
POST/api/webrtc/registrationspairing tokenRegister or refresh a pending DataStone host request.
POST/api/tenants/:tenantId/edgepcs/registrations/:requestId/approvesession edgepc:writeApprove a pending registration for edgePcId.
POST/api/tenants/:tenantId/edgepcs/registrations/:requestId/rejectsession edgepc:writeReject a pending registration.
POST/api/webrtc/host-sessionsigned host requestReturn signaling URL, host token, ICE servers, and refresh timing.
POST/api/tenants/:tenantId/edgepcs/:edgeId/webrtc/listener-sessionsession edgepc_shell:write or edgepc_control:writeReturn browser listener signaling token and ICE servers.
GET/api/tenants/:tenantId/edgepcs/:edgeId/webrtc/control-leasesession edgepc_control:writeRead the active control lease.
POST/api/tenants/:tenantId/edgepcs/:edgeId/webrtc/control-leasesession edgepc_control:writeAcquire or renew a control lease.
DELETE/api/tenants/:tenantId/edgepcs/:edgeId/webrtc/control-leasesession edgepc_control:writeRelease the current session lease.
POST/api/tenants/:tenantId/edgepcs/:edgeId/webrtc/control-grantsession edgepc_control:write plus active leaseIssue a short-lived host control JWT.

Host registration payload:

{
"pairingToken": "pair_...",
"hostId": "edge-host-01",
"machineId": "optional-local-machine-id",
"proposedName": "Edge host 01",
"controlJwtSecret": "shared-control-secret"
}

Host session payload:

{
"hostId": "edge-host-01",
"timestamp": 1777363200,
"nonce": "unique-per-request",
"signature": "hmac-signature"
}

Billing and cron jobs

MethodPathAuthDescription
POST/api/billing/checkoutsessionCreate a checkout flow.
POST/api/billing/confirmsessionConfirm a payment.
GET/api/tenants/:tenantId/cronjobssession tenant:readList scheduled automation jobs. Returns an empty items array if scheduling is not configured.
POST/api/tenants/:tenantId/cronjobssession tenant:writeCreate a scheduled automation job with key, schedule, and optional is_active.
PATCH/api/tenants/:tenantId/cronjobs/:cronJobIdsession tenant:writeUpdate a scheduled automation job.
DELETE/api/tenants/:tenantId/cronjobs/:cronJobIdsession tenant:writeDelete a scheduled automation job.

Downloads and sign-in

MethodPathAuthDescription
GET/downloads/installer/latestpublicDownload the latest installer artifact.
GET, POST/auth/loginpublicStart or submit login.
GET/auth/callbackpublicComplete sign-in callback.
GET/auth/registerpublicStart registration flow.
GET, POST/sign-outsessionSign out.