This document describes how to configure, connect to, and interact with the API. For information on expanding the API with your own custom code see Extending the API. All examples are presented using PHP.
Configuration
Authentication
The API supports Basic Authentication.
Connecting
There are a number of ways to connect to the API. Choose the option that best fits your environment.
Remotely
To connect remotely, first determine the URL of the API for your installation. The default path is http://yourdomain.com/installpath/index.php/api/. Where yourdomain.com is the domain you've installed Blesta in, and installpath is the path to Blesta. If you have enabled pretty URLs in Blesta the path may exclude index.php, and instead appear as http://yourdomain.com/installpath/api/.
Because requests may contain sensitive information, you should only process requests remotely over a secure connection (i.e. only use HTTPS).
The following example illustrates how to connect to the API using cURL.
<?php // The URL to the API $api_url = "https://yourdomain.com/installpath/index.php/api/"; // API credentials $api_username = "username"; $api_key = "key"; // The Model to request $model = "users"; // The method to request $method = "get"; // The response format $format = "xml"; // All parameters to send $params = array( 'user_id'=>1 ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $api_url . $model . "/" . $method . "." . $format . "?" . http_build_query($params)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, $api_username . ":" . $api_key); $result = curl_exec($ch); echo $result; ?>
Locally
Using the Command Line Interface
The API is available via a command line interface (CLI).
Within the Blesta environment
If you're working with or have created code within the Blesta environment, there's no need to use the API at all. All of the methods available in the API are first and foremost available to Blesta, in the form of models. To use these models, simply load the model within your environment.
// from somewhere in your controller... $this->uses(array("ModelName")); // Now invoke it $this->ModelName->someMethod($param1, $param2);
// from any other class... Loader::loadModels($this, array("ModelName")); // Now invoke it $this->ModelName->someMethod($param1, $param2);