Authorizing Provisioning API requests
All Provisioning API requests must be authorized using an HMAC256Â signature. The headers required to authorize your requests are:
Header | Description |
---|---|
| The request timestamp, as an epoch in milliseconds. |
| The request HMAC signature. The value for |
| The domain API key (only for common domain requests). Learn more about Devo access keys (API key and API secret) in Security credentials. |
| The reseller API key (only for reseller requests). Contact us to get the API key required for reseller management. |
The following is an example of a signature including all the required headers, using cURL:
curl --request POST \
--url https://api-xx.devo.com/probio/operation \
--header 'Content-Type: application/json' \
--header 'cache-control: no-cache' \
--header 'x-logtrust-reseller-apikey: apikey' \
--header 'x-logtrust-timestamp: timestamp' \
--header 'x-logtrust-sign: calculated_signature' \
--data '{"data": "data"}'
Creating the signature using JavaScript
This requires the CryptoJS library.
var apiKey = 'my-api-key';
var apiSecret = 'my-api-secret';
var timestamp = new Date().getTime();
var hmacObject = CryptoJS.HmacSHA256(apiKey + body + timestamp, apiSecret);
var hmacString = hmacObject.toString(CryptoJS.enc.Hex);
The
body
value can benull
if no body is included.The
timestamp
value is the same as the one included in theÂx-logtrust-timestamp
header (an epoch in milliseconds).The
hmacString
value is the final signature value to be sent.
Creating the signature using Python
import time
import hmac
import hashlib
api_key = 'my-api-key'
api_secret = 'my-api-secret'
timestamp = str(int(time.time()) * 1000)
sign = hmac.new(bytes(api_secret, 'utf-8'), bytes(api_key + data + timestamp, 'utf-8'), hashlib.sha256)
sign = sign.hexdigest()
The
 data
 value can beÂnull
 if the request has no content.TheÂ
timestamp
 value generates a timestamp in milliseconds, as required by theÂx-logtrust-timestamp
 header.
Creating the signature using Java
This requires the javax.crypto library.
Creating the signature using C#
Signature error
If the signature is not properly configured, the response will include the following error:
If you get this error, check that your request includes all the necessary headers, that you are not trying to access a reseller endpoint with domain credentials (or vice versa), and that all the specified values are correct.