This document will provide an overview of ZoneMinder’s API.
In an effort to further ‘open up’ ZoneMinder, an API was needed. This will allow quick integration with and development of ZoneMinder.
The API is built in CakePHP and lives under the /api directory. It provides a RESTful service and supports CRUD (create, retrieve, update, delete) functions for Monitors, Events, Frames, Zones and Config.
Here be a list of examples. Some results may be truncated.
You will see each URL ending in either .xml or .json. This is the format of the request, and it determines the format that any data returned to you will be in. I like json, however you can use xml if you’d like.
curl -XGET http://zmdevapi/monitors.json
curl -XGET http://zmdevapi/monitors/1.json
This command will add a new http monitor.
curl -XPOST http://zmdevapi/monitors.js -d "Monitor[Name]=Cliff-Burton \ &Monitor[Function]=Modect \ &Monitor[Protocol]=http \ &Monitor[Method]=simple \ &Monitor[Host]=ussr:pass@192.168.11.20 \ &Monitor[Port]=80 \ &Monitor[Path]=/mjpg/video.mjpg \ &Monitor[Width]=704 \ &Monitor[Height]=480 \ &Monitor[Colours]=4"
This command will change the ‘Name’ field of Monitor 1 to ‘test1’
curl -XPUT http://zmdevapi/monitors/1.json -d "Monitor[Name]=test1"
This command will delete Monitor 1, but will _not_ delete any Events which depend on it.
curl -XDELETE http://zmdevapi/monitors/1.json
curl -XGET http://zmdevapi/events.json
curl -XGET http://zmdevapi/events/1.json
This command will change the ‘Name’ field of Event 1 to ‘Seek and Destroy’
curl -XPUT http://zmdevapi/events/1.json -d "Event[Name]=Seek and Destroy"
This command will delete Event 1, and any Frames which depend on it.
curl -XDELETE http://zmdevapi/events/1.json
This command will change the ‘Value’ field of Config 121 to 901.
curl -XPUT http://zmdevapi/configs/121.json -d "Config[Value]=901"
curl -XPOST http://zmdevapi/zones.json -d "Zone[Name]=Jason-Newsted \ &Zone[MonitorId]=3 \ &Zone[Type]=Active \ &Zone[Units]=Percent \ &Zone[NumCoords]=4 \ &Zone[Coords]=0,0 639,0 639,479 0,479 \ &Zone[AlarmRGB]=16711680 \ &Zone[CheckMethod]=Blobs \ &Zone[MinPixelThreshold]=25 \ &Zone[MaxPixelThreshold]= \ &Zone[MinAlarmPixels]=9216 \ &Zone[MaxAlarmPixels]= \ &Zone[FilterX]=3 \ &Zone[FilterY]=3 \ &Zone[MinFilterPixels]=9216 \ &Zone[MaxFilterPixels]=230400 \ &Zone[MinBlobPixels]=6144 \ &Zone[MaxBlobPixels]= \ &Zone[MinBlobs]=1 \ &Zone[MaxBlobs]= \ &Zone[OverloadFrames]=0"