Create a free ticket and our support team will provide you necessary assistance.
Before starting with Storm’s RESTful API, please make sure that it’s enabled in our preference.xml file. The default configuration will look as follow:
<REST enabled="true">
<IPWhiteList>192.168.0.1, 192.168.0.2</IPWhiteList>
<Authorization>
<auth username="admin" password="admin" />
</Authorization>
</REST>
There are two levels of authorization for REST-API. The first is IPWhiteList, which can contain multiple IP addresses separated by a comma (space is optional).
The second one is the X-API-Key.
You can leave IPWhiteList empty if you wish, but X-API-Key is mandatory.
Here is an example on how to create a very simple request using PHP. Storm uses X-API-Key for authorization.
<?php
// API key
$apiKey = 'your_api_key_here';
// URL Address for API
$apiUrl = 'http://localhost/rest/info';
// cURL session initialization
$curl = curl_init($apiUrl);
// Optional settings
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'x-api-key: ' . $apiKey
]);
// Executing request
$response = curl_exec($curl);
// Checking for request execution errors
if ($response === false) {
$error = curl_error($curl);
echo 'Request execution error: ' . $error;
} else {
// Checking the response status
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
switch ($httpCode) {
case 200:
// Success - processing the response
$responseData = json_decode($response, true);
// Handle the response data...
break;
case 401:
// Authentication failure
echo 'Authentication failed. Access denied.';
break;
case 404:
// Invalid URL
echo 'Invalid URL. Resource not found.';
break;
case 500:
// Server-side error
echo 'Server-side error. Please try again later.';
break;
default:
// Other response codes
echo 'Unexpected response code: ' . $httpCode;
break;
}
}
// Closing the cURL session
curl_close($curl);
?>
In order to create a POST or PUT request we’ll have to specify Content-Type and add CURLOPT_CUSTOMREQUEST and POSTFIELDS fields like in this example.
Storm accepts POST data as JSON encoded strings.
<?php
// API key
$apiKey = 'your_api_key_here';
// Data to send as JSON
$jsonData = json_encode($data);
// Initialize cURL session
$curl = curl_init($apiUrl);
// Set request options
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($jsonData),
'x-api-key: ' . $apiKey
));
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonData);
// Execute the PUT request
$response = curl_exec($curl);
// Optional: check for errors
if ($response === false) {
echo 'Request error: ' . curl_error($curl);
} else {
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
echo 'HTTP Response Code: ' . $httpCode;
// Optionally decode and handle response
$responseData = json_decode($response, true);
// Process $responseData as needed
}
// Close cURL session
curl_close($curl);
?>
All responses are JSON-based objects. Each response contains status field, which indicated whenever operation was “success” or “failed”. Field “message” is provided whenever an error occurs.
HTTP/1.1 200 OK
Content-Type: application/json
{
"status":"success",
"data":{
"status":"running",
"startDate":1685397038
}
}
or:
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"status":"failed",
"message":"Authorization failed",
}
Storm’s response codes follow standard HTTP schemes:
200 | OK. |
401 | Authentication failure. |
404 | Invalid URL. |
500 | Server-side error. |
Create a free ticket and our support team will provide you necessary assistance.