v1 · preview

Try webhook signature, alert.created, location_withheld or 429.

↑ ↓ moveEnter openEsc close

Concepts

Workers and watches

How the API identifies each person and their watch: company identifier, optional name by contract, battery, whether it’s being worn and last connection.

On this page

Every person wears a watch. The API exposes them separately —workers and watches— and links them to each other. Both require the workers:read scope.

Workers

GET /v1/workers and GET /v1/workers/{id}.

FieldWhat it is
idThe worker’s UUID in SafeOnuba.
external_idTheir code in your company, the one from your personnel system. null if none has been given.
nameFull name. Only if the contract includes it; otherwise the property doesn’t appear.
contractorThe contractor they work for, or null.
roleTheir job, or null.
is_activeWhether they are registered.
deviceThe watch assigned to them.
date_last_seenThe more recent of their last position and the watch’s last contact.

No names

Workers’ names are optional by contract. Without them, the API identifies each person by their external_id, the same code your company already uses. To cross-reference with your personnel or access control system, use that field, which doesn’t depend on the contract including names.

The same approach applies everywhere: in worker inside an alert, in the list of who is missing and in positions.

What your client sees

The API sees the same as a person in the dashboard with those permissions, including the scope by contractor. A worker your identity can’t see responds 404, as if they didn’t exist.

Watches

GET /v1/devices returns the watches with their status.

FieldWhat it is
id, serialIdentifier and serial number.
modelModel, or null.
statusThe watch’s status in the inventory.
batteryBattery as a percentage, or null.
wornWhether it is being worn. null if unknown, because the watch has no wrist sensor.
date_last_seenLast contact.
workerWho it is assigned to.
statusWhat it means
activeIn use.
inactiveOut of use.
maintenanceUnder maintenance.
lostLost.

A watch that stops communicating or runs out of battery generates an alert (device_offline, low_battery). You don’t need to poll this list in a loop to find out: they arrive by webhook like any other alert.

There are never vital signs

Neither the worker nor the watch carries pulse, temperature or any other vital sign, individually or aggregated. See Privacy and security.