├── NOTES.md ├── .gitmodules ├── visas ├── ANTA.visas.json ├── ANGU.visas.json ├── ARUB.visas.json ├── BERM.visas.json ├── GIBR.visas.json ├── GRNL.visas.json ├── GUER.visas.json ├── JERS.visas.json ├── MAYO.visas.json ├── TOKE.visas.json ├── BOUV.visas.json ├── CAYM.visas.json ├── COOK.visas.json ├── CURA.visas.json ├── FARO.visas.json ├── FGUI.visas.json ├── GRGS.visas.json ├── GUAD.visas.json ├── ISLE.visas.json ├── MAAS.visas.json ├── MART.visas.json ├── MSRT.visas.json ├── NCLD.visas.json ├── NFKI.visas.json ├── REUN.visas.json ├── SMRT.visas.json ├── CHRI.visas.json ├── FALK.visas.json ├── PIIS.visas.json ├── PYFR.visas.json ├── WLSF.visas.json ├── BART.visas.json ├── BRIV.visas.json ├── COCO.visas.json ├── SVJM.visas.json ├── TCAI.visas.json ├── SPNM.visas.json ├── BIOT.visas.json ├── HIMI.visas.json ├── FSAL.visas.json ├── HATC.visas.json └── SUDS.visas.json ├── .gitignore ├── tools.py ├── libs └── tools.py └── LICENSE.md /NOTES.md: -------------------------------------------------------------------------------- 1 | csvc - Countries standardised visas code -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "countries"] 2 | path = countries 3 | url = https://github.com/StrudelInc/visas2-countries 4 | -------------------------------------------------------------------------------- /visas/ANTA.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "AQ", 3 | "cca3": "ATA", 4 | "ccn3": "010", 5 | "csvcid": "ANTA", 6 | "jurisdiction": "state", 7 | "name": "Antarctica", 8 | "requirements": { 9 | "ALAX": { 10 | "additional_requirements": { 11 | "passport_blank_pages": 2, 12 | "passport_expiry_months": 3 13 | }, 14 | "conflicts": [], 15 | "note": "", 16 | "requirement": "required", 17 | "stay_length": {} 18 | }, 19 | "NBES": { 20 | "additional_requirements": { 21 | "passport_blank_pages": 2, 22 | "passport_expiry_months": 3 23 | }, 24 | "conflicts": [], 25 | "note": "", 26 | "requirement": "required", 27 | "stay_length": {} 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /visas/ANGU.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "AI", 3 | "cca3": "AIA", 4 | "ccn3": "660", 5 | "csvcid": "ANGU", 6 | "jurisdiction": "dependant", 7 | "name": "Anguilla", 8 | "parent": "UKBI", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/ARUB.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "AW", 3 | "cca3": "ABW", 4 | "ccn3": "533", 5 | "csvcid": "ARUB", 6 | "jurisdiction": "dependant", 7 | "name": "Aruba", 8 | "parent": "NETH", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/BERM.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "BM", 3 | "cca3": "BMU", 4 | "ccn3": "060", 5 | "csvcid": "BERM", 6 | "jurisdiction": "dependant", 7 | "name": "Bermuda", 8 | "parent": "UKBI", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/GIBR.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "GI", 3 | "cca3": "GIB", 4 | "ccn3": "292", 5 | "csvcid": "GIBR", 6 | "jurisdiction": "dependant", 7 | "name": "Gibraltar", 8 | "parent": "UKBI", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/GRNL.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "GL", 3 | "cca3": "GRL", 4 | "ccn3": "304", 5 | "csvcid": "GRNL", 6 | "jurisdiction": "dependant", 7 | "name": "Greenland", 8 | "parent": "DENM", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/GUER.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "GG", 3 | "cca3": "GGY", 4 | "ccn3": "831", 5 | "csvcid": "GUER", 6 | "jurisdiction": "dependant", 7 | "name": "Guernsey", 8 | "parent": "UKBI", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/JERS.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "JE", 3 | "cca3": "JEY", 4 | "ccn3": "832", 5 | "csvcid": "JERS", 6 | "jurisdiction": "dependant", 7 | "name": "Jersey", 8 | "parent": "UKBI", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/MAYO.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "YT", 3 | "cca3": "MYT", 4 | "ccn3": "175", 5 | "csvcid": "MAYO", 6 | "jurisdiction": "dependant", 7 | "name": "Mayotte", 8 | "parent": "FRAN", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/TOKE.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "TK", 3 | "cca3": "TKL", 4 | "ccn3": "772", 5 | "csvcid": "TOKE", 6 | "jurisdiction": "dependant", 7 | "name": "Tokelau", 8 | "parent": "NZLD", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/BOUV.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "BV", 3 | "cca3": "BVT", 4 | "ccn3": "074", 5 | "csvcid": "BOUV", 6 | "jurisdiction": "dependant", 7 | "name": "Bouvet Island", 8 | "parent": "NORW", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/CAYM.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "KY", 3 | "cca3": "CYM", 4 | "ccn3": "136", 5 | "csvcid": "CAYM", 6 | "jurisdiction": "dependant", 7 | "name": "Cayman Islands", 8 | "parent": "UKBI", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/COOK.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "CK", 3 | "cca3": "COK", 4 | "ccn3": "184", 5 | "csvcid": "COOK", 6 | "jurisdiction": "dependant", 7 | "name": "Cook Islands", 8 | "parent": "NZLD", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/CURA.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "CW", 3 | "cca3": "CUW", 4 | "ccn3": "531", 5 | "csvcid": "CURA", 6 | "jurisdiction": "dependant", 7 | "name": "Cura\u00e7ao", 8 | "parent": "NETH", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/FARO.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "FO", 3 | "cca3": "FRO", 4 | "ccn3": "234", 5 | "csvcid": "FARO", 6 | "jurisdiction": "dependant", 7 | "name": "Faroe Islands", 8 | "parent": "DENM", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/FGUI.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "GF", 3 | "cca3": "GUF", 4 | "ccn3": "254", 5 | "csvcid": "FGUI", 6 | "jurisdiction": "dependant", 7 | "name": "French Guiana", 8 | "parent": "FRAN", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/GRGS.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "GS", 3 | "cca3": "SGS", 4 | "ccn3": "239", 5 | "csvcid": "GRGS", 6 | "jurisdiction": "dependant", 7 | "name": "South Georgia", 8 | "parent": "UKBI", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/GUAD.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "GP", 3 | "cca3": "GLP", 4 | "ccn3": "312", 5 | "csvcid": "GUAD", 6 | "jurisdiction": "dependant", 7 | "name": "Guadeloupe", 8 | "parent": "FRAN", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/ISLE.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "IM", 3 | "cca3": "IMN", 4 | "ccn3": "833", 5 | "csvcid": "ISLE", 6 | "jurisdiction": "dependant", 7 | "name": "Isle of Man", 8 | "parent": "UKBI", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/MAAS.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "SX", 3 | "cca3": "SXM", 4 | "ccn3": "534", 5 | "csvcid": "MAAS", 6 | "jurisdiction": "dependant", 7 | "name": "Sint Maarten", 8 | "parent": "NETH", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/MART.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "MQ", 3 | "cca3": "MTQ", 4 | "ccn3": "474", 5 | "csvcid": "MART", 6 | "jurisdiction": "dependant", 7 | "name": "Martinique", 8 | "parent": "FRAN", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/MSRT.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "MS", 3 | "cca3": "MSR", 4 | "ccn3": "500", 5 | "csvcid": "MSRT", 6 | "jurisdiction": "dependant", 7 | "name": "Montserrat", 8 | "parent": "UKBI", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/NCLD.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "NC", 3 | "cca3": "NCL", 4 | "ccn3": "540", 5 | "csvcid": "NCLD", 6 | "jurisdiction": "dependant", 7 | "name": "New Caledonia", 8 | "parent": "FRAN", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/NFKI.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "NF", 3 | "cca3": "NFK", 4 | "ccn3": "574", 5 | "csvcid": "NFKI", 6 | "jurisdiction": "dependant", 7 | "name": "Norfolk Island", 8 | "parent": "AUST", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/REUN.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "RE", 3 | "cca3": "REU", 4 | "ccn3": "638", 5 | "csvcid": "REUN", 6 | "jurisdiction": "dependant", 7 | "name": "R\u00e9union", 8 | "parent": "FRAN", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/SMRT.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "MF", 3 | "cca3": "MAF", 4 | "ccn3": "663", 5 | "csvcid": "SMRT", 6 | "jurisdiction": "dependant", 7 | "name": "Saint Martin", 8 | "parent": "FRAN", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/CHRI.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "CX", 3 | "cca3": "CXR", 4 | "ccn3": "162", 5 | "csvcid": "CHRI", 6 | "jurisdiction": "dependant", 7 | "name": "Christmas Island", 8 | "parent": "AUST", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/FALK.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "FK", 3 | "cca3": "FLK", 4 | "ccn3": "238", 5 | "csvcid": "FALK", 6 | "jurisdiction": "dependant", 7 | "name": "Falkland Islands", 8 | "parent": "UKBI", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/PIIS.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "PN", 3 | "cca3": "PCN", 4 | "ccn3": "612", 5 | "csvcid": "PIIS", 6 | "jurisdiction": "dependant", 7 | "name": "Pitcairn Islands", 8 | "parent": "UKBI", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/PYFR.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "PF", 3 | "cca3": "PYF", 4 | "ccn3": "258", 5 | "csvcid": "PYFR", 6 | "jurisdiction": "dependant", 7 | "name": "French Polynesia", 8 | "parent": "FRAN", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/WLSF.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "WF", 3 | "cca3": "WLF", 4 | "ccn3": "876", 5 | "csvcid": "WLSF", 6 | "jurisdiction": "dependant", 7 | "name": "Wallis and Futuna", 8 | "parent": "FRAN", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/BART.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "BL", 3 | "cca3": "BLM", 4 | "ccn3": "652", 5 | "csvcid": "BART", 6 | "jurisdiction": "dependant", 7 | "name": "Saint Barth\u00e9lemy", 8 | "parent": "FRAN", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/BRIV.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "VG", 3 | "cca3": "VGB", 4 | "ccn3": "092", 5 | "csvcid": "BRIV", 6 | "jurisdiction": "dependant", 7 | "name": "British Virgin Islands", 8 | "parent": "UKBI", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/COCO.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "CC", 3 | "cca3": "CCK", 4 | "ccn3": "166", 5 | "csvcid": "COCO", 6 | "jurisdiction": "dependant", 7 | "name": "Cocos (Keeling) Islands", 8 | "parent": "AUST", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/SVJM.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "SJ", 3 | "cca3": "SJM", 4 | "ccn3": "744", 5 | "csvcid": "SVJM", 6 | "jurisdiction": "dependant", 7 | "name": "Svalbard and Jan Mayen", 8 | "parent": "NORW", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/TCAI.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "TC", 3 | "cca3": "TCA", 4 | "ccn3": "796", 5 | "csvcid": "TCAI", 6 | "jurisdiction": "dependant", 7 | "name": "Turks and Caicos Islands", 8 | "parent": "UKBI", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/SPNM.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "PM", 3 | "cca3": "SPM", 4 | "ccn3": "666", 5 | "csvcid": "SPNM", 6 | "jurisdiction": "dependant", 7 | "name": "Saint Pierre and Miquelon", 8 | "parent": "FRAN", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/BIOT.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "IO", 3 | "cca3": "IOT", 4 | "ccn3": "086", 5 | "csvcid": "BIOT", 6 | "jurisdiction": "dependant", 7 | "name": "British Indian Ocean Territory", 8 | "parent": "UKBI", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/HIMI.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "HM", 3 | "cca3": "HMD", 4 | "ccn3": "334", 5 | "csvcid": "HIMI", 6 | "jurisdiction": "dependant", 7 | "name": "Heard Island and McDonald Islands", 8 | "parent": "AUST", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/FSAL.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "TF", 3 | "cca3": "ATF", 4 | "ccn3": "260", 5 | "csvcid": "FSAL", 6 | "jurisdiction": "dependant", 7 | "name": "French Southern and Antarctic Lands", 8 | "parent": "FRAN", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /visas/HATC.visas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cca2": "SH", 3 | "cca3": "SHN", 4 | "ccn3": "654", 5 | "csvcid": "HATC", 6 | "jurisdiction": "dependant", 7 | "name": "Saint Helena, Ascension and Tristan da Cunha", 8 | "parent": "UKBI", 9 | "requirements": { 10 | "ALAX": { 11 | "additional_requirements": { 12 | "passport_blank_pages": 2, 13 | "passport_expiry_months": 3 14 | }, 15 | "conflicts": [], 16 | "note": "", 17 | "requirement": "required", 18 | "stay_length": {} 19 | }, 20 | "NBES": { 21 | "additional_requirements": { 22 | "passport_blank_pages": 2, 23 | "passport_expiry_months": 3 24 | }, 25 | "conflicts": [], 26 | "note": "", 27 | "requirement": "required", 28 | "stay_length": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | .venv 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # poetry 98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 99 | # This is especially recommended for binary packages to ensure reproducibility, and is more 100 | # commonly ignored for libraries. 101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 102 | #poetry.lock 103 | 104 | # pdm 105 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 106 | #pdm.lock 107 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 108 | # in version control. 109 | # https://pdm.fming.dev/#use-with-ide 110 | .pdm.toml 111 | 112 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 113 | __pypackages__/ 114 | 115 | # Celery stuff 116 | celerybeat-schedule 117 | celerybeat.pid 118 | 119 | # SageMath parsed files 120 | *.sage.py 121 | 122 | # Environments 123 | .env 124 | .venv 125 | env/ 126 | venv/ 127 | ENV/ 128 | env.bak/ 129 | venv.bak/ 130 | 131 | # Spyder project settings 132 | .spyderproject 133 | .spyproject 134 | 135 | # Rope project settings 136 | .ropeproject 137 | 138 | # mkdocs documentation 139 | /site 140 | 141 | # mypy 142 | .mypy_cache/ 143 | .dmypy.json 144 | dmypy.json 145 | 146 | # Pyre type checker 147 | .pyre/ 148 | 149 | # pytype static type analyzer 150 | .pytype/ 151 | 152 | # Cython debug symbols 153 | cython_debug/ 154 | 155 | # PyCharm 156 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 157 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 158 | # and can be added to the global gitignore or merged into this file. For a more nuclear 159 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 160 | #.idea/ -------------------------------------------------------------------------------- /tools.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | import argparse 4 | from libs.tools import tools 5 | 6 | """tool 7 | Usage: 8 | tool.py build [ --geo | --info | --visa | --validate ] 9 | tool.py visa add [--default-policy=] [--default-requirement=] [--force] 10 | tool.py visa set (--cross | --requirement | --policy) ... [--note=] [--time=