API SDK Download

.Net Framework

Sample Code A75

using TSS.TrackWizz.SDK.RiskRating.Models;
using TSS.TrackWizz.SDK.RiskRating.Models.A75;
using TSS.TrackWizz.SDK.RiskRating.Models.A75.ClientModel;
using TSS.TrackWizz.SDK.RiskRating.WebClients.APIWebClients;

namespace A75SampleApp
{
    public partial class SampleCode 
    {
        private void SendRequestButton_Click()
        {
            A75RequestData requestDataModel = GenerateRequestModel();//request Model 
            var publicKey = File.ReadAllBytes(publicKeyText.Text);//public key file path
            var privateKey = File.ReadAllBytes(requestPrivatekey.Text);//private key file path
            var url = requestUrlText.Text;//API URL
            var password = txtPrivateKeyPassword.Text; // private key password
            A75ClientRequestModel a75ClientRequestModel = new A75ClientRequestModel(tokenText.Text, privateKey, publicKey, requestDataModel,
                         txtPrivateKeyPassword.Text, url);
            A75ClientResponseModel response = new A75WebClient().Execute(a75ClientRequestModel);
        }
        private A75RequestData GenerateRequestModel()
        {
            A75RequestData requestDataModel = new A75RequestData();
            //Fill the request model properties as per the the Document
            return requestDataModel;
        }

    }
}

Download

Python

Python Version- 3.8.5

import uuid 
from lxml import etree 
import asyncio 
from dicttoxml import dicttoxml 
import uuid 
from RiskRating.WebClients.APIWebClients import A75WebClient  
from RiskRating.Models import A75ClientRequestModel 
from RiskRating.Models import A75RiskRatingRequestData,  
SegmentDetail,PEPClassificationDetail,AdverseMediaClassificationDetail,CountryDetail,RiskDetail,NatureOfBusinessDeta il,ProductSegmentDetail,ReputationClassificationDetail,RegAMLSpecialCategoryDetail,TagDetail 
from RiskRating.Utils import RequestApiUtil 
def creatingValidXMLFromModel(requestDataModel: A75RiskRatingRequestData): 
 # This tags will be class tags  
 parentTags = ["Segments",  
 "SpecificRisk",  
 "Citizenship",  
 "AdverseMediaClassification",  
 "PEPClassification", 
 "Nationality", 
 "RegAMLSpecialCategoryDetails", 
 "Tags", 
 "NatureOfBusiness", 
 "ProductSegments", 
 'ReputationClassification', 
 'CountryofOperation' 
 ] 
  
 # Make a dictonary of class tag and its child tag  
 parentTagsDict = { 
 "Segments": "SegmentDetail", 
 "SpecificRisk": "RiskDetail", 
 "Citizenship":"CountryDetail", 
 "AdverseMediaClassification": "AdverseMediaClassificationDetail", 
 "PEPClassification":"PEPClassificationDetail", 
 "Tags":"TagDetail", 
 "RegAMLSpecialCategoryDetails":"RegAMLSpecialCategoryDetail", 
 "Nationality":"CountryDetail", 
 "NatureOfBusiness": "NatureOfBusinessDetail", 
 "ProductSegments": "ProductSegmentDetail", 
 "ReputationClassification": "ReputationClassificationDetail", 
 'CountryofOperation': 'CountryDetail' 
 } 
 # Convert class model to dictonary 
 reqDataDict = vars(requestDataModel) 
 # Maintain a list to store all the values of a that tag 
 tagsDataDict = { 
 "Segments": [], 
 "SpecificRisk": [], 
 "Citizenship": [], 
 "AdverseMediaClassification": [], 
 "PEPClassification": [], 
 "Tags":[], 
 "RegAMLSpecialCategoryDetails":[], 
 "Nationality":[], 
 "NatureOfBusiness": [], 
 "ProductSegments": [], 
 "ReputationClassification": [],
 'CountryofOperation': [] 
 } 
 # Iterate through class tags n store the data inside tagsDataDict and empty it 
 for parent in parentTags: 
 tagDataList = [vars(i) for i in reqDataDict[parent]] 
 tagsDataDict[parent] = tagDataList 
 reqDataDict[parent] = {} 
  
 """ 
 NOTE:Main reason to empty those tags where because the input "requestModel" is a complex  object ie It is an Object which has other class objects inside it. 
 This will fail if you don't manually convert those inner objects, thus we have emptied it and  extracted the data into tagsDataDict. 
 """  
 xmlStrBytes = dicttoxml(reqDataDict, custom_root="A75RiskRatingRequestData", attr_type = False) 
 # Now we will add the above removed tags with their data  
 for parent in parentTags: 
 if tagsDataDict[parent] != []: 
 xmlStrBytes = RequestApiUtil.addNodesToParentTag(etree.fromstring(xmlStrBytes), parent,  parentTagsDict[parent], tagsDataDict[parent]) 
  
 if xmlStrBytes != "": 
 xmlStr = xmlStrBytes.decode('utf-8') 
 """ 
 NOTE:The XML we have to send has nullable data type which requires us to 
 send those XML elements with an attribute -> xsi:nil = "true" 
 Now we will have to manually add those to the required xml elements if 
 they are None ie Null. 
 """ 
 # Only if no value is added here do add nil attribute 
 # NOTE: Please keep the order of the elements same as attributesToAddBoolList 
 tagsToAddAttr = ["AdverseMedia/", "Networth/", "ExactIncome/", "Minor/"] 
  
 # Creating a bool array list which will indicate which attribute is not None 
 # NOTE: Please keep the order of the elements same as tagsToAddAttr 
 attributesToAddBoolList = [ 
 requestDataModel.AdverseMedia is None, 
 requestDataModel.Networth is None, 
 requestDataModel.ExactIncome is None, 
 requestDataModel.Minor is None 
 ] 
 # Only take tags which are necessary for adding the required attribute 
 tagsToAddAttr = [val for indx, val in enumerate(tagsToAddAttr) if attributesToAddBoolList[indx]] 
 for tags in tagsToAddAttr: 
 xmlStr = RequestApiUtil.addAttrToTag(xmlStr, tags) 
 return xmlStr 
