API Document

1. API Objective #

This RESTful API helps to screen the Individuals and Legal Entity. The application will request A64 API with KYC details in the following XML format and in response, the API will return back the result of screening as to whether the record was present in any negative list or not. It will also send the pdf report which will be base 64 encoded listing the details of the watchlist records when a match for a record is found.

2. Request Details #

Sandbox URL:https://mlapidemo1.tssconsultancy.com:54322/crmapi/a64screeningapi/GetScreeningResult

HTTP Request Type: POST
Request Headers:
Content-Type: application/xml

3.1 Sample Request #

<?xml version="1.0" encoding="UTF-8"?>
<A64EncryptedRequestModel xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ApiToken>fa825d85-57bc-4894-915e-de70c24458db</ApiToken>

<SessionKey>WJZ0q5g7WFPQd2ez6LYqflxps/0g9oWYqx+RCxRq3vNpIZsMzUccFvlwNa1ozC607Y+u3P6C mojLWKB+27MCf2LtfVuMVnQO6TYNZl0IKMeNGtW8nhUNiaTPM9U9OYjENYoXYU/h6D+ExzhK0LSpmQ dRjWi4UcJk2PVDTnzcp91W972PTKVVcJSGxYIZ4mgSiPIWqphkOD9o1jBhXor4VdpX/M588AbvdYC4hOQp W7/Z4hFmIuTCoeLVVulnlxAF74oNY4i/xojnVKyjmuH0ECA6co1RkiWotel2VxMXhC1/C3gnoJLbtpw1hDw 8QmzF5Mp6L24/ICZ790HazIPQdg==</SessionKey>

<RequestData>2rQP1b+mhXFKm9hZmd6s65XFMpsKuvUjflOLrpuMzaFTkEujCsRFICgcTfJqWUzP2IWpImf LzfMEpb2zcDMnM0uQdw4cSdLZ08R63laN6FwZkvRNf2oN8SjFKnbTloglbNqbMuxDbQyvJgR1hEhbp8vbu qfyK+cbqcpCOXTuLg9ljOjKAoI7Jm/rd5ts7h/dFk5x3+H22nPsGT5VaFRIFItr+LmrBQHlkfAomJfl7b2Bpadd4 vM0gqoa7VTC1bFiSy60HT0kFdncIptiFX7LORbx9/YnhXhkTWfPKu8xCrPG/4JsxLNQxe5hH6Izh7Vwk+e+xe sJpFHzhdC5qdSkrboY/qqZBKpycmr10QfWGkYh4q3kj6mKGgT/sweHukY+5+9OS7DSwI92UcvpnEDIuJy8y Q/HemmVMCYTmvcOoJftXRVv6uhVOH9JltIqt3dt+jY6SfbOtjhFLBD3SIiH44+OgK0PJo5ZfZE2OL7Mgn3ViG iUF6d</RequestData>
</A64EncryptedRequestModel>

3.2.Sample Signed Request #

<?xml version="1.0" encoding="utf-16"?>
<A64EncryptedRequestModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ApiToken>fa825d85-57bc-4894-915e-de70c24458db</ApiToken>

<SessionKey>WJZ0q5g7WFPQd2ez6LYqflxps/0g9oWYqx+RCxRq3vNpIZsMzUccFvlwNa1ozC607Y+u3P6C mojLWKB+27MCf2LtfVuMVnQO6TYNZl0IKMeNGtW8nhUNiaTPM9U9OYjENYoXYU/h6D+ExzhK0LSpmQ dRjWi4UcJk2PVDTnzcp91W972PTKVVcJSGxYIZ4mgSiPIWqphkOD9o1jBhXor4VdpX/M588AbvdYC4hOQp W7/Z4hFmIuTCoeLVVulnlxAF74oNY4i/xojnVKyjmuH0ECA6co1RkiWotel2VxMXhC1/C3gnoJLbtpw1hDw 8QmzF5Mp6L24/ICZ790HazIPQdg==</SessionKey>

<RequestData>2rQP1b+mhXFKm9hZmd6s65XFMpsKuvUjflOLrpuMzaFTkEujCsRFICgcTfJqWUzP2IWpIm fLzfMEpb2zcDMnM0uQdw4cSdLZ08R63laN6FwZkvRNf2oN8SjFKnbTloglbNqbMuxDbQyvJgR1hEhbp8vb uqfyK+cbqcpCOXTuLg9ljOjKAoI7Jm/rd5ts7h/dFk5x3+H22nPsGT5VaFRIFItr+LmrBQHlkfAomJfl7b2Bpadd 4vM0gqoa7VTC1bFiSy60HT0kFdncIptiFX7LORbx9/YnhXhkTWfPKu8xCrPG/4JsxLNQxe5hH6Izh7Vwk+e+x esJpFHzhdC5qdSkrboY/qqZBKpycmr10QfWGkYh4q3kj6mKGgT/sweHukY+5+9OS7DSwI92UcvpnEDIuJy8 yQ/HemmVMCYTmvcOoJftXRVv6uhVOH9JltIqt3dt+jY6SfbOtjhFLBD3SIiH44+OgK0PJo5ZfZE2OL7Mgn3Vi GiUF6d
</RequestData>

<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3./2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>ZGtVlvmyb+eQpBViKp6TnZisvAw=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>isce5Z9fGGZxs09p8kB9SeYW4GmAEvwpk</SignatureValue>
<KeyInfo>
<X509Data>
<X509SubjectName>CN=SAGAR CHANDRAKANT TANNA</X509SubjectName>

