v1 · preview

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

↑ ↓ moveEnter openEsc close

Reference

Positions

Only those the privacy veil allows.

Latest visible positions

GET/v1/positions/latest

Scope positions:read

Only those the privacy veil allows right now. Every position served with an alert behind it is recorded on the alert (“Who has seen their position”).

Query parameters

  • site_idstring (uuid)

Responses

  • 200

    Positions.

    application/json PositionList

  • 401

    The token is missing, has expired or has been revoked.

    application/problem+json Problem

  • 403

    The token lacks the scope the route requires, or the site doesn’t belong to the client.

    application/problem+json Problem

  • 429

    Too many requests, or too much query time: each client has a number of requests per minute (600 by default) and a query time per minute (30 s by default), and each request spends however long it takes, so a long list counts for more than a single alert. Retry-After says when to retry.

    application/problem+json Problem

Request · sandbox

curl "https://sandbox.api.safeonuba.com/v1/positions/latest" \
  -H "Authorization: Bearer $SAFEONUBA_TOKEN"

Response 200

JSON
{
  "data": [
    {
      "device_id": "0f6c2b7e-3a1d-4c55-9b0e-7d2f4a8c1e90",
      "worker": {
        "id": "0f6c2b7e-3a1d-4c55-9b0e-7d2f4a8c1e90",
        "external_id": "EMP-004512",
        "name": "Ana Ejemplo",
        "contractor": "Contrata Ejemplo A"
      },
      "location": {
        "latitude": 40.00121,
        "longitude": -3.00214,
        "uncertainty_m": 8,
        "source": "gps",
        "masked": false,
        "position_date_utc": "2026-09-24T11:04:12Z",
        "height": {
          "height_m": 7.6,
          "uncertainty_m": 1,
          "building": "Nave de proceso",
          "floor": "Planta 1"
        }
      },
      "in_vehicle": false
    }
  ]
}