Zoned Properties · Call Desk Records API

For scripts and bots. Every call needs the API key. Records use the exact per-APN format of the desks' Backup JSON. Writes merge — they never delete anything — and show up in open desks within ~20 seconds. Each change is recorded in a per-parcel audit log.

Endpoints

GET  /maricopa/records              all records
GET  /maricopa/records?apn=30440911  one or more (comma-separated, dashes ok)
GET  /maricopa/records?audit=30440911  change history for a parcel
POST /maricopa/records              {"records": {"30440911": { …record… }}}
                                    optional "replace": ["30440911"] to replace instead of merge
(same under /thomas/records for the Thomas Rd desk)

Headers

X-API-Key: <key>            (or Authorization: Bearer <key>)
X-Actor: patrick-bot        (optional — name shown in the audit log)
Content-Type: application/json

Example

curl -X POST https://zp-desk-api.pages.dev/maricopa/records \
  -H "X-API-Key: $KEY" -H "X-Actor: patrick-bot" -H "Content-Type: application/json" \
  -d '{"records":{"30440911":{"nlog":[{"id":"bot-20261009-1","ts":"2026-10-09 15:00","txt":"Brochure reviewed"}],"next":"2026-10-12"}}}'

Merge rules

Text fields: a non-empty incoming value wins. Lists (nlog, people, tasks, log, links, mailers): added by item id; the same id updates that item. Give every new item a unique id. Flags (pri, dnc…) can be set, never silently cleared. Items without a by are stamped as BOT.