<X509Certificate>MIIGlzCCBX+gAwIBAgIEAR3GGDANBgkqhkiG9w0BAQ</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</A64EncryptedRequestModel>

4. Sample Decrypted RequestData #

<?xml version="1.0" encoding="utf-16"?>
<ScreeningRequestData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<RequestId>123</RequestId>
<RecordIdentifier>815d1354-5b49-4b79-8498-30e062f2b0ce</RecordIdentifier>
<ApplicationRefNumber>123</ApplicationRefNumber>
<IntermediaryCode>Abc</IntermediaryCode>
<SourceSystemName>Flexi</SourceSystemName>
<ParentCompany>123</ParentCompany>
<FirstName>hasheem</FirstName>
<MiddleName />
<LastName />
<CustomerCategory>IND</CustomerCategory>
<Gender>M</Gender>
<Pan>abcdr1234y</Pan>
<Din>12345dd56</Din>
<Cin>12345dd56</Cin>
<PassportNumber>123456789</PassportNumber>
<DrivingLicenseNumber>123456789</DrivingLicenseNumber>
<DateOfBirth>11-Nov-2020</DateOfBirth>
<BirthCity>Birth City</BirthCity>
<CountryOfBirth>IN</CountryOfBirth>
<Nationalities>
<Nationality>IN</Nationality>
<Nationality>AF</Nationality>
<Nationality>AX</Nationality>
</Nationalities>
<CorrespondenceAddressLine1>abc residency</CorrespondenceAddressLine1>
<CorrespondenceAddressLine2>abc</CorrespondenceAddressLine2>
<CorrespondenceAddressLine3>abc</CorrespondenceAddressLine3>
<CorrespondenceAddressCity>Mumbai</CorrespondenceAddressCity>
<CorrespondenceAddressState>Maharashtra</CorrespondenceAddressState>
<CorrespondenceAddressCountry>IN</CorrespondenceAddressCountry>
<CorrespondenceAddressPinCode>410209</CorrespondenceAddressPinCode>
<PermanentAddressLine1>abc residency</PermanentAddressLine1>
<PermanentAddressLine2>xyz</PermanentAddressLine2>
<PermanentAddressLine3>xyz</PermanentAddressLine3>
<PermanentAddressCity>Mumbai</PermanentAddressCity>
<PermanentAddressState>Maharashtra</PermanentAddressState>
<PermanentAddressCountry>IN</PermanentAddressCountry>
<PermanentAddressPinCode>410209</PermanentAddressPinCode>
<WorkMobileISD>+91</WorkMobileISD>
<WorkMobileNumber>9999999999</WorkMobileNumber>
<PersonalMobileISD>+91</PersonalMobileISD>
<PersonalMobileNumber>9999999999</PersonalMobileNumber>
<WorkEmail>[email protected]</WorkEmail>
<PersonalEmail>[email protected]</PersonalEmail>
<Tags>
<Tag>1</Tag>

5. Request Parameter Description #

Table 1: Request – Main

Field Name / XML Tag

Mandatory

Data Type

Length

Remarks

ApiToken

Yes

String

60

Static Value Will be shared by TrackWizz Team during implementation.

SessionKey

Yes

String

 

Each request gets encrypted using two type of encryption. First, the data will get encrypted using symmetric session key, this key will be unique for each request.
This key will also be sent with the request after encrypting it using asymmetric key.

RequestData

Yes

Complex

 

Table 2: RequestData

Field Name / XML Tag Mandatory Data Type Remarks
RequestId Yes String It is a Request number, basically a Transaction request number.
RecordIdentifier No Varchar This is a unique number given by SourceSystem to this individual / entity in your organization.
ApplicationRefNumber No Varchar Application reference number is like a proposal number or an Application Form Number.
IntermediaryCode No Varchar

It can be Branch Code or Partner Code or Business Associate Code or Intermediary Code.

SourceSystemName

No

Varchar

Name of the Source System from where the data is flowing should be mentioned. Please inform prior to Trackwizz team for creating the SourceSystem which you will pass in the request.
ParentCompany Yes Varchar Static Value Will be shared by TrackWizz Team during implementation.
FirstName Yes Varchar

For Individual Full Name can also be passed here and for Legal Entity full name has to be passed here.

MiddleName No Varchar  
LastName No Varchar  
CustomerCategory Yes Varchar Values possible “IND”, “NON IND“
IND=Individual, NON IND=Non Individual
Gender No Varchar Values possible: “M”, “F”. M=Male, F=Female.
PAN No Varchar Tax Identification Number – Permanent Account Number.
DIN No Varchar Director Identification Number issued by Ministry of Corporate Affairs India.
CIN No Varchar Corporate Identification Number issued by Ministry of Corporate Affairs India.
PassportNumber No Varchar  
DrivingLicenseNumber No Varchar  
DateOfBirth No Varchar Format DD-MMM-YYYY
For Non-Individual Pass Date of Incorporation
BirthCity No Varchar  
CountryOfBirth No Varchar Country should be in ISO 2 digit as per table
1.1 Country Enum
Nationality No Varchar Multiple values possible.
Country should be in ISO 2 digit as per table
1.1 Country Enum
CorrespondenceAddressLine1 No Varchar  
CorrespondenceAddressLine2 No Varchar  
CorrespondenceAddressLine3 No Varchar  
CorrespondenceAddressCity No Varchar  
CorrespondenceAddressState No Varchar  
CorrespondenceAddressCountry No Varchar Country should be in ISO 2 digit as per table
1.1 Country Enum
CorrespondenceAddressPinCode No Varchar Zip code
PermanentAddressLine1 No Varchar  
PermanentAddressLine2 No Varchar  
PermanentAddressLine3 No Varchar  
PermanentAddressCity No Varchar  
PermanentAddressState No Varchar  
PermanentAddressCountry No Varchar Country should be in ISO 2 digit as per table
1.1 Country Enum
PermanentAddressPinCode No Varchar Zip code
WorkMobileISD No Varchar  
WorkMobileNumber No Varchar  
PersonalMobileISD No Varchar  
PersonalMobileNumber No Varchar  
WorkEmail No Varchar  
PersonalEmail No Varchar  
Tags No Varchar This field can be kept null.
ProductSegments No Varchar Multiple values can be passed. It will be shared by TrackWizz Team during implementation.
ScreeningCategory Yes Varchar Should be passed as “Initial Screening Master” only
Table 3: Request – Main
Note: Please pass the ISO2Digitcode mentioned below.

