source code in in the file plugins/ExampleAPI/API.php for more documentation. * @method static \Piwik\Plugins\ExampleAPI\API getInstance() */ class API extends \Piwik\Plugin\API { /** * Defines if the parameters passed to the public API methods in this class will be automatically sanitized or not. * When setting this value to false, please ensure to handle all input parameters with care. * Especially parameters provided in an unspecific type, as string or array might contain harmful content. * If those values are persisted and displayed in the UI somewhere, ensure to sanitize/escape them for output. * * @var bool */ protected $autoSanitizeInputParams = true; /** * Get Matomo version */ public function getMatomoVersion(): string { Piwik::checkUserHasSomeViewAccess(); return Version::VERSION; } /** * Get Answer to Life */ public function getAnswerToLife(): int { return 42; } /** * Returns a custom object. * API format conversion will fail for this custom object. * If used internally, the data structure can be returned untouched by using * the API parameter 'format=original' * * @return MagicObject Will return a standard Matomo error when called from the Web APIs */ public function getObject(): MagicObject { return new MagicObject(); } /** * Sums two floats and returns the result. * The parameters are set automatically from the GET request * when the API function is called. You can also use default values * as shown in this example. */ public function getSum(float $a = 0, float $b = 0): float { return $a + $b; } /** * Returns null value * * @return null */ public function getNull() { return null; } /** * Get array of descriptive text * When called from the Web API, you see that simple arrays like this one * are automatically converted in the various formats (xml, csv, etc.) * * @return array */ public function getDescriptionArray(): array { return array('piwik', 'free/libre', 'web analytics', 'free', 'Strong message: Свободный Тибет'); } /** * Returns a custom data table. * This data table will be converted to all available formats * when requested in the API request. */ public function getCompetitionDatatable(): DataTable { $dataTable = new DataTable(); $row1 = new Row(); $row1->setColumns(array('name' => 'piwik', 'license' => 'GPL')); // Rows Metadata is useful to store non stats data for example (logos, urls, etc.) // When printed out, they are simply merged with columns $row1->setMetadata('logo', 'logo.png'); $dataTable->addRow($row1); $dataTable->addRowFromSimpleArray(array('name' => 'google analytics', 'license' => 'commercial')); return $dataTable; } /** * Get more information on the Answer to Life... */ public function getMoreInformationAnswerToLife(): string { return "Check http://en.wikipedia.org/wiki/The_Answer_to_Life,_the_Universe,_and_Everything"; } /** * Returns a Multidimensional Array * Only supported in JSON * * @return array */ public function getMultiArray(): array { $return = array( 'Limitation' => array( "Multi dimensional arrays is only supported by format=JSON", "Known limitation", ), 'Second Dimension' => array(true, false, 1, 0, 152, 'test', array(42 => 'end')), ); return $return; } }