v1 · preview

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

↑ ↓ moveEnter openEsc close

Reference

Schemas

The objects the API accepts and returns, field by field, exactly as the OpenAPI contract defines them.

Event

object

  • idstring (uuid)required

    For deduplication: delivery is “at least once”.

  • typeEventTyperequired

    Possible values: alert.createdalert.acknowledgedalert.resolvedalert.reopenedalert.worker_acknowledgedmuster.startedmuster.kind_changedmuster.phase_changedmuster.targets_changedmuster.updatedmuster.worker_missingmuster.ended

  • api_versionstringrequired

    Possible values: 2026-09-24

  • created_atstring (date-time)required
  • organization_idstring (uuid) | nullrequired

    The site’s company. null in test events.

  • site_idstring (uuid)required
  • data{ alert } | { muster }required

    The complete object exactly as the GET would return it at that moment.

    One of 2 shapes
    • variant 1
      • alertAlertrequired
        Fields of Alert22
        • idstring (uuid)required
        • typeAlertTyperequired

          Possible values: sosfall_detectedrestricted_zone_entryforbidden_zone_entrypermit_expired_insidepermit_closed_insideheat_stressevacuation_helpworker_call_requestdevice_offlinelow_batteryearthquaketsunami_risk

        • severitySeverityrequired

          Possible values: lowmediumhighcritical

        • statusAlertStatusrequired

          Possible values: unacknowledgedacknowledgedresolved

        • titlestringrequired

          With include_worker_names, the title the control room reads (it carries the person’s name). Without it, one composed of the type, the zone and the external_id, with no name.

        • date_createdstring (date-time)required
        • date_last_modifiedstring (date-time)required

          For ordering: webhooks don’t guarantee order, and anything older than what you already have is discarded.

        • siteSiteRefrequired
          Fields of SiteRef2
          • idstring (uuid)required
          • namestringrequired
        • zoneZoneRefrequired
          Fields of ZoneRef2
          • idstring (uuid)required
          • namestringrequired
        • workerWorkerRefrequired
          Fields of WorkerRef4
          • idstring (uuid)required
          • external_idstring | nullrequired

            The worker’s code at the company (the one in its personnel system). null if not given.

          • namestring

            Full name. Only if the contract includes it; otherwise the property doesn’t appear.

          • contractorstring | nullrequired
        • deviceDeviceRefrequired
          Fields of DeviceRef4
          • idstring (uuid)required
          • serialstringrequired
          • batteryinteger | nullrequired

            from 0 to 100

          • date_last_seenstring (date-time) | nullrequired
        • locationLocationrequired
          Fields of Location7
          • latitudenumberrequired

            from -90 to 90

          • longitudenumberrequired

            from -180 to 180

          • uncertainty_mnumber | nullrequired

            Uncertainty radius in metres. null if unknown: not knowing it is not the same as it being perfect.

            minimum 0

          • sourcestringrequired

            zone: the person was in a privacy zone and the point is the zone’s, not theirs.

            Possible values: gpsnetworkzone

          • maskedbooleanrequired

            The point is the representative one for a privacy zone.

          • position_date_utcstring (date-time)required
          • heightobject | nullrequired

            Height above ground by barometer, when it can be stated; null if not.

        • location_withheldbooleanrequired

          The position exists but is not delivered: in “emergencies only”, an alert below the severity that lifts the veil doesn’t show it, and neither does the dashboard.

        • detailsAlertDetailsrequired
          One of 9 shapes
            • triggerstringrequired

              How it was requested: on the watch screen, with the physical button, after an unanswered fall, or from the control room.

              Possible values: watch_buttonwatch_hardware_buttonafter_fallcontrol_room

            • escalated_to_sosbooleanrequired

              Did not answer the watch’s “Are you OK?” and it escalated to SOS.

            • zone_typestringrequired

              Possible values: restrictedforbidden

            • permit_referencestring | nullrequired

              The permit to work (job safety analysis, JSA) in force, if there was one.

          • Nothing derived from heart rate: vital signs don’t leave through the API, not even aggregated.

            • actionstringrequired

              What the watch has told them: stop, drink and find shade. There are no levels.

              Possible values: stop_and_rest

            • heat_index_cnumber | nullrequired

              The plant’s heat index (°C).

            • sun_exposure_minutesinteger | nullrequired
            • reasonstring | nullrequired

              What they said on the watch: trapped, injured or helping someone else.

              Possible values: trappedinjuredhelping

            • muster_idstring (uuid)required
            • voice_notebooleanrequired

              With no coverage, the watch recorded a voice message (it can be heard in the dashboard).

            • minutes_silentintegerrequired
            • battery_pctintegerrequired

              from 0 to 100

            • magnitudenumber | nullrequired
            • distance_kmnumber | nullrequired
            • officialbooleanrequired

              false: a SafeOnuba estimate with no official warning. true: an official bulletin confirmed by a person.

            • felt_at_sitebooleanrequired
            • etastring (date-time) | nullrequired

              Estimated arrival of the wave (tsunami).

        • nearbyarray<Nearby>required
          Fields of Nearby5
          • kindstringrequired

            Possible values: personvehicle

          • workerobjectrequired
          • vehicle_typestring | nullrequired
          • distance_mintegerrequired
          • reported_atstring (date-time)required
        • vehicle_warningsarray<VehicleWarning>required
          Fields of VehicleWarning4
          • atstring (date-time)required
          • vehicle_typestring | nullrequired
          • distance_mintegerrequired
          • worker_acknowledged_atstring (date-time) | nullrequired
        • worker_acknowledged_atstring (date-time) | nullrequired

          The worker pressed “Got it” on their watch (watch time).

        • acknowledgedActionByrequired
          Fields of ActionBy2
          • atstring (date-time)required
          • bystringrequired

            Who: a person from the dashboard, or “Client · Operator (via integration)”.

        • resolvedobject | nullrequired

          Resolved: by whom, when and with what note.

          Fields3
          • atstring (date-time)required
          • bystringrequired

            Who: a person from the dashboard, or “Client · Operator (via integration)”.

          • notestring | nullrequired
        • assigned_tostring | nullrequired
        • simulatedbooleanrequired

          Raised in a drill or with simulated watches.

        • panel_urlstring (uri)required
    • variant 2
      • musterMusterrequired
        Fields of Muster13
        • idstring (uuid)required
        • siteSiteRefrequired
          Fields of SiteRef2
          • idstring (uuid)required
          • namestringrequired
        • statusstringrequired

          Possible values: activecompletedcancelled

        • phasestringrequired

          inspecting: headcount complete and the control room is checking the plant; watches say “do not go back until further notice”.

          Possible values: evacuatinginspecting

        • kindMusterKindrequired

          Possible values: generaltsunamiearthquake

        • reasonstring | nullrequired
        • started_atstring (date-time)required
        • ended_atstring (date-time) | nullrequired
        • deadlineobject | nullrequired
          Fields2
          • atstring (date-time)required
          • sourcestringrequired

            Tsunami: the time of an official warning, or the ceiling in the zone’s plan. Never a physical calculation.

            Possible values: officialplan_estimate

        • originobject | nullrequired

          Where the emergency comes from. null in an evacuation with no origin (a general drill).

          Fields5
          • latitudenumberrequired
          • longitudenumberrequired
          • radius_mintegerrequired
          • labelstring | nullrequired
          • zoneZoneRefrequired
        • targets_revisionintegerrequired

          Goes up every time the targets change (ruling out, restoring, change of type).

        • totalsobjectrequired

          The same figures as the dashboard banner and the closing summary: the server counts them. In an ended evacuation, what remains is what was recorded on ending —arrived and total— and the rest comes out as null.

          Fields7
          • expectedintegerrequired
          • safeintegerrequired
          • helpinteger | nullrequired
          • wrong_pointinteger | nullrequired
          • pendinginteger | nullrequired
          • no_signalinteger | nullrequired
          • not_worninteger | nullrequired
        • assembly_pointsarray<AssemblyPoint>required

          The targets for the type, ruled-out ones included.

          Fields of AssemblyPoint5
          • idstring (uuid)required
          • namestringrequired
          • statusstringrequired

            Possible values: availableexcluded

          • countinteger | nullrequired

            People safe at this point. null in an ended evacuation: on ending, only the total is kept.

          • excludedobject | nullrequired