Name Iso2DigitCode
India IN
Afghanistan AF
Aland Islands AX
Albania AL
Algeria DZ
American Samoa AS
Andorra AD
Angola AO
Anguilla AI
Antarctica AQ
Antigua And Barbuda AG
Argentina AR
Armenia AM
Aruba AW
Australia AU
Austria AT
Azerbaijan AZ
Bahamas BS
Bahrain BH
Bangladesh BD
Barbados BB
Belarus BY
Belgium BE
Belize BZ
Benin BJ
Bermuda BM
Bhutan BT
Bolivia BO
Bosnia And Herzegovina BA
Botswana BW
Bouvet Island BV
Brazil BR
British Indian Ocean Territory IO
Brunei Darussalam BN
Bulgaria BG
Burkina Faso BF
Burundi BI
Cambodia KH
Cameroon CM
Canada CA
Cape Verde CV
Cayman Islands KY
Central African Republic CF
Chad TD
Chile CL
China CN
Christmas Island CX
Cocos (Keeling) Islands CC
Colombia CO
Comoros KM
Congo CG
Congo, The Democratic Republic Of The CD
Cook Islands CK
Costa Rica CR
Côte D’ivoire CI
Croatia HR
Cuba CU
Cyprus CY
Czech Republic CZ
Denmark DK
Djibouti DJ
Dominica DM
Dominican Republic DO
Ecuador EC
Egypt EG
El Salvador SV
Equatorial Guinea GQ
Eritrea ER
Estonia EE
Ethiopia ET
Falkland Islands (Malvinas) FK
Faroe Islands FO
Fiji FJ
Finland FI
France FR
French Guiana GF
French Polynesia PF
French Southern Territories TF
Gabon GA
Gambia GM
Georgia GE
Germany DE
Ghana GH
Gibraltar GI
Greece GR
Greenland GL
Grenada GD
Guadeloupe GP
Guam GU
Guatemala GT
Guernsey GG
Guinea GN
Guinea-Bissau GW
Guyana GY
Haiti HT
Heard Island And McDonald Islands HM
Vatican City State VA
Honduras HN
Hong Kong HK
Hungary HU
Iceland IS
Indonesia ID
Iran, Islamic Republic Of IR
Iraq IQ
Ireland IE
Isle Of Man IM
Israel IL
Italy IT
Jamaica JM
Japan JP
Jersey JE
Jordan JO
Kazakhstan KZ
Kenya KE
Kiribati KI
Korea, Democratic People’s Republic Of KP
Korea, Republic Of KR
Kuwait KW
Kyrgyzstan KG
Lao People’s Democratic Republic LA
Latvia LV
Lebanon LB
Lesotho LS
Liberia LR
Libyan Arab Jamahiriya LY
Liechtenstein LI
Lithuania LT
Luxembourg LU
Macao MO
Macedonia, The Former Yugoslav Republic Of MK
Madagascar MG
Malawi MW
Malaysia MY
Maldives MV
Mali ML
Malta MT
Marshall Islands MH
Martinique MQ
Mauritania MR
Mauritius MU
Mayotte YT
Mexico MX
Micronesia, Federated States Of FM
Moldova, Republic Of MD
Monaco MC
Mongolia MN
Montenegro ME
Montserrat MS
Morocco MA
Mozambique MZ
Myanmar MM
Namibia NA
Nauru NR
Nepal NP
Netherlands NL
New Caledonia NC
New Zealand NZ
Nicaragua NI
Niger NE
Nigeria NG
Niue NU
Norfolk Island NF
Northern Mariana Islands MP
Norway NO
Oman OM
Pakistan PK
Palau PW
Palestinian Territory, Occupied PS
Panama PA
Papua New Guinea PG
Paraguay PY
Peru PE
Philippines PH
Pitcairn PN
Poland PL
Portugal PT
Puerto Rico PR
Qatar QA
Reunion Island RE
Romania RO
Russian Federation RU
Rwanda RW
Saint Barthelemy BL
Saint Helena, Ascension And Tristan da Cunha  
SH
Saint Kitts And Nevis KN
Saint Lucia LC
Saint Martin MF
Saint Pierre And Miquelon PM
Saint Vincent And The Grenadines VC
Samoa WS
San Marino SM
Sao Tome And Principe ST
Saudi Arabia SA
Senegal SN
Serbia RS
Seychelles SC
Sierra Leone SL
Singapore SG
Slovakia SK
Slovenia SI
Solomon Islands SB
Somalia SO
South Africa ZA
South Georgia And The South Sandwich Islands GS
Spain ES
Sri Lanka LK
Sudan SD
Suriname SR
Svalbard And Jan Mayen Islands SJ
Swaziland SZ
Sweden SE
Switzerland CH
Syrian Arab Republic SY
Taiwan, Province Of China TW
Tajikistan TJ
Tanzania, United Republic Of TZ
Thailand TH
Timor-Leste TL
Togo TG
Tokelau TK
Tonga TO
Trinidad And Tobago TT
Tunisia TN
Turkey TR
Turkmenistan TM
Turks And Caicos Islands TC
Tuvalu TV
Uganda UG
Ukraine UA
United Arab Emirates AE
United Kingdom GB
United States US
United States Minor Outlying Islands UM
Uruguay UY
Uzbekistan UZ
Vanuatu VU
Venezuela, Bolivarian Republic Of VE
Viet Nam VN
Virgin Islands, British VG
Virgin Islands, U.S. VI
Wallis And Futuna WF
Western Sahara EH
Yemen YE
Zambia ZM
Zimbabwe ZW
Serbia And Montenegro YU
Bonaire, Sint Eustatius And Saba BQ
Curacao CW
Sint Maarten SX
South Sudan SS
Kosovo XK
East Timor TL
Crimea & Sevastopol Z1
Alderney LD
Sark C1
Northern Cyprus N1
Not Categorized YY

