diff --git a/.nvmrc b/.nvmrc
index 4a972748..860cc500 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-v18.14.1
+v18.17.1
diff --git a/cypress/fixtures/services.json b/cypress/fixtures/services.json
index 53b4f9b0..22cbbd9b 100644
--- a/cypress/fixtures/services.json
+++ b/cypress/fixtures/services.json
@@ -1,964 +1,2360 @@
{
- "hosted_web": {
- "doc_verification": {
- "GH": {
- "name": "Ghana",
- "id_types": {
- "NHIS": {
- "label": "National Health Insurance Card"
- },
- "NATIONAL_ID": {
- "label": "National ID"
- },
- "NATIONAL_ID_NON_CITIZEN": {
- "label": "National ID"
- },
- "VOTER_ID": {
- "label": "Voter's ID"
- },
- "PASSPORT": {
- "label": "Passport"
- },
- "DRIVERS_LICENSE": {
- "label": "Driver's License"
- },
- "ECOWAS_ID": {
- "label": "ECOWAS ID"
- }
- }
- },
- "RW": {
- "name": "Rwanda",
- "id_types": {
- "NATIONAL_ID": {
- "label": "National ID"
- },
- "PASSPORT": {
- "label": "Passport"
- },
- "DRIVERS_LICENSE": {
- "label": "Driver's License"
- },
- "RWANDA_CARD": {
- "label": "Rwanda Card"
- }
- }
- },
- "CI": {
- "name": "Cote d'Ivoire",
- "id_types": {
- "NATIONAL_ID": {
- "label": "National ID"
- },
- "PASSPORT": {
- "label": "Passport"
- }
- }
- },
- "TZ": {
- "name": "Tanzania",
- "id_types": {
- "NATIONAL_ID": {
- "label": "National ID"
- },
- "VOTER_ID": {
- "label": "Voter's ID"
- },
- "PASSPORT": {
- "label": "Passport"
- }
- }
- },
- "ZA": {
- "name": "South Africa",
- "id_types": {
- "NATIONAL_ID_DOC": {
- "label": "National ID Document"
- },
- "NATIONAL_ID": {
- "label": "National ID"
- },
- "PASSPORT": {
- "label": "Passport"
- },
- "DRIVERS_LICENSE": {
- "label": "Driver's License"
- }
- }
- },
- "MU": {
- "name": "Mauritius",
- "id_types": {
- "NATIONAL_ID": {
- "label": "National ID"
- },
- "PASSPORT": {
- "label": "Passport"
- }
- }
- },
- "CM": {
- "name": "Cameroon",
- "id_types": {
- "NATIONAL_ID": {
- "label": "National ID"
- },
- "EPASSPORT": {
- "label": "Passport"
- },
- "PASSPORT": {
- "label": "Passport"
- }
- }
- },
- "MW": {
- "name": "Malawi",
- "id_types": {
- "PASSPORT": {
- "label": "Passport"
- },
- "DRIVERS_LICENSE": {
- "label": "Driver's License"
- }
- }
- },
- "UG": {
- "name": "Uganda",
- "id_types": {
- "NATIONAL_ID": {
- "label": "National ID"
- },
- "PASSPORT": {
- "label": "Passport"
- }
- }
- },
- "NA": {
- "name": "Namibia",
- "id_types": {
- "NATIONAL_ID": {
- "label": "National ID"
- },
- "PASSPORT": {
- "label": "Passport"
- },
- "DRIVERS_LICENSE": {
- "label": "Driver's License"
- }
- }
- },
- "ZM": {
- "name": "Zimbabwe",
- "id_types": {
- "PASSPORT": {
- "label": "Passport"
- },
- "DRIVERS_LICENSE": {
- "label": "Driver's License"
- }
- }
- },
- "BW": {
- "name": "Botswana",
- "id_types": {
- "NATIONAL_ID": {
- "label": "National ID"
- },
- "PASSPORT": {
- "label": "Passport"
- },
- "DRIVERS_LICENSE": {
- "label": "Driver's License"
- }
- }
- },
- "NG": {
- "name": "Nigeria",
- "id_types": {
- "VOTER_ID": {
- "label": "Voter's ID"
- },
- "NIN": {
- "label": "National ID"
- },
- "PASSPORT": {
- "label": "Passport"
- },
- "DRIVERS_LICENSE": {
- "label": "Driver's License"
- }
- }
- },
- "GA": {
- "name": "Gabon",
- "id_types": {
- "PASSPORT": {
- "label": "Passport"
- }
- }
- },
- "KE": {
- "name": "Kenya",
- "id_types": {
- "NATIONAL_ID": {
- "label": "National ID"
- },
- "PASSPORT": {
- "label": "Passport"
- }
- }
- },
- "SN": {
- "name": "Senegal",
- "id_types": {
- "NATIONAL_ID": {
- "label": "National ID"
- },
- "PASSPORT": {
- "label": "Passport"
- },
- "ECOWAS_ID": {
- "label": "ECOWAS ID"
- }
- }
- }
- },
- "biometric_kyc": {
- "GH": {
- "name": "Ghana",
- "id_types": {
- "SSNIT": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "SSNIT",
- "test_data": "C000000000000",
- "id_number_regex": "^[A-Z]{1}[A-Z0-9]{12,14}$/i"
- },
- "VOTER_ID": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Voter ID",
- "test_data": "0000000000",
- "id_number_regex": "^[0-9]{10,12}$"
- },
- "NEW_VOTER_ID": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "New Voter ID",
- "test_data": "0000000000",
- "id_number_regex": "^[0-9]{10,12}$"
- },
- "NATIONAL_ID": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "National ID",
- "test_data": "",
- "id_number_regex": "^GHA-[A-Z0-9]{9}-[A-Z0-9]{1}$/i"
- },
- "DRIVERS_LICENSE": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Driver's License",
- "test_data": "B0000000",
- "id_number_regex": "^[A-Z0-9]{6,10}$/i"
- },
- "PASSPORT": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Passport",
- "test_data": "G0000000",
- "id_number_regex": "^G[A-Z0-9]{7,9}$/i"
- }
- }
- },
- "NG": {
- "name": "Nigeria",
- "id_types": {
- "TIN": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Tax Identification Number",
- "test_data": "00000000-0000",
- "id_number_regex": "^[0-9]{8,}-[0-9]{4,}$"
- },
- "VOTER_ID": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Voter ID Number",
- "test_data": "0000000000000000000",
- "id_number_regex": "^([A-Z0-9]{19}|[A-Z0-9]{9})$/i"
- },
- "NIN": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "National ID",
- "test_data": "00000000000",
- "id_number_regex": "^[0-9]{11}$"
- },
- "NIN_SLIP": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "National ID (Slip)",
- "test_data": "00000000000",
- "id_number_regex": "^[0-9]{11}$"
- },
- "BVN": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Bank Verification Number",
- "test_data": "00000000000",
- "id_number_regex": "^[0-9]{11}$"
- },
- "BVN_MFA": {
- "required_fields": [
- "country",
- "id_type",
- "session_id",
- "user_id",
- "job_id"
- ],
- "label": "Bank Verification Number (MFA)",
- "test_data": "00000000000",
- "id_number_regex": "^[0-9]{11}$"
- },
- "DRIVERS_LICENSE": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id",
- "first_name",
- "last_name",
- "dob",
- "day",
- "month",
- "year"
- ],
- "label": "Driver's License",
- "test_data": "ABC000000000",
- "id_number_regex": "^(?=.*[0-9])(?=.*[A-Z])[A-Z0-9]{3}([ -]{1})?[A-Z0-9]{6,12}$/i"
- }
- }
- },
- "KE": {
- "name": "Kenya",
- "id_types": {
- "NATIONAL_ID": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "National ID",
- "test_data": "A00000000",
- "id_number_regex": "^[0-9]{1,9}$"
- },
- "ALIEN_CARD": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Alien Card",
- "test_data": "000000",
- "id_number_regex": "^[0-9]{6,9}$"
- },
- "PASSPORT": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Passport",
- "test_data": "00000000",
- "id_number_regex": "^[A-Z0-9]{7,9}$"
- }
- }
- },
- "ZA": {
- "name": "South Africa",
- "id_types": {
- "NATIONAL_ID": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "National ID",
- "test_data": "0000000000000",
- "id_number_regex": "^[0-9]{13}$"
- }
- }
- }
- },
- "basic_kyc": {
- "GH": {
- "name": "Ghana",
- "id_types": {
- "SSNIT": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "SSNIT",
- "test_data": "C000000000000",
- "id_number_regex": "^[A-Z]{1}[A-Z0-9]{12,14}$/i"
- },
- "VOTER_ID": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Voter ID",
- "test_data": "0000000000",
- "id_number_regex": "^[0-9]{10,12}$"
- },
- "NEW_VOTER_ID": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "New Voter ID",
- "test_data": "0000000000",
- "id_number_regex": "^[0-9]{10,12}$"
- },
- "NATIONAL_ID": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "National ID",
- "test_data": "",
- "id_number_regex": "^GHA-[A-Z0-9]{9}-[A-Z0-9]{1}$/i"
- },
- "DRIVERS_LICENSE": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Driver's License",
- "test_data": "B0000000",
- "id_number_regex": "^[A-Z0-9]{6,10}$/i"
- },
- "PASSPORT": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Passport",
- "test_data": "G0000000",
- "id_number_regex": "^G[A-Z0-9]{7,9}$/i"
- }
- }
- },
- "NG": {
- "name": "Nigeria",
- "id_types": {
- "TIN": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Tax Identification Number",
- "test_data": "00000000-0000",
- "id_number_regex": "^[0-9]{8,}-[0-9]{4,}$"
- },
- "VOTER_ID": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Voter ID Number",
- "test_data": "0000000000000000000",
- "id_number_regex": "^([A-Z0-9]{19}|[A-Z0-9]{9})$/i"
- },
- "NIN": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "National ID",
- "test_data": "00000000000",
- "id_number_regex": "^[0-9]{11}$"
- },
- "NIN_SLIP": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "National ID (Slip)",
- "test_data": "00000000000",
- "id_number_regex": "^[0-9]{11}$"
- },
- "BVN": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id",
- "first_name",
- "last_name"
- ],
- "label": "Bank Verification Number",
- "test_data": "00000000000",
- "id_number_regex": "^[0-9]{11}$"
- },
- "BVN_MFA": {
- "required_fields": [
- "country",
- "id_type",
- "user_id",
- "job_id",
- "first_name",
- "last_name"
- ],
- "label": "Bank Verification Number (MFA)",
- "test_data": "00000000000",
- "id_number_regex": "^[0-9]{11}$"
- },
- "DRIVERS_LICENSE": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id",
- "first_name",
- "last_name",
- "dob",
- "day",
- "month",
- "year"
- ],
- "label": "Driver's License",
- "test_data": "ABC000000000",
- "id_number_regex": "^(?=.*[0-9])(?=.*[A-Z])[A-Z0-9]{3}([ -]{1})?[A-Z0-9]{6,12}$/i"
- }
- }
- },
- "KE": {
- "name": "Kenya",
- "id_types": {
- "NATIONAL_ID": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "National ID",
- "test_data": "A00000000",
- "id_number_regex": "^[0-9]{1,9}$"
- },
- "ALIEN_CARD": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Alien Card",
- "test_data": "000000",
- "id_number_regex": "^[0-9]{6,9}$"
- },
- "PASSPORT": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Passport",
- "test_data": "00000000",
- "id_number_regex": "^[A-Z0-9]{7,9}$"
- },
- "DRIVERS_LICENSE": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "citizenship",
- "user_id",
- "job_id"
- ],
- "label": "Driver's License",
- "test_data": "00000000",
- "id_number_regex": "^[0-9]{1,9}$"
- }
- }
- },
- "ZA": {
- "name": "South Africa",
- "id_types": {
- "NATIONAL_ID": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "National ID",
- "test_data": "0000000000000",
- "id_number_regex": "^[0-9]{13}$"
- }
- }
- }
- },
- "enhanced_kyc": {
- "GH": {
- "name": "Ghana",
- "id_types": {
- "SSNIT": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "SSNIT",
- "test_data": "C000000000000",
- "id_number_regex": "^[A-Z]{1}[A-Z0-9]{12,14}$/i"
- },
- "VOTER_ID": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Voter ID",
- "test_data": "0000000000",
- "id_number_regex": "^[0-9]{10,12}$"
- },
- "NEW_VOTER_ID": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "New Voter ID",
- "test_data": "0000000000",
- "id_number_regex": "^[0-9]{10,12}$"
- },
- "NATIONAL_ID": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "National ID",
- "test_data": "",
- "id_number_regex": "^GHA-[A-Z0-9]{9}-[A-Z0-9]{1}$/i"
- },
- "DRIVERS_LICENSE": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Driver's License",
- "test_data": "B0000000",
- "id_number_regex": "^[A-Z0-9]{6,10}$/i"
- },
- "PASSPORT": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Passport",
- "test_data": "G0000000",
- "id_number_regex": "^G[A-Z0-9]{7,9}$/i"
- }
- }
- },
- "NG": {
- "name": "Nigeria",
- "id_types": {
- "TIN": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Tax Identification Number",
- "test_data": "00000000-0000",
- "id_number_regex": "^[0-9]{8,}-[0-9]{4,}$"
- },
- "VOTER_ID": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Voter ID Number",
- "test_data": "0000000000000000000",
- "id_number_regex": "^([A-Z0-9]{19}|[A-Z0-9]{9})$/i"
- },
- "NIN": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "National ID",
- "test_data": "00000000000",
- "id_number_regex": "^[0-9]{11}$"
- },
- "NIN_SLIP": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "National ID (Slip)",
- "test_data": "00000000000",
- "id_number_regex": "^[0-9]{11}$"
- },
- "BVN": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Bank Verification Number",
- "test_data": "00000000000",
- "id_number_regex": "^[0-9]{11}$"
- },
- "BVN_MFA": {
- "required_fields": [
- "country",
- "id_type",
- "user_id",
- "job_id"
- ],
- "label": "Bank Verification Number (MFA)",
- "test_data": "00000000000",
- "id_number_regex": "^[0-9]{11}$"
- },
- "DRIVERS_LICENSE": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id",
- "first_name",
- "last_name",
- "dob",
- "day",
- "month",
- "year"
- ],
- "label": "Driver's License",
- "test_data": "ABC000000000",
- "id_number_regex": "^(?=.*[0-9])(?=.*[A-Z])[A-Z0-9]{3}([ -]{1})?[A-Z0-9]{6,12}$/i"
- }
- }
- },
- "KE": {
- "name": "Kenya",
- "id_types": {
- "NATIONAL_ID": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "National ID",
- "test_data": "A00000000",
- "id_number_regex": "^[0-9]{1,9}$"
- },
- "ALIEN_CARD": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Alien Card",
- "test_data": "000000",
- "id_number_regex": "^[0-9]{6,9}$"
- },
- "PASSPORT": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "Passport",
- "test_data": "00000000",
- "id_number_regex": "^[A-Z0-9]{7,9}$"
- },
- "KRA_PIN": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "citizenship",
- "user_id",
- "job_id"
- ],
- "label": "KRA PIN",
- "test_data": "00000000",
- "id_number_regex": "^[0-9]{1,9}$"
- },
- "DRIVERS_LICENSE": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "citizenship",
- "user_id",
- "job_id"
- ],
- "label": "Driver's License",
- "test_data": "00000000",
- "id_number_regex": "^[0-9]{1,9}$"
- }
- }
- },
- "ZA": {
- "name": "South Africa",
- "id_types": {
- "NATIONAL_ID": {
- "required_fields": [
- "country",
- "id_type",
- "id_number",
- "user_id",
- "job_id"
- ],
- "label": "National ID",
- "test_data": "0000000000000",
- "id_number_regex": "^[0-9]{13}$"
- }
- }
- }
+ "hosted_web": {
+ "basic_kyc": {
+ "GH": {
+ "name": "Ghana",
+ "id_types": {
+ "SSNIT": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "SSNIT",
+ "test_data": "C000000000000",
+ "id_number_regex": "^[A-Z]{1}[A-Z0-9]{12,14}$"
+ },
+ "VOTER_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Voter ID",
+ "test_data": "0000000000",
+ "id_number_regex": "^[0-9]{10,12}$"
+ },
+ "NEW_VOTER_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "New Voter ID",
+ "test_data": "0000000000",
+ "id_number_regex": "^[0-9]{10,12}$"
+ },
+ "NATIONAL_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID",
+ "test_data": "",
+ "id_number_regex": "^GHA-[A-Z0-9]{9}-[A-Z0-9]{1}$"
+ },
+ "DRIVERS_LICENSE": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Driver's License",
+ "test_data": "B0000000",
+ "id_number_regex": "^[A-Z0-9]{6,10}$"
+ },
+ "PASSPORT": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Passport",
+ "test_data": "G0000000",
+ "id_number_regex": "^[A-Z][0-9]{7,9}$"
+ }
}
+ },
+ "NG": {
+ "name": "Nigeria",
+ "id_types": {
+ "NIN": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "NIN_SLIP": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID (Slip)",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "V_NIN": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Virtual NIN",
+ "test_data": "0000000000000000",
+ "id_number_regex": "^[a-zA-Z0-9]{16}$"
+ },
+ "BANK_ACCOUNT": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id",
+ "bank_code"
+ ],
+ "id_number_regex": "^[0-9]{10}$",
+ "label": "Bank Account Verification"
+ },
+ "VOTER_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Voter ID",
+ "test_data": "0000000000000000000",
+ "id_number_regex": "^[a-zA-Z0-9 ]{9,20}$"
+ },
+ "BVN": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id",
+ "first_name",
+ "last_name"
+ ],
+ "label": "Bank Verification Number",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "BVN_MFA": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "session_id",
+ "user_id",
+ "job_id",
+ "first_name",
+ "last_name"
+ ],
+ "label": "Bank Verification Number (MFA)",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "NIN_V2": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID (NIN)",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "DRIVERS_LICENSE": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id",
+ "first_name",
+ "last_name",
+ "dob",
+ "day",
+ "month",
+ "year"
+ ],
+ "label": "Driver's License",
+ "test_data": "ABC000000000",
+ "id_number_regex": "^(?=.*[0-9])(?=.*[A-Z])[A-Z0-9]{3}([ -]{1})?[A-Z0-9]{6,12}$"
+ }
+ }
+ },
+ "KE": {
+ "name": "Kenya",
+ "id_types": {
+ "KRA_PIN": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "citizenship",
+ "user_id",
+ "job_id"
+ ],
+ "label": "KRA PIN",
+ "test_data": "00000000",
+ "id_number_regex": "^[0-9]{1,9}$"
+ },
+ "NATIONAL_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID",
+ "test_data": "00000000",
+ "id_number_regex": "^[0-9]{1,9}$"
+ },
+ "ALIEN_CARD": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Alien Card",
+ "test_data": "000000",
+ "id_number_regex": "^[0-9]{6,9}$"
+ },
+ "DRIVERS_LICENSE": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "citizenship",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Driver's License",
+ "test_data": "00000000",
+ "id_number_regex": "^[0-9]{1,9}$"
+ },
+ "PASSPORT": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Passport",
+ "test_data": "A00000000",
+ "id_number_regex": "^[A-Z0-9]{7,9}$"
+ },
+ "NATIONAL_ID_NO_PHOTO": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID No Photo",
+ "test_data": "00000000",
+ "id_number_regex": "^[0-9]{1,9}$"
+ }
+ }
+ },
+ "UG": {
+ "name": "Uganda",
+ "id_types": {
+ "NATIONAL_ID_NO_PHOTO": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID No Photo",
+ "test_data": "00000000000000",
+ "id_number_regex": "^[A-Z0-9]{14}$"
+ }
+ }
+ },
+ "ZA": {
+ "name": "South Africa",
+ "id_types": {
+ "NATIONAL_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID",
+ "test_data": "0000000000000",
+ "id_number_regex": "^[0-9]{13}$"
+ },
+ "NATIONAL_ID_NO_PHOTO": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID No Photo",
+ "test_data": "0000000000000",
+ "id_number_regex": "^[0-9]{13}$"
+ }
+ }
+ }
+ },
+ "biometric_kyc": {
+ "GH": {
+ "name": "Ghana",
+ "id_types": {
+ "SSNIT": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "SSNIT",
+ "test_data": "C000000000000",
+ "id_number_regex": "^[A-Z]{1}[A-Z0-9]{12,14}$"
+ },
+ "VOTER_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Voter ID",
+ "test_data": "0000000000",
+ "id_number_regex": "^[0-9]{10,12}$"
+ },
+ "NEW_VOTER_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "New Voter ID",
+ "test_data": "0000000000",
+ "id_number_regex": "^[0-9]{10,12}$"
+ },
+ "NATIONAL_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID",
+ "test_data": "",
+ "id_number_regex": "^GHA-[A-Z0-9]{9}-[A-Z0-9]{1}$"
+ },
+ "DRIVERS_LICENSE": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Driver's License",
+ "test_data": "B0000000",
+ "id_number_regex": "^[A-Z0-9]{6,10}$"
+ },
+ "PASSPORT": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Passport",
+ "test_data": "G0000000",
+ "id_number_regex": "^[A-Z][0-9]{7,9}$"
+ }
+ }
+ },
+ "NG": {
+ "name": "Nigeria",
+ "id_types": {
+ "NIN": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "NIN_SLIP": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID (Slip)",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "V_NIN": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Virtual NIN",
+ "test_data": "0000000000000000",
+ "id_number_regex": "^[a-zA-Z0-9]{16}$"
+ },
+ "VOTER_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Voter ID",
+ "test_data": "0000000000000000000",
+ "id_number_regex": "^[a-zA-Z0-9 ]{9,20}$"
+ },
+ "BVN": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Bank Verification Number",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "BVN_MFA": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "session_id",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Bank Verification Number (MFA)",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "NIN_V2": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID (NIN)",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "DRIVERS_LICENSE": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id",
+ "first_name",
+ "last_name",
+ "dob",
+ "day",
+ "month",
+ "year"
+ ],
+ "label": "Driver's License",
+ "test_data": "ABC000000000",
+ "id_number_regex": "^(?=.*[0-9])(?=.*[A-Z])[A-Z0-9]{3}([ -]{1})?[A-Z0-9]{6,12}$"
+ }
+ }
+ },
+ "KE": {
+ "name": "Kenya",
+ "id_types": {
+ "KRA_PIN": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "citizenship",
+ "user_id",
+ "job_id"
+ ],
+ "label": "KRA PIN",
+ "test_data": "00000000",
+ "id_number_regex": "^[0-9]{1,9}$"
+ },
+ "NATIONAL_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID",
+ "test_data": "00000000",
+ "id_number_regex": "^[0-9]{1,9}$"
+ },
+ "ALIEN_CARD": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Alien Card",
+ "test_data": "000000",
+ "id_number_regex": "^[0-9]{6,9}$"
+ },
+ "DRIVERS_LICENSE": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "citizenship",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Driver's License",
+ "test_data": "00000000",
+ "id_number_regex": "^[0-9]{1,9}$"
+ },
+ "PASSPORT": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Passport",
+ "test_data": "00000000",
+ "id_number_regex": "^[A-Z0-9]{7,9}$"
+ },
+ "NATIONAL_ID_NO_PHOTO": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID No Photo",
+ "test_data": "00000000",
+ "id_number_regex": "^[0-9]{1,9}$"
+ }
+ }
+ },
+ "ZA": {
+ "name": "South Africa",
+ "id_types": {
+ "NATIONAL_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID",
+ "test_data": "0000000000000",
+ "id_number_regex": "^[0-9]{13}$"
+ }
+ }
+ }
+ },
+ "enhanced_kyc": {
+ "GH": {
+ "name": "Ghana",
+ "id_types": {
+ "SSNIT": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "SSNIT",
+ "test_data": "C000000000000",
+ "id_number_regex": "^[A-Z]{1}[A-Z0-9]{12,14}$/i"
+ },
+ "VOTER_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Voter ID",
+ "test_data": "0000000000",
+ "id_number_regex": "^[0-9]{10,12}$"
+ },
+ "NEW_VOTER_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "New Voter ID",
+ "test_data": "0000000000",
+ "id_number_regex": "^[0-9]{10,12}$"
+ },
+ "NATIONAL_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID",
+ "test_data": "",
+ "id_number_regex": "^GHA-[A-Z0-9]{9}-[A-Z0-9]{1}$/i"
+ },
+ "DRIVERS_LICENSE": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Driver's License",
+ "test_data": "B0000000",
+ "id_number_regex": "^[A-Z0-9]{6,10}$/i"
+ },
+ "PASSPORT": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Passport",
+ "test_data": "G0000000",
+ "id_number_regex": "^[A-Z][0-9]{7,9}$"
+ }
+ }
+ },
+ "NG": {
+ "name": "Nigeria",
+ "id_types": {
+ "NIN": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "NIN_SLIP": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID (Slip)",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "V_NIN": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Virtual NIN",
+ "test_data": "0000000000000000",
+ "id_number_regex": "^[a-zA-Z0-9]{16}$"
+ },
+ "BANK_ACCOUNT": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id",
+ "bank_code"
+ ],
+ "id_number_regex": "^[0-9]{10}$",
+ "label": "Bank Account Verification"
+ },
+ "VOTER_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Voter ID",
+ "test_data": "0000000000000000000",
+ "id_number_regex": "^[a-zA-Z0-9 ]{9,20}$"
+ },
+ "BVN": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Bank Verification Number",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "BVN_MFA": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "session_id",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Bank Verification Number (MFA)",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "NIN_V2": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID (NIN)",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "DRIVERS_LICENSE": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id",
+ "first_name",
+ "last_name",
+ "dob",
+ "day",
+ "month",
+ "year"
+ ],
+ "label": "Driver's License",
+ "test_data": "ABC000000000",
+ "id_number_regex": "^(?=.*[0-9])(?=.*[A-Z])[A-Z0-9]{3}([ -]{1})?[A-Z0-9]{6,12}$"
+ }
+ }
+ },
+ "KE": {
+ "name": "Kenya",
+ "id_types": {
+ "KRA_PIN": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "citizenship",
+ "user_id",
+ "job_id"
+ ],
+ "label": "KRA PIN",
+ "test_data": "00000000",
+ "id_number_regex": "^[0-9]{1,9}$"
+ },
+ "NATIONAL_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID",
+ "test_data": "00000000",
+ "id_number_regex": "^[0-9]{1,9}$"
+ },
+ "ALIEN_CARD": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Alien Card",
+ "test_data": "000000",
+ "id_number_regex": "^[0-9]{6,9}$"
+ },
+ "DRIVERS_LICENSE": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "citizenship",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Driver's License",
+ "test_data": "00000000",
+ "id_number_regex": "^[0-9]{1,9}$"
+ },
+ "PASSPORT": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Passport",
+ "test_data": "00000000",
+ "id_number_regex": "^[A-Z0-9]{7,9}$"
+ },
+ "NATIONAL_ID_NO_PHOTO": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID No Photo",
+ "test_data": "00000000",
+ "id_number_regex": "^[0-9]{1,9}$"
+ }
+ }
+ },
+ "UG": {
+ "name": "Uganda",
+ "id_types": {
+ "NATIONAL_ID_NO_PHOTO": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID No Photo",
+ "test_data": "00000000000000",
+ "id_number_regex": "^[A-Z0-9]{14}$"
+ }
+ }
+ },
+ "ZA": {
+ "name": "South Africa",
+ "id_types": {
+ "NATIONAL_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID",
+ "test_data": "0000000000000",
+ "id_number_regex": "^[0-9]{13}$"
+ },
+ "NATIONAL_ID_NO_PHOTO": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID No Photo",
+ "test_data": "0000000000000",
+ "id_number_regex": "^[0-9]{13}$"
+ }
+ }
+ }
+ },
+ "doc_verification": {
+ "PT": {
+ "name": "Portugal",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "HR": {
+ "name": "Croatia",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "HU": {
+ "name": "Hungary",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "IE": {
+ "name": "Ireland",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "AD": {
+ "name": "Andorra",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "ZA": {
+ "name": "South Africa",
+ "id_types": {
+ "GREEN_BOOK": {
+ "label": "National ID Document (Green Book)"
+ },
+ "RESIDENT_CARD": {
+ "label": "Residence Permit"
+ },
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "TRAVEL_DOCUMENT": {
+ "label": "Travel Document"
+ },
+ "DRIVERS_LICENSE": {
+ "label": "Driver's License"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "IS": {
+ "name": "Iceland",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "AL": {
+ "name": "Albania",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "IT": {
+ "name": "Italy",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "AO": {
+ "name": "Angola",
+ "id_types": {
+ "RESIDENT_CARD": {
+ "label": "Residence permit"
+ },
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "DRIVERS_LICENSE": {
+ "label": "Driver's License"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "AT": {
+ "name": "Austria",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "ZM": {
+ "name": "Zambia",
+ "id_types": {
+ "DRIVERS_LICENSE": {
+ "label": "Driver's License"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ },
+ "REGISTRATION_CARD": {
+ "label": "Registration Card"
+ }
+ }
+ },
+ "RO": {
+ "name": "Romania",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "ZW": {
+ "name": "Zimbabwe",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "RS": {
+ "name": "Serbia",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "BE": {
+ "name": "Belgium",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "JM": {
+ "name": "Jamaica",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "BF": {
+ "name": "Burkina Faso",
+ "id_types": {
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "BG": {
+ "name": "Bulgaria",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "RW": {
+ "name": "Rwanda",
+ "id_types": {
+ "NON_CITIZEN_ID": {
+ "label": "Foreigner Id Card "
+ },
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "DRIVERS_LICENSE": {
+ "label": "Driver's License"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "BI": {
+ "name": "Burundi",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "BJ": {
+ "name": "Benin",
+ "id_types": {
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "RESIDENT_CARD": {
+ "label": "Resident Card"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "BM": {
+ "name": "Bermuda",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "SC": {
+ "name": "Seychelles",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "BS": {
+ "name": "Bahamas",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "SD": {
+ "name": "Sudan",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "SE": {
+ "name": "Sweden",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "BW": {
+ "name": "Botswana",
+ "id_types": {
+ "RESIDENT_CARD": {
+ "label": "Residence Permit"
+ },
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "DRIVERS_LICENSE": {
+ "label": "Driver's License"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "SI": {
+ "name": "Slovenia",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "BY": {
+ "name": "Belarus",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "SK": {
+ "name": "Slovakia",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "SL": {
+ "name": "Sierra Leone",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "KE": {
+ "name": "Kenya",
+ "id_types": {
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ },
+ "NATIONAL_ID_NO_PHOTO": {
+ "label": "National ID No Photo"
+ }
+ }
+ },
+ "SM": {
+ "name": "San Marino",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "SN": {
+ "name": "Senegal",
+ "id_types": {
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ },
+ "ECOWAS_ID": {
+ "label": "Ecowas ID"
+ }
+ }
+ },
+ "SO": {
+ "name": "Somalia",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "CA": {
+ "name": "Canada",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "SS": {
+ "name": "South Sudan",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "CD": {
+ "name": "Democratic Republic of the Congo",
+ "id_types": {
+ "VOTER_ID": {
+ "label": "Voter Card"
+ },
+ "DRIVERS_LICENSE": {
+ "label": "Driver's License"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "ST": {
+ "name": "Sao Tome and Principe",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "KM": {
+ "name": "Comoros",
+ "id_types": {
+ "RESIDENT_CARD": {
+ "label": "Resident Card"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "CG": {
+ "name": "Congo",
+ "id_types": {
+ "RESIDENT_CARD": {
+ "label": "Resident Card"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "CH": {
+ "name": "Switzerland",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "CI": {
+ "name": "Côte d'Ivoire",
+ "id_types": {
+ "HEALTH_INSURANCE_ID": {
+ "label": "Health Insurance ID"
+ },
+ "RESIDENT_CARD": {
+ "label": "Resident Card"
+ },
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "ATTESTATION_CARD": {
+ "label": "Temporary National ID"
+ },
+ "DRIVERS_LICENSE": {
+ "label": "Driver's License"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "CM": {
+ "name": "Cameroon",
+ "id_types": {
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "RESIDENT_CARD": {
+ "label": "Resident Card"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "TD": {
+ "name": "Chad",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "CV": {
+ "name": "Cabo Verde",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "TG": {
+ "name": "Togo",
+ "id_types": {
+ "RESIDENT_CARD": {
+ "label": "Residence Permit"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "CZ": {
+ "name": "Czechia",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "TN": {
+ "name": "Tunisia",
+ "id_types": {
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "DRIVERS_LICENSE": {
+ "label": "Driver's License"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "LI": {
+ "name": "Liechtenstein",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "DE": {
+ "name": "Germany",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "DJ": {
+ "name": "Djibouti",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "LR": {
+ "name": "Liberia",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "TZ": {
+ "name": "United Republic of Tanzania",
+ "id_types": {
+ "HEALTH_INSURANCE_ID": {
+ "label": "Health Insurance ID"
+ },
+ "RESIDENT_CARD": {
+ "label": "Resident Id Card"
+ },
+ "VOTER_ID": {
+ "label": "Voter's ID"
+ },
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "DRIVERS_LICENSE": {
+ "label": "Driver's License"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "DK": {
+ "name": "Denmark",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "LS": {
+ "name": "Lesotho",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "LT": {
+ "name": "Lithuania",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "LU": {
+ "name": "Luxembourg",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "LV": {
+ "name": "Latvia",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "UA": {
+ "name": "Ukraine",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "LY": {
+ "name": "Libya",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "UG": {
+ "name": "Uganda",
+ "id_types": {
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "DRIVERS_LICENSE": {
+ "label": "Driver's License"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "MA": {
+ "name": "Morocco",
+ "id_types": {
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "DRIVERS_LICENSE": {
+ "label": "Driver's License"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "DZ": {
+ "name": "Algeria",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "MC": {
+ "name": "Monaco",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "MD": {
+ "name": "Republic of Moldova",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "ME": {
+ "name": "Montenegro",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "MG": {
+ "name": "Madagascar",
+ "id_types": {
+ "RESIDENT_CARD": {
+ "label": "Residence Permit"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "MK": {
+ "name": "Republic of North Macedonia",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "US": {
+ "name": "United States of America",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "ML": {
+ "name": "Mali",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "EE": {
+ "name": "Estonia",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "EG": {
+ "name": "Egypt",
+ "id_types": {
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "MT": {
+ "name": "Malta",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "MU": {
+ "name": "Mauritius",
+ "id_types": {
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "MW": {
+ "name": "Malawi",
+ "id_types": {
+ "DRIVERS_LICENSE": {
+ "label": "Driver's License"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "VA": {
+ "name": "Holy See",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "ER": {
+ "name": "Eritrea",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "MZ": {
+ "name": "Mozambique",
+ "id_types": {
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "RESIDENT_CARD": {
+ "label": "Residence permit"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "ES": {
+ "name": "Spain",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "ET": {
+ "name": "Ethiopia",
+ "id_types": {
+ "NON_CITIZEN_ID": {
+ "label": "Foreign Nationals Id Card"
+ },
+ "RESIDENT_CARD": {
+ "label": "Addis Ababa City Resident Card"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "NA": {
+ "name": "Namibia",
+ "id_types": {
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "DRIVERS_LICENSE": {
+ "label": "Driver's License"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "NE": {
+ "name": "Niger",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "NG": {
+ "name": "Nigeria",
+ "id_types": {
+ "RESIDENT_CARD": {
+ "label": "Residence permit"
+ },
+ "VOTER_ID": {
+ "label": "Voter's ID"
+ },
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "DRIVERS_LICENSE": {
+ "label": "Driver's License"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "NL": {
+ "name": "Netherlands",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "NO": {
+ "name": "Norway",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "FI": {
+ "name": "Finland",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "FR": {
+ "name": "France",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "GA": {
+ "name": "Gabon",
+ "id_types": {
+ "HEALTH_INSURANCE_ID": {
+ "label": "Health Insurance ID"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "GB": {
+ "name": "United Kingdom of Great Britain and Northern Ireland",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "GH": {
+ "name": "Ghana",
+ "id_types": {
+ "SSNIT": {
+ "label": "SSNIT"
+ },
+ "NATIONAL_ID": {
+ "label": "National ID"
+ },
+ "NATIONAL_ID_NON_CITIZEN": {
+ "label": "National ID Non Citizen"
+ },
+ "GHANA_CARD": {
+ "label": "Ghana Card"
+ },
+ "VOTER_ID": {
+ "label": "Voter's ID"
+ },
+ "DRIVERS_LICENSE": {
+ "label": "Driver's License"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "GM": {
+ "name": "Gambia",
+ "id_types": {
+ "RESIDENT_CARD": {
+ "label": "Residence Permit"
+ },
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "GN": {
+ "name": "Guinea",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "GQ": {
+ "name": "Equatorial Guinea",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "GR": {
+ "name": "Greece",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "GW": {
+ "name": "Guinea-Bissau",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "XK": {
+ "name": "Republic of Kosovo",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ },
+ "PL": {
+ "name": "Poland",
+ "id_types": {
+ "PASSPORT": {
+ "label": "Passport"
+ }
+ }
+ }
+ },
+ "enhanced_document_verification": {
+ "GH": {
+ "name": "Ghana",
+ "id_types": {
+ "SSNIT": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "SSNIT",
+ "test_data": "C000000000000",
+ "id_number_regex": "^[A-Z]{1}[A-Z0-9]{12,14}$/i"
+ },
+ "VOTER_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Voter ID",
+ "test_data": "0000000000",
+ "id_number_regex": "^[0-9]{10,12}$"
+ },
+ "DRIVERS_LICENSE": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Driver's License",
+ "test_data": "B0000000",
+ "id_number_regex": "^[A-Z0-9]{6,10}$/i"
+ },
+ "PASSPORT": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Passport",
+ "test_data": "G0000000",
+ "id_number_regex": "^[A-Z][0-9]{7,9}$"
+ }
+ }
+ },
+ "NG": {
+ "name": "Nigeria",
+ "id_types": {
+ "VOTER_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Voter ID",
+ "test_data": "0000000000000000000",
+ "id_number_regex": "^[a-zA-Z0-9 ]{9,20}$"
+ },
+ "DRIVERS_LICENSE": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id",
+ "first_name",
+ "last_name",
+ "dob",
+ "day",
+ "month",
+ "year"
+ ],
+ "label": "Driver's License",
+ "test_data": "ABC000000000",
+ "id_number_regex": "^(?=.*[0-9])(?=.*[A-Z])[A-Z0-9]{3}([ -]{1})?[A-Z0-9]{6,12}$"
+ }
+ }
+ },
+ "KE": {
+ "name": "Kenya",
+ "id_types": {
+ "NATIONAL_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID",
+ "test_data": "00000000",
+ "id_number_regex": "^[0-9]{1,9}$"
+ },
+ "ALIEN_CARD": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Alien Card",
+ "test_data": "000000",
+ "id_number_regex": "^[0-9]{6,9}$"
+ },
+ "PASSPORT": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Passport",
+ "test_data": "00000000",
+ "id_number_regex": "^[A-Z0-9]{7,9}$"
+ }
+ }
+ },
+ "ZA": {
+ "name": "South Africa",
+ "id_types": {
+ "NATIONAL_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID",
+ "test_data": "0000000000000",
+ "id_number_regex": "^[0-9]{13}$"
+ }
+ }
+ }
+ },
+ "ekyc_smartselfie": {
+ "GH": {
+ "name": "Ghana",
+ "id_types": {
+ "SSNIT": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "SSNIT",
+ "test_data": "C000000000000",
+ "id_number_regex": "^[A-Z]{1}[A-Z0-9]{12,14}$/i"
+ },
+ "VOTER_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Voter ID",
+ "test_data": "0000000000",
+ "id_number_regex": "^[0-9]{10,12}$"
+ },
+ "NEW_VOTER_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "New Voter ID",
+ "test_data": "0000000000",
+ "id_number_regex": "^[0-9]{10,12}$"
+ },
+ "NATIONAL_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID",
+ "test_data": "",
+ "id_number_regex": "^GHA-[A-Z0-9]{9}-[A-Z0-9]{1}$/i"
+ },
+ "DRIVERS_LICENSE": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Driver's License",
+ "test_data": "B0000000",
+ "id_number_regex": "^[A-Z0-9]{6,10}$/i"
+ },
+ "PASSPORT": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Passport",
+ "test_data": "G0000000",
+ "id_number_regex": "^[A-Z][0-9]{7,9}$"
+ }
+ }
+ },
+ "NG": {
+ "name": "Nigeria",
+ "id_types": {
+ "NIN": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "NIN_SLIP": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID (Slip)",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "V_NIN": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Virtual NIN",
+ "test_data": "0000000000000000",
+ "id_number_regex": "^[a-zA-Z0-9]{16}$"
+ },
+ "VOTER_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Voter ID",
+ "test_data": "0000000000000000000",
+ "id_number_regex": "^([A-Z0-9]{19}|[A-Z0-9]{9})$/i"
+ },
+ "BVN": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Bank Verification Number",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "NIN_V2": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID (NIN)",
+ "test_data": "00000000000",
+ "id_number_regex": "^[0-9]{11}$"
+ },
+ "DRIVERS_LICENSE": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id",
+ "first_name",
+ "last_name",
+ "dob",
+ "day",
+ "month",
+ "year"
+ ],
+ "label": "Driver's License",
+ "test_data": "ABC000000000",
+ "id_number_regex": "^(?=.*[0-9])(?=.*[A-Z])[A-Z0-9]{3}([ -]{1})?[A-Z0-9]{6,12}$"
+ }
+ }
+ },
+ "KE": {
+ "name": "Kenya",
+ "id_types": {
+ "KRA_PIN": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "citizenship",
+ "user_id",
+ "job_id"
+ ],
+ "label": "KRA PIN",
+ "test_data": "00000000",
+ "id_number_regex": "^[0-9]{1,9}$"
+ },
+ "NATIONAL_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID",
+ "test_data": "A00000000",
+ "id_number_regex": "^[0-9]{1,9}$"
+ },
+ "ALIEN_CARD": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Alien Card",
+ "test_data": "000000",
+ "id_number_regex": "^[0-9]{6,9}$"
+ },
+ "DRIVERS_LICENSE": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "citizenship",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Driver's License",
+ "test_data": "00000000",
+ "id_number_regex": "^[0-9]{1,9}$"
+ },
+ "PASSPORT": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "Passport",
+ "test_data": "00000000",
+ "id_number_regex": "^[A-Z0-9]{7,9}$"
+ },
+ "NATIONAL_ID_NO_PHOTO": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID No Photo",
+ "test_data": "00000000",
+ "id_number_regex": "^[0-9]{1,9}$"
+ }
+ }
+ },
+ "ZA": {
+ "name": "South Africa",
+ "id_types": {
+ "NATIONAL_ID": {
+ "required_fields": [
+ "country",
+ "id_type",
+ "id_number",
+ "user_id",
+ "job_id"
+ ],
+ "label": "National ID",
+ "test_data": "0000000000000",
+ "id_number_regex": "^[0-9]{13}$"
+ }
+ }
+ }
}
+ }
}
diff --git a/cypress/pages/enhanced_document_verification.html b/cypress/pages/enhanced_document_verification.html
new file mode 100644
index 00000000..12e33348
--- /dev/null
+++ b/cypress/pages/enhanced_document_verification.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cypress/support/commands.js b/cypress/support/commands.js
index 9f14d5ed..f2960512 100644
--- a/cypress/support/commands.js
+++ b/cypress/support/commands.js
@@ -147,11 +147,33 @@ Cypress.Commands.add('selectNINIDType', () => {
.click();
});
+Cypress.Commands.add('selectVOTERIDType', () => {
+ cy
+ .loadIDOptions();
+
+ cy.log('selectingVoterIdType');
+
+ cy
+ .getIFrameBody()
+ .find('#country')
+ .select('NG')
+
+ cy
+ .getIFrameBody()
+ .find('#id_type')
+ .select('VOTER_ID')
+
+ cy
+ .getIFrameBody()
+ .find('#submitConfig')
+ .click();
+});
+
Cypress.Commands.add('selectPASSPORTIDType', () => {
cy
.loadIDOptions();
- cy.log('selectingNINIDType');
+ cy.log('selectingPASSPORTIDType');
cy
.getIFrameBody()
diff --git a/cypress/tests/document-verification.cy.js b/cypress/tests/document-verification.cy.js
index ea1e95e7..5049cbdd 100644
--- a/cypress/tests/document-verification.cy.js
+++ b/cypress/tests/document-verification.cy.js
@@ -20,8 +20,20 @@ describe('document verification', () => {
cy.visit('/document-verification');
+ cy
+ .getIFrameBody()
+ .find('#country')
+ .select('NG')
+
+ cy
+ .getIFrameBody()
+ .find('#id_type')
+ .select('NATIONAL_ID')
- cy.selectNINIDType();
+ cy
+ .getIFrameBody()
+ .find('#submitConfig')
+ .click();
cy.navigateThroughCameraScreens();
});
@@ -31,7 +43,7 @@ describe('document verification', () => {
.getIFrameBody()
.find('smart-camera-web')
.invoke('attr', 'document-type')
- .should('eq', 'NIN')
+ .should('eq', 'NATIONAL_ID')
cy
.getIFrameBody()
diff --git a/cypress/tests/enhanced-document-verification.cy.js b/cypress/tests/enhanced-document-verification.cy.js
new file mode 100644
index 00000000..b4218662
--- /dev/null
+++ b/cypress/tests/enhanced-document-verification.cy.js
@@ -0,0 +1,98 @@
+describe('enhanced document verification', () => {
+ beforeEach(() => {
+ cy
+ .intercept({
+ method: 'POST',
+ url: '*upload*'
+ }, {
+ upload_url: "https://smile-uploads-development01.s3.us-west-2.amazonaws.com/videos/212/212-0000060103-0gdzke3mdtlco5k0sdfh6vifzcrd3n/ekyc_smartselfie.zip"
+ }).as('getUploadURL');
+
+ cy
+ .intercept({
+ method: 'PUT',
+ url: 'https://smile-uploads-development01.s3.us-west-2.amazonaws.com/videos/212/212-0000060103-0gdzke3mdtlco5k0sdfh6vifzcrd3n/ekyc_smartselfie.zip'
+ }, {
+ statusCode: 200
+ }).as('successfulUpload');
+
+ cy.loadIDOptions();
+
+ cy.visit('/enhanced_document_verification');
+
+ cy.selectVOTERIDType();
+
+ cy.navigateThroughCameraScreens();
+ });
+
+ it('should capture selfie and id image', () => {
+ cy
+ .getIFrameBody()
+ .find('smart-camera-web')
+ .invoke('attr', 'document-type')
+ .should('eq', 'VOTER_ID')
+
+ cy
+ .getIFrameBody()
+ .find('smart-camera-web')
+ .shadow()
+ .find('#id-entry-screen')
+ .should('be.visible');
+
+ cy
+ .getIFrameBody()
+ .find('smart-camera-web')
+ .shadow()
+ .find('#id-entry-screen #take-photo')
+ .click();
+
+ cy
+ .getIFrameBody()
+ .find('smart-camera-web')
+ .shadow()
+ .find('#id-camera-screen')
+ .should('be.visible');
+
+ cy
+ .getIFrameBody()
+ .find('smart-camera-web')
+ .shadow()
+ .find('#capture-id-image')
+ .click();
+
+ cy
+ .wait(2000);
+
+ cy
+ .getIFrameBody()
+ .find('smart-camera-web')
+ .shadow()
+ .find('#id-camera-screen')
+ .should('not.be.visible');
+
+ cy
+ .getIFrameBody()
+ .find('smart-camera-web')
+ .shadow()
+ .find('#select-id-image')
+ .click();
+
+ cy
+ .getIFrameBody()
+ .find('smart-camera-web')
+ .shadow()
+ .find('#id-review-screen')
+ .should('not.be.visible');
+
+ cy
+ .wait('@getUploadURL');
+
+ cy
+ .wait('@successfulUpload');
+
+ cy
+ .getIFrameBody()
+ .find('#complete-screen')
+ .should('be.visible');
+ });
+});
diff --git a/cypress/tests/id-selection.cy.js b/cypress/tests/id-selection.cy.js
index 5f7dfe34..174e26c1 100644
--- a/cypress/tests/id-selection.cy.js
+++ b/cypress/tests/id-selection.cy.js
@@ -133,7 +133,7 @@ describe('No ID Selection', () => {
}).as('successfulUpload');
cy
- .selectNINIDType()
+ .selectPASSPORTIDType()
cy
.navigateThroughCameraScreens();
@@ -142,7 +142,7 @@ describe('No ID Selection', () => {
.getIFrameBody()
.find('smart-camera-web')
.invoke('attr', 'document-type')
- .should('eq', 'NIN')
+ .should('eq', 'PASSPORT')
cy
.getIFrameBody()
diff --git a/cypress/tests/kra-verification.cy.js b/cypress/tests/kra-verification.cy.js
index ae4130c5..1b0ce110 100644
--- a/cypress/tests/kra-verification.cy.js
+++ b/cypress/tests/kra-verification.cy.js
@@ -9,6 +9,9 @@ describe('KE Drivers License verification basic kyc', () => {
body: { success: true }
}).as('submitIdVerification');
+ cy
+ .loadIDOptions();
+
cy.visit('/kra-verification-basic-kyc');
cy
diff --git a/src/enhanced-document-verification.html b/src/enhanced-document-verification.html
new file mode 100644
index 00000000..d638c3f7
--- /dev/null
+++ b/src/enhanced-document-verification.html
@@ -0,0 +1,260 @@
+
+
+
+
+
+
+ Document Verification — Smile Identity
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Setting up
+
+
+
+ Just a few more seconds
+
+ We are setting up your verification flow
+
+
+
+ Powered by SmileID
+
+
+
+
+
+
+
+
+
+ Select ID Type
+
+
+
+
+
+ Powered by SmileID
+
+
+
+
+
+
+
+
+
+
+
+
+ Uploading
+
+
+
+ Just a few more seconds
+
+ We are processing your request
+
+
+
+ Powered by SmileID
+
+
+
+
+
+
+
+
+
+
+
+
+ Something went wrong
+
+
+
+ We could not upload your information
+
+
+
+ Please check that you have a stable internet connection. Then try
+ again!
+
+
+
+
+
+ Powered by SmileID
+
+
+
+
+
+
+
+
+
+
+ Submission Complete
+
+
+
+ That's all you need to verify your identity
+
+
+
+ Powered by SmileID
+
+
+
+
+
+
+
+
+
diff --git a/src/js/enhanced-document-verification.js b/src/js/enhanced-document-verification.js
new file mode 100644
index 00000000..0e212db3
--- /dev/null
+++ b/src/js/enhanced-document-verification.js
@@ -0,0 +1,412 @@
+var enhancedDocumentVerification = function enhancedDocumentVerification() {
+ 'use strict';
+
+ // NOTE: In order to support prior integrations, we have `live` and
+ // `production` pointing to the same URL
+ const endpoints = {
+ 'sandbox': 'https://testapi.smileidentity.com/v1',
+ 'live': 'https://api.smileidentity.com/v1',
+ 'production': 'https://api.smileidentity.com/v1'
+ }
+
+ const referenceWindow = window.parent;
+ referenceWindow.postMessage('SmileIdentity::ChildPageReady', '*');
+
+ var config;
+ var activeScreen;
+ var id_info, images, partner_params;
+ var productConstraints;
+
+ var LoadingScreen = document.querySelector('#loading-screen');
+ var SelectIDType = document.querySelector('#select-id-type');
+ var SmartCameraWeb = document.querySelector('smart-camera-web');
+ var UploadProgressScreen = document.querySelector('#upload-progress-screen');
+ var UploadFailureScreen = document.querySelector('#upload-failure-screen');
+ var CompleteScreen = document.querySelector('#complete-screen');
+
+ var CloseIframeButtons = document.querySelectorAll('.close-iframe');
+ var RetryUploadButton = document.querySelector('#retry-upload');
+
+ var fileToUpload, uploadURL;
+
+ async function getProductConstraints() {
+ try {
+ const response = await fetch(`${endpoints[config.environment]}/services`);
+ const json = await response.json();
+
+ return json.hosted_web['enhanced_document_verification'];
+ } catch (e) {
+ throw new Error("Failed to get supported ID types", { cause: e });
+ }
+ }
+
+ window.addEventListener('message', async event => {
+ if (event.data && event.data.includes('SmileIdentity::Configuration')) {
+ config = JSON.parse(event.data);
+ activeScreen = LoadingScreen;
+
+ try {
+ productConstraints = await getProductConstraints();
+ initializeSession(productConstraints);
+ getPartnerParams();
+ } catch (e) {
+ throw e;
+ }
+ }
+ }, false);
+
+ function initializeSession(constraints) {
+ const supportedCountries = Object.keys(constraints)
+ .map(countryCode => ({
+ code: countryCode,
+ name: constraints[countryCode].name
+ })).sort((a, b) => {
+ if (a.name < b.name) {
+ return -1;
+ } else if (a.name > b.name) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }).map(item => item.code);
+
+ let validCountries = [];
+
+ if (config.id_selection) {
+ const selectedCountryList = Object.keys(config.id_selection);
+ validCountries = supportedCountries.filter((value) =>
+ selectedCountryList.includes(value)
+ );
+
+ if (validCountries.length === 1) {
+ const selectedCountry = validCountries[0];
+ id_info = {
+ country: validCountries[0]
+ };
+
+ const idTypes = config.id_selection[selectedCountry];
+ if (idTypes.length === 1 || typeof idTypes === 'string') {
+ id_info.id_type = Array.isArray(idTypes) ? idTypes[0] : idTypes;
+
+ // ACTION: set initial screen
+ SmartCameraWeb.setAttribute('document-type', id_info.id_type)
+ // ACTION: set document capture mode
+ if (config.document_capture_modes) {
+ SmartCameraWeb.setAttribute('document-capture-modes', config.document_capture_modes.join(','))
+ }
+ // Hide the back button that takes the user back to the id selection screen
+ // from startcamera web
+ SmartCameraWeb.setAttribute('hide-back-to-host', true);
+ setActiveScreen(SmartCameraWeb);
+ }
+ }
+ } else {
+ validCountries = supportedCountries;
+ }
+
+ if (!id_info || !id_info.id_type) {
+ const selectCountry = SelectIDType.querySelector('#country');
+ const selectIDType = SelectIDType.querySelector('#id_type');
+ const hostedWebConfigForm = document.querySelector('form[name="hosted-web-config"]');
+
+ // ACTION: Enable Country Selection
+ selectCountry.disabled = false;
+
+ // ACTION: Enable select screen
+ setActiveScreen(SelectIDType);
+
+ function loadIdTypes(countryCode) {
+ if (countryCode) {
+ const constrainedIDTypes = Object.keys(productConstraints[countryCode].id_types);
+ const validIDTypes = config.id_selection ? config.id_selection[countryCode] : constrainedIDTypes;
+ const selectedIDTypes = validIDTypes.filter(value => constrainedIDTypes.includes(value));
+
+ // ACTION: Reset ID Type