WinKAS Credential system

In WinKAS Credential system there is 2 main logon functions that you need to use to get access to all the different methods in the system. Read more about these methods here – Link to API Description

The credential system is “Token” based and therefore you will receive a token when you have a successfull login with the methods: “User authentication” – “Token Authentication”

User authentication

If you don´t have a token you will need to do a complete authentication where you provide the system with all the needed information.. If successful you will get a “token”.

Url: https://air.winkas.net/api/Authentication/Authenticate

Requesttype: Post

Body: {“UserName”:”NAME”, “UserPassword”:”PASSWORD”, “UserContractCode”:”CODE”}

Parameters description:

Name: Username

Password: Password

Code: The code/contractcode is normally the licensnumber.

 

Token authentication

if you already in possession of a validated “token” and just need to login, then make this simple “token” authentication.

Url: https://air.winkas.net/api/Authentication/Authenticate

Requesttype: Post

Body: {“UserToken”:”TOKEN”}

Parameters description:

Token: An existing token.

As mentioned above the result of a successful authentication will return a validated “token” for you. You will need this token for all WinKAS API requests.

Code examples – user authentication.

C#

public string GetToken()
    {
       var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://air.winkas.net/api/Authentication/Authenticate");
        httpWebRequest.ContentType = "text/json";
        httpWebRequest.Method = "POST";

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string json = new JavaScriptSerializer().Serialize(new
            {
                UserName = "xxxxx",
                UserPassword = "xxxxx",
                UserContractCode = "xxxxx"              
            });

            streamWriter.Write(json);
            streamWriter.Flush();
            streamWriter.Close();

            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                var _jsonAuth = streamReader.ReadToEnd();

                dynamic _jsonContent = JsonConvert.DeserializeObject(_jsonAuth);
                string _token = _jsonContent.WinKasData.CurrentToken;

                return _token;
            }
        }
    }
Javascript

    $(document).ready(function () {
        var winkasServer = (function () {
            var getAccounts = function (request) {
                return $.ajax(
                'https://air.winkas.net/api/Accounts/All', {
                    type: "POST",
                    data: request
                });
            };
            var authenticate = function (request) {
                return $.ajax(
                'https://air.winkas.net/api/Authentication/Authenticate', {
                    type: "POST",          
                    data: request
                }
                );
            };
            return {
                getAccounts: getAccounts,
                authenticate: authenticate
            };
        }());
        var el = {
            btnAction: $('#action'),
            result: $('#result')
        };
        el.btnAction.on('click', function () {
            el.result.html("Getting...");
            var request = {
                "UserName": "xxxxx",
                "UserPassword": "xxxxx",
                "UserContractCode": "xxxxx"
            };
            winkasServer.authenticate(request).done(function (data) {
                var token = data.WinKasData.CurrentToken;
                request = {
                    "Token": token
                };
                winkasServer.getAccounts(request).done(function (accounts) {
                    var acc = accounts.Accounts;
                    var html = "";
                    for (var i = 0; i < acc.length; i++) {
                        html += acc[i].Number + ", ";
                    }
                    el.result.html(html);
                });
            });
        });
    });
PHP

//create array of data to be posted
$post_data['UserName'] = 'xxxxx'; //You should add your test user
$post_data['UserPassword'] = 'xxxxx'; //You should add your test password
$post_data['UserContractCode'] = 'xxxxx'; //You should add your test account/contract

//traverse array and prepare data for posting (key1=value1)
foreach ( $post_data as $key => $value) {
	$post_items[] = $key . '=' . $value;
}

//create the final string to be posted using implode()
$post_string = implode ('&', $post_items);

//create cURL connection
$curl_connection = curl_init('https://air.winkas.net/api/Authentication/Authenticate');

//set options
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);

//set data to be posted
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);

//perform our request
$result = curl_exec($curl_connection);

//dump result
echo '
';
print_r($result);
echo '
------------------------ '; //show information regarding the request echo '
';
print_r(curl_getinfo($curl_connection));
echo '
'; //close the connection curl_close($curl_connection); 
ASP (classic)

<% '/// Include json converter - http://www.aspjson.com %>
<!--#include file="aspJSON1.17.asp" -->
<%
Const apiUrl = "https://air.winkas.net/api/"
Dim apiMethod
Dim requestBody
Dim apiResponse
Dim responseBody
Dim responseStatus
Dim responseMessage
Dim httpService
Dim token

'/// Get access token

apiMethod = "Authentication/Authenticate"

Set requestBody = New aspJSON

With requestBody.data
	.Add "UserName", "xxxxx"
	.Add "UserPassword", "xxxxx"
	.Add "UserContractCode", "xxxxx"
End With

Set httpService = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
httpService.open "POST", apiUrl & apiMethod
httpService.setRequestHeader "Content-Type", "application/json; charset=utf-8"
httpService.send requestBody.JSONoutput
apiResponse = httpService.responseText

Set responseBody = New aspJSON
responseBody.loadJSON apiResponse

responseStatus = responseBody.data("WinKasStatus")
responseMessage = responseBody.data("WinKasMessage")

If responseStatus <> 0 Then 
	Response.Write "<p>Authentication failed!</p>"
	Response.Write "<p>" & responseMessage & "</p>"
	Response.End
End If

token = responseBody.data("WinKasData").item("CurrentToken")