{% extends "layout.html" %} {% block content %}

WBIA RESTful API

Method Description
GET Retrieves data from WBIA
PUT Sets data in WBIA using specified items and the new values. PUT can also be used to update the state of WBIA by running algorithm subroutines
POST Adds data to WBIA using new values
DELETE Deletes data from WBIA using specified items

User Authentication - used for all web pages

Username: wbia
Password: wbia

Token Authentication - used for all API calls

Name:   {{ app_name }}
Secret: {{ app_secret }}

Code snippets

Python Version:
    def get_signature(key, message):
        return str(hmac.new(key, message, sha1).digest().encode("base64").rstrip('\n'))

    def get_authorization_header(url):
        app_name = 'WBIA'
        app_secret = 'CB73808F-A6F6-094B-5FCD-385EBAFF8FC0'

        url = str(request.url)
        hash_ = get_signature(app_secret, url)
        header = '%s:%s' % (app_name, hash_, )
        return header


C# Version:
    private static string GetSignature(string key, byte[] messageToSendBytes)
    {
        var keyHMAC = new HMACSHA1(Encoding.ASCII.GetBytes(key));
        var keyBytes = keyHMAC.ComputeHash(messageToSendBytes);
        return Convert.ToBase64String(keyBytes);
    }

    public static string GetAuthorizationHeader(string url)
    {
        string appName = "WBIA";
        string appSecret = "CB73808F-A6F6-094B-5FCD-385EBAFF8FC0";

        var messageToSendBytes = Encoding.ASCII.GetBytes(url);

        var secretKeySignature = GetSignature(appSecret, messageToSendBytes);
        return string.Format("{0}:{1}", appName, secretKeySignature);
    }


Javascript Version (using CryptoJS):
    httpAuth = function() {
        var getSignature = function(message, key) {
            var hash = CryptoJS.HmacSHA1(message, key);
            return CryptoJS.enc.Base64.stringify(hash);
        }
        return {
            getAuthorizationHeader: function(url) {
                var app_name = 'WBIA'
                var app_secret = 'CB73808F-A6F6-094B-5FCD-385EBAFF8FC0'

                var hash = getSignature(url, app_secret)
                var header = app_name.concat(':', hash)
                return header
            },
        }
    }();


Java Version:
    private static final String HMAC_SHA1_ALGORITHM = "HmacSHA1";

    private static String getSignature(String key, byte[] messageToSendBytes) throws NoSuchAlgorithmException, InvalidKeyException {
        SecretKeySpec keyHmac = new SecretKeySpec(key.getBytes(), HMAC_SHA1_ALGORITHM);
        Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
        mac.init(keyHmac);
        return new String(Base64.encodeBase64(mac.doFinal(messageToSendBytes)));
    }

    public static String getAuthorizationHeader(String url) throws NoSuchAlgorithmException, InvalidKeyException {
        String appName = "WBIA";
        String appSecret = "CB73808F-A6F6-094B-5FCD-385EBAFF8FC0";
        return appName + ":" + getSignature(appSecret, url.getBytes());
    }

Example Request

Request:
    Name:    WBIA
    Secret:  CB73808F-A6F6-094B-5FCD-385EBAFF8FC0
    Method:  GET
    URL:     {{ app_url }}    * NOTE: The URL sent to the server includes the protocol and port.
    Headers: {
        'Authorization': '{{ app_auth }}'
    }

Response: {
    "status": {
        "cache": -1,
        "message": "",
        "code": 200,
        "success": true
    },
    "response": "testdb1"
}

Documentation

http://erotemic.github.io/wbia/wbia.control.html
http://erotemic.github.io/wbia/wbia.web.html

GET API calls

{% for (method, url) in rule_list['GET'] %}{{ method }} : {{ url }} 
{% endfor %}

PUT API calls

{% for (method, url) in rule_list['PUT'] %}{{ method }} : {{ url }} 
{% endfor %}

POST API calls

{% for (method, url) in rule_list['POST'] %}{{ method }} : {{ url }} 
{% endfor %}

DELETE API calls

{% for (method, url) in rule_list['DELETE'] %}{{ method }} : {{ url }} 
{% endfor %}
{% endblock %}