---
title: "Get Site Early Disarm"
method: GET
path: "/sites/{site_id}/early-disarm"
tags: ["sites"]
---

# Get Site Early Disarm

`GET /sites/{site_id}/early-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}/early-disarm`
- Auth: HTTP bearer

Each live camera's scheduled disarm and whether it can be disarmed early
now (0174). Any login the site is in scope for may read it.

## Path parameters

- `site_id` string, required

## Response `200`

Successful Response

- SiteEarlyDisarmResponse: `GET /sites/{id}/early-disarm` and the result of a disarm or re-arm.
  - `site_id` string, uuid, required: The site.
  - `timezone` string, required: The site's IANA zone.
  - `window_minutes` integer, required: How far ahead of a scheduled disarm one may disarm early.
  - `horizon_minutes` integer, required: How far ahead scheduled_off_at is looked for.
  - `as_of` string, date-time, required: The server instant everything here was resolved at.
  - `site_disarm_active` boolean, required: A whole-site disarm (text, call, app or console) is live, so nothing is eligible.
  - `site_arm_active` boolean: A test arm is live at the site, so nothing is eligible.
  - `cameras` EarlyDisarmCameraModel[], required: Every live camera at the site, in label order.
    - `camera_id` string, uuid, required: The camera row id.
    - `camera_label` string, required: The camera's display name.
    - `schedule_state` 'monitored' | 'heightened' | 'off', required: What the camera's SCHEDULE says right now (camera override, groups or site week, holidays applied), ignoring any disarm or test arm.
    - `scheduled_off_at` string, date-time, nullable: The next instant its schedule turns it off, within horizon_minutes. Null when the schedule already has it off, or nothing turns it off soon (a 24/7 camera, or a holiday).
    - `opens_at` string, date-time, nullable: scheduled_off_at minus 60 minutes: when early disarm becomes available.
    - `eligible` boolean, required: Whether it can be disarmed early right now.
    - `ineligible_reason` 'live_view_only' | 'early_disarmed' | 'site_disarmed' | 'site_armed' | 'already_off' | 'no_scheduled_disarm' | 'too_early', nullable: Why not, when eligible is false. 'site_armed': a live test arm would turn the camera back on when the window ended, so it is refused. 'live_view_only': the camera (or its site) is Live View only and raises no alarms, so there is nothing to disarm.
    - `early_disarm` EarlyDisarmWindowModel: A camera's live early disarm.
      - `set_at` string, date-time, required: When the operator turned the camera off.
      - `until` string, date-time, required: Its scheduled disarm: the schedule takes over here with no gap.
      - `by_name` string, nullable: The operator who did it (snapshot). Null for customer-side logins.
      - `reason` string, nullable: One of the four request reasons.
      - `note` string, nullable: The operator's note, if any. Null for customer-side logins.
  - `changed_camera_ids` string[]: On a disarm or re-arm: the cameras this request actually changed.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/verdun/apis/verdun-api.md) - [All operations](https://skmtc.dev/verdun/apis/verdun-api/llms.txt) - [OpenAPI document](https://skmtc.dev/verdun/apis/verdun-api/revisions/a19366be50a3?raw)