6. Request Encryption Steps #

Consider Data to be Encrypted is:

<?xml version="1.0" encoding="UTF-8"?>
<ScreeningRequestData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RequestId>123</RequestId>
<RecordIdentifier>815d1354-5b49-4b79-8498-30e062f2b0ce</RecordIdentifier>
<ApplicationRefNumber>123</ApplicationRefNumber>
<IntermediaryCode>Abc</IntermediaryCode>
<SourceSystemName>Flexi</SourceSystemName>
<ParentCompany>123</ParentCompany>
<FirstName>hasheem</FirstName>
<MiddleName />
<LastName />
<CustomerCategory>IND</CustomerCategory>
<Gender>M</Gender>
<Pan>abcdr1234y</Pan>
<Din>12345dd56</Din>
<Cin>12345dd56</Cin>
<PassportNumber>123456789</PassportNumber>
<DrivingLicenseNumber>123456789</DrivingLicenseNumber>
<DateOfBirth>11-Nov-2020</DateOfBirth>
<BirthCity>Birth City</BirthCity>
<CountryOfBirth>IN</CountryOfBirth>
<Nationalities>
<Nationality>IN</Nationality>
<Nationality>AF</Nationality>
<Nationality>AX</Nationality>
</Nationalities>
<CorrespondenceAddressLine1>abc residency</CorrespondenceAddressLine1>
<CorrespondenceAddressLine2>abc</CorrespondenceAddressLine2>
<CorrespondenceAddressLine3>abc</CorrespondenceAddressLine3>
<CorrespondenceAddressCity>Mumbai</CorrespondenceAddressCity>
<CorrespondenceAddressState>Maharashtra</CorrespondenceAddressState>
<CorrespondenceAddressCountry>IN</CorrespondenceAddressCountry>
<CorrespondenceAddressPinCode>410209</CorrespondenceAddressPinCode>
<PermanentAddressLine1>abc residency</PermanentAddressLine1>
<PermanentAddressLine2>xyz</PermanentAddressLine2>
<PermanentAddressLine3>xyz</PermanentAddressLine3>
<PermanentAddressCity>Mumbai</PermanentAddressCity>
<PermanentAddressState>Maharashtra</PermanentAddressState>
<PermanentAddressCountry>IN</PermanentAddressCountry>
<PermanentAddressPinCode>410209</PermanentAddressPinCode>

<WorkMobileISD>+91</WorkMobileISD>
<WorkMobileNumber>9999999999</WorkMobileNumber>
<PersonalMobileISD>+91</PersonalMobileISD>
<PersonalMobileNumber>9999999999</PersonalMobileNumber>
<WorkEmail>[email protected]</WorkEmail>
<PersonalEmail>[email protected]</PersonalEmail>
<Tags>
<Tag>1</Tag>
<Tag>2</Tag>
<Tag>4</Tag>
</Tags>
<ProductSegments>
<ProductSegment>BSE_CASH</ProductSegment>
<ProductSegment>NSE_FNO</ProductSegment>
<ProductSegment>Other</ProductSegment>
</ProductSegments>
<ScreeningCategory>Initial Screening Master</ScreeningCategory>
</ScreeningRequestData>