Used by: Changes to an alert, Changes to an evacuation

EventType

string

muster.updated: the headcount has changed (checked every 5 s, only emitted if it changes). muster.targets_changed: the control room has ruled out or restored a muster point.

alert.createdalert.acknowledgedalert.resolvedalert.reopenedalert.worker_acknowledgedmuster.startedmuster.kind_changedmuster.phase_changedmuster.targets_changedmuster.updatedmuster.worker_missingmuster.ended

Used by: Replay events

Alert

object

  • idstring (uuid)required
  • typeAlertTyperequired

    Possible values: sosfall_detectedrestricted_zone_entryforbidden_zone_entrypermit_expired_insidepermit_closed_insideheat_stressevacuation_helpworker_call_requestdevice_offlinelow_batteryearthquaketsunami_risk

  • severitySeverityrequired

    Possible values: lowmediumhighcritical

  • statusAlertStatusrequired

    Possible values: unacknowledgedacknowledgedresolved

  • titlestringrequired

    With include_worker_names, the title the control room reads (it carries the person’s name). Without it, one composed of the type, the zone and the external_id, with no name.

  • date_createdstring (date-time)required
  • date_last_modifiedstring (date-time)required

    For ordering: webhooks don’t guarantee order, and anything older than what you already have is discarded.

  • siteSiteRefrequired
    Fields of SiteRef2
    • idstring (uuid)required
    • namestringrequired
  • zoneZoneRefrequired
    Fields of ZoneRef2
    • idstring (uuid)required
    • namestringrequired
  • workerWorkerRefrequired
    Fields of WorkerRef4
    • idstring (uuid)required
    • external_idstring | nullrequired

      The worker’s code at the company (the one in its personnel system). null if not given.

    • namestring

      Full name. Only if the contract includes it; otherwise the property doesn’t appear.

    • contractorstring | nullrequired
  • deviceDeviceRefrequired
    Fields of DeviceRef4
    • idstring (uuid)required
    • serialstringrequired
    • batteryinteger | nullrequired

      from 0 to 100

    • date_last_seenstring (date-time) | nullrequired
  • locationLocationrequired
    Fields of Location7
    • latitudenumberrequired

      from -90 to 90

    • longitudenumberrequired

      from -180 to 180

    • uncertainty_mnumber | nullrequired

      Uncertainty radius in metres. null if unknown: not knowing it is not the same as it being perfect.

      minimum 0

    • sourcestringrequired

      zone: the person was in a privacy zone and the point is the zone’s, not theirs.

      Possible values: gpsnetworkzone

    • maskedbooleanrequired

      The point is the representative one for a privacy zone.

    • position_date_utcstring (date-time)required
    • heightobject | nullrequired

      Height above ground by barometer, when it can be stated; null if not.

      Fields4
      • height_mnumberrequired
      • uncertainty_mnumberrequired
      • buildingstring | nullrequired
      • floorstring | nullrequired
  • location_withheldbooleanrequired

    The position exists but is not delivered: in “emergencies only”, an alert below the severity that lifts the veil doesn’t show it, and neither does the dashboard.

  • detailsAlertDetailsrequired
    One of 9 shapes
      • triggerstringrequired

        How it was requested: on the watch screen, with the physical button, after an unanswered fall, or from the control room.

        Possible values: watch_buttonwatch_hardware_buttonafter_fallcontrol_room

      • escalated_to_sosbooleanrequired

        Did not answer the watch’s “Are you OK?” and it escalated to SOS.

      • zone_typestringrequired

        Possible values: restrictedforbidden

      • permit_referencestring | nullrequired

        The permit to work (job safety analysis, JSA) in force, if there was one.

    • Nothing derived from heart rate: vital signs don’t leave through the API, not even aggregated.

      • actionstringrequired

        What the watch has told them: stop, drink and find shade. There are no levels.

        Possible values: stop_and_rest

      • heat_index_cnumber | nullrequired

        The plant’s heat index (°C).

      • sun_exposure_minutesinteger | nullrequired
      • reasonstring | nullrequired

        What they said on the watch: trapped, injured or helping someone else.

        Possible values: trappedinjuredhelping

      • muster_idstring (uuid)required
      • voice_notebooleanrequired

        With no coverage, the watch recorded a voice message (it can be heard in the dashboard).

      • minutes_silentintegerrequired
      • battery_pctintegerrequired

        from 0 to 100

      • magnitudenumber | nullrequired
      • distance_kmnumber | nullrequired
      • officialbooleanrequired

        false: a SafeOnuba estimate with no official warning. true: an official bulletin confirmed by a person.

      • felt_at_sitebooleanrequired
      • etastring (date-time) | nullrequired

        Estimated arrival of the wave (tsunami).

  • nearbyarray<Nearby>required
    Fields of Nearby5
    • kindstringrequired

      Possible values: personvehicle

    • workerobjectrequired
      Fields4
      • idstring (uuid) | nullrequired

        null in alerts from before 24 September 2026, when it was not yet being copied.

      • external_idstring | nullrequired

        The worker’s code at the company (the one in its personnel system). null if not given.

      • namestring

        Full name. Only if the contract includes it; otherwise the property doesn’t appear.

      • contractorstring | nullrequired
    • vehicle_typestring | nullrequired
    • distance_mintegerrequired
    • reported_atstring (date-time)required
  • vehicle_warningsarray<VehicleWarning>required
    Fields of VehicleWarning4
    • atstring (date-time)required
    • vehicle_typestring | nullrequired
    • distance_mintegerrequired
    • worker_acknowledged_atstring (date-time) | nullrequired
  • worker_acknowledged_atstring (date-time) | nullrequired

    The worker pressed “Got it” on their watch (watch time).

  • acknowledgedActionByrequired
    Fields of ActionBy2
    • atstring (date-time)required
    • bystringrequired

      Who: a person from the dashboard, or “Client · Operator (via integration)”.

  • resolvedobject | nullrequired

    Resolved: by whom, when and with what note.

    Fields3
    • atstring (date-time)required
    • bystringrequired

      Who: a person from the dashboard, or “Client · Operator (via integration)”.

    • notestring | nullrequired
  • assigned_tostring | nullrequired
  • simulatedbooleanrequired

    Raised in a drill or with simulated watches.

  • panel_urlstring (uri)required

