Create report

Composes and files a report from one estate read, so the same figures read the same a month later.

POST /v1/patrol/report

Addresshttps://api.hanzo.ai/v1/patrol/report
MethodPOST
Operationpost_patrol_report
AuthAuthorization: Bearer $HANZO_API_KEY

Composes and files a report from one estate read, so the same figures read the same a month later. The text is stored on the document; the PDF is produced on read at /v1/patrol/report/{name}.

A client report naming a customer is an account of that customer's estate and is theirs to download; naming none covers every customer, which is an account of the operation.

Request

5 fields, body application/json (required).

FieldInTypeRequiredDescription
clientbodystring—Client is the customer to report on, read by kind client.
frombodystring—From is the start of the window to cover.
incidentbodystring—Incident is the incident to report on, required for kind incident.
kindbodystring—Kind is shift, incident or client.
tobodystring—To is the end of that window.

Response

StatusBodyMeaning
201patrol.patrolReportOutcreated
defaultproblem-detailsrefused

201 body — 9 fields.

FieldInTypeAlwaysDescription
databodypatrol.patrolReport—
data.atbodystring—At is when it was filed.
data.bodybodystring—Body is the report as text.
data.clientbodystring—Client is the customer it is about, or empty.
data.frombodystring—From is the start of the window the report covers.
data.incidentbodystring—Incident is the incident it is about, or empty.
data.kindbodystring—Kind is shift, incident or client.
data.namebodystring—Name is the report's document name and the segment /v1/patrol/report/{name} addresses it by.
data.tobodystring—To is the end of that window.

Failure carries the platform error shape — see Errors.

Examples

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

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

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

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?