Following are the steps to be followed for encryption

  1. Generate a Session Key of 256 bit.
  2. Encrypt the data using AES (Symmetric Algorithm) using the above generated Session Key
  3. Encode the above encrypted data to Base64 string. Example: The above sample data would look like following: f86EzPWUEaqwTEAMyfrjANBgkqhkiG9w0BAQsFADCBkzr2ZLVncZb3u
  4. Encrypt the session key using Public Key of the Receiver, using RSA (Asymmetric Algorithm)
  5. Encode the above encrypted Session Key to Base64 string.
  6. Add this encrypted and encoded data and Session Key to the request XML.
  7. Example: The request would look like following:

    <?xml version="1.0" encoding="UTF-8"?>
    <A64EncryptedRequestModel xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ApiToken>fa825d85-57bc-4894-915e-de70c24458db</ApiToken>
    
    <SessionKey>WJZ0q5g7WFPQd2ez6LYqflxps/0g9oWYqx+RCxRq3vNpIZsMzUccFvlwNa1ozC607Y+u3P6C mojLWKB+27MCf2LtfVuMVnQO6TYNZl0IKMeNGtW8nhUNiaTPM9U9OYjENYoXYU/h6D+ExzhK0LSpmQ dRjWi4UcJk2PVDTnzcp91W972PTKVVcJSGxYIZ4mgSiPIWqphkOD9o1jBhXor4VdpX/M588AbvdYC4hOQp W7/Z4hFmIuTCoeLVVulnlxAF74oNY4i/xojnVKyjmuH0ECA6co1RkiWotel2VxMXhC1/C3gnoJLbtpw1hDw 8QmzF5Mp6L24/ICZ790HazIPQdg==</SessionKey>
    
    <RequestData>2rQP1b+mhXFKm9hZmd6s65XFMpsKuvUjflOLrpuMzaFTkEujCsRFICgcTfJqWUzP2IWpImf
    
    LzfMEpb2zcDMnM0uQdw4cSdLZ08R63laN6FwZkvRNf2oN8SjFKnbTloglbNqbMuxDbQyvJgR1hEhbp8vbu qfyK+cbqcpCOXTuLg9ljOjKAoI7Jm/rd5ts7h/dFk5x3+H22nPsGT5VaFRIFItr+LmrBQHlkfAomJfl7b2Bpadd4 vM0gqoa7VTC1bFiSy60HT0kFdncIptiFX7LORbx9/YnhXhkTWfPKu8xCrPG/4JsxLNQxe5hH6Izh7Vwk+e+xe sJpFHzhdC5qdSkrboY/qqZBKpycmr10QfWGkYh4q3kj6mKGgT/sweHukY+5+9OS7DSwI92UcvpnEDIuJy8y Q/HemmVMCYTmvcOoJftXRVv6uhVOH9JltIqt3dt+jY6SfbOtjhFLBD3SIiH44+OgK0PJo5ZfZE2OL7Mgn3ViG iUF6d</RequestData>
    </A64EncryptedRequestModel>
    
  8. Using the Private Key of the Sender, sign the entire request XML. The request of A64 API will look like following
  9. <?xml version="1.0" encoding="utf-16"?>
    <A64EncryptedRequestModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <ApiToken>fa825d85-57bc-4894-915e-de70c24458db</ApiToken>
    <SessionKey>WJZ0q5g7WFPQd2ez6LYqflxps/0g9oWYqx+RCxRq3vNpIZsMzUccFvlwNa1ozC607Y+u3P6 CmojLWKB+27MCf2LtfVuMVnQO6TYNZl0IKMeNGtW8nhUNiaTPM9U9OYjENYoXYU/h6D+ExzhK0LSpm QdRjWi4UcJk2PVDTnzcp91W972PTKVVcJSGxYIZ4mgSiPIWqphkOD9o1jBhXor4VdpX/M588AbvdYC4hO QpW7/Z4hFmIuTCoeLVVulnlxAF74oNY4i/xojnVKyjmuH0ECA6co1RkiWotel2VxMXhC1/C3gnoJLbtpw1h Dw8QmzF5Mp6L24/ICZ790HazIPQdg==</SessionKey>
    <RequestData>2rQP1b+mhXFKm9hZmd6s65XFMpsKuvUjflOLrpuMzaFTkEujCsRFICgcTfJqWUzP2IWpI mfLzfMEpb2zcDMnM0uQdw4cSdLZ08R63laN6FwZkvRNf2oN8SjFKnbTloglbNqbMuxDbQyvJgR1hEhbp8 vbuqfyK+cbqcpCOXTuLg9ljOjKAoI7Jm/rd5ts7h/dFk5x3+H22nPsGT5VaFRIFItr+LmrBQHlkfAomJfl7b2Bpa dd4vM0gqoa7VTC1bFiSy60HT0kFdncIptiFX7LORbx9/YnhXhkTWfPKu8xCrPG/4JsxLNQxe5hH6Izh7Vwk+e
    +xesJpFHzhdC5qdSkrboY/qqZBKpycmr10QfWGkYh4q3kj6mKGgT/sweHukY+5+9OS7DSwI92UcvpnEDIuJ y8yQ/HemmVMCYTmvcOoJftXRVv6uhVOH9JltIqt3dt+jY6SfbOtjhFLBD3SIiH44+OgK0PJo5ZfZE2OL7Mgn3 ViGiUF6d
    </RequestData>
    
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
    <CanonicalizationMethod Algorithm="http://www.w3./2001/REC-xml-c14n-20010315" />
    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
    <Reference URI="">
    <Transforms>
    <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
    </Transforms>
    <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
    <DigestValue>ZGtVlvmyb+eQpBViKp6TnZisvAw=</DigestValue>
    </Reference>
    </SignedInfo>
    <SignatureValue>isce5Z9fGGZxs09p8kB9SeYW4GmAEvwpk</SignatureValue>
    <KeyInfo>
    <X509Data>
    
    <X509SubjectName>CN=SAGAR CHANDRAKANT TANNA</X509SubjectName>
    <X509Certificate>MIIGlzCCBX+gAwIBAgIEAR3GGDANBgkqhkiG9w0BAQ</X509Certificate>
    </X509Data>
    </KeyInfo>
    </Signature>
    
    </A64EncryptedRequestModel>
    

7.Sample Failure Response #

<?xml version="1.0" encoding="UTF-8"?>
<A64EncryptedResponseModel xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RejectionCode>RC666</RejectionCode>
<RejectionMessage>RC666 : Invalid API Token or API Token is not recognized.</RejectionMessage>
<RequestStatus>Rejected by TW</RequestStatus>
<SessionKey />
<ResponseData />
</A64EncryptedResponseModel>
[/xml]