Used by: Alert detail, Acknowledge or resolve an alert

AlertType

string

What has happened. earthquake and tsunami_risk concern the whole plant: they carry no worker or device. A nearby vehicle is not an alert: it appears inside an incident’s alert (nearby, vehicle_warnings).

sosfall_detectedrestricted_zone_entryforbidden_zone_entrypermit_expired_insidepermit_closed_insideheat_stressevacuation_helpworker_call_requestdevice_offlinelow_batteryearthquaketsunami_risk

Used by: List alerts

Severity

string

Severity: low (information), medium (warning), high (serious), critical (critical: SOS, fall, “I can’t evacuate”).

lowmediumhighcritical

Used by: List alerts

AlertStatus

string

acknowledged: an operator has taken charge. It is not the same as worker_acknowledged_at, which means the worker has seen the alert on their watch.

unacknowledgedacknowledgedresolved

Used by: List alerts

SiteRef

object

  • idstring (uuid)required
  • namestringrequired

ZoneRef

object | null

  • idstring (uuid)required
  • namestringrequired

WorkerRef

object | null

  • idstring (uuid)required
  • external_idstring | nullrequired

    The worker’s code at the company (the one in its personnel system). null if not given.

  • namestring

    Full name. Only if the contract includes it; otherwise the property doesn’t appear.

  • contractorstring | nullrequired

DeviceRef

object | null

  • idstring (uuid)required
  • serialstringrequired
  • batteryinteger | nullrequired

    from 0 to 100

  • date_last_seenstring (date-time) | nullrequired

Location

object | null

  • latitudenumberrequired

    from -90 to 90

  • longitudenumberrequired

    from -180 to 180

  • uncertainty_mnumber | nullrequired

    Uncertainty radius in metres. null if unknown: not knowing it is not the same as it being perfect.

    minimum 0

  • sourcestringrequired

    zone: the person was in a privacy zone and the point is the zone’s, not theirs.

    Possible values: gpsnetworkzone

  • maskedbooleanrequired

    The point is the representative one for a privacy zone.

  • position_date_utcstring (date-time)required
  • heightobject | nullrequired

    Height above ground by barometer, when it can be stated; null if not.

    Fields4
    • height_mnumberrequired
    • uncertainty_mnumberrequired
    • buildingstring | nullrequired
    • floorstring | nullrequired

AlertDetails

SosDetails | FallDetails | ZoneDetails | HeatStressDetails | EvacuationHelpDetails | WorkerCallDetails | DeviceOfflineDetails | LowBatteryDetails | HazardDetails

Depends on type.

One of: SosDetails | FallDetails | ZoneDetails | HeatStressDetails | EvacuationHelpDetails | WorkerCallDetails | DeviceOfflineDetails | LowBatteryDetails | HazardDetails

SosDetails

object

  • triggerstringrequired

    How it was requested: on the watch screen, with the physical button, after an unanswered fall, or from the control room.

    Possible values: watch_buttonwatch_hardware_buttonafter_fallcontrol_room

FallDetails

object

  • escalated_to_sosbooleanrequired

    Did not answer the watch’s “Are you OK?” and it escalated to SOS.

ZoneDetails

object

  • zone_typestringrequired

    Possible values: restrictedforbidden

  • permit_referencestring | nullrequired

    The permit to work (job safety analysis, JSA) in force, if there was one.

HeatStressDetails

object

Nothing derived from heart rate: vital signs don’t leave through the API, not even aggregated.

  • actionstringrequired

    What the watch has told them: stop, drink and find shade. There are no levels.

    Possible values: stop_and_rest

  • heat_index_cnumber | nullrequired

    The plant’s heat index (°C).

  • sun_exposure_minutesinteger | nullrequired

EvacuationHelpDetails

object

  • reasonstring | nullrequired

    What they said on the watch: trapped, injured or helping someone else.

    Possible values: trappedinjuredhelping

  • muster_idstring (uuid)required

WorkerCallDetails

object

  • voice_notebooleanrequired

    With no coverage, the watch recorded a voice message (it can be heard in the dashboard).

DeviceOfflineDetails

object

  • minutes_silentintegerrequired

LowBatteryDetails

object

  • battery_pctintegerrequired

    from 0 to 100

HazardDetails

object

  • magnitudenumber | nullrequired
  • distance_kmnumber | nullrequired
  • officialbooleanrequired

    false: a SafeOnuba estimate with no official warning. true: an official bulletin confirmed by a person.

  • felt_at_sitebooleanrequired
  • etastring (date-time) | nullrequired

    Estimated arrival of the wave (tsunami).

Nearby

object

Who was within 100 m when a critical alert was raised (SOS, fall). Distance, never position; anyone in a privacy zone doesn’t count.

  • kindstringrequired

    Possible values: personvehicle

  • workerobjectrequired
    Fields4
    • idstring (uuid) | nullrequired

      null in alerts from before 24 September 2026, when it was not yet being copied.

    • external_idstring | nullrequired

      The worker’s code at the company (the one in its personnel system). null if not given.

    • namestring

      Full name. Only if the contract includes it; otherwise the property doesn’t appear.

    • contractorstring | nullrequired
  • vehicle_typestring | nullrequired
  • distance_mintegerrequired
  • reported_atstring (date-time)required

VehicleWarning

object

Nearby-vehicle warnings that person received during the incident window. They are warnings, not alerts.

  • atstring (date-time)required
  • vehicle_typestring | nullrequired
  • distance_mintegerrequired
  • worker_acknowledged_atstring (date-time) | nullrequired

ActionBy

