{"id":1326,"date":"2021-11-02T11:41:48","date_gmt":"2021-11-02T11:41:48","guid":{"rendered":"https:\/\/trackwizz.com\/developers-hub\/?post_type=docs&#038;p=1326"},"modified":"2022-06-29T12:00:40","modified_gmt":"2022-06-29T12:00:40","password":"","slug":"sdk-download-2","status":"publish","type":"docs","link":"https:\/\/trackwizz.com\/developers-hub\/docs\/risk-rating\/sdk-download-2\/","title":{"rendered":"API SDK Download"},"content":{"rendered":"<style>\n.button {\n  background-color: #0099d3;\n  border: none;\n  color: white;\n  padding: 15px 32px;\n  text-align: center;\n  text-decoration: none;\n  font-size: 16px;\n  margin: 4px 2px;\n  cursor: pointer;\n}\na.button {\n    -webkit-appearance: button;\n    -moz-appearance: button;\n    appearance: button;\n    text-decoration: none;\n    color: #fff;\n}\n<\/style>\n<div class=\"container\">\n<div class=\"row text-center\">\n<div class=\"col-xs-7 col-sm-6 col-lg-3 mt-20 hvr\"><a href=\"#dot-net\"><img decoding=\"async\" src=\"https:\/\/trackwizz.com\/developers-hub\/wp-content\/uploads\/2022\/04\/dot-net-logo.jpg\"><\/a><\/div>\n<div class=\"col-md-1 col-sm-1 mt-20 mn\"><\/div>\n<p><!--\n\n<div class=\"col-md-3 col-sm-4 mt-20\"><a href=\"#java\"><img decoding=\"async\" src=\"https:\/\/trackwizz.com\/developers-hub\/wp-content\/uploads\/2021\/10\/java-logo-1.jpg\"><\/a><\/div>\n\n\n\n\n<div class=\"col-md-1\"><img decoding=\"async\" src=\"https:\/\/trackwizz.com\/developers-hub\/wp-content\/uploads\/2021\/10\/border.png\"><\/div>\n\n--><\/p>\n<div class=\"col-xs-5 col-sm-4 col-lg-3 mt-20 hvr\"><a href=\"#python\"><img decoding=\"async\" src=\"https:\/\/trackwizz.com\/developers-hub\/wp-content\/uploads\/2022\/04\/python.png\"><\/a><\/div>\n<div class=\"col-md-1 col-sm-1 mn mt-20\"><\/div>\n<\/div>\n<\/div>\n<p id=\"dot-net\">.Net Framework<\/p>\n<p><strong>Sample Code A75<\/strong><\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n\ufeffusing TSS.TrackWizz.SDK.RiskRating.Models;\r\nusing TSS.TrackWizz.SDK.RiskRating.Models.A75;\r\nusing TSS.TrackWizz.SDK.RiskRating.Models.A75.ClientModel;\r\nusing TSS.TrackWizz.SDK.RiskRating.WebClients.APIWebClients;\r\n\r\nnamespace A75SampleApp\r\n{\r\n    public partial class SampleCode \r\n    {\r\n        private void SendRequestButton_Click()\r\n        {\r\n            A75RequestData requestDataModel = GenerateRequestModel();\/\/request Model \r\n            var publicKey = File.ReadAllBytes(publicKeyText.Text);\/\/public key file path\r\n            var privateKey = File.ReadAllBytes(requestPrivatekey.Text);\/\/private key file path\r\n            var url = requestUrlText.Text;\/\/API URL\r\n            var password = txtPrivateKeyPassword.Text; \/\/ private key password\r\n            A75ClientRequestModel a75ClientRequestModel = new A75ClientRequestModel(tokenText.Text, privateKey, publicKey, requestDataModel,\r\n                         txtPrivateKeyPassword.Text, url);\r\n            A75ClientResponseModel response = new A75WebClient().Execute(a75ClientRequestModel);\r\n        }\r\n        private A75RequestData GenerateRequestModel()\r\n        {\r\n            A75RequestData requestDataModel = new A75RequestData();\r\n            \/\/Fill the request model properties as per the the Document\r\n            return requestDataModel;\r\n        }\r\n\r\n    }\r\n}\r\n\r\n<\/pre>\n<p style=\"text-align:center;\"><a href=\"https:\/\/trackwizz.com\/developers-hub\/download\/Risk-Rating.NET-SDK.zip\" class=\"button\">Download<\/a><\/p>\n<p id=\"python\">Python<\/p>\n<p><strong>Python Version- 3.8.5<\/strong><\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\nimport uuid \r\nfrom lxml import etree \r\nimport asyncio \r\nfrom dicttoxml import dicttoxml \r\nimport uuid \r\nfrom RiskRating.WebClients.APIWebClients import A75WebClient  \r\nfrom RiskRating.Models import A75ClientRequestModel \r\nfrom RiskRating.Models import A75RiskRatingRequestData,  \r\nSegmentDetail,PEPClassificationDetail,AdverseMediaClassificationDetail,CountryDetail,RiskDetail,NatureOfBusinessDeta il,ProductSegmentDetail,ReputationClassificationDetail,RegAMLSpecialCategoryDetail,TagDetail \r\nfrom RiskRating.Utils import RequestApiUtil \r\ndef creatingValidXMLFromModel(requestDataModel: A75RiskRatingRequestData): \r\n # This tags will be class tags  \r\n parentTags = &#x5B;&quot;Segments&quot;,  \r\n &quot;SpecificRisk&quot;,  \r\n &quot;Citizenship&quot;,  \r\n &quot;AdverseMediaClassification&quot;,  \r\n &quot;PEPClassification&quot;, \r\n &quot;Nationality&quot;, \r\n &quot;RegAMLSpecialCategoryDetails&quot;, \r\n &quot;Tags&quot;, \r\n &quot;NatureOfBusiness&quot;, \r\n &quot;ProductSegments&quot;, \r\n 'ReputationClassification', \r\n 'CountryofOperation' \r\n ] \r\n  \r\n # Make a dictonary of class tag and its child tag  \r\n parentTagsDict = { \r\n &quot;Segments&quot;: &quot;SegmentDetail&quot;, \r\n &quot;SpecificRisk&quot;: &quot;RiskDetail&quot;, \r\n &quot;Citizenship&quot;:&quot;CountryDetail&quot;, \r\n &quot;AdverseMediaClassification&quot;: &quot;AdverseMediaClassificationDetail&quot;, \r\n &quot;PEPClassification&quot;:&quot;PEPClassificationDetail&quot;, \r\n &quot;Tags&quot;:&quot;TagDetail&quot;, \r\n &quot;RegAMLSpecialCategoryDetails&quot;:&quot;RegAMLSpecialCategoryDetail&quot;, \r\n &quot;Nationality&quot;:&quot;CountryDetail&quot;, \r\n &quot;NatureOfBusiness&quot;: &quot;NatureOfBusinessDetail&quot;, \r\n &quot;ProductSegments&quot;: &quot;ProductSegmentDetail&quot;, \r\n &quot;ReputationClassification&quot;: &quot;ReputationClassificationDetail&quot;, \r\n 'CountryofOperation': 'CountryDetail' \r\n } \r\n # Convert class model to dictonary \r\n reqDataDict = vars(requestDataModel) \r\n # Maintain a list to store all the values of a that tag \r\n tagsDataDict = { \r\n &quot;Segments&quot;: &#x5B;], \r\n &quot;SpecificRisk&quot;: &#x5B;], \r\n &quot;Citizenship&quot;: &#x5B;], \r\n &quot;AdverseMediaClassification&quot;: &#x5B;], \r\n &quot;PEPClassification&quot;: &#x5B;], \r\n &quot;Tags&quot;:&#x5B;], \r\n &quot;RegAMLSpecialCategoryDetails&quot;:&#x5B;], \r\n &quot;Nationality&quot;:&#x5B;], \r\n &quot;NatureOfBusiness&quot;: &#x5B;], \r\n &quot;ProductSegments&quot;: &#x5B;], \r\n &quot;ReputationClassification&quot;: &#x5B;],\r\n 'CountryofOperation': &#x5B;] \r\n } \r\n # Iterate through class tags n store the data inside tagsDataDict and empty it \r\n for parent in parentTags: \r\n tagDataList = &#x5B;vars(i) for i in reqDataDict&#x5B;parent]] \r\n tagsDataDict&#x5B;parent] = tagDataList \r\n reqDataDict&#x5B;parent] = {} \r\n  \r\n &quot;&quot;&quot; \r\n NOTE:Main reason to empty those tags where because the input &quot;requestModel&quot; is a complex  object ie It is an Object which has other class objects inside it. \r\n This will fail if you don't manually convert those inner objects, thus we have emptied it and  extracted the data into tagsDataDict. \r\n &quot;&quot;&quot;  \r\n xmlStrBytes = dicttoxml(reqDataDict, custom_root=&quot;A75RiskRatingRequestData&quot;, attr_type = False) \r\n # Now we will add the above removed tags with their data  \r\n for parent in parentTags: \r\n if tagsDataDict&#x5B;parent] != &#x5B;]: \r\n xmlStrBytes = RequestApiUtil.addNodesToParentTag(etree.fromstring(xmlStrBytes), parent,  parentTagsDict&#x5B;parent], tagsDataDict&#x5B;parent]) \r\n  \r\n if xmlStrBytes != &quot;&quot;: \r\n xmlStr = xmlStrBytes.decode('utf-8') \r\n &quot;&quot;&quot; \r\n NOTE:The XML we have to send has nullable data type which requires us to \r\n send those XML elements with an attribute -&gt; xsi:nil = &quot;true&quot; \r\n Now we will have to manually add those to the required xml elements if \r\n they are None ie Null. \r\n &quot;&quot;&quot; \r\n # Only if no value is added here do add nil attribute \r\n # NOTE: Please keep the order of the elements same as attributesToAddBoolList \r\n tagsToAddAttr = &#x5B;&quot;AdverseMedia\/&quot;, &quot;Networth\/&quot;, &quot;ExactIncome\/&quot;, &quot;Minor\/&quot;] \r\n  \r\n # Creating a bool array list which will indicate which attribute is not None \r\n # NOTE: Please keep the order of the elements same as tagsToAddAttr \r\n attributesToAddBoolList = &#x5B; \r\n requestDataModel.AdverseMedia is None, \r\n requestDataModel.Networth is None, \r\n requestDataModel.ExactIncome is None, \r\n requestDataModel.Minor is None \r\n ] \r\n # Only take tags which are necessary for adding the required attribute \r\n tagsToAddAttr = &#x5B;val for indx, val in enumerate(tagsToAddAttr) if attributesToAddBoolList&#x5B;indx]] \r\n for tags in tagsToAddAttr: \r\n xmlStr = RequestApiUtil.addAttrToTag(xmlStr, tags) \r\n return xmlStr \r\ndef testData():  \r\n &quot;&quot;&quot; \r\n 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: \r\n 1. Minor \r\n 2. AdverseMedia \r\n 3. ExactIncome \r\n 4. Networth \r\n NOTE: For List&#x5B;className] data type you must pass the object of the class along with the value refer the example  below. \r\n For example:\r\n Segments = &#x5B;SegmentDetail(&quot;14&quot;)]  \r\n SpecificRisk = &#x5B;RiskDetail(&quot;03&quot;), RiskDetail(&quot;02&quot;), RiskDetail(&quot;01&quot;)]   \r\n Refer parentTagsDict on line 35 on how the class can be added to the property  &quot;&quot;&quot; \r\n requestDataModel = A75RiskRatingRequestData() \r\n requestDataModel.RiskCalculationFor = &quot;&quot; \r\n requestDataModel.RequestId = &quot;&quot; \r\n requestDataModel.RecordIdentifier = str(uuid.uuid4()) # don't edit this field  requestDataModel.ApplicationRefNumber = &quot;&quot; \r\n requestDataModel.IntermediaryCode = &quot;&quot; \r\n requestDataModel.SourceSystemName = &quot;&quot; \r\n requestDataModel.ParentCompany = &quot;&quot; \r\n requestDataModel.ProposedAs = &quot;&quot; \r\n requestDataModel.Segments = &#x5B;SegmentDetail(14)] \r\n requestDataModel.CustomerType = &quot;1&quot; \r\n requestDataModel.CustomerSubType = &quot;&quot; \r\n requestDataModel.Prefix = &quot;&quot; \r\n requestDataModel.FirstName = &quot;&quot; \r\n requestDataModel.MiddleName = &quot;&quot; \r\n requestDataModel.LastName = &quot;&quot; \r\n requestDataModel.Gender = &quot;&quot; \r\n requestDataModel.MaritalStatus = &quot;&quot; \r\n requestDataModel.Citizenship = &#x5B;CountryDetail(&quot;IN&quot;)] \r\n requestDataModel.CountryOfResidence = &quot;IN&quot; \r\n requestDataModel.OccupationType = &quot;&quot; \r\n requestDataModel.ActivitySector = &quot;&quot; \r\n requestDataModel.ActivitySectorOther = &quot;&quot; \r\n requestDataModel.DateOfBirth = &quot;&quot; \r\n requestDataModel.CorrespondenceAddressLine1 = &quot;&quot; \r\n requestDataModel.CorrespondenceAddressLine2 = &quot;&quot; \r\n requestDataModel.CorrespondenceAddressLine3 = &quot;&quot; \r\n requestDataModel.CorrespondenceAddressCity = &quot;&quot; \r\n requestDataModel.CorrespondenceAddressState = &quot;&quot; \r\n requestDataModel.CorrespondenceAddressCountry = &quot;&quot; \r\n requestDataModel.CorrespondenceAddressPinCode = &quot;&quot; \r\n requestDataModel.PermanentAddressLine1 = &quot;&quot; \r\n requestDataModel.PermanentAddressLine2 = &quot;&quot; \r\n requestDataModel.PermanentAddressLine3 = &quot;&quot; \r\n requestDataModel.PermanentAddressCity = &quot;&quot; \r\n requestDataModel.PermanentAddressState = &quot;&quot; \r\n requestDataModel.PermanentAddressCountry = &quot;&quot; \r\n requestDataModel.PermanentAddressPinCode = &quot;&quot; \r\n requestDataModel.TaxResidencyAddressLine1 = &quot;&quot; \r\n requestDataModel.TaxResidencyAddressLine2 = &quot;&quot; \r\n requestDataModel.TaxResidencyAddressLine3 = &quot;&quot; \r\n requestDataModel.TaxResidencyAddressCity = &quot;&quot; \r\n requestDataModel.TaxResidencyAddressState = &quot;&quot; \r\n requestDataModel.TaxResidencyAddressCountry = &quot;&quot; \r\n requestDataModel.TaxResidencyAddressPinCode = &quot;&quot; \r\n requestDataModel.WorkMobileISD = &quot;&quot; \r\n requestDataModel.WorkMobileNumber = &quot;&quot; \r\n requestDataModel.PersonalMobileISD = &quot;&quot; \r\n requestDataModel.PersonalMobileNumber = &quot;&quot; \r\n requestDataModel.WorkEmail = &quot;&quot; \r\n requestDataModel.PersonalEmail = &quot;&quot; \r\n requestDataModel.CountryOfBirth = &quot;&quot; \r\n requestDataModel.BirthCity = &quot;kolkata&quot; \r\n requestDataModel.ProductSegments = &quot;&quot; \r\n requestDataModel.Listed = &quot;&quot; \r\n requestDataModel.Minor = None \r\n requestDataModel.Industry = &quot;&quot; \r\n requestDataModel.Nationality = &quot;&quot; \r\n requestDataModel.IncomeRange = &quot;&quot; \r\n requestDataModel.IncomeCurrency = &quot;&quot; \r\n requestDataModel.IncomeEffectiveDate = &quot;&quot;\r\n requestDataModel.IncomeDescription = &quot;&quot; \r\n requestDataModel.ExactIncome = None \r\n requestDataModel.Networth = None \r\n requestDataModel.ReputationClassification = &quot;&quot; \r\n requestDataModel.NetworthCurrency = &quot;&quot; \r\n requestDataModel.NetworthEffectiveDate = &quot;&quot; \r\n requestDataModel.NetworthDescription = &quot;&quot; \r\n requestDataModel.PEP = &quot;PEP&quot; \r\n requestDataModel.PEPClassification = &#x5B;PEPClassificationDetail(&quot;COREPEP5&quot;)] \r\n requestDataModel.AdverseMedia = 1 \r\n requestDataModel.AdverseMediaClassification = &quot;&quot; \r\n requestDataModel.AdverseMediaDetails = &quot;&quot; \r\n requestDataModel.InsiderInformation = &quot;&quot; \r\n requestDataModel.RegAMLSpecialCategoryDetails =  \r\n&#x5B;RegAMLSpecialCategoryDetail(&quot;TW01&quot;),RegAMLSpecialCategoryDetail(&quot;TW02&quot;)] \r\n requestDataModel.NatureOfBusiness = &#x5B;NatureOfBusinessDetail(&quot;TW01&quot;)] \r\n requestDataModel.CountryofOperation = &quot;&quot; \r\n requestDataModel.Tags = &quot;&quot; \r\n requestDataModel.Channel = &quot;&quot; \r\n requestDataModel.Links = &quot;&quot; \r\n requestDataModel.AUM = &quot;&quot; \r\n requestDataModel.FinancialExposure = &quot;&quot; \r\n requestDataModel.ResponseDocument = &quot;Yes&quot; \r\n requestDataModel.SpecificRisk = &#x5B;RiskDetail(&quot;03&quot;), RiskDetail(&quot;02&quot;), RiskDetail(&quot;01&quot;)] \r\n ApiToken = &quot;&quot; \r\n PublicKeyPath = &quot;&quot; \r\n PrivateKeyPath = &quot;&quot; \r\n PrivateKeyPassword = &quot;&quot; \r\n ApiUrl= &quot;&quot; \r\n  \r\n filePathForReport = &quot;&quot; \r\n a75RequestXMLStr = creatingValidXMLFromModel(requestDataModel) \r\n a75RequestXMLStr = RequestApiUtil.addSchemaToXML(a75RequestXMLStr) \r\n a75ClientRequestModel = A75ClientRequestModel(a75RequestXMLStr, ApiToken, PublicKeyPath, PrivateKeyPath,  PrivateKeyPassword, ApiUrl, filePathForReport) \r\n  \r\n return a75ClientRequestModel \r\nif __name__ == &quot;__main__&quot;: \r\n a75ClientRequestModel = testData() \r\n # To run without async use this \r\n responseData = A75WebClient(a75ClientRequestModel).execute() \r\n # To run async method use this \r\n # responseData = asyncio.run(A75WebClient(a75ClientRequestModel).executeAsync())   \r\n print(responseData)\r\n<\/pre>\n<p style=\"text-align:center;\"><a href=\"https:\/\/trackwizz.com\/developers-hub\/download\/risk-rating-python.zip\" class=\"button\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>.Net Framework Sample Code A75 \ufeffusing 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 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"doc_category":[36],"doc_tag":[],"class_list":["post-1326","docs","type-docs","status-publish","hentry","doc_category-risk-rating"],"aioseo_notices":[],"year_month":"2026-04","word_count":1236,"total_views":0,"reactions":{"happy":0,"normal":0,"sad":0},"author_info":{"name":"admin","author_nicename":"admin","author_url":"https:\/\/trackwizz.com\/developers-hub\/author\/admin\/"},"doc_category_info":[{"term_name":"Risk Rating","term_url":"https:\/\/trackwizz.com\/developers-hub\/docs-category\/risk-rating\/"}],"doc_tag_info":[],"_links":{"self":[{"href":"https:\/\/trackwizz.com\/developers-hub\/wp-json\/wp\/v2\/docs\/1326","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trackwizz.com\/developers-hub\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/trackwizz.com\/developers-hub\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/trackwizz.com\/developers-hub\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/trackwizz.com\/developers-hub\/wp-json\/wp\/v2\/comments?post=1326"}],"version-history":[{"count":0,"href":"https:\/\/trackwizz.com\/developers-hub\/wp-json\/wp\/v2\/docs\/1326\/revisions"}],"wp:attachment":[{"href":"https:\/\/trackwizz.com\/developers-hub\/wp-json\/wp\/v2\/media?parent=1326"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/trackwizz.com\/developers-hub\/wp-json\/wp\/v2\/doc_category?post=1326"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/trackwizz.com\/developers-hub\/wp-json\/wp\/v2\/doc_tag?post=1326"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}