Note: Failure Response will come without Signature in case of invalid API Token

8. Sample Success Response #

<?xml version="1.0" encoding="utf-16"?>
<A64EncryptedResponseModel xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<SessionKey>B20jYZy2UbfJ+fcMsQwOMFGF/npiclj8KBaemis61v3XSlPfTwPESI64PTmlmv4G7jaGM8TW7 eUesgBZ2R8O02jU9XQefYzgTHQy3eFvLZEOtrOvxWGsvKL7+DaRz5PurKpCKBwpZq7ZTH+7mL1mNrRATr WSwJdPOZf83QhRbmmz0m3CGpJMJX5aW89P5EXpeQ6K6bgII2y17dqckVSmhLm6Zmvqz8lZ+/eiKc4aGU 2vkNGbdV5GXabLIjpaJS3sOhhAp1/zm1ZcGATXa/Wz2lG9iQJPlYXKDA9CwbFA9kL2Ssn4dksS/LGJljdogWD rP1WmBXUmvqHtZKggbc4qCw==</SessionKey>

<ResponseData>L63E5mC3J27AU9wUexRQUG5NPkfGBNITm3ec3wZm5nhrblMMwZB2bvSozZSUSJ/Igyj DMea8rQWhMuhK03WeX3XWuC/3auKlttF8rzs2JelONqs+3YO2X4JcPzO3EzaT/iwgZruFj7HPgyY3P1ajWP 2HBiaurTSuKsQoUzX/0ToOoYilNNqRJPMg41xzSSCM79Uzy9+YB2hBwxQLycfg0L2qhz4tQNJXSCOUmT2jO

o7SFZJrzw0l4IoQvquHbSS6Qun6d8J4U5SuUcvqMkB8mSd8Oyfmkp8aRjJ/i86QCArhpCVfB+OYvqAMq8F nRv6F14PaufJ2UdLpFtnOVChQFBuaPKh3Gz9wJWnrP1IEjDJwx+7ibrJ+e+b1ivDPhKEA1VmXQfcgAXKdoN ungNWJ4K6ebnxDcNAy/6w2Nn98u9X9HvWxrJiK2Yt1HGOT0CcpylqSVLwm/6Gf0MwnN3Y6KbFUWTP62 cHm/XAHJIgoFaY/O4XStkwqxuj7ixYoFgQ6mbeyBoBnXl44vSZKFAPz6VLJjFLXRVRtIwJ5Cbz4EO6RcYESn+d wNY81SRCBDLfiB1/cyKUFCe+fk2QMh0Q50iT2LSnKURPiGJ8jG+ZcyxYhWhIHRPPO+PoljwK8mX7Ts5X+gt VEyDHt9uUvzBSjH3m+438IboPAH85z5zKno/+38C2AfCkmDp/bN5CIbMrXybkyIyuqLCGAp8aQPGNDp9U HEhYuoOqmX0cmULq3vEOh25d96Vb2X5uuDZgnttdz</ResponseData>

<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3./2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>ZGtVlvmyb+eQpBViKp6TnZisvAw=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>isce5Z9fGGZxs09p8kB9SeYW4GmAEvwpk</SignatureValue>
<KeyInfo>
<X509Data>
<X509SubjectName>CN=SAGAR CHANDRAKANT TANNA</X509SubjectName>
<X509Certificate>MIIGlzCCBX+gAwIBAgIEAR3GGDANBgkqhkiG9w0BAQ</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>

</A64EncryptedResponseModel>

Note: Verify Signature and Decrypt data. After Decryption you get 2 type of plain text in XML format

9.Sample Decrypted ResponseData #

9.1 Decrypted Response with rejection Code

<?xml version="1.0" encoding="utf-16"?>
<A64ResponseModel xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<ScreeningResults>
<ResponseId>89</ResponseId>
<RequestId>123</RequestId>
<Matched>Error</Matched>
<AlertCount></AlertCount>
<RejectionCode>RC777</RejectionCode>
<RequestStatus>Rejected by TW</RequestStatus>
<RejectionMessage>RC777:Parent Company is missing</RejectionMessage>
<Alerts></Alerts>
<ApiToken>fa825d85-57bc-4894-915e-de70c24458db</ApiToken>
<ReportData></ReportData>
</ScreeningResults>
</A64ResponseModel>

9.2 Decrypted Response with Alerts

<?xml version="1.0" encoding="utf-16"?>
<A64ResponseModel xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ScreeningResults>
<ResponseId>88</ResponseId>
<RequestId>123</RequestId>
<Matched>Match</Matched>
<AlertCount>1</AlertCount>
<Alerts>
<Alert>
<SrNo>1</SrNo>
<Source>WorldCheck</Source>
<SourceUniqueId>1839237</SourceUniqueId>

<TrackwizzId>3775547</TrackwizzId>
<PrimaryMatch>A24 - Name Vowel Matching</PrimaryMatch>
<MatchType>Probable</MatchType>
<Score></Score>
</Alert>
</Alerts>
<ApiToken>fa825d85-57bc-4894-915e-de70c24458db</ApiToken>
<ReportData>isce5Z9fGGZxs09p8kB9SeYW4GmAEvwpk</ReportData>
<RejectionCode></RejectionCode>
<RequestStatus></RequestStatus>
<RejectionMessage></RejectionMessage>
</ScreeningResults>
</A64ResponseModel>