object | null

  • atstring (date-time)required
  • bystringrequired

    Who: a person from the dashboard, or “Client · Operator (via integration)”.

Muster

object

  • idstring (uuid)required
  • siteSiteRefrequired
    Fields of SiteRef2
    • idstring (uuid)required
    • namestringrequired
  • statusstringrequired

    Possible values: activecompletedcancelled

  • phasestringrequired

    inspecting: headcount complete and the control room is checking the plant; watches say “do not go back until further notice”.

    Possible values: evacuatinginspecting

  • kindMusterKindrequired

    Possible values: generaltsunamiearthquake

  • reasonstring | nullrequired
  • started_atstring (date-time)required
  • ended_atstring (date-time) | nullrequired
  • deadlineobject | nullrequired
    Fields2
    • atstring (date-time)required
    • sourcestringrequired

      Tsunami: the time of an official warning, or the ceiling in the zone’s plan. Never a physical calculation.

      Possible values: officialplan_estimate

  • originobject | nullrequired

    Where the emergency comes from. null in an evacuation with no origin (a general drill).

    Fields5
    • latitudenumberrequired
    • longitudenumberrequired
    • radius_mintegerrequired
    • labelstring | nullrequired
    • zoneZoneRefrequired
      Fields of ZoneRef2
      • idstring (uuid)required
      • namestringrequired
  • targets_revisionintegerrequired

    Goes up every time the targets change (ruling out, restoring, change of type).

  • totalsobjectrequired

    The same figures as the dashboard banner and the closing summary: the server counts them. In an ended evacuation, what remains is what was recorded on ending —arrived and total— and the rest comes out as null.

    Fields7
    • expectedintegerrequired
    • safeintegerrequired
    • helpinteger | nullrequired
    • wrong_pointinteger | nullrequired
    • pendinginteger | nullrequired
    • no_signalinteger | nullrequired
    • not_worninteger | nullrequired
  • assembly_pointsarray<AssemblyPoint>required

    The targets for the type, ruled-out ones included.

    Fields of AssemblyPoint5
    • idstring (uuid)required
    • namestringrequired
    • statusstringrequired

      Possible values: availableexcluded

    • countinteger | nullrequired

      People safe at this point. null in an ended evacuation: on ending, only the total is kept.

    • excludedobject | nullrequired
      Fields4
      • reasonstringrequired
      • recommendedbooleanrequired

        The system had recommended it (radius or wind). Whoever rules it out is always a person.

      • atstring (date-time)required
      • bystringrequired

Used by: Status and headcount of an evacuation

MusterKind

string

generaltsunamiearthquake

AssemblyPoint

object

  • idstring (uuid)required
  • namestringrequired
  • statusstringrequired

    Possible values: availableexcluded

  • countinteger | nullrequired

    People safe at this point. null in an ended evacuation: on ending, only the total is kept.

  • excludedobject | nullrequired
    Fields4
    • reasonstringrequired
    • recommendedbooleanrequired

      The system had recommended it (radius or wind). Whoever rules it out is always a person.

    • atstring (date-time)required
    • bystringrequired

TokenResponse

object

  • access_tokenstringrequired
  • token_typestringrequired

    Possible values: Bearer

  • expires_innumberrequired

    Possible values: 3600

  • scopestringrequired

Used by: Request a token (client_credentials)

OAuthError

object

Token error, in the RFC 6749 §5.2 format.

  • errorstringrequired

    Possible values: invalid_requestinvalid_clientunauthorized_clientunsupported_grant_typeinvalid_scope

  • error_descriptionstring

Used by: Request a token (client_credentials)

TokenRequest

object

  • grant_typestringrequired

    Possible values: client_credentials

  • client_idstringrequired
  • client_secretstringrequired
  • scopestring

    Space-separated; a subset of the client’s. Without it, all of the client’s.

Used by: Request a token (client_credentials)

SiteList

object

  • dataarray<Site>required
    Fields of Site5
    • idstring (uuid)required
    • namestringrequired
    • locationstring | nullrequired
    • privacy_modestringrequired

      on_demand (“emergencies only”): a person’s position is only visible with an open alert from unveil_min_severity, during an evacuation, or with an approved request. The API obeys the same rule as the dashboard.

      Possible values: continuouson_demand

    • unveil_min_severitySeverityrequired

      Possible values: lowmediumhighcritical

Used by: The client’s sites

Site

object

  • idstring (uuid)required
  • namestringrequired
  • locationstring | nullrequired
  • privacy_modestringrequired

    on_demand (“emergencies only”): a person’s position is only visible with an open alert from unveil_min_severity, during an evacuation, or with an approved request. The API obeys the same rule as the dashboard.

    Possible values: continuouson_demand

  • unveil_min_severitySeverityrequired

    Possible values: lowmediumhighcritical

Problem

object

Error in RFC 9457 format (application/problem+json), with the real HTTP status code.

  • typestringrequired

    URI that identifies the problem type.

  • titlestringrequired
  • statusintegerrequired
  • detailstring
  • instancestring
  • codestringrequired

    Stable error code, to program against. The text may change; this won’t.

Used by: The client’s sites, A site’s zones and muster points, List alerts, Alert detail, Acknowledge or resolve an alert, List evacuations, Status and headcount of an evacuation, Who is missing, List workers, Worker detail, List watches, Latest visible positions, Replay events, List destinations, Create a destination, Delete a destination, Rotate the signing secret, Send a test event, Launch a test scenario

ZoneList

object

  • dataarray<Zone>required
    Fields of Zone5
    • idstring (uuid)required
    • namestringrequired
    • typestringrequired

      Possible values: work_arearestrictedforbiddenassembly_pointprivacybuilding

    • geometryobject | nullrequired

      GeoJSON polygon (WGS84). null for privacy zones: the name and type are given, not where they are (pending validation with the committee).

      Fields2
      • typestringrequired

        Possible values: Polygon

      • coordinatesarray<array<array>>required
    • assembly_pointobject | nullrequired

      Only on muster points.

      Fields5
      • servesarray<string>required

        Possible values: generaltsunamiearthquake

      • elevation_mnumber | nullrequired
      • elevation_sourcestring | nullrequired

        Possible values: demverified

      • verticalbooleanrequired

        Vertical refuge (a building).

      • capacityinteger | nullrequired

Used by: A site’s zones and muster points

Zone

object

  • idstring (uuid)required
  • namestringrequired
  • typestringrequired

    Possible values: work_arearestrictedforbiddenassembly_pointprivacybuilding

  • geometryobject | nullrequired

    GeoJSON polygon (WGS84). null for privacy zones: the name and type are given, not where they are (pending validation with the committee).

    Fields2
    • typestringrequired

      Possible values: Polygon

    • coordinatesarray<array<array>>required
  • assembly_pointobject | nullrequired

    Only on muster points.

    Fields5
    • servesarray<string>required

      Possible values: generaltsunamiearthquake

    • elevation_mnumber | nullrequired
    • elevation_sourcestring | nullrequired

      Possible values: demverified

    • verticalbooleanrequired

      Vertical refuge (a building).

    • capacityinteger | nullrequired

