sites

Disarm Site

post/sites/{site_id}/disarm

Request

  • Base URL
    https://api.verdun.ai (the document declares no server; this is the origin it was published from)
  • URL
    https://api.verdun.ai/sites/{site_id}/disarm
  • Auth
    HTTP bearer

Path parameters

site_idstring required

Request body

minutesinteger required

How long the site's cameras should stop alerting, in minutes. Clamped down to the site's disarm_max_minutes; the response says whether it was.

Example request

{
  "minutes": 15
}

Response

Successful Response

site_idstring uuid required

The site whose cameras this concerns.

disarm_untilstring date-time nullable

When the cameras come back on by themselves. An early re-arm sets this to the moment it ended rather than nulling it, so the window that really happened stays readable historically — which means a non-null value does NOT mean 'disarmed'. Read disarm_active for that. Expiry is implicit; nothing sweeps this column.

disarm_set_atstring date-time nullable

When the current disarm window began. The resolver's predicate is the window between this and disarm_until, so a historical read is not repainted by a disarm set later.

disarm_bystring nullable

Who turned the cameras off: 'operator:<uuid>' (console), 'sms:<E.164>' for a customer text, 'voice:<E.164>' for a customer call, or 'app:<uuid>' (the customer's mobile app). Retained after an early re-arm, alongside the closed window.

disarm_activeboolean

Whether the cameras are off RIGHT NOW — the window predicate, resolved server-side. Always false on a re-arm response. Never derive this from disarm_until.

minutesinteger nullable

Minutes actually applied, after clamping; null on a re-arm.

clampedboolean

True when the request asked for longer than the site's cap.

monitoring_nowstring nullable

Live View only (site flag or every live camera individually flagged) reads 'live_view_only' and overrides both arm and disarm windows. Otherwise: Whether this site's cameras are being monitored RIGHT NOW, resolved server-side: 'disarmed' (a live text/call/console disarm window - it beats every schedule), 'monitored' (at least one live camera resolves monitored or heightened now), 'off_schedule' (no camera is monitored now, but the schedule turns one on within 7 days - see monitoring_next_change_at), or 'unscheduled' (no monitored hours anywhere in the week). On a re-arm response this is what the SCHEDULE leaves behind, which is the whole point: re-arming an off-schedule site does not turn its cameras on.

schedule_monitoring_nowstring nullable

The current schedule-only monitoring state, ignoring Live View only flags and the disarm window. Resolved at the same instant as monitoring_now. A successful disarm reports monitoring_now='disarmed'; this separate field lets the console explain when cameras were already off by schedule.

monitoring_next_change_atstring date-time nullable

The next instant this site's monitored/off state flips BY SCHEDULE ALONE - the disarm window is deliberately ignored, because you already have disarm_until above. Null when nothing changes within 7 days and for an 'unscheduled' site. Aligned to a 15-minute boundary in the site's own timezone.

Example response

{
  "disarm_by": "operator:6f1c…",
  "disarm_active": true,
  "minutes": 90,
  "clamped": true,
  "monitoring_now": "monitored",
  "schedule_monitoring_now": "monitored",
  "monitoring_next_change_at": "2026-09-08T04:30:00Z"
}

Changes

No recorded changes to this operation across all 2 revisions of this API.