10.Response Parameter Description #

Table 5: Response – Main

Field Name/XML Tag Mandatory Data type Length Remarks
RequestStatus Yes String 60 Possible Values: Accepted by TW/Rejected by TW
RequestRejectionCode No String 60  
RequestRejectionDescription No String 500  
SessionKey No String    
ResponseData No String    
Table 6: Response Data

Field Name/XML Tag Mandatory Data type Length Remarks
RequestId Yes String 60 Same as incoming Request
ResponseId Yes string 60  
Matched Yes String 60 “Match”/“Not Match”/“Error”
AlertCount No String 100  
RejectionCode No String 60  
RejectionMessage No String 500
RequestStatus No String 60 Possible Values: Accepted by TW/Rejected by TW
Alerts No String    
ApiToken No String 60  
ReportData No string Max Base64 Encoded Report
Table 7: Alerts

Field Name/XML Tag Mandator y Data type Length Remarks
SrNo Yes Number    
Source Yes String 60  
PrimaryMatch Yes String 100 Activity Code – Activity Name For E.g.: A13 – Pan Matching
Match Type Yes String 20 Confirmed / Probable
SourceUniqueId Yes String 60  
TrackwizzId Yes Number    
Score No String  

11.Response Decryption Steps #

Consider the following response for the above request made to a system

<?xml version="1.0" encoding="UTF-8"?>
<A64EncryptedResponseModel xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<SessionKey>B20jYZy2UbfJ+fcMsQwOMFGF/npiclj8KBaemis61v3XSlPfTwPESI64PTmlmv4G7jaGM8TW7 eUesgBZ2R8O02jU9XQefYzgTHQy3eFvLZEOtrOvxWGsvKL7+DaRz5PurKpCKBwpZq7ZTH+7mL1mNrRATr WSwJdPOZf83QhRbmmz0m3CGpJMJX5aW89P5EXpeQ6K6bgII2y17dqckVSmhLm6Zmvqz8lZ+/eiKc4aGU 2vkNGbdV5GXabLIjpaJS3sOhhAp1/zm1ZcGATXa/Wz2lG9iQJPlYXKDA9CwbFA9kL2Ssn4dksS/LGJljdogWD rP1WmBXUmvqHtZKggbc4qCw==</SessionKey>

<ResponseData>L63E5mC3J27AU9wUexRQUG5NPkfGBNITm3ec3wZm5nhrblMMwZB2bvSozZSUSJ/Igyj DMea8rQWhMuhK03WeX3XWuC/3auKlttF8rzs2JelONqs+3YO2X4JcPzO3EzaT/iwgZruFj7HPgyY3P1ajWP

2HBiaurTSuKsQoUzX/0ToOoYilNNqRJPMg41xzSSCM79Uzy9+YB2hBwxQLycfg0L2qhz4tQNJXSCOUmT2jO o7SFZJrzw0</ResponseData>

<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3./2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>ZGtVlvmyb+eQpBViKp6TnZisvAw=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>isce5Z9fGGZxs09p8kB9SeYW4GmAEvwpk</SignatureValue>
<KeyInfo>
<X509Data>
<X509SubjectName>CN=SAGAR CHANDRAKANT TANNA</X509SubjectName>
<X509Certificate>MIIGlzCCBX+gAwIBAgIEAR3GkqhkiG9w0BAQ</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</A64EncryptedResponseModel>

Following are the steps to decrypt and read the response

  1. Verify the signature in Response XML using Public Key Present at Sender’s
  2. Decode the Session Key from the Response XML.
  3. Decrypt the above Session Key by Receiver’s Private Key using RSA (Asymmetric Algorithm)
  4. Decode the data in Response XML.
  5. Decrypt the data by Session Key (derived from above) using AES (Symmetric Algorithm).

After the above decryption, the Response Data in Response XML will look like follows:

<?xml version="1.0" encoding="utf-16"?>
<A64ResponseModel xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ScreeningResults>
<ResponseId>88</ResponseId>
<RequestId>123</RequestId>
<Matched>Match</Matched>

<AlertCount>1</AlertCount>

<Alerts>
<Alert>
<SrNo>1</SrNo>
<Source>WorldCheck</Source>
<SourceUniqueId>1839237</SourceUniqueId>
<TrackwizzId>3775547</TrackwizzId>
<PrimaryMatch>A24 - Name Vowel Matching</PrimaryMatch>
<MatchType>Probable</MatchType>
<Score></Score>
</Alert>
</Alerts>

<ApiToken>fa825d85-57bc-4894-915e-de70c24458db</ApiToken>
<ReportData>isce5Z9fGGZxs09p8kB9SeYW4GmAEvwpk</ReportData>
<RejectionCode></RejectionCode>
<RequestStatus></RequestStatus>
<RejectionMessage></RejectionMessage>
</ScreeningResults>
</A64ResponseModel>

Below is the sample decrypted output if any Rejection raise during validation Stage (except ApiToken Rejection)

<?xml version="1.0" encoding="utf-16"?>
<A64ResponseModel xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ScreeningResults>
<ResponseId>89</ResponseId>
<RequestId>123</RequestId>
<Matched>Error</Matched>
<AlertCount></AlertCount>
<RejectionCode>RC777</RejectionCode>
<RequestStatus>Rejected by TW</RequestStatus>
<RejectionMessage>RC777:Parent Company is missing</RejectionMessage>
<Alerts></Alerts>
<ApiToken>fa825d85-57bc-4894-915e-de70c24458db</ApiToken>
<ReportData></ReportData>

