API === This document will provide an overview of ZoneMinder's API. Overview -------- 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. Examples -------- 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. Return a list of all monitors ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``curl -XGET http://zmdevapi/monitors.json`` Retrieve monitor 1 ^^^^^^^^^^^^^^^^^^ ``curl -XGET http://zmdevapi/monitors/1.json`` Add a monitor ^^^^^^^^^^^^^ 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"`` Edit monitor 1 ^^^^^^^^^^^^^^ This command will change the 'Name' field of Monitor 1 to 'test1' ``curl -XPUT http://zmdevapi/monitors/1.json -d "Monitor[Name]=test1"`` Delete monitor 1 ^^^^^^^^^^^^^^^^ This command will delete Monitor 1, but will _not_ delete any Events which depend on it. ``curl -XDELETE http://zmdevapi/monitors/1.json`` Return a list of all events ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``curl -XGET http://zmdevapi/events.json`` Retrieve event 1 ^^^^^^^^^^^^^^^^ ``curl -XGET http://zmdevapi/events/1.json`` Edit event 1 ^^^^^^^^^^^^ 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"`` Delete event 1 ^^^^^^^^^^^^^^ This command will delete Event 1, and any Frames which depend on it. ``curl -XDELETE http://zmdevapi/events/1.json`` Edit config 121 ^^^^^^^^^^^^^^^ This command will change the 'Value' field of Config 121 to 901. ``curl -XPUT http://zmdevapi/configs/121.json -d "Config[Value]=901"`` Create a Zone ^^^^^^^^^^^^^ ``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"``