Create alarm

Takes one activation.

POST /v1/patrol/alarm

Addresshttps://api.hanzo.ai/v1/patrol/alarm
MethodPOST
Operationpost_patrol_alarm
AuthAuthorization: Bearer $HANZO_API_KEY

Takes one activation. It records the activation whatever happens, then matches a site — the one the caller named, else the one whose account number reported — and on a match opens an incident in state received with that site's tier and SLA, puts the site into alarm, raises a red feed row and tells the controllers. An activation that matches no site is still recorded, raises an amber row, and answers 202: an activation is never dropped.

It admits the receiving centre's own credential and a controller keying one in by hand. The centre holds the centre role its tenant granted it, which posts an activation and reads nothing, like every other identity here.

The centre's own reference identifies the activation while the response it opened is still running, so a redelivery is answered with that response rather than dispatching a second unit. Centres recycle references, so once the response has closed the same one is the next activation.

Request

7 fields, body application/json (required).

FieldInTypeRequiredDescription
accountbodystring—Account is the alarm-panel account number that reported.
rawbodyany—Raw is the activation exactly as it arrived, kept verbatim up to 16 KiB.
refbodystring—Ref is the receiving centre's own reference for the activation.
sitebodystring—Site names the site directly, by document name, when the caller already knows it.
sourcebodystring—Source is which receiver or operator the activation came through.
triggerbodystring—Trigger is what the panel reported.
zonebodystring—Zone is the panel zone that fired.

Response

StatusBodyMeaning
201patrol.patrolAlarmOutcreated
202patrol.patrolAlarmOutaccepted
defaultproblem-detailsrefused

201 body — 38 fields.

FieldInTypeAlwaysDescription
databodypatrol.patrolActivation—
data.alarmbodystring—Alarm is the recorded activation's document name.
data.incidentbodypatrol.patrolIncident—
data.incident.checkedbodystring—Checked is when the premises had been walked.
data.incident.clocksbodypatrol.patrolClock[]—Clocks is the SLA clocks, present on a single-incident read.
data.incident.clocks[].elapsedbodyinteger (int64)—Elapsed is the seconds run so far, or the seconds it took when settled.
data.incident.clocks[].labelbodystring—Label names the clock: Verify, Dispatch or On site.
data.incident.clocks[].settledbodyinteger (int64)—Settled is the seconds it took, or -1 while the clock is still running.
data.incident.clocks[].targetbodyinteger (int64)—Target is the contracted seconds.
data.incident.closedbodystring—Closed is when the incident was closed.
data.incident.dispatchedbodystring—Dispatched is when a unit was assigned.
data.incident.enroutebodystring—Enroute is when that unit started moving.
data.incident.escalatedbodystring—Escalated is when it was escalated, or empty.
data.incident.falsebodyboolean—False says the activation turned out to be nothing.
data.incident.filedbodystring—Filed is when the report was written.
data.incident.namebodystring—Name is the incident's document name.
data.incident.onsitebodystring—Onsite is when it arrived.
data.incident.openedbodystring—Opened is when the activation landed.
data.incident.outcomebodystring—Outcome is what it came to.
data.incident.refbodystring—Ref is the receiving centre's own reference.
data.incident.securedbodystring—Secured is when the site was made safe.
data.incident.sitebodystring—Site is where it is happening.
data.incident.slabodyinteger (int64)—SLA is the contracted response time in minutes.
data.incident.statebodystring—State is one of received, verified, dispatched, enroute, onsite, checked, secured, filed and closed.
data.incident.stepsbodypatrol.patrolAct[]—Steps is the act trail, present on a single-incident read.
data.incident.steps[].actbodystring—Act is the act performed.
data.incident.steps[].actorbodystring—Actor is who performed it.
data.incident.steps[].atbodystring—At is when it happened.
data.incident.steps[].detailbodystring—Detail is what they wrote with it.
data.incident.steps[].frombodystring—From is the state the incident left.
data.incident.steps[].tobodystring—To is the state it landed in.
data.incident.tierbodystring—Tier is the site's contracted service tier.
data.incident.triggerbodystring—Trigger is what the panel reported.
data.incident.unitbodystring—Unit is the call sign attending, or empty.
data.incident.verifiedbodystring—Verified is when the activation was confirmed real.
data.incident.zonebodystring—Zone is the panel zone that reported.
data.matchedbodyboolean—Matched says whether a site was found for it.
data.sitebodystring—Site is the site it matched, or empty.

Failure carries the platform error shape — see Errors.

Examples

hanzo patrol alarm
import { Configuration, PatrolApi } from 'hanzoai';

const api = new PatrolApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postPatrolAlarm({ account: "<account>", raw: "<raw>" });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import PatrolApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = PatrolApi(client).post_patrol_alarm(account="<account>", raw="<raw>")
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.PatrolAPI.PostPatrolAlarm(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::apis::{configuration::Configuration, patrol_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = patrol_api::post_patrol_alarm(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.PatrolApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new PatrolApi(client).postPatrolAlarm();
curl -X POST https://api.hanzo.ai/v1/patrol/alarm \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "account": "<account>",
       "raw": "<raw>"
     }'

MCP reaches patrol through the patrol tool, which names its 26 operations with its own verbs — this one among them, under a name only MCP declares. describe explains any of them:

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "describe",
         "arguments": {
           "op": "get_patrol_camera"
         }
       }
     }'

Patrol API · All Hanzo APIs · Interactive reference

Was this page useful?