The client class is used to connect to Group-Office and get's the year report data which they can use to display.
Because this might be useful to others I've written this tiny blog post:
<?php class Client { private $host; private $curl; public function __construct($host, $username, $password) { $this->curl = curl_init(); $this->host = rtrim($host, '/'); curl_setopt($this->curl, CURLOPT_USERPWD, $username . ":" . $password); curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, TRUE); } public function request($route, array $data = array()) { curl_setopt($this->curl, CURLOPT_URL, $this->host . '/index.php?r=' . $route); curl_setopt($this->curl, CURLOPT_POST, 1); curl_setopt($this->curl, CURLOPT_POSTFIELDS, http_build_query($data)); $json = curl_exec($this->curl); return json_decode($json); } public function __destruct() { curl_close($this->curl); } } $client = new Client('https://example.group-office.com', 'apiuser', 'SECRET'); $data = $client->request('billing/report/yearReport', array( 'start_date' => '01-01-2017', 'end_date' => '31-12-2017', 'books' => json_encode(array('2')) ) ); var_dump($data);