</ScreeningResults>
</A64ResponseModel>

12. Request and Response XSD #

A64 API Request – Request XSD

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="A64EncryptedRequestModel">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="ApiToken"/>
<xs:element type="xs:string" name="SessionKey"/>
<xs:element type="xs:string" name="RequestData"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

A64 API RequestData – Request XSD

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="ScreeningRequestData">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:byte" name="RequestId"/>
<xs:element type="xs:string" name="RecordIdentifier"/>
<xs:element type="xs:byte" name="ApplicationRefNumber"/>
<xs:element type="xs:string" name="IntermediaryCode"/>
<xs:element type="xs:string" name="SourceSystemName"/>
<xs:element type="xs:byte" name="ParentCompany"/>
<xs:element type="xs:string" name="FirstName"/>
<xs:element type="xs:string" name="MiddleName"/>
<xs:element type="xs:string" name="LastName"/>
<xs:element type="xs:string" name="CustomerCategory"/>
<xs:element type="xs:string" name="Gender"/>
<xs:element type="xs:string" name="Pan"/>
<xs:element type="xs:string" name="Din"/>
<xs:element type="xs:string" name="Cin"/>
<xs:element type="xs:int" name="PassportNumber"/>
<xs:element type="xs:int" name="DrivingLicenseNumber"/>
<xs:element type="xs:string" name="DateOfBirth"/>

<xs:element type="xs:string" name="BirthCity"/>
<xs:element type="xs:string" name="CountryOfBirth"/>
<xs:element name="Nationalities">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="Nationality" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element type="xs:string" name="CorrespondenceAddressLine1"/>
<xs:element type="xs:string" name="CorrespondenceAddressLine2"/>
<xs:element type="xs:string" name="CorrespondenceAddressLine3"/>
<xs:element type="xs:string" name="CorrespondenceAddressCity"/>
<xs:element type="xs:string" name="CorrespondenceAddressState"/>
<xs:element type="xs:string" name="CorrespondenceAddressCountry"/>
<xs:element type="xs:int" name="CorrespondenceAddressPinCode"/>
<xs:element type="xs:string" name="PermanentAddressLine1"/>
<xs:element type="xs:string" name="PermanentAddressLine2"/>
<xs:element type="xs:string" name="PermanentAddressLine3"/>
<xs:element type="xs:string" name="PermanentAddressCity"/>
<xs:element type="xs:string" name="PermanentAddressState"/>
<xs:element type="xs:string" name="PermanentAddressCountry"/>
<xs:element type="xs:int" name="PermanentAddressPinCode"/>
<xs:element type="xs:byte" name="WorkMobileISD"/>
<xs:element type="xs:long" name="WorkMobileNumber"/>
<xs:element type="xs:byte" name="PersonalMobileISD"/>
<xs:element type="xs:long" name="PersonalMobileNumber"/>
<xs:element type="xs:string" name="WorkEmail"/>
<xs:element type="xs:string" name="PersonalEmail"/>
<xs:element name="Tags">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:byte" name="Tag" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ProductSegments">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="ProductSegment" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element type="xs:string" name="ScreeningCategory"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

A64 API Response – Response XSD

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="A64EncryptedResponseModel">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="RejectionCode"/>
<xs:element type="xs:string" name="RejectionMessage"/>
<xs:element type="xs:string" name="RequestStatus"/>
<xs:element type="xs:string" name="SessionKey"/>
<xs:element type="xs:string" name="ResponseData"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

A64 API ResponseData – Response XSD Response with rejection Code

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="A64ResponseModel">
<xs:complexType>
<xs:sequence>
<xs:element name="ScreeningResults">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:byte" name="ResponseId"/>
<xs:element type="xs:byte" name="RequestId"/>
<xs:element type="xs:string" name="Matched"/>
<xs:element type="xs:string" name="AlertCount"/>
<xs:element type="xs:string" name="RejectionCode"/>
<xs:element type="xs:string" name="RequestStatus"/>

<xs:element type="xs:string" name="RejectionMessage"/>
<xs:element type="xs:string" name="Alerts"/>
<xs:element type="xs:string" name="ApiToken"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

Response with Alerts

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="A64ResponseModel">
<xs:complexType>
<xs:sequence>
<xs:element name="ScreeningResults">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:byte" name="ResponseId"/>
<xs:element type="xs:byte" name="RequestId"/>
<xs:element type="xs:string" name="Matched"/>
<xs:element type="xs:byte" name="AlertCount"/>
<xs:element name="Alerts">
<xs:complexType>
<xs:sequence>
<xs:element name="Alert">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:byte" name="SrNo"/>
<xs:element type="xs:string" name="Source"/>
<xs:element type="xs:int" name="SourceUniqueId"/>
<xs:element type="xs:int" name="TrackwizzId"/>
<xs:element type="xs:string" name="PrimaryMatch"/>
<xs:element type="xs:string" name="MatchType"/>
<xs:element type="xs:string" name="Score"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element type="xs:string" name="ApiToken"/>

<xs:element type="xs:string" name="RejectionCode"/>
<xs:element type="xs:string" name="RequestStatus"/>
<xs:element type="xs:string" name="RejectionMessage"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

13.Sample Data #

Example 1:

Attribute Value Matching Response
Name Dawood Ibrahim Matching found
Nationality India
Date of Birth 31-12-1955
Example 2:

Attribute Value Matching Response
Name Ranjeet Mendon Matching found
Nationality India
Date of Birth 31-12-1955
PAN CXCPM6541J
Country of Birth India