This is an old revision of the document!
The protocol to communicate with CM public api is JSON RPC 2.0, you can check the full specification here.
Authentication is done using HTTP BASIC AUTHENTICATION. If the authentication is wrong CM will return 401 Unauthorized
The url must be in the form of http://USERNAME:PASSWORD@CM_SERVER_SITE_ADDRESS
To secure the connection use HTTPS with a valid certificate.
To get a list of valid methods to use execute the api command help.
<?php $server = "192.168.10.1:444"; $url = "http://administrator:commsmundi@".$server; //get all the available methods $request = array(); $request['id'] = mt_rand(); $request['jsonrpc'] = "2.0"; $request['method'] = "help"; $data = api_call($url, $request); print_r($data); // get help usage on a specific method $request = array(); $request['id'] = mt_rand(); $request['jsonrpc'] = "2.0"; $request['method'] = "help"; $request['params'] = array(); $request['params']['method_name'] = "dir_get"; $data = api_call($url, $request); print_r($data); function api_call($url, $request) { $headers = array( "Connection: close", "Content-Type: application/json", "Accept: application/json"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1800); curl_setopt($ch, CURLOPT_USERAGENT, 'JSON-RPC PHP Client'); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($request)); $http_body = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($http_code === 401 || $http_code === 403) { return false; } return json_decode($http_body, true); } ?>