The current SDK is for PHP. Please inquire about SDKs for other mainstream languages.
We take data security seriously! All data is transferred via HTTPS and requests are signed using a private key.
We accept 3 types of communication: GET, POST and JSON POST. If you want to use the last one, please remember to add [Content-Type: application/json] header, and to use json as a POST body content.
Below is a simple PHP class for making API calls:
<?php
class GatherUpSimpleApi {
const URL = 'https://app.gatherup.com/api';
const TIMEOUT = 30; // 30 seconds timeout
/**
* Init
*
* @param string $clientId
* @param string $privateKey
*/
public function __construct($clientId, $privateKey) {
$this->clientId = $clientId;
$this->privateKey = $privateKey;
}
/**
* Do HTTP API request
*
* @param string $resource
* @param array[string] $request
*
* @return string JSON response
*/
public function doRequest($resource, $request) {
$request['clientId'] = $this->clientId;
$request['hash'] = $this->signRequest($request, $this->privateKey);
return $this->doJsonPost($resource, $request);
}
/**
* JSON POST HTTP request
*
* @param string $resource
* @param array[string] $request
*
* @return string JSON response
*/
protected function doJsonPost($resource, $request) {
$ch = curl_init(self::URL . $resource);
curl_setopt_array($ch, array(
CURLOPT_POST => TRUE,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_TIMEOUT => self::TIMEOUT,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
CURLOPT_POSTFIELDS => json_encode($request)
));
return curl_exec($ch);
}
/**
* Sign request with private key
*
* @param array[string] $request
* @param string $privateKey
*
* @return string Hash sign
*/
protected function signRequest($request, $privateKey) {
ksort($request);
$control = $privateKey;
foreach ($request as $key => $value) {
$control .= $key . $value;
}
return hash('sha256', $control);
}
}
And an example how to use it (Please review https://help.gatherup.com/knowledge-base/gatherup-api-client-key-and-business-id on how to find your clientId and privateKey)::
<?php
$privateKey = 'ea480aeb30a44e7ba85448619f9a6a94775b35d5886d4ce52dd452efb414406e';
$clientId = '04f78076fbfc66940169d2199af7c6698019f9f3';
$api = new GatherUpSimpleApi($clientId, $privateKey);
$response = json_decode($api->doRequest('/test', array()));
print_r($response);
Limit: 5 requests per second. Everything above this limit will return 503 HTTP error.