AlertPage

object

  • dataarray<Alert>required
    Fields of Alert22
    • idstring (uuid)required
    • typeAlertTyperequired

      Possible values: sosfall_detectedrestricted_zone_entryforbidden_zone_entrypermit_expired_insidepermit_closed_insideheat_stressevacuation_helpworker_call_requestdevice_offlinelow_batteryearthquaketsunami_risk

    • severitySeverityrequired

      Possible values: lowmediumhighcritical

    • statusAlertStatusrequired

      Possible values: unacknowledgedacknowledgedresolved

    • titlestringrequired

      With include_worker_names, the title the control room reads (it carries the person’s name). Without it, one composed of the type, the zone and the external_id, with no name.

    • date_createdstring (date-time)required
    • date_last_modifiedstring (date-time)required

      For ordering: webhooks don’t guarantee order, and anything older than what you already have is discarded.

    • siteSiteRefrequired
      Fields of SiteRef2
      • idstring (uuid)required
      • namestringrequired
    • zoneZoneRefrequired
      Fields of ZoneRef2
      • idstring (uuid)required
      • namestringrequired
    • workerWorkerRefrequired
      Fields of WorkerRef4
      • idstring (uuid)required
      • external_idstring | nullrequired

        The worker’s code at the company (the one in its personnel system). null if not given.

      • namestring

        Full name. Only if the contract includes it; otherwise the property doesn’t appear.

      • contractorstring | nullrequired
    • deviceDeviceRefrequired
      Fields of DeviceRef4
      • idstring (uuid)required
      • serialstringrequired
      • batteryinteger | nullrequired

        from 0 to 100

      • date_last_seenstring (date-time) | nullrequired
    • locationLocationrequired
      Fields of Location7
      • latitudenumberrequired

        from -90 to 90

      • longitudenumberrequired

        from -180 to 180

      • uncertainty_mnumber | nullrequired

        Uncertainty radius in metres. null if unknown: not knowing it is not the same as it being perfect.

        minimum 0

      • sourcestringrequired

        zone: the person was in a privacy zone and the point is the zone’s, not theirs.

        Possible values: gpsnetworkzone

      • maskedbooleanrequired

        The point is the representative one for a privacy zone.

      • position_date_utcstring (date-time)required
      • heightobject | nullrequired

        Height above ground by barometer, when it can be stated; null if not.

        Fields4
        • height_mnumberrequired
        • uncertainty_mnumberrequired
        • buildingstring | nullrequired
        • floorstring | nullrequired
    • location_withheldbooleanrequired

      The position exists but is not delivered: in “emergencies only”, an alert below the severity that lifts the veil doesn’t show it, and neither does the dashboard.

    • detailsAlertDetailsrequired
      One of 9 shapes
        • triggerstringrequired

          How it was requested: on the watch screen, with the physical button, after an unanswered fall, or from the control room.

          Possible values: watch_buttonwatch_hardware_buttonafter_fallcontrol_room

        • escalated_to_sosbooleanrequired

          Did not answer the watch’s “Are you OK?” and it escalated to SOS.

        • zone_typestringrequired

          Possible values: restrictedforbidden

        • permit_referencestring | nullrequired

          The permit to work (job safety analysis, JSA) in force, if there was one.

      • Nothing derived from heart rate: vital signs don’t leave through the API, not even aggregated.

        • actionstringrequired

          What the watch has told them: stop, drink and find shade. There are no levels.

          Possible values: stop_and_rest

        • heat_index_cnumber | nullrequired

          The plant’s heat index (°C).

        • sun_exposure_minutesinteger | nullrequired
        • reasonstring | nullrequired

          What they said on the watch: trapped, injured or helping someone else.

          Possible values: trappedinjuredhelping

        • muster_idstring (uuid)required
        • voice_notebooleanrequired

          With no coverage, the watch recorded a voice message (it can be heard in the dashboard).

        • minutes_silentintegerrequired
        • battery_pctintegerrequired

          from 0 to 100

        • magnitudenumber | nullrequired
        • distance_kmnumber | nullrequired
        • officialbooleanrequired

          false: a SafeOnuba estimate with no official warning. true: an official bulletin confirmed by a person.

        • felt_at_sitebooleanrequired
        • etastring (date-time) | nullrequired

          Estimated arrival of the wave (tsunami).

    • nearbyarray<Nearby>required
      Fields of Nearby5
      • kindstringrequired

        Possible values: personvehicle

      • workerobjectrequired
        Fields4
        • idstring (uuid) | nullrequired

          null in alerts from before 24 September 2026, when it was not yet being copied.

        • external_idstring | nullrequired

          The worker’s code at the company (the one in its personnel system). null if not given.

        • namestring

          Full name. Only if the contract includes it; otherwise the property doesn’t appear.

        • contractorstring | nullrequired
      • vehicle_typestring | nullrequired
      • distance_mintegerrequired
      • reported_atstring (date-time)required
    • vehicle_warningsarray<VehicleWarning>required
      Fields of VehicleWarning4
      • atstring (date-time)required
      • vehicle_typestring | nullrequired
      • distance_mintegerrequired
      • worker_acknowledged_atstring (date-time) | nullrequired
    • worker_acknowledged_atstring (date-time) | nullrequired

      The worker pressed “Got it” on their watch (watch time).

    • acknowledgedActionByrequired
      Fields of ActionBy2
      • atstring (date-time)required
      • bystringrequired

        Who: a person from the dashboard, or “Client · Operator (via integration)”.

    • resolvedobject | nullrequired

      Resolved: by whom, when and with what note.

      Fields3
      • atstring (date-time)required
      • bystringrequired

        Who: a person from the dashboard, or “Client · Operator (via integration)”.

      • notestring | nullrequired
    • assigned_tostring | nullrequired
    • simulatedbooleanrequired

      Raised in a drill or with simulated watches.

    • panel_urlstring (uri)required
  • next_cursorstring | nullrequired

    Opaque cursor for the next page; null if there are no more.

Used by: List alerts

AlertUpdate

object

Two states, acknowledged and resolved, plus the operator. Acknowledging self-assigns the alert if nobody was handling it, as in the dashboard.

  • statusstringrequired

    Possible values: acknowledgedresolved

  • resolution_reasonstring

    On resolving: why. Free text; it goes in the alert’s timeline next to the note.

    up to 200 characters

  • notestring

    up to 500 characters

  • actorActorrequired
    Fields of Actor2
    • namestringrequired

      up to 120 characters

    • external_idstring

      up to 64 characters

