{
  "$schema": "https://govschema.org/spec/v0.3/govschema.schema.json",
  "govschemaVersion": "0.3.0",
  "id": "ph/comelec/overseas-voter-registration",
  "version": "1.0.0",
  "title": "Philippines COMELEC Overseas Voter Registration (OVF No. 1, via iRehistro Online Application-Form Generator)",
  "description": "The Commission on Elections' (COMELEC) Overseas Voter Registration process for a Filipino citizen living or working abroad who wants to be added to the National Registry of Overseas Voters (NROV) and vote by mail or at a Philippine post's polling place, under the Overseas Voting Act of 2013 (Republic Act No. 10590, amending RA 9189) and COMELEC Resolution No. 11171. This document models the 'Registration' application-type pathway of OVF No. 1 (Revised 2025), the form's Parts I and II (Personal Information, Residence Abroad, Local Voter Registration status, Contact Details, and Authorized Representative in the Philippines), as collected field-by-field by COMELEC's own public, unauthenticated web tool, iRehistro (irehistro.comelec.gov.ph). iRehistro is explicitly NOT an online registration system: it only fills out and generates a printable, QR-coded OVF1 PDF that the applicant must still personally submit (with supporting documents and biometrics capture) at the nearest Overseas Voting registration site (a Philippine embassy/consulate post, or a COMELEC-designated registration center), per Sec. 6 of RA 10590 — a shape this registry already models under other jurisdictions' *-preapplication schemas (e.g. us/fl/miami-dade/clerk/marriage-license-preapplication) and under other overseas voter-registration schemas (e.g. kr/nec/overseas-voter-registration, de/bundeswahlleiterin/voter-registration-abroad, nl/denhaag/voter-registration-abroad). Out of scope for this v1.0.0: OVF1's other seven application types on the same form and iRehistro screen flow (Certification, Reactivation, Reinstatement, Change of Address, Recapture of Biometrics, Transfer between Posts/Countries, and Correction of Entries/Change of Name — iRehistro's own DOM only ever collects the fields needed to generate a Registration-type OVF1); Part III (the oath and applicant's/authenticating officer's signatures, executed in person, not a data field); Part IV (VRMO/office use) and Part V (Resident Election Registration Board action, office use); in-country (domestic) voter registration, which uses a different, in-person biometric process not modeled here; and the underlying identity-verification, payment, or scheduling steps of the physical post visit. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Republic of the Philippines or the Commission on Elections.",
  "status": "draft",
  "jurisdiction": {
    "country": "PH",
    "level": "national"
  },
  "authority": {
    "name": "Commission on Elections",
    "abbreviation": "COMELEC",
    "url": "https://comelec.gov.ph"
  },
  "process": {
    "type": "registration",
    "language": "en-PH"
  },
  "source": {
    "url": "https://irehistro.comelec.gov.ph/",
    "retrievedAt": "2026-07-06",
    "documentRef": "OVF No. 1 (Revised 2025), 'Application for Registration/Certification/Reactivation/Reinstatement/Change of Address/Recapture of Biometrics/Transfer/Correction of Entry as an Overseas Voter', Commission on Elections (COMELEC), generated via the iRehistro for Overseas Voters online tool (version 5.2.2.1)"
  },
  "verification": {
    "method": "manual-source-review-v1",
    "lastVerifiedAt": "2026-07-06",
    "verifiedBy": "GovSchema Engineering (Standards Engineer)",
    "nextReviewBy": "2027-01-06",
    "notes": "This GovSchema Standard Research cycle (GOV-1457) scouted Philippine voter registration first among several remaining voter-registration gaps flagged by prior cycles (AE has no general process, BR's TSE register is suspended until 2026-11-03, MX INE requires in-person biometrics). COMELEC's own iRehistro tool (irehistro.comelec.gov.ph) is directly reachable (HTTP 200, no login/CAPTCHA/WAF gate on the wizard page itself, unlike comelec.gov.ph's root domain which returns a Cloudflare challenge) and its full, unauthenticated HTML DOM was fetched and read field-by-field: every input/select `name` attribute, `<label>` text, `maxlength`, `<option>` list, help-block text, and the page's own inline client-side `validateForm(...)` call (which encodes the authoritative required/optional field list) were extracted directly from the served HTML, not inferred. The official gazetted OVF No. 1 (Revised 2025) PDF form was independently fetched directly from COMELEC's own site (comelec.gov.ph/php-tpls-attachments/.../AnnexA_OVF1_v5_A4.pdf, HTTP 200, genuine text layer, extracted with pdfjs-dist 4.10.38) and cross-checked against the wizard's fields, confirming iRehistro's DOM models the form's Parts I and II (Registration application type only) verbatim. Documentary requirements were independently corroborated from the Philippine Embassy in Berlin's own official 'Overseas Voting' registration-requirements page (philippine-embassy.de, a Philippine foreign-service-post government page), which cites COMELEC Resolution No. 11171. See VERIFICATION.md for every field's provenance and every interpretive judgment call disclosed for an independent reviewer."
  },
  "maturity": {
    "level": "structural-reference",
    "criteria": {
      "structuralReference": true,
      "verifiedSchema": false,
      "agentReadySchema": false,
      "executionTestedSchema": false
    },
    "method": "maturity-self-assessment-v1",
    "assertedBy": "GovSchema Engineering (Standards Engineer)",
    "assertedAt": "2026-07-06"
  },
  "license": "CC-BY-4.0",
  "fields": [
    {
      "name": "firstName",
      "label": "First Name",
      "type": "string",
      "required": true,
      "description": "The applicant's first name, as it appears on their Philippine passport or other government-issued ID. Entered in capital letters on the source form/tool.",
      "sourceRef": "iRehistro, Personal Information — input name='ovfirname'; OVF1 form p.1, Part I — 'FIRST NAME:'",
      "validation": {
        "maxLength": 50
      }
    },
    {
      "name": "middleName",
      "label": "Middle Name",
      "type": "string",
      "required": true,
      "description": "The applicant's middle name. iRehistro's own help text instructs applicants with no middle name to enter an underscore '_' rather than leave the field blank.",
      "sourceRef": "iRehistro, Personal Information — input name='ovmidname' (help text: 'If NO Middle Name, please indicate underscore \"_\"'); OVF1 form p.1, Part I — 'MIDDLE NAME:'",
      "validation": {
        "maxLength": 40
      }
    },
    {
      "name": "lastName",
      "label": "Last Name",
      "type": "string",
      "required": true,
      "description": "The applicant's last name/surname.",
      "sourceRef": "iRehistro, Personal Information — input name='ovlasname'; OVF1 form p.1, Part I — 'LAST NAME:'",
      "validation": {
        "maxLength": 40
      }
    },
    {
      "name": "suffix",
      "label": "Suffix",
      "type": "enum",
      "required": false,
      "description": "Optional name suffix (e.g. generational suffix or ordinal), if any.",
      "sourceRef": "iRehistro, Personal Information — select name='ovnameext'; OVF1 form p.1, Part I — 'SUFFIX:'",
      "validation": {
        "enum": [
          "JR.",
          "SR.",
          "I",
          "II",
          "III",
          "IV",
          "V",
          "VI",
          "VII",
          "VIII",
          "IX",
          "X"
        ]
      }
    },
    {
      "name": "dateOfBirth",
      "label": "Date of Birth",
      "type": "date",
      "required": true,
      "description": "The applicant's date of birth. The live tool displays/validates this as mm/dd/yyyy and, per its own client-side rule, currently rejects a birth date that would make the applicant under 18 by the next scheduled election day (hardcoded in the tool as of this review to 05/08/2010, i.e. this cutoff moves with each election cycle and is not reproduced as a static validation.maximum here — see VERIFICATION.md). This field's own value uses GovSchema's standard YYYY-MM-DD representation.",
      "sourceRef": "iRehistro, Personal Information — input name='ovdob' (format mm/dd/yyyy); OVF1 form p.1, Part I — 'DATE OF BIRTH:'"
    },
    {
      "name": "sex",
      "label": "Sex",
      "type": "enum",
      "required": true,
      "description": "The applicant's sex as recorded on the form.",
      "sourceRef": "iRehistro, Personal Information — select name='gender'; OVF1 form p.1, Part I — 'SEX:'",
      "validation": {
        "enum": [
          "MALE",
          "FEMALE"
        ]
      }
    },
    {
      "name": "civilStatus",
      "label": "Civil Status",
      "type": "enum",
      "required": true,
      "description": "The applicant's civil status.",
      "sourceRef": "iRehistro, Personal Information — select name='civilstatus'; OVF1 form p.1, Part I — 'CIVIL STATUS:'",
      "validation": {
        "enum": [
          "SINGLE",
          "MARRIED",
          "WIDOW / WIDOWER"
        ]
      }
    },
    {
      "name": "statusAbroad",
      "label": "Status Abroad",
      "type": "enum",
      "required": true,
      "description": "The applicant's category of residence/presence abroad, which the form uses to determine which additional supporting document (e.g. a Seafarer's proof or Dual Citizenship certificate) is required — see documents[].",
      "sourceRef": "iRehistro, Personal Information — select name='statusabroad'; OVF1 form p.1, Part I — 'STATUS ABROAD:'",
      "validation": {
        "enum": [
          "DIPLOMAT / ATTACHÉ",
          "DUAL CITIZEN",
          "IMMIGRANT",
          "OVERSEAS FILIPINO WORKER",
          "SEAFARER",
          "OTHERS"
        ]
      }
    },
    {
      "name": "otherStatusAbroadDescription",
      "label": "Specify Status Abroad",
      "type": "string",
      "required": false,
      "requiredWhen": {
        "field": "statusAbroad",
        "equals": "OTHERS"
      },
      "description": "Free-text description of the applicant's status abroad, required only when statusAbroad is 'OTHERS'.",
      "sourceRef": "iRehistro, Personal Information — input name='otherstatabr' (shown only when Status Abroad = OTHERS); OVF1 form p.1, Part I — 'OTHERS (pls specify):'",
      "validation": {
        "maxLength": 30
      }
    },
    {
      "name": "isPhilippinePassportValid",
      "label": "Is your Philippine Passport valid?",
      "type": "boolean",
      "required": true,
      "description": "Whether the applicant currently holds a valid Philippine passport. Gates which identity document is required — see documents[].",
      "sourceRef": "iRehistro, Personal Information — select name='ispassportvalid'; OVF1 form p.1, Part I — 'Is your Philippine Passport valid? YES / NO'"
    },
    {
      "name": "passportValidUntil",
      "label": "Valid Until",
      "type": "date",
      "required": false,
      "requiredWhen": {
        "field": "isPhilippinePassportValid",
        "equals": true
      },
      "description": "The Philippine passport's expiry date, required only when isPhilippinePassportValid is true. Source displays/validates as mm/dd/yyyy; this field's value uses GovSchema's standard YYYY-MM-DD representation.",
      "sourceRef": "iRehistro, Personal Information — input name='pportdate' (shown only when Is Passport Valid = YES); OVF1 form p.1, Part I — 'DUAL CITIZEN VALID UNTIL:' passport-validity box"
    },
    {
      "name": "citizenship",
      "label": "Citizenship",
      "type": "enum",
      "required": true,
      "fieldRole": "eligibility",
      "eligibleValues": [
        "FILIPINO"
      ],
      "description": "The applicant's citizenship. The live tool defaults this to FILIPINO and, if an applicant selects NON-FILIPINO, immediately shows a blocking dialog ('Non-Filipinos cannot submit an application.') and resets the value back to FILIPINO — modeled here as an eligibility field via fieldRole/eligibleValues rather than a hard enum restriction, since NON-FILIPINO remains a well-formed (if ineligible) selectable value on the form itself.",
      "sourceRef": "iRehistro, Personal Information — select name='citizenship' (default FILIPINO, blocks NON-FILIPINO via dialog); OVF1 form is only issued to Filipino citizens per RA 10590",
      "validation": {
        "enum": [
          "FILIPINO",
          "NON-FILIPINO"
        ]
      }
    },
    {
      "name": "residenceAddressLine1",
      "label": "Address (Line 1)",
      "type": "string",
      "required": true,
      "description": "First line of the applicant's residence address abroad (block/lot/room/floor/street/house/building/flat/apartment) — used for mail voting.",
      "sourceRef": "iRehistro, Residence Abroad — input name='resiaddr1' (help text: 'Block / Lot / Room / Floor / Street / House / Building / Flat / Apartment'); OVF1 form p.1 — 'RESIDENCE ABROAD: ADDRESS ABROAD:'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "residenceAddressLine2",
      "label": "Address (Line 2)",
      "type": "string",
      "required": true,
      "description": "Second line of the applicant's residence address abroad (town/village/locality/municipality/county/city/district). Confirmed required by the tool's own client-side validator despite carrying no visible on-screen asterisk.",
      "sourceRef": "iRehistro, Residence Abroad — input name='resiaddr2' (help text: 'Town / Village / Locality / Municipality / County / City / District'; validated as required by the page's own validateForm() call)",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "residenceStateProvince",
      "label": "State / Province",
      "type": "string",
      "required": true,
      "description": "State or province of the applicant's residence address abroad.",
      "sourceRef": "iRehistro, Residence Abroad — input name='resicitystate'; OVF1 form p.1 — 'STATE/PROVINCE:'",
      "validation": {
        "maxLength": 60
      }
    },
    {
      "name": "residencePostalCode",
      "label": "Postal Code",
      "type": "string",
      "required": true,
      "description": "Postal/ZIP code of the applicant's residence address abroad.",
      "sourceRef": "iRehistro, Residence Abroad — input name='resipostalcode'; OVF1 form p.1 — 'POSTAL CODE:'",
      "validation": {
        "maxLength": 15
      }
    },
    {
      "name": "residencePoBox",
      "label": "P.O. Box No.",
      "type": "string",
      "required": false,
      "description": "Optional P.O. Box number for the applicant's residence address abroad.",
      "sourceRef": "iRehistro, Residence Abroad — input name='resipobox'; OVF1 form p.1 — 'P.O. BOX NO.:'",
      "validation": {
        "maxLength": 15
      }
    },
    {
      "name": "residenceCountry",
      "label": "Country",
      "type": "enum",
      "required": true,
      "description": "Country of the applicant's residence abroad, from the tool's own country picker (247 entries, including several historical/special territories alongside current UN member states).",
      "sourceRef": "iRehistro, Residence Abroad — select name='resictry'; OVF1 form p.1 — 'RESIDENCE ABROAD ... COUNTRY:'",
      "validation": {
        "enum": [
          "AFGHANISTAN",
          "ALBANIA",
          "ALGERIA",
          "AMERICAN SAMOA",
          "ANDORRA",
          "ANGOLA",
          "ANGUILLA",
          "ANTIGUA AND BARBUDA",
          "ARGENTINA",
          "ARMENIA",
          "ARUBA",
          "ASCENSION",
          "AUSTRALIA",
          "AUSTRIA",
          "AZERBAIJAN",
          "AZORES",
          "BAHAMAS",
          "BAHRAIN",
          "BANGLADESH",
          "BARBADOS",
          "BELARUS",
          "BELGIUM",
          "BELIZE",
          "BENIN",
          "BERMUDA",
          "BHUTAN",
          "BOLIVIA",
          "BONAIRE",
          "BOSNIA AND HERZEGOVINA",
          "BOTSWANA",
          "BRAZIL",
          "BRITISH ANTARCTIC TERRITORY",
          "BRITISH INDIAN OCEAN TERRITORY",
          "BRITISH VIRGIN ISLANDS",
          "BRUNEI DARUSSALAM",
          "BULGARIA",
          "BURKINA FASO",
          "BURUNDI",
          "CABO VERDE",
          "CAMBODIA",
          "CAMEROON",
          "CANADA",
          "CANARY ISLANDS ",
          "CAYMAN ISLANDS",
          "CENTRAL AFRICAN REPUBLIC",
          "CHAD",
          "CHILE",
          "CHINA",
          "COLOMBIA",
          "COMOROS",
          "CONGO",
          "COOK ISLANDS",
          "COSTA RICA",
          "COTE D'IVOIRE",
          "CROATIA",
          "CUBA",
          "CURACAO",
          "CYPRUS",
          "CZECH REPUBLIC",
          "DEMOCRATIC REPUBLIC OF CONGO",
          "DENMARK",
          "DJIBOUTI",
          "DOMINICA",
          "DOMINICAN REPUBLIC",
          "ECUADOR",
          "EGYPT",
          "EL SALVADOR",
          "EQUATORIAL GUINEA",
          "ERITREA",
          "ESTONIA",
          "ESWATINI",
          "ETHIOPIA",
          "FALKLAND ISLANDS",
          "FAROE ISLANDS ",
          "FIJI",
          "FINLAND",
          "FRANCE",
          "FRENCH GUIANA",
          "FRENCH POLYNESIA",
          "GABON",
          "GAMBIA",
          "GEORGIA",
          "GERMANY",
          "GHANA",
          "GIBRALTAR",
          "GREECE",
          "GREENLAND",
          "GRENADA",
          "GUADELOUPE",
          "GUAM",
          "GUANTANAMO BAY",
          "GUATEMALA",
          "GUERNSEY",
          "GUINEA",
          "GUINEA-BISSAU",
          "GUYANA",
          "HAITI",
          "HONDURAS",
          "HUNGARY",
          "ICELAND",
          "INDIA",
          "INDONESIA",
          "IRAN",
          "IRAQ",
          "IRELAND",
          "ISLE OF MAN",
          "ISRAEL",
          "ITALY",
          "JAMAICA",
          "JAPAN",
          "JERSEY",
          "JORDAN",
          "KAZAKHSTAN",
          "KENYA",
          "KIRIBATI",
          "KOREA (North)",
          "KOREA (South)",
          "KOSOVO",
          "KUWAIT",
          "KYRGYZSTAN",
          "LA REUNION",
          "LAOS",
          "LATVIA",
          "LEBANON",
          "LESOTHO",
          "LIBERIA",
          "LIBYA",
          "LIECHTENSTEIN",
          "LITHUANIA",
          "LUXEMBOURG",
          "MADAGASCAR",
          "MADEIRA",
          "MALAWI",
          "MALAYSIA",
          "MALDIVES",
          "MALI",
          "MALTA",
          "MARSHALL ISLANDS",
          "MARTINIQUE",
          "MAURITANIA",
          "MAURITIUS",
          "MAYOTTE",
          "MEXICO",
          "MICRONESIA",
          "MOLDOVA",
          "MONACO",
          "MONGOLIA",
          "MONTENEGRO",
          "MONTSERRAT",
          "MOROCCO",
          "MOZAMBIQUE",
          "MYANMAR",
          "NAMIBIA",
          "NAURU",
          "NEPAL",
          "NEW CALEDONIA",
          "NEW ZEALAND",
          "NICARAGUA",
          "NIGER",
          "NIGERIA",
          "NIUE",
          "NORTH MACEDONIA",
          "NORTHERN CYPRUS",
          "NORTHERN IRELAND",
          "NORTHERN MARIANA ISLANDS",
          "NORWAY",
          "OMAN",
          "PAKISTAN",
          "PALAU",
          "PALESTINE",
          "PANAMA",
          "PAPUA NEW GUINEA",
          "PARAGUAY",
          "PERU",
          "PITCAIRN ISLANDS",
          "POLAND",
          "PORTUGAL",
          "PUERTO RICO",
          "QATAR",
          "ROMANIA",
          "RUSSIA",
          "RWANDA",
          "SABA",
          "SAINT BARTHÉLEMY",
          "SAINT KITTS AND NEVIS",
          "SAINT LUCIA",
          "SAINT MARTIN",
          "SAMOA",
          "SAN MARINO",
          "SAO TOME AND PRINCIPE",
          "SAUDI ARABIA",
          "SENEGAL",
          "SERBIA",
          "SEYCHELLES",
          "SIERRA LEONE",
          "SINGAPORE",
          "SINT EUSTATIUS",
          "SINT MAARTEN",
          "SLOVAKIA",
          "SLOVENIA",
          "SOLOMON ISLANDS",
          "SOMALIA",
          "SOUTH AFRICA",
          "SOUTH SUDAN",
          "SPAIN",
          "SRI LANKA",
          "ST. HELENA",
          "ST. PIERRE AND MIQUELON",
          "ST. VINCENT AND THE GRENADINES",
          "SUDAN",
          "SURINAME",
          "SWEDEN",
          "SWITZERLAND",
          "SYRIA",
          "TAIWAN",
          "TAJIKISTAN",
          "TANZANIA",
          "THAILAND",
          "THE NETHERLANDS",
          "TIMOR-LESTE",
          "TOGO",
          "TOKELAU",
          "TONGA",
          "TRINIDAD AND TOBAGO",
          "TRISTAN DA CUNCHA",
          "TUNISIA",
          "TURKMENISTAN",
          "TURKS AND CAICOS ISLANDS",
          "TUVALU",
          "TÜRKIYE",
          "UGANDA",
          "UKRAINE",
          "UNITED ARAB EMIRATES",
          "UNITED KINGDOM",
          "UNITED STATES OF AMERICA",
          "URUGUAY",
          "UZBEKISTAN",
          "VANUATU",
          "VATICAN CITY",
          "VENEZUELA",
          "VIETNAM",
          "VIRGIN ISLANDS (U.S.)",
          "WAKE ISLANDS",
          "WALLIS AND FUTUNA ISLANDS",
          "YEMEN",
          "ZAMBIA",
          "ZIMBABWE"
        ]
      }
    },
    {
      "name": "isRegisteredVoterInPhilippines",
      "label": "Are you a registered voter in the Philippines?",
      "type": "boolean",
      "required": true,
      "description": "Whether the applicant is already a registered voter in the Philippines. If true, the applicant must specify where (province/district and city/municipality) — relevant to the Registration application type modeled here (an applicant already registered domestically who wishes to register instead as an overseas voter).",
      "sourceRef": "iRehistro, Local Voter Registration — select name='isregistered'; OVF1 form p.1 — 'ARE YOU A REGISTERED VOTER IN THE PHILIPPINES? YES / NO IF YES, WHERE?'"
    },
    {
      "name": "registeredProvinceOrDistrict",
      "label": "Province",
      "type": "enum",
      "required": false,
      "requiredWhen": {
        "field": "isRegisteredVoterInPhilippines",
        "equals": true
      },
      "description": "Province, or NCR legislative district, where the applicant is currently a registered voter in the Philippines (88 entries). Required only when isRegisteredVoterInPhilippines is true.",
      "sourceRef": "iRehistro, Local Voter Registration — select name='leaveabdprv' (shown only when Are you a registered voter? = YES)",
      "validation": {
        "enum": [
          "NCR - 1st DISTRICT (Manila)",
          "NCR - 2ND DISTRICT (Mandaluyong, Marikina, Pasig, QC, San Juan)",
          "NCR - 3RD DISTRICT (Caloocan, Malabon, Navotas, Valenzuela)",
          "NCR - 4TH DISTRICT (Las Piñas, Makati, Muntinlupa, Parañaque, Pasay, Pateros, Taguig)",
          "ABRA",
          "AGUSAN DEL NORTE",
          "AGUSAN DEL SUR",
          "AKLAN",
          "ALBAY",
          "ANTIQUE",
          "APAYAO",
          "AURORA",
          "BASILAN",
          "BATAAN",
          "BATANES",
          "BATANGAS",
          "BENGUET",
          "BILIRAN",
          "BOHOL",
          "BUKIDNON",
          "BULACAN",
          "CAGAYAN",
          "CAMARINES NORTE",
          "CAMARINES SUR",
          "CAMIGUIN",
          "CAPIZ",
          "CATANDUANES",
          "CAVITE",
          "CEBU",
          "COTABATO (NORTH COT.)",
          "DAVAO DE ORO",
          "DAVAO DEL NORTE",
          "DAVAO DEL SUR",
          "DAVAO OCCIDENTAL",
          "DAVAO ORIENTAL",
          "DINAGAT ISLANDS",
          "EASTERN SAMAR",
          "GUIMARAS",
          "IFUGAO",
          "ILOCOS NORTE",
          "ILOCOS SUR",
          "ILOILO",
          "ISABELA",
          "KALINGA",
          "LA UNION",
          "LAGUNA",
          "LANAO DEL NORTE",
          "LANAO DEL SUR",
          "LEYTE",
          "MAGUINDANAO DEL NORTE",
          "MAGUINDANAO DEL SUR",
          "MARINDUQUE",
          "MASBATE",
          "MISAMIS OCCIDENTAL",
          "MISAMIS ORIENTAL",
          "MOUNTAIN PROVINCE",
          "NEGROS OCCIDENTAL",
          "NEGROS ORIENTAL",
          "NORTHERN SAMAR",
          "NUEVA ECIJA",
          "NUEVA VIZCAYA",
          "OCCIDENTAL MINDORO",
          "ORIENTAL MINDORO",
          "PALAWAN",
          "PAMPANGA",
          "PANGASINAN",
          "QUEZON",
          "QUIRINO",
          "RIZAL",
          "ROMBLON",
          "SAMAR (WESTERN SAMAR)",
          "SARANGANI",
          "SIQUIJOR",
          "SORSOGON",
          "SOUTH COTABATO",
          "SOUTHERN LEYTE",
          "SPECIAL GEOGRAPHIC AREA",
          "SPECIAL PROVINCE",
          "SULTAN KUDARAT",
          "SULU",
          "SURIGAO DEL NORTE",
          "SURIGAO DEL SUR",
          "TARLAC",
          "TAWI-TAWI",
          "ZAMBALES",
          "ZAMBOANGA DEL NORTE",
          "ZAMBOANGA DEL SUR",
          "ZAMBOANGA SIBUGAY"
        ]
      }
    },
    {
      "name": "registeredCityMunicipality",
      "label": "City / Municipality",
      "type": "string",
      "required": false,
      "requiredWhen": {
        "field": "isRegisteredVoterInPhilippines",
        "equals": true
      },
      "description": "City or municipality, within the selected province/district, where the applicant is currently a registered voter in the Philippines. Required only when isRegisteredVoterInPhilippines is true. Modeled as an open string rather than a fixed enum: the live tool populates this field's own option list dynamically via a server-side AJAX call keyed on the selected province ('muns-prov' endpoint, POST prv=<province code>), so the full closed set of valid city/municipality values per province is not enumerable from the page's own static HTML — see VERIFICATION.md.",
      "sourceRef": "iRehistro, Local Voter Registration — select name='leaveabdmun' (dynamically populated per selected province via AJAX)"
    },
    {
      "name": "contactNumber",
      "label": "Contact No.",
      "type": "string",
      "required": false,
      "description": "Applicant's contact telephone/mobile number abroad. Help text: mobile number as country code + number; telephone number as country code + area code + number.",
      "sourceRef": "iRehistro, Contact Details — input name='resitelno'; OVF1 form p.1 — 'CONTACT NO.:'",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "emailAddress",
      "label": "E-mail Address",
      "type": "string",
      "required": true,
      "description": "Applicant's e-mail address.",
      "sourceRef": "iRehistro, Contact Details — input name='resieadd' (validated as an e-mail address); OVF1 form p.1 — 'EMAIL:'",
      "validation": {
        "maxLength": 40
      }
    },
    {
      "name": "socialMediaAccount",
      "label": "Social Media",
      "type": "string",
      "required": false,
      "description": "Applicant's social media handle/account, optionally provided as an alternate contact channel.",
      "sourceRef": "iRehistro, Contact Details — input name='resifbacct'; OVF1 form p.1 — 'SOCIAL MEDIA:'",
      "validation": {
        "maxLength": 40
      }
    },
    {
      "name": "authorizedRepresentativeName",
      "label": "Full Name",
      "type": "string",
      "required": true,
      "description": "Full name of the applicant's authorized representative in the Philippines, who may file a Motion for Reconsideration with the Resident Election Registration Board (RERB) if the application is disapproved.",
      "sourceRef": "iRehistro, Authorized Representative in the Philippines — input name='arname'; OVF1 form p.2, Part II — 'NAME:'",
      "validation": {
        "maxLength": 70
      }
    },
    {
      "name": "authorizedRepresentativeAddress",
      "label": "Complete Mailing Address",
      "type": "string",
      "required": true,
      "description": "Complete mailing address, in the Philippines, of the applicant's authorized representative.",
      "sourceRef": "iRehistro, Authorized Representative in the Philippines — input name='araddr'; OVF1 form p.2, Part II — 'ADDRESS:'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "authorizedRepresentativeContactNumber",
      "label": "Contact No.",
      "type": "string",
      "required": true,
      "description": "Contact telephone/mobile number of the applicant's authorized representative.",
      "sourceRef": "iRehistro, Authorized Representative in the Philippines — input name='artelno'; OVF1 form p.2, Part II — 'CONTACT NO.:'",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "authorizedRepresentativeEmail",
      "label": "E-mail Address",
      "type": "string",
      "required": true,
      "description": "E-mail address of the applicant's authorized representative.",
      "sourceRef": "iRehistro, Authorized Representative in the Philippines — input name='aremailadd' (validated as an e-mail address); OVF1 form p.2, Part II — 'EMAIL:'",
      "validation": {
        "maxLength": 40
      }
    }
  ],
  "documents": [
    {
      "id": "philippinePassport",
      "label": "Valid Philippine Passport (data/signature pages)",
      "category": "identity-document",
      "required": false,
      "requiredWhen": {
        "field": "isPhilippinePassportValid",
        "equals": true
      },
      "belongsTo": "applicant",
      "issuingAuthority": "Department of Foreign Affairs (DFA)",
      "handling": "bring-original-plus-one-photocopy-of-data-page",
      "acceptedTypes": [
        "philippine-passport"
      ]
    },
    {
      "id": "postCertificationInLieuOfPassport",
      "label": "Certification issued by the Post (in the absence of a valid passport)",
      "category": "identity-document",
      "required": false,
      "requiredWhen": {
        "field": "isPhilippinePassportValid",
        "equals": false
      },
      "belongsTo": "applicant",
      "issuingAuthority": "Philippine Embassy/Consulate (Post)",
      "handling": "issued-by-post-confirming-passport-application-or-inability-to-produce-valid-passport",
      "acceptedTypes": [
        "post-issued-certification"
      ]
    },
    {
      "id": "seafarerProofDocument",
      "label": "Seaman's Book or other proof of seafarer status",
      "category": "supporting-evidence",
      "required": false,
      "requiredWhen": {
        "field": "statusAbroad",
        "equals": "SEAFARER"
      },
      "belongsTo": "applicant",
      "acceptedTypes": [
        "seamans-book",
        "other-seafarer-proof"
      ]
    },
    {
      "id": "dualCitizenshipCertificate",
      "label": "Dual Citizenship Certificate or Order of Approval",
      "category": "identity-document",
      "required": false,
      "requiredWhen": {
        "field": "statusAbroad",
        "equals": "DUAL CITIZEN"
      },
      "belongsTo": "applicant",
      "issuingAuthority": "Bureau of Immigration (BI)",
      "handling": "bring-original-plus-one-photocopy",
      "acceptedTypes": [
        "dual-citizenship-certificate",
        "order-of-approval"
      ]
    }
  ]
}
