Create state

Moves a unit between states — on shift, on a break, off, or in trouble.

POST /v1/patrol/unit/{name}/state

Addresshttps://api.hanzo.ai/v1/patrol/unit/{name}/state
MethodPOST
Operationpost_patrol_unit_by_name_state
AuthAuthorization: Bearer $HANZO_API_KEY

Moves a unit between states — on shift, on a break, off, or in trouble. An officer may move only their own unit; the control room may move any.

Request

3 fields, body application/json (required).

FieldInTypeRequiredDescription
namepathstringyesName is the unit's call sign, from the path.
namebodystring—Name is the unit's call sign, from the path.
statebodystring—State is available, assigned, enroute, onsite, offline, break or emergency.

Response

StatusBodyMeaning
200patrol.patrolUnitOutok
defaultproblem-detailsrefused

200 body — 13 fields.

FieldInTypeAlwaysDescription
databodypatrol.patrolUnit—
data.duebodystring—Due is the lone-worker deadline, or empty when none is set.
data.latbodynumber (double)—Lat is the unit's last latitude in degrees.
data.lonbodynumber (double)—Lon is the unit's last longitude in degrees.
data.namebodystring—Name is the unit's call sign, which is its document name and the segment /v1/patrol/unit/{name}/fix addresses it by.
data.officerbodystring—Officer is who is crewing it.
data.sectorbodystring—Sector is the patrol sector it works.
data.seenbodystring—Seen is when the unit last reported.
data.statebodystring—State is available, assigned, enroute, onsite, offline, break or emergency.
data.trailbodypatrol.patrolFix[]—Trail is the tail of the unit's recorded positions, oldest first.
data.trail[].atbodystring—At is when the position was recorded.
data.trail[].latbodynumber (double)—Lat is the latitude in degrees.
data.trail[].lonbodynumber (double)—Lon is the longitude in degrees.

Failure carries the platform error shape — see Errors.

Examples

hanzo patrol unit state <name>
import { Configuration, PatrolApi } from 'hanzoai';

const api = new PatrolApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postPatrolUnitByNameState({ name: 'name', name: "<name>", state: "<state>" });
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_unit_by_name_state(name='name', name="<name>", state="<state>")
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.PatrolAPI.PostPatrolUnitByNameState(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_unit_by_name_state(&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).postPatrolUnitByNameState();
curl -X POST https://api.hanzo.ai/v1/patrol/unit/<name>/state \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "name": "<name>",
       "state": "<state>"
     }'

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?