The CommsMundi public api allow third party aplications to take control or interect directly with the CommsMundi modules.
To use it you must first activate the api module and configure it on the frontend page (in Home → Frontend) by adding a new site with the application commsmundi public api enabled.
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); } ?>