def testData():  
 """ 
 NOTE: To fill data for Optional data type make sure to set None if there is no value to be attached.  Values that need to be set None if nothing is passed are: 
 1. Minor 
 2. AdverseMedia 
 3. ExactIncome 
 4. Networth 
 NOTE: For List[className] data type you must pass the object of the class along with the value refer the example  below. 
 For example:
 Segments = [SegmentDetail("14")]  
 SpecificRisk = [RiskDetail("03"), RiskDetail("02"), RiskDetail("01")]   
 Refer parentTagsDict on line 35 on how the class can be added to the property  """ 
 requestDataModel = A75RiskRatingRequestData() 
 requestDataModel.RiskCalculationFor = "" 
 requestDataModel.RequestId = "" 
 requestDataModel.RecordIdentifier = str(uuid.uuid4()) # don't edit this field  requestDataModel.ApplicationRefNumber = "" 
 requestDataModel.IntermediaryCode = "" 
 requestDataModel.SourceSystemName = "" 
 requestDataModel.ParentCompany = "" 
 requestDataModel.ProposedAs = "" 
 requestDataModel.Segments = [SegmentDetail(14)] 
 requestDataModel.CustomerType = "1" 
 requestDataModel.CustomerSubType = "" 
 requestDataModel.Prefix = "" 
 requestDataModel.FirstName = "" 
 requestDataModel.MiddleName = "" 
 requestDataModel.LastName = "" 
 requestDataModel.Gender = "" 
 requestDataModel.MaritalStatus = "" 
 requestDataModel.Citizenship = [CountryDetail("IN")] 
 requestDataModel.CountryOfResidence = "IN" 
 requestDataModel.OccupationType = "" 
 requestDataModel.ActivitySector = "" 
 requestDataModel.ActivitySectorOther = "" 
 requestDataModel.DateOfBirth = "" 
 requestDataModel.CorrespondenceAddressLine1 = "" 
 requestDataModel.CorrespondenceAddressLine2 = "" 
 requestDataModel.CorrespondenceAddressLine3 = "" 
 requestDataModel.CorrespondenceAddressCity = "" 
 requestDataModel.CorrespondenceAddressState = "" 
 requestDataModel.CorrespondenceAddressCountry = "" 
 requestDataModel.CorrespondenceAddressPinCode = "" 
 requestDataModel.PermanentAddressLine1 = "" 
 requestDataModel.PermanentAddressLine2 = "" 
 requestDataModel.PermanentAddressLine3 = "" 
 requestDataModel.PermanentAddressCity = "" 
 requestDataModel.PermanentAddressState = "" 
 requestDataModel.PermanentAddressCountry = "" 
 requestDataModel.PermanentAddressPinCode = "" 
 requestDataModel.TaxResidencyAddressLine1 = "" 
 requestDataModel.TaxResidencyAddressLine2 = "" 
 requestDataModel.TaxResidencyAddressLine3 = "" 
 requestDataModel.TaxResidencyAddressCity = "" 
 requestDataModel.TaxResidencyAddressState = "" 
 requestDataModel.TaxResidencyAddressCountry = "" 
 requestDataModel.TaxResidencyAddressPinCode = "" 
 requestDataModel.WorkMobileISD = "" 
 requestDataModel.WorkMobileNumber = "" 
 requestDataModel.PersonalMobileISD = "" 
 requestDataModel.PersonalMobileNumber = "" 
 requestDataModel.WorkEmail = "" 
 requestDataModel.PersonalEmail = "" 
 requestDataModel.CountryOfBirth = "" 
 requestDataModel.BirthCity = "kolkata" 
 requestDataModel.ProductSegments = "" 
 requestDataModel.Listed = "" 
 requestDataModel.Minor = None 
 requestDataModel.Industry = "" 
 requestDataModel.Nationality = "" 
 requestDataModel.IncomeRange = "" 
 requestDataModel.IncomeCurrency = "" 
 requestDataModel.IncomeEffectiveDate = ""
 requestDataModel.IncomeDescription = "" 
 requestDataModel.ExactIncome = None 
 requestDataModel.Networth = None 
 requestDataModel.ReputationClassification = "" 
 requestDataModel.NetworthCurrency = "" 
 requestDataModel.NetworthEffectiveDate = "" 
 requestDataModel.NetworthDescription = "" 
 requestDataModel.PEP = "PEP" 
 requestDataModel.PEPClassification = [PEPClassificationDetail("COREPEP5")] 
 requestDataModel.AdverseMedia = 1 
 requestDataModel.AdverseMediaClassification = "" 
 requestDataModel.AdverseMediaDetails = "" 
 requestDataModel.InsiderInformation = "" 
 requestDataModel.RegAMLSpecialCategoryDetails =  