Used by: Acknowledge or resolve an alert

Actor

object

The operator in the customer’s control room who takes the action. Required: “acknowledged” measures a person’s response, and without a name the timeline would only show the client’s.

  • namestringrequired

    up to 120 characters

  • external_idstring

    up to 64 characters

MusterPage

object

  • dataarray<Muster>required
    Fields of Muster13
    • idstring (uuid)required
    • siteSiteRefrequired
      Fields of SiteRef2
      • idstring (uuid)required
      • namestringrequired
    • statusstringrequired

      Possible values: activecompletedcancelled

    • phasestringrequired

      inspecting: headcount complete and the control room is checking the plant; watches say “do not go back until further notice”.

      Possible values: evacuatinginspecting

    • kindMusterKindrequired

      Possible values: generaltsunamiearthquake

    • reasonstring | nullrequired
    • started_atstring (date-time)required
    • ended_atstring (date-time) | nullrequired
    • deadlineobject | nullrequired
      Fields2
      • atstring (date-time)required
      • sourcestringrequired

        Tsunami: the time of an official warning, or the ceiling in the zone’s plan. Never a physical calculation.

        Possible values: officialplan_estimate

    • originobject | nullrequired

      Where the emergency comes from. null in an evacuation with no origin (a general drill).

      Fields5
      • latitudenumberrequired
      • longitudenumberrequired
      • radius_mintegerrequired
      • labelstring | nullrequired
      • zoneZoneRefrequired
        Fields of ZoneRef2
        • idstring (uuid)required
        • namestringrequired
    • targets_revisionintegerrequired

      Goes up every time the targets change (ruling out, restoring, change of type).

    • totalsobjectrequired

      The same figures as the dashboard banner and the closing summary: the server counts them. In an ended evacuation, what remains is what was recorded on ending —arrived and total— and the rest comes out as null.

      Fields7
      • expectedintegerrequired
      • safeintegerrequired
      • helpinteger | nullrequired
      • wrong_pointinteger | nullrequired
      • pendinginteger | nullrequired
      • no_signalinteger | nullrequired
      • not_worninteger | nullrequired
    • assembly_pointsarray<AssemblyPoint>required

      The targets for the type, ruled-out ones included.

      Fields of AssemblyPoint5
      • idstring (uuid)required
      • namestringrequired
      • statusstringrequired

        Possible values: availableexcluded

      • countinteger | nullrequired

        People safe at this point. null in an ended evacuation: on ending, only the total is kept.

      • excludedobject | nullrequired
        Fields4
        • reasonstringrequired
        • recommendedbooleanrequired

          The system had recommended it (radius or wind). Whoever rules it out is always a person.

        • atstring (date-time)required
        • bystringrequired
  • next_cursorstring | nullrequired

    Opaque cursor for the next page; null if there are no more.

Used by: List evacuations

MissingWorkerList

object

  • Fields of MissingWorker10
    • workerWorkerRefrequired
      Fields of WorkerRef4
      • idstring (uuid)required
      • external_idstring | nullrequired

        The worker’s code at the company (the one in its personnel system). null if not given.

      • namestring

        Full name. Only if the contract includes it; otherwise the property doesn’t appear.

      • contractorstring | nullrequired
    • deviceDeviceRefrequired
      Fields of DeviceRef4
      • idstring (uuid)required
      • serialstringrequired
      • batteryinteger | nullrequired

        from 0 to 100

      • date_last_seenstring (date-time) | nullrequired
    • statusstringrequired

      Possible values: helpwrong_pointpendingno_signalnot_worn

    • needs_rescuebooleanrequired

      Has an open SOS or fall and has not arrived: cannot leave on their own.

    • help_reasonstring | nullrequired

      Possible values: trappedinjuredhelping

    • assembly_pointobject | nullrequired

      The point where they are or said they were (with wrong_point, one that is unusable).

      Fields3
      • idstring (uuid)required
      • namestringrequired
      • validbooleanrequired
    • declared_atstring (date-time) | nullrequired
    • last_seen_atstring (date-time) | nullrequired
    • locationLocationrequired
      Fields of Location7
      • latitudenumberrequired

        from -90 to 90

      • longitudenumberrequired

        from -180 to 180

      • uncertainty_mnumber | nullrequired

        Uncertainty radius in metres. null if unknown: not knowing it is not the same as it being perfect.

        minimum 0

      • sourcestringrequired

        zone: the person was in a privacy zone and the point is the zone’s, not theirs.

        Possible values: gpsnetworkzone

      • maskedbooleanrequired

        The point is the representative one for a privacy zone.

      • position_date_utcstring (date-time)required
      • heightobject | nullrequired

        Height above ground by barometer, when it can be stated; null if not.

        Fields4
        • height_mnumberrequired
        • uncertainty_mnumberrequired
        • buildingstring | nullrequired
        • floorstring | nullrequired
    • location_withheldbooleanrequired

Used by: Who is missing

MissingWorker

object

  • workerWorkerRefrequired
    Fields of WorkerRef4
    • idstring (uuid)required
    • external_idstring | nullrequired

      The worker’s code at the company (the one in its personnel system). null if not given.

    • namestring

      Full name. Only if the contract includes it; otherwise the property doesn’t appear.

    • contractorstring | nullrequired
  • deviceDeviceRefrequired
    Fields of DeviceRef4
    • idstring (uuid)required
    • serialstringrequired
    • batteryinteger | nullrequired

      from 0 to 100

    • date_last_seenstring (date-time) | nullrequired
  • statusstringrequired

    Possible values: helpwrong_pointpendingno_signalnot_worn

  • needs_rescuebooleanrequired

    Has an open SOS or fall and has not arrived: cannot leave on their own.

  • help_reasonstring | nullrequired

    Possible values: trappedinjuredhelping

  • assembly_pointobject | nullrequired

    The point where they are or said they were (with wrong_point, one that is unusable).

    Fields3
    • idstring (uuid)required
    • namestringrequired
    • validbooleanrequired
  • declared_atstring (date-time) | nullrequired
  • last_seen_atstring (date-time) | nullrequired
  • locationLocationrequired
    Fields of Location7
    • latitudenumberrequired

      from -90 to 90

    • longitudenumberrequired

      from -180 to 180

    • uncertainty_mnumber | nullrequired

      Uncertainty radius in metres. null if unknown: not knowing it is not the same as it being perfect.

      minimum 0

    • sourcestringrequired

      zone: the person was in a privacy zone and the point is the zone’s, not theirs.

      Possible values: gpsnetworkzone

    • maskedbooleanrequired

      The point is the representative one for a privacy zone.

    • position_date_utcstring (date-time)required
    • heightobject | nullrequired

      Height above ground by barometer, when it can be stated; null if not.

      Fields4
      • height_mnumberrequired
      • uncertainty_mnumberrequired
      • buildingstring | nullrequired
      • floorstring | nullrequired
  • location_withheldbooleanrequired

