Listed below is the documentation for connecting to the SouthData Web APIs.
All of our API methods require an auth token to validate the request. To generate an auth token, first create the following XML:
<AuthToken><GUID>GUID value</GUID><TimeStamp>DateTime value</TimeStamp></AuthToken>
GUID must be a valid GUID value, e.g. C515E3A1-BB0B-463A-A689-0206DA85C3E1. Randomly generate your own unique GUID value for each method call (e.g. Guid.NewGuid()).
TimeStamp must be a valid DateTime value, e.g. 7/1/2017 5:00:00 PM. Generate your own unique DateTime value for each method call (e.g. DateTime.Now).
Each and every call that you make to the API must have a unique GUID and TimeStamp combination. Any subsequent method calls with the exact same AuthToken (GUID and DateTime combination) will be considered an invalid duplicate request.
Lastly, take your XML version of your auth token and AES encrypt it with the salt given to you by SouthData. This final AES encrypted value will be the value for your auth token for one API method call.
Here is a C# example of how to call the SouthData Web API. This code example uses the AESEncryptionUtils helper class to encrypt the auth token.
HttpClient client = new HttpClient();
string postUrl = "https://adfbeta.southdata.com/api/Test/VerifyAccountInfo";
string authenticationSalt = "INSERT_SALT_PROVIDED_BY_SOUTHDATA_HERE";
string authTokenXML = "<AuthToken>" +
"<GUID>" + Guid.NewGuid() + "</GUID>" +
"<TimeStamp>" + DateTime.Now + "</TimeStamp>" +
"</AuthToken>";
string userID = "0"; // enter your client ID #
string authToken = AESEncryptionUtils.Encrypt(authTokenXML, authenticationSalt);
var jsonRequest = "{'UserID':'" + userID + "','AuthToken':'" + authToken + "'}";
var postContent = new StringContent(jsonRequest, Encoding.UTF8, "application/json");
var result = client.PostAsync(postUrl, postContent);
var htmlResponse = "";
htmlResponse += "UserID: " + userID + "<br />";
htmlResponse += "AuthToken: " + authToken + "<br />";
htmlResponse += "Response Status Code: <pre><code>" + result.Result.StatusCode + "</pre></code>";
htmlResponse += "Response Content: <pre><code>" + result.Result.Content.ReadAsStringAsync().Result + "</pre></code><br />";