[RegAMLSpecialCategoryDetail("TW01"),RegAMLSpecialCategoryDetail("TW02")] 
 requestDataModel.NatureOfBusiness = [NatureOfBusinessDetail("TW01")] 
 requestDataModel.CountryofOperation = "" 
 requestDataModel.Tags = "" 
 requestDataModel.Channel = "" 
 requestDataModel.Links = "" 
 requestDataModel.AUM = "" 
 requestDataModel.FinancialExposure = "" 
 requestDataModel.ResponseDocument = "Yes" 
 requestDataModel.SpecificRisk = [RiskDetail("03"), RiskDetail("02"), RiskDetail("01")] 
 ApiToken = "" 
 PublicKeyPath = "" 
 PrivateKeyPath = "" 
 PrivateKeyPassword = "" 
 ApiUrl= "" 
  
 filePathForReport = "" 
 a75RequestXMLStr = creatingValidXMLFromModel(requestDataModel) 
 a75RequestXMLStr = RequestApiUtil.addSchemaToXML(a75RequestXMLStr) 
 a75ClientRequestModel = A75ClientRequestModel(a75RequestXMLStr, ApiToken, PublicKeyPath, PrivateKeyPath,  PrivateKeyPassword, ApiUrl, filePathForReport) 
  
 return a75ClientRequestModel 
if __name__ == "__main__": 
 a75ClientRequestModel = testData() 
 # To run without async use this 
 responseData = A75WebClient(a75ClientRequestModel).execute() 
 # To run async method use this 
 # responseData = asyncio.run(A75WebClient(a75ClientRequestModel).executeAsync())   
 print(responseData)

Download