WorkerPage

object

  • dataarray<Worker>required
    Fields of Worker8
    • idstring (uuid)required
    • external_idstring | nullrequired

      The worker’s code at the company (the one in its personnel system). null if not given.

    • namestring

      Full name. Only if the contract includes it; otherwise the property doesn’t appear.

    • contractorstring | nullrequired
    • rolestring | nullrequired
    • is_activebooleanrequired
    • deviceDeviceRefrequired
      Fields of DeviceRef4
      • idstring (uuid)required
      • serialstringrequired
      • batteryinteger | nullrequired

        from 0 to 100

      • date_last_seenstring (date-time) | nullrequired
    • date_last_seenstring (date-time) | nullrequired

      The most recent of the last position and the watch’s last contact.

  • next_cursorstring | nullrequired

    Opaque cursor for the next page; null if there are no more.

Used by: List workers

Worker

object

  • idstring (uuid)required
  • external_idstring | nullrequired

    The worker’s code at the company (the one in its personnel system). null if not given.

  • namestring

    Full name. Only if the contract includes it; otherwise the property doesn’t appear.

  • contractorstring | nullrequired
  • rolestring | nullrequired
  • is_activebooleanrequired
  • deviceDeviceRefrequired
    Fields of DeviceRef4
    • idstring (uuid)required
    • serialstringrequired
    • batteryinteger | nullrequired

      from 0 to 100

    • date_last_seenstring (date-time) | nullrequired
  • date_last_seenstring (date-time) | nullrequired

    The most recent of the last position and the watch’s last contact.

Used by: Worker detail

DevicePage

object

  • dataarray<Device>required
    Fields of Device8
    • idstring (uuid)required
    • serialstringrequired
    • batteryinteger | nullrequired

      from 0 to 100

    • date_last_seenstring (date-time) | nullrequired
    • modelstring | nullrequired
    • statusstringrequired

      Possible values: activeinactivemaintenancelost

    • wornboolean | nullrequired

      null: not known (no wrist sensor).

    • workerWorkerRefrequired
      Fields of WorkerRef4
      • idstring (uuid)required
      • external_idstring | nullrequired

        The worker’s code at the company (the one in its personnel system). null if not given.

      • namestring

        Full name. Only if the contract includes it; otherwise the property doesn’t appear.

      • contractorstring | nullrequired
  • next_cursorstring | nullrequired

    Opaque cursor for the next page; null if there are no more.

Used by: List watches

Device

object

  • idstring (uuid)required
  • serialstringrequired
  • batteryinteger | nullrequired

    from 0 to 100

  • date_last_seenstring (date-time) | nullrequired
  • modelstring | nullrequired
  • statusstringrequired

    Possible values: activeinactivemaintenancelost

  • wornboolean | nullrequired

    null: not known (no wrist sensor).

  • workerWorkerRefrequired
    Fields of WorkerRef4
    • idstring (uuid)required
    • external_idstring | nullrequired

      The worker’s code at the company (the one in its personnel system). null if not given.

    • namestring

      Full name. Only if the contract includes it; otherwise the property doesn’t appear.

    • contractorstring | nullrequired

PositionList

object

  • dataarray<Position>required
    Fields of Position4
    • device_idstring (uuid)required
    • workerWorkerRefrequired
      Fields of WorkerRef4
      • idstring (uuid)required
      • external_idstring | nullrequired

        The worker’s code at the company (the one in its personnel system). null if not given.

      • namestring

        Full name. Only if the contract includes it; otherwise the property doesn’t appear.

      • contractorstring | nullrequired
    • locationLocationrequired
      Fields of Location7
      • latitudenumberrequired

        from -90 to 90

      • longitudenumberrequired

        from -180 to 180

      • uncertainty_mnumber | nullrequired

        Uncertainty radius in metres. null if unknown: not knowing it is not the same as it being perfect.

        minimum 0

      • sourcestringrequired

        zone: the person was in a privacy zone and the point is the zone’s, not theirs.

        Possible values: gpsnetworkzone

      • maskedbooleanrequired

        The point is the representative one for a privacy zone.

      • position_date_utcstring (date-time)required
      • heightobject | nullrequired

        Height above ground by barometer, when it can be stated; null if not.

        Fields4
        • height_mnumberrequired
        • uncertainty_mnumberrequired
        • buildingstring | nullrequired
        • floorstring | nullrequired
    • in_vehiclebooleanrequired

Used by: Latest visible positions

Position

object

Only the positions the privacy veil allows at that moment: in “emergencies only”, anyone with nothing open doesn’t appear.

  • device_idstring (uuid)required
  • workerWorkerRefrequired
    Fields of WorkerRef4
    • idstring (uuid)required
    • external_idstring | nullrequired

      The worker’s code at the company (the one in its personnel system). null if not given.

    • namestring

      Full name. Only if the contract includes it; otherwise the property doesn’t appear.

    • contractorstring | nullrequired
  • locationLocationrequired
    Fields of Location7
    • latitudenumberrequired

      from -90 to 90

    • longitudenumberrequired

      from -180 to 180

    • uncertainty_mnumber | nullrequired

      Uncertainty radius in metres. null if unknown: not knowing it is not the same as it being perfect.

      minimum 0

    • sourcestringrequired

      zone: the person was in a privacy zone and the point is the zone’s, not theirs.

      Possible values: gpsnetworkzone

    • maskedbooleanrequired

      The point is the representative one for a privacy zone.

    • position_date_utcstring (date-time)required
    • heightobject | nullrequired

      Height above ground by barometer, when it can be stated; null if not.

      Fields4
      • height_mnumberrequired
      • uncertainty_mnumberrequired
      • buildingstring | nullrequired
      • floorstring | nullrequired
  • in_vehiclebooleanrequired

EventPage

