====== HTTP REST API ======
====== Basics ======
http://yourhost.com/wr/?module=remoteapi&key=WRxxxxxxxxxxxx&action=rest&object=method
Where:
* **http://yourhost.com/wr/** - full URL of your working WolfRecorder instance
* **WRxxxxxxxxxxxx** - your WolfRecorder serial key used for authorization
* **object** - some object to do something with some method
* **method** - method name to perform actions with an specified object
Parameters to methods may be specified as POST variable with name "data", that contains JSON array as key=>value inside. All request results will be returned as JSON too.
====== Supported objects and methods list ======
^ Object ^ Method ^ Parameters required ^ Action/Reply ^
| models | getall | | array of all existing camera models |
| storages | getall | | array of available storages |
| | getstates | | array of all storages states |
| cameras | getall | | returs array of all available cameras data |
| | create | modelid + ip + login + password + active + storageid + description | creates new camera |
| | activate | cameraid | sets some camera as active |
| | deactivate | cameraid | deactivates specified camera |
| | setdescription | cameraid + description | sets description for specified camera |
| | delete | cameraid | deletes specified camera |
| | isregistered | ip | checks is some camera is registered by IP on NVR or not? |
| | isipportfree | ip+port | checks is some camera IP+PORT free on NVR or not? |
| users | getall | | returns array of all available users data |
| | create | login + password | creates new limited user |
| | changepassword login + password | | changes password for some user |
| | delete | login | deletes existing user |
| | isregistered | login | checks is user registered or not |
| | checkauth | login + password | checks user credentials |
| acls | getall | | returns array of all available ACLs |
| | getallcameras | | returns array of all cameras ACLs |
| | getallchannels | | returns array of all per-channel ACLs |
| | getchannels | login | returns array of all channels available for user |
| | getcameras | login | returns array of all cameras available for user |
| | assignchannel | login + channelid | assigns some channel to user with ACL |
| | assigncamera | login + cameraid | assigns camera to user with ACL |
| | deassignchannel | login + channelid | deletes channel ACL for some user |
| | deassigncamera | login + cameraid | deletes camera ACL for specified user |
| channels | getall | | returns array of all available channels |
| | getscreenshotsall | | returns array of all available channel screenshots |
| | getscreenshot | channelid | returns specified channel screenshot path |
| | getlivestream | channelid | returns live preview stream URL |
| recorders | getall | | returns array of all running cameras recorders processes |
| | isrunning | cameraid | check is recorder running for some camera or not |
| system | gethealth | | returns array of basic system health parameters |
====== Usage examples ======
===== Models list =====
**Request**
http://yourhost.com/wr/?module=remoteapi&key=WRxxxxxxxxxxxx&action=rest&models=getall
**Reply**
Array
(
[12] => Array
(
[id] => 12
[modelname] => Unv
[template] => UNV_IPC2122LB-SF28-A
)
[11] => Array
(
[id] => 11
[modelname] => Hikvision DS-2CD1023G0E-I
[template] => Hikvision_DS-2CD1023G0E-I
)
[10] => Array
(
[id] => 10
[modelname] => Tyto IPC-5D28-KS-30
[template] => Tyto_IPC-5D28-KS-30
)
....
===== Wrong object or method =====
**Request**
http://yourhost.com/wr/?module=remoteapi&key=WRxxxxxxxxxxxx&action=rest&wrongobject=getall
**Reply**
Array
(
[error] => 1
[message] => "No object specified"
)
**Request**
http://yourhost.com/wr/?module=remoteapi&key=WRxxxxxxxxxxxx&action=rest&users=wrongmethod
**Reply**
Array
(
[error] => 2
[message] => "Method not exists"
)
===== Storages list =====
**Request**
http://yourhost.com/wr/?module=remoteapi&key=WRxxxxxxxxxxxx&action=rest&storages=getall
**Reply**
Array
(
[13] => Array
(
[id] => 13
[path] => /mnt/nfs_disk3/wrstorage2
[name] => NFS mounted storage
)
[1] => Array
(
[id] => 1
[path] => /wrstorage
[name] => Default
)
)
===== Storages states =====
**Request**
http://yourhost.com/wr/?module=remoteapi&key=WRxxxxxxxxxxxx&action=rest&storages=getstates
**Reply**
Array
(
[13] => Array
(
[state] => 1
[total] => 968792403968
[used] => 639428460544
[free] => 329363943424
)
[1] => Array
(
[state] => 1
[total] => 31183237120
[used] => 28042903552
[free] => 3140333568
)
)
===== Existing cameras list =====
**Request**
http://yourhost.com/wr/?module=remoteapi&key=WRxxxxxxxxxxxx&action=rest&cameras=getall
**Reply**
Array
(
[54] => Array
(
[CAMERA] => Array
(
[id] => 54
[modelid] => 11
[ip] => 172.30.1.92
[login] => admin
[password] => SomePassword
[active] => 1
[storageid] => 1
[channel] => kiqgdmrbma1
[comment] => Here some camera description
[realport] => Here is camera RTSP port that depends template or custom port if set
)
[TEMPLATE] => Array
(
[DEVICE] => Hikvision DS-2CD1023G0E-I
[PROTO] => rtsp
[MAIN_STREAM] => /h264
[SUB_STREAM] => /h264
[RTSP_PORT] => 554
[HTTP_PORT] => 80
[SOUND] => 0
)
[STORAGE] => Array
(
[id] => 1
[path] => /wrstorage
[name] => Default
)
[OPTS] => Array
(
[id] => 1
[cameraid] => 57
[rtspport] => 666
[keepsubalive] => 0
[order] =>
)
)
[33] => Array
(
....
===== User creation =====
**Request**
http://yourhost.com/wr/?module=remoteapi&key=WRxxxxxxxxxxxx&action=rest&users=create
**Request data**
$requestData=array(
'login'=>'view666',
'password'=>'PasswordHere'
);
**POST variable 'data'**
{"login":"view666","password":"PasswordHere"}
**Reply**
Array
(
[error] => 0
[message] => Success
)
===== Attempt to create existing user =====
**Request**
http://yourhost.com/wr/?module=remoteapi&key=WRxxxxxxxxxxxx&action=rest&users=create
**Request data**
$requestData=array(
'login'=>'view666',
'password'=>'PasswordHere'
);
**POST variable 'data'**
{"login":"view666","password":"PasswordHere"}
**Reply**
Array
(
[error] => 7
[message] => User already exists
)
We hope it is clear how it works. You can also check out a sample implementation of this API at [[https://github.com/nightflyza/Ubilling/blob/master/api/libs/api.wolfrecorder.php|this link]].