object

  • dataarray<Event>required
    Fields of Event7
    • idstring (uuid)required

      For deduplication: delivery is “at least once”.

    • typeEventTyperequired

      Possible values: alert.createdalert.acknowledgedalert.resolvedalert.reopenedalert.worker_acknowledgedmuster.startedmuster.kind_changedmuster.phase_changedmuster.targets_changedmuster.updatedmuster.worker_missingmuster.ended

    • api_versionstringrequired

      Possible values: 2026-09-24

    • created_atstring (date-time)required
    • organization_idstring (uuid) | nullrequired

      The site’s company. null in test events.

    • site_idstring (uuid)required
    • data{ alert } | { muster }required

      The complete object exactly as the GET would return it at that moment.

      One of 2 shapes
      • variant 1
        • alertAlertrequired
          Fields of Alert22
          • idstring (uuid)required
          • typeAlertTyperequired

            Possible values: sosfall_detectedrestricted_zone_entryforbidden_zone_entrypermit_expired_insidepermit_closed_insideheat_stressevacuation_helpworker_call_requestdevice_offlinelow_batteryearthquaketsunami_risk

          • severitySeverityrequired

            Possible values: lowmediumhighcritical

          • statusAlertStatusrequired

            Possible values: unacknowledgedacknowledgedresolved

          • titlestringrequired

            With include_worker_names, the title the control room reads (it carries the person’s name). Without it, one composed of the type, the zone and the external_id, with no name.

          • date_createdstring (date-time)required
          • date_last_modifiedstring (date-time)required

            For ordering: webhooks don’t guarantee order, and anything older than what you already have is discarded.

          • siteSiteRefrequired
          • zoneZoneRefrequired
          • workerWorkerRefrequired
          • deviceDeviceRefrequired
          • locationLocationrequired
          • location_withheldbooleanrequired

            The position exists but is not delivered: in “emergencies only”, an alert below the severity that lifts the veil doesn’t show it, and neither does the dashboard.

          • detailsAlertDetailsrequired
          • nearbyarray<Nearby>required
          • vehicle_warningsarray<VehicleWarning>required
          • worker_acknowledged_atstring (date-time) | nullrequired

            The worker pressed “Got it” on their watch (watch time).

          • acknowledgedActionByrequired
          • resolvedobject | nullrequired

            Resolved: by whom, when and with what note.

          • assigned_tostring | nullrequired
          • simulatedbooleanrequired

            Raised in a drill or with simulated watches.

          • panel_urlstring (uri)required
      • variant 2
        • musterMusterrequired
          Fields of Muster13
          • idstring (uuid)required
          • siteSiteRefrequired
          • statusstringrequired

            Possible values: activecompletedcancelled

          • phasestringrequired

            inspecting: headcount complete and the control room is checking the plant; watches say “do not go back until further notice”.

            Possible values: evacuatinginspecting

          • kindMusterKindrequired

            Possible values: generaltsunamiearthquake

          • reasonstring | nullrequired
          • started_atstring (date-time)required
          • ended_atstring (date-time) | nullrequired
          • deadlineobject | nullrequired
          • originobject | nullrequired

            Where the emergency comes from. null in an evacuation with no origin (a general drill).

          • targets_revisionintegerrequired

            Goes up every time the targets change (ruling out, restoring, change of type).

          • totalsobjectrequired

            The same figures as the dashboard banner and the closing summary: the server counts them. In an ended evacuation, what remains is what was recorded on ending —arrived and total— and the rest comes out as null.

          • assembly_pointsarray<AssemblyPoint>required

            The targets for the type, ruled-out ones included.

  • next_cursorstring | nullrequired

    Opaque cursor for the next page; null if there are no more.

Used by: Replay events

WebhookEndpointList

object

  • Fields of WebhookEndpoint7
    • idstring (uuid)required
    • urlstring (uri)required
    • event_typesarray<EventType | "alert.*" | "muster.*">required
    • filtersobjectrequired
      Fields3
      • site_idsarray<string (uuid)>
      • min_severitySeverity

        Possible values: lowmediumhighcritical

      • contractorsarray<string>
    • is_activebooleanrequired
    • failing_sincestring (date-time) | nullrequired

      Has been failing since then. The destination is not disabled automatically: the next SOS would stop arriving without anyone deciding it.

    • created_atstring (date-time)required

Used by: List destinations

WebhookEndpoint

object

  • idstring (uuid)required
  • urlstring (uri)required
  • event_typesarray<EventType | "alert.*" | "muster.*">required
  • filtersobjectrequired
    Fields3
    • site_idsarray<string (uuid)>
    • min_severitySeverity

      Possible values: lowmediumhighcritical

    • contractorsarray<string>
  • is_activebooleanrequired
  • failing_sincestring (date-time) | nullrequired

    Has been failing since then. The destination is not disabled automatically: the next SOS would stop arriving without anyone deciding it.

  • created_atstring (date-time)required

WebhookEndpointCreated

object

  • idstring (uuid)required
  • urlstring (uri)required
  • event_typesarray<EventType | "alert.*" | "muster.*">required
  • filtersobjectrequired
    Fields3
    • site_idsarray<string (uuid)>
    • min_severitySeverity

      Possible values: lowmediumhighcritical

    • contractorsarray<string>
  • is_activebooleanrequired
  • failing_sincestring (date-time) | nullrequired

    Has been failing since then. The destination is not disabled automatically: the next SOS would stop arriving without anyone deciding it.

  • created_atstring (date-time)required
  • secretstringrequired

    The signing secret. Shown only this once.

Used by: Create a destination

WebhookEndpointCreate

object

  • urlstringrequired
  • event_typesarray<EventType | "alert.*" | "muster.*">required
  • filtersobject
    Fields3
    • site_idsarray<string (uuid)>
    • min_severitySeverity

      Possible values: lowmediumhighcritical

    • contractorsarray<string>

Used by: Create a destination

WebhookSecretRotated

object

  • secretstringrequired
  • previous_valid_untilstring (date-time)required

Used by: Rotate the signing secret

SandboxScenarioRun

object

  • run_idstring (uuid)required
  • scenarioSandboxScenariorequired

    Possible values: sosfallheat_stressevacuation

  • site_idstring (uuid)required
  • resourceobjectrequired

    What it has opened: check it with its GET, or wait for the webhook.

    Fields2
    • typestringrequired

      Possible values: alertmuster

    • idstring (uuid)required
  • ends_atstring (date-time)required

    When it closes by itself.

Used by: Launch a test scenario

SandboxScenario

string

  • sos, fall, heat_stress: a test person presses SOS, falls or suffers heat stress. The alert goes out (alert.created) and, if nobody resolves it first with PUT /v1/alerts/{id}, it resolves itself after 10 min (alert.resolved).
  • evacuation: a general evacuation of 3 min. At 15 s four people arrive at point A; at 35 s someone arrives at B and the control room rules it out (muster.targets_changed); at 55 s a person asks for help (alert.created, evacuation_help); at 95 s whoever was at B moves on to C; at 3 min, all clear (muster.ended). In between, muster.updated every time the headcount changes.

sosfallheat_stressevacuation

SandboxScenarioRequest

object

  • scenarioSandboxScenariorequired

    Possible values: sosfallheat_stressevacuation

  • site_idstring (uuid)

    The sandbox site. Without it, the first one of yours that is a sandbox site.

Used by: Launch a test scenario