{
  "$schema": "https://govschema.org/spec/v0.3/govschema.schema.json",
  "govschemaVersion": "0.3.0",
  "id": "gh/mfa/application-for-a-republic-of-ghana-passport",
  "version": "1.0.0",
  "title": "Application for a Republic of Ghana Passport",
  "description": "The Ministry of Foreign Affairs and Regional Integration (MFA) Passport Office's standard manual application form for a Ghanaian passport, citing the Passport and Travel Certificate Decree (NLCD. 155, 1967). Distributed as a free downloadable PDF from the MFA's own \"Passport Manual Forms\" page (mfa.gov.gh/index.php/passport/), which documents the full manual workflow: download the form, pay the processing fee online (\"PAY PROCESSING FEE\"), receive the resulting Paid Voucher Code by SMS, write that code on the printed form, and submit the completed form in person at one of ten listed Passport Application Centers (PACs). Opens Ghana's Passport vertical (3 of 6, alongside National ID & Civic Documents and Visa). A genuinely flat print form: pdfjs-dist confirms 0 AcroForm/Widget annotations across all 4 pages but a real, fully extractable text layer (not a scanned image), so every field below is read via coordinate/text-layout correlation rather than an embedded field name. 30 numbered items span the applicant's name and any former name, date of birth and gender, place of birth, height/eye colour/hair colour/visible peculiarities, nationality, marital status (printed as a bare blank with no enumerated options, matching this registry's gh/gis precedent for the same jurisdiction), profession, three optional government ID numbers (National ID, Social Security, Voter's ID), a full residence address including a GhanaPost GPS Digital Address Code, contact details, educational institution and attendance period, a three-generation evidence-of-citizenship block (father, mother, and one grandparent, each with nationality, living status, addresses, and contact details), a dual-citizenship declaration, a document-holdings checklist plus a single attached-document detail block, two guarantors, the applicant's own declaration (including a conditional prior-passport disclosure), a parent/legal guardian consent block for applicants under 18, a translator block for applicants who cannot read or write English, and a formal witness section (mandatory per the form's own instruction 3, which lists the professional categories a witness must belong to). Unlike gh/gis's Re-Entry Visa/Permit specimen, this form contains no printed photograph-attachment instruction anywhere across all 4 pages (confirmed both in the extracted text and by visual inspection of all 4 rendered pages) — no `documents[]` photograph entry is modelled here, since none is printed on this specimen. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Government of Ghana or the Ministry of Foreign Affairs and Regional Integration.",
  "status": "draft",
  "jurisdiction": {
    "country": "GH",
    "level": "national"
  },
  "authority": {
    "name": "Ministry of Foreign Affairs and Regional Integration",
    "abbreviation": "MFA",
    "url": "https://mfa.gov.gh"
  },
  "process": {
    "type": "application",
    "language": "en"
  },
  "source": {
    "url": "https://mfa.gov.gh/wp-content/uploads/2018/10/passport-form.pdf",
    "retrievedAt": "2026-07-13",
    "documentRef": "\"Application for a Republic of Ghana Passport\" (Passport and Travel Certificate Decree, NLCD. 155, 1967)"
  },
  "verification": {
    "method": "manual-source-review-v1",
    "lastVerifiedAt": "2026-07-13",
    "verifiedBy": "GovSchema Engineering (Standards Engineer)",
    "nextReviewBy": "2027-01-13",
    "notes": "GovSchema Standard Research cycle GOV-2703, continuing Ghana's research thread from GOV-2695 (parent research issue), which scouted all 5 of Ghana's then-remaining open verticals in parallel following GOV-2510's opening of Ghana (41st jurisdiction) via National ID; GOV-2697 and GOV-2698 have since closed Taxes and Visa. Independently re-fetched the source directly from mfa.gov.gh (HTTP 200, application/pdf, 248,106 bytes, sha256:e59193adeaf05847042dbd03928f1e7e9bec3b4cf333ee19c048c18e5bb73c9), matching the issue's own citation exactly. pdfjs-dist (v4, legacy build) getAnnotations() confirms 0 Widget annotations across all 4 pages; getTextContent() confirms a real, fully extractable text layer (338/187/168/223 text items respectively) — a flat print form, not an AcroForm and not a scanned image. Every field below was read via coordinate-sorted line grouping (getTextContent() items grouped by y-coordinate, ordered by x) rather than an embedded field name, cross-checked against a from-scratch node-canvas render of all 4 pages at 2.5x scale to confirm comb-box/blank layout and rule out an unlabelled photograph box (none found on any page). Also independently re-fetched mfa.gov.gh/index.php/passport/ (the live page cited in the issue) and confirmed its own described manual workflow verbatim: download the form, pay the processing fee online, receive a Paid Voucher Code by SMS, write it on the form (mapped to this schema's `paidVoucherCode` field, printed on the specimen only as an unexplained \"TRANSACTION NO:\" blank), and submit in person at one of 10 listed Passport Application Centers (PACs). 114 fields[] entries were derived from the 30 numbered items plus a 3-field header strip (TIN, the paid-voucher-code blank, and a name-summary blank), all preceding the numbered items and distinct from the page-1 FOR OFFICIAL USE ONLY block (Regional Office / vendor receipt-stamp / Passport Office stamp / payment-PIN entry), which is excluded as staff/vendor-populated, consistent with this registry's established practice (cf. gh/nia's excluded MRW Number/Registration Centre Number/Interviewer NID No. widgets). The pre-printed \"SERIAL NO: 18/\" blank is likewise excluded as a form-batch identifier, not an applicant-supplied value. Item 23's evidence-of-citizenship block (father, mother, one grandparent) is structurally identical across all three relatives (name, nationality, living status, postal/residential address, deceased-last-known-address, home town, phone, email) and is modelled with a genuine requiredWhen (each *LastKnownAddress field gated on its own *Living boolean being false) rather than left as a disclosed-only convention, since this form (unlike gh/gis's free-text maritalStatus) actually provides a real boolean field to key off. Item 27's declaration is modelled with firstTimeApplicant as the printed statement (a) verbatim (\"that I have not previously held or applied for a passport of any description\"), with previousPassportNumber/previousPassportStatus requiredWhen firstTimeApplicant equals false, mirroring the form's own \"Cancel if not applicable\" mutual-exclusivity between statements (a) and (b). Items 28 (parent/legal guardian consent, applicants under 18) and 29 (translator for applicants who cannot read or write English) are each conditional in the real world but are not requiredWhen-gated, since this specimen provides no dedicated boolean minor-status or literacy-status field to key off — consistent with this registry's established practice of gating conditionals only on fields the source itself provides (cf. gh/gis's ungated maritalStatus-conditional spouseName/spouseNationality). documents[] carries 4 entries: citizenshipAndIdentityEvidence (item 25's own attachment table, echoing instruction 1's citizenship/identity evidence list), missingPassportPoliceReport (requiredWhen previousPassportStatus equals \"lost\", per instruction 2), passportProcessingFeePayment (sourced from the live mfa.gov.gh workflow page rather than the PDF itself, since the fee/payment step precedes and is external to the printed form), and applicationDeclaration (item 27's always-applicable \"And that all above information is true and correct\" attestation, quoted verbatim). See VERIFICATION.md for the full sourcing record, field-by-field inventory, and the conformance run writeup."
  },
  "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-13"
  },
  "license": "CC-BY-4.0",
  "fields": [
    {
      "name": "taxIdentificationNumber",
      "label": "TIN",
      "type": "string",
      "required": false,
      "classification": "sensitive-pii",
      "description": "The applicant's Ghana Revenue Authority Tax Identification Number, given in a labelled 11-cell comb box at the top of page 1, above the numbered items and the FOR OFFICIAL USE ONLY block.",
      "sourceRef": "Header — TIN:",
      "validation": {
        "maxLength": 11
      }
    },
    {
      "name": "paidVoucherCode",
      "label": "TRANSACTION NO",
      "type": "string",
      "required": true,
      "description": "The Paid Voucher Code received by SMS after paying the passport processing fee online, written here per the MFA's own published workflow (mfa.gov.gh/index.php/passport/, \"HOW TO APPLY\": pay the processing fee, receive an SMS with the code, then \"Write the Paid Voucher Code on your Manual Form\"). Printed on the form itself only as a blank labelled \"TRANSACTION NO:\", with no on-form explanation of what belongs there; the live page supplies that context.",
      "sourceRef": "Header — TRANSACTION NO:"
    },
    {
      "name": "applicantFullNameSummary",
      "label": "NAME OF APPLICANT",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "A cover-strip statement of the applicant's full name, printed above the instructions/caution text and the FOR OFFICIAL USE ONLY block, distinct from the structured Surname/First Name/Other Names breakdown captured later in item 1.",
      "sourceRef": "Header — NAME OF APPLICANT:",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "surname",
      "label": "(a) Surname",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Item 1(a): Surname",
      "validation": {
        "maxLength": 50
      }
    },
    {
      "name": "firstName",
      "label": "(b) First Name",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Item 1(b): First Name",
      "validation": {
        "maxLength": 50
      }
    },
    {
      "name": "otherNames",
      "label": "(c) Other Names",
      "type": "string",
      "required": false,
      "classification": "pii",
      "sourceRef": "Item 1(c): Other Names",
      "validation": {
        "maxLength": 50
      }
    },
    {
      "name": "maidenName",
      "label": "Maiden Name(s)",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "The applicant's maiden name(s), where applicable.",
      "sourceRef": "Item 2: Maiden Name(s)",
      "validation": {
        "maxLength": 50
      }
    },
    {
      "name": "previousName",
      "label": "Previous name",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "The applicant's previous name, where the name has been changed by Affidavit or Gazette Publication.",
      "sourceRef": "Item 3: \"If name has changed by Affidavit or Gazette Publication, provide previous name.\"",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "dateOfBirth",
      "label": "(a) Date of Birth",
      "type": "date",
      "required": true,
      "classification": "pii",
      "description": "Printed as separate Day/Month/Year in full blanks, collapsed here into a single date value, consistent with this registry's convention for Day/Month/Year triplets.",
      "sourceRef": "Item 4(a): Date of Birth (Day/Month/Year in full) — \"As confirmed by NIS\""
    },
    {
      "name": "gender",
      "label": "(b) Gender",
      "type": "enum",
      "required": true,
      "classification": "pii",
      "description": "The applicant circles whichever of the two printed options applies.",
      "sourceRef": "Item 4(b): Gender — Male / Female (circle whichever is applicable)",
      "validation": {
        "enum": [
          "Male",
          "Female"
        ]
      }
    },
    {
      "name": "cityOrTownOfBirth",
      "label": "City or Town of Birth",
      "type": "string",
      "required": true,
      "sourceRef": "Item 5: City or Town of Birth",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "countryOfBirth",
      "label": "Country of Birth",
      "type": "string",
      "required": true,
      "sourceRef": "Item 6: Country of Birth",
      "validation": {
        "maxLength": 60
      }
    },
    {
      "name": "heightMeters",
      "label": "(a) Height — m",
      "type": "integer",
      "required": true,
      "description": "Whole-metres component of the applicant's height, printed as a blank immediately before the literal \"m\" label.",
      "sourceRef": "Item 7(a): Height ___m ___cm",
      "validation": {
        "minimum": 0,
        "maximum": 2
      }
    },
    {
      "name": "heightCentimeters",
      "label": "(a) Height — cm",
      "type": "integer",
      "required": true,
      "description": "Additional-centimetres component of the applicant's height, printed as a blank immediately before the literal \"cm\" label.",
      "sourceRef": "Item 7(a): Height ___m ___cm",
      "validation": {
        "minimum": 0,
        "maximum": 99
      }
    },
    {
      "name": "colourOfEyes",
      "label": "(b) Colour of eyes",
      "type": "string",
      "required": true,
      "sourceRef": "Item 7(b): Colour of eyes",
      "validation": {
        "maxLength": 30
      }
    },
    {
      "name": "colourOfHair",
      "label": "(c) Colour of Hair",
      "type": "string",
      "required": true,
      "sourceRef": "Item 7(c): Colour of Hair",
      "validation": {
        "maxLength": 30
      }
    },
    {
      "name": "visiblePeculiarities",
      "label": "(d) Visible peculiarities",
      "type": "string",
      "required": false,
      "description": "Any visible distinguishing marks, where applicable.",
      "sourceRef": "Item 7(d): Visible peculiarities",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "nationality",
      "label": "Nationality",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Item 8: Nationality",
      "validation": {
        "maxLength": 60
      }
    },
    {
      "name": "maritalStatus",
      "label": "Marital Status",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "Modelled as free text, not an enum: the specimen prints only a bare blank for this item, with no enumerated options printed anywhere across all 4 pages, consistent with this registry's gh/gis precedent (a different form, same jurisdiction) for the same judgment call.",
      "sourceRef": "Item 9: Marital Status",
      "validation": {
        "maxLength": 50
      }
    },
    {
      "name": "profession",
      "label": "(a) Profession",
      "type": "string",
      "required": true,
      "sourceRef": "Item 10(a): Profession",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "previousProfession",
      "label": "(b) Previous Profession",
      "type": "string",
      "required": false,
      "sourceRef": "Item 10(b): Previous Profession",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "nationalIdCardNumber",
      "label": "National ID Card No.",
      "type": "string",
      "required": false,
      "classification": "sensitive-pii",
      "sourceRef": "Item 11: National ID Card No.",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "socialSecurityNumber",
      "label": "Social Security Number",
      "type": "string",
      "required": false,
      "classification": "sensitive-pii",
      "sourceRef": "Item 12: Social Security Number",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "votersIdCardNumber",
      "label": "Voter's ID Card No.",
      "type": "string",
      "required": false,
      "classification": "sensitive-pii",
      "sourceRef": "Item 13: Voter's ID Card No.",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "countryOfResidence",
      "label": "Country of Residence",
      "type": "string",
      "required": true,
      "sourceRef": "Item 14: Country of Residence",
      "validation": {
        "maxLength": 60
      }
    },
    {
      "name": "zipOrPostCode",
      "label": "Zip / Post Code",
      "type": "string",
      "required": false,
      "sourceRef": "Item 15: Zip / Post Code",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "cityOrTownOfResidence",
      "label": "City or Town of Residence",
      "type": "string",
      "required": true,
      "sourceRef": "Item 16: City or Town of Residence",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "suburb",
      "label": "Suburb",
      "type": "string",
      "required": false,
      "sourceRef": "Item 17: Suburb",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "houseNumberAndStreet",
      "label": "(a) House Number and Street",
      "type": "string",
      "required": true,
      "sourceRef": "Item 18(a): House Number and Street",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "digitalAddressCode",
      "label": "(b) Digital Address Code",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "The applicant's GhanaPost GPS digital address code, where one has been obtained.",
      "sourceRef": "Item 18(b): Digital Address Code",
      "validation": {
        "maxLength": 18
      }
    },
    {
      "name": "postalAddress",
      "label": "Postal Address",
      "type": "string",
      "required": true,
      "sourceRef": "Item 19: Postal Address",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "telephoneNo",
      "label": "Telephone No.",
      "type": "string",
      "required": true,
      "sourceRef": "Item 20: Telephone No.",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "email",
      "label": "E-mail",
      "type": "string",
      "required": false,
      "sourceRef": "Item 21: E-mail",
      "validation": {
        "maxLength": 100,
        "pattern": "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$"
      }
    },
    {
      "name": "institutionAttended",
      "label": "(a) Institution",
      "type": "string",
      "required": true,
      "description": "The applicant's current or last educational institution attended.",
      "sourceRef": "Item 22(a): Institution",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "institutionAddress",
      "label": "(b) Address",
      "type": "string",
      "required": false,
      "sourceRef": "Item 22(b): Address",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "institutionPeriodFrom",
      "label": "(c) Period From",
      "type": "string",
      "required": false,
      "description": "Month/Year the applicant began attending, printed as separate Month and Year in full blanks and collapsed here into one MM/YYYY value.",
      "sourceRef": "Item 22(c): Period From (Month/Year in full)",
      "validation": {
        "pattern": "^(0[1-9]|1[0-2])/[0-9]{4}$"
      }
    },
    {
      "name": "institutionPeriodTo",
      "label": "(c) Period To",
      "type": "string",
      "required": false,
      "description": "Month/Year the applicant finished attending (or present), printed as separate Month and Year in full blanks and collapsed here into one MM/YYYY value.",
      "sourceRef": "Item 22(c): Period To (Month/Year in full)",
      "validation": {
        "pattern": "^(0[1-9]|1[0-2])/[0-9]{4}$"
      }
    },
    {
      "name": "fatherName",
      "label": "a. Name of Father",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Item 23a: Name of Father",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "fatherNationality",
      "label": "Nationality",
      "type": "string",
      "required": true,
      "sourceRef": "Item 23a: Nationality",
      "validation": {
        "maxLength": 60
      }
    },
    {
      "name": "fatherLiving",
      "label": "Living?",
      "type": "boolean",
      "required": true,
      "description": "Whether this relative is living, circled Yes/No on the specimen.",
      "sourceRef": "Item 23a: Living? Yes/No (circle whichever is applicable)"
    },
    {
      "name": "fatherPostalAddress",
      "label": "Postal Address",
      "type": "string",
      "required": false,
      "sourceRef": "Item 23a: Postal Address",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "fatherResidentialAddress",
      "label": "Residential Address",
      "type": "string",
      "required": false,
      "sourceRef": "Item 23a: Residential Address",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "fatherLastKnownAddress",
      "label": "If deceased provide last known address",
      "type": "string",
      "required": false,
      "description": "Only meaningful when this relative is no longer living.",
      "sourceRef": "Item 23a: If deceased provide last known address",
      "requiredWhen": {
        "field": "fatherLiving",
        "equals": false
      },
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "fatherHomeTown",
      "label": "Home Town",
      "type": "string",
      "required": false,
      "sourceRef": "Item 23a: Home Town",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "fatherPhoneNumber",
      "label": "Phone Number",
      "type": "string",
      "required": false,
      "sourceRef": "Item 23a: Phone Number",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "fatherEmail",
      "label": "E-mail",
      "type": "string",
      "required": false,
      "sourceRef": "Item 23a: E-mail",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "motherName",
      "label": "b. Name of Mother",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Item 23b: Name of Mother",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "motherNationality",
      "label": "Nationality",
      "type": "string",
      "required": true,
      "sourceRef": "Item 23b: Nationality",
      "validation": {
        "maxLength": 60
      }
    },
    {
      "name": "motherLiving",
      "label": "Living?",
      "type": "boolean",
      "required": true,
      "description": "Whether this relative is living, circled Yes/No on the specimen.",
      "sourceRef": "Item 23b: Living? Yes/No (circle whichever is applicable)"
    },
    {
      "name": "motherPostalAddress",
      "label": "Postal Address",
      "type": "string",
      "required": false,
      "sourceRef": "Item 23b: Postal Address",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "motherResidentialAddress",
      "label": "Residential Address",
      "type": "string",
      "required": false,
      "sourceRef": "Item 23b: Residential Address",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "motherLastKnownAddress",
      "label": "If deceased provide last known address",
      "type": "string",
      "required": false,
      "description": "Only meaningful when this relative is no longer living.",
      "sourceRef": "Item 23b: If deceased provide last known address",
      "requiredWhen": {
        "field": "motherLiving",
        "equals": false
      },
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "motherHomeTown",
      "label": "Home Town",
      "type": "string",
      "required": false,
      "sourceRef": "Item 23b: Home Town",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "motherPhoneNumber",
      "label": "Phone Number",
      "type": "string",
      "required": false,
      "sourceRef": "Item 23b: Phone Number",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "motherEmail",
      "label": "E-mail",
      "type": "string",
      "required": false,
      "sourceRef": "Item 23b: E-mail",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "grandParentName",
      "label": "c. Name of one Grand Parent",
      "type": "string",
      "required": false,
      "classification": "pii",
      "sourceRef": "Item 23c: Name of one Grand Parent",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "grandParentNationality",
      "label": "Nationality",
      "type": "string",
      "required": false,
      "sourceRef": "Item 23c: Nationality",
      "validation": {
        "maxLength": 60
      }
    },
    {
      "name": "grandParentLiving",
      "label": "Living?",
      "type": "boolean",
      "required": true,
      "description": "Whether this relative is living, circled Yes/No on the specimen.",
      "sourceRef": "Item 23c: Living? Yes/No (circle whichever is applicable)"
    },
    {
      "name": "grandParentPostalAddress",
      "label": "Postal Address",
      "type": "string",
      "required": false,
      "sourceRef": "Item 23c: Postal Address",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "grandParentResidentialAddress",
      "label": "Residential Address",
      "type": "string",
      "required": false,
      "sourceRef": "Item 23c: Residential Address",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "grandParentLastKnownAddress",
      "label": "If deceased provide last known address",
      "type": "string",
      "required": false,
      "description": "Only meaningful when this relative is no longer living.",
      "sourceRef": "Item 23c: If deceased provide last known address",
      "requiredWhen": {
        "field": "grandParentLiving",
        "equals": false
      },
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "grandParentHomeTown",
      "label": "Home Town",
      "type": "string",
      "required": false,
      "sourceRef": "Item 23c: Home Town",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "grandParentPhoneNumber",
      "label": "Phone Number",
      "type": "string",
      "required": false,
      "sourceRef": "Item 23c: Phone Number",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "grandParentEmail",
      "label": "E-mail",
      "type": "string",
      "required": false,
      "sourceRef": "Item 23c: E-mail",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "hasDualCitizenship",
      "label": "Do you have dual citizenship?",
      "type": "boolean",
      "required": true,
      "sourceRef": "Item 24: Do you have dual citizenship? YES OR NO (circle whichever is applicable)"
    },
    {
      "name": "dualCitizenshipOtherCountry",
      "label": "If yes state other country",
      "type": "string",
      "required": false,
      "sourceRef": "Item 24: If yes state other country",
      "requiredWhen": {
        "field": "hasDualCitizenship",
        "equals": true
      },
      "validation": {
        "maxLength": 60
      }
    },
    {
      "name": "documentsHeldBirthCertificate",
      "label": "A. Birth Certificate",
      "type": "boolean",
      "required": false,
      "description": "Whether the applicant holds this document, one of 7 independent \"circle all that apply\" options.",
      "sourceRef": "Item 25: DO YOU HAVE ANY OF THE FOLLOWING DOCUMENTS? — A. Birth Certificate (circle all that apply)"
    },
    {
      "name": "documentsHeldNationalIdCard",
      "label": "B. National Identity Card",
      "type": "boolean",
      "required": false,
      "description": "Whether the applicant holds this document, one of 7 independent \"circle all that apply\" options.",
      "sourceRef": "Item 25: DO YOU HAVE ANY OF THE FOLLOWING DOCUMENTS? — B. National Identity Card (circle all that apply)"
    },
    {
      "name": "documentsHeldOldPassport",
      "label": "C. Old Passport",
      "type": "boolean",
      "required": false,
      "description": "Whether the applicant holds this document, one of 7 independent \"circle all that apply\" options.",
      "sourceRef": "Item 25: DO YOU HAVE ANY OF THE FOLLOWING DOCUMENTS? — C. Old Passport (circle all that apply)"
    },
    {
      "name": "documentsHeldVoterIdCard",
      "label": "D. Voter ID Card",
      "type": "boolean",
      "required": false,
      "description": "Whether the applicant holds this document, one of 7 independent \"circle all that apply\" options.",
      "sourceRef": "Item 25: DO YOU HAVE ANY OF THE FOLLOWING DOCUMENTS? — D. Voter ID Card (circle all that apply)"
    },
    {
      "name": "documentsHeldDualCitizenshipCard",
      "label": "E. Dual Citizenship Card",
      "type": "boolean",
      "required": false,
      "description": "Whether the applicant holds this document, one of 7 independent \"circle all that apply\" options.",
      "sourceRef": "Item 25: DO YOU HAVE ANY OF THE FOLLOWING DOCUMENTS? — E. Dual Citizenship Card (circle all that apply)"
    },
    {
      "name": "documentsHeldNaturalizationCard",
      "label": "F. Naturalization Card",
      "type": "boolean",
      "required": false,
      "description": "Whether the applicant holds this document, one of 7 independent \"circle all that apply\" options.",
      "sourceRef": "Item 25: DO YOU HAVE ANY OF THE FOLLOWING DOCUMENTS? — F. Naturalization Card (circle all that apply)"
    },
    {
      "name": "documentsHeldRegistrationCard",
      "label": "G. Registration Card",
      "type": "boolean",
      "required": false,
      "description": "Whether the applicant holds this document, one of 7 independent \"circle all that apply\" options.",
      "sourceRef": "Item 25: DO YOU HAVE ANY OF THE FOLLOWING DOCUMENTS? — G. Registration Card (circle all that apply)"
    },
    {
      "name": "attachingDocumentType",
      "label": "Document type",
      "type": "enum",
      "required": true,
      "description": "Which single one of the 7 listed document types (A-G) is being attached as evidence of citizenship/identity, per instruction 1 at the top of the form.",
      "sourceRef": "Item 25: \"Which of the above documents are you attaching?\" — Document type (circle one A-G)",
      "validation": {
        "enum": [
          "A",
          "B",
          "C",
          "D",
          "E",
          "F",
          "G"
        ]
      }
    },
    {
      "name": "attachingDocumentNumber",
      "label": "Number",
      "type": "string",
      "required": true,
      "classification": "sensitive-pii",
      "sourceRef": "Item 25: Number",
      "validation": {
        "maxLength": 30
      }
    },
    {
      "name": "attachingDocumentDateOfIssue",
      "label": "Date of Issue",
      "type": "date",
      "required": false,
      "description": "Printed as separate Day/Month/Year in full blanks, collapsed here into a single date value.",
      "sourceRef": "Item 25: Date of Issue (Day/Month/Year in full)"
    },
    {
      "name": "attachingDocumentPlaceOfIssue",
      "label": "Place of Issue",
      "type": "string",
      "required": false,
      "sourceRef": "Item 25: Place of Issue",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "guarantorAFullName",
      "label": "Full Name",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Item 26a: Full Name",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "guarantorAResidentialAddress",
      "label": "Residential Address",
      "type": "string",
      "required": true,
      "sourceRef": "Item 26a: Residential Address",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "guarantorAPostalAddress",
      "label": "Postal Address",
      "type": "string",
      "required": false,
      "sourceRef": "Item 26a: Postal Address",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "guarantorATelephoneNo",
      "label": "Telephone No.",
      "type": "string",
      "required": true,
      "sourceRef": "Item 26a: Telephone No.",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "guarantorAOccupation",
      "label": "Occupation",
      "type": "string",
      "required": true,
      "sourceRef": "Item 26a: Occupation",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "guarantorAEmail",
      "label": "E-mail",
      "type": "string",
      "required": false,
      "sourceRef": "Item 26a: E-mail",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "guarantorASignatureDate",
      "label": "Date",
      "type": "date",
      "required": true,
      "description": "Printed as separate Day/Month/Year in full blanks beside the guarantor's Signature, collapsed here into a single date value; the signature graphic itself is excluded, consistent with this registry's practice of excluding raw signature capture.",
      "sourceRef": "Item 26a: Signature / Date (Day/Month/Year in full)"
    },
    {
      "name": "guarantorBFullName",
      "label": "Full Name",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Item 26b: Full Name",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "guarantorBResidentialAddress",
      "label": "Residential Address",
      "type": "string",
      "required": true,
      "sourceRef": "Item 26b: Residential Address",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "guarantorBPostalAddress",
      "label": "Postal Address",
      "type": "string",
      "required": false,
      "sourceRef": "Item 26b: Postal Address",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "guarantorBTelephoneNo",
      "label": "Telephone No.",
      "type": "string",
      "required": true,
      "sourceRef": "Item 26b: Telephone No.",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "guarantorBOccupation",
      "label": "Occupation",
      "type": "string",
      "required": true,
      "sourceRef": "Item 26b: Occupation",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "guarantorBEmail",
      "label": "E-mail",
      "type": "string",
      "required": false,
      "sourceRef": "Item 26b: E-mail",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "guarantorBSignatureDate",
      "label": "Date",
      "type": "date",
      "required": true,
      "description": "Printed as separate Day/Month/Year in full blanks beside the guarantor's Signature, collapsed here into a single date value; the signature graphic itself is excluded, consistent with this registry's practice of excluding raw signature capture.",
      "sourceRef": "Item 26b: Signature / Date (Day/Month/Year in full)"
    },
    {
      "name": "declarationFullName",
      "label": "Declaration — Full Name",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "The applicant's full name filled into the declaration's own \"I ___ hereby apply for a Ghanaian Passport and declare\" blank.",
      "sourceRef": "Item 27: \"I [Full Name] hereby apply for a Ghanaian Passport and declare:\"",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "firstTimeApplicant",
      "label": "(a) Not previously held or applied for a passport",
      "type": "boolean",
      "required": true,
      "description": "Whether statement (a), \"that I have not previously held or applied for a passport of any description\", stands as printed (true) or is cancelled by the applicant as not applicable (false, meaning the applicant has held/applied for a passport before and statement (b) applies instead).",
      "sourceRef": "Item 27(a): \"that I have not previously held or applied for a passport of any description\" (Cancel if not applicable)"
    },
    {
      "name": "previousPassportNumber",
      "label": "(b) Previous passport No.",
      "type": "string",
      "required": false,
      "classification": "sensitive-pii",
      "description": "The applicant's previous passport number, only applicable when statement (a) is cancelled.",
      "sourceRef": "Item 27(b): \"that the previous passport No. [ ] granted me is attached / lost\"",
      "requiredWhen": {
        "field": "firstTimeApplicant",
        "equals": false
      },
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "previousPassportStatus",
      "label": "(b) Previous passport status",
      "type": "enum",
      "required": false,
      "description": "Whether the previous passport is attached to this application or has been lost, only applicable when statement (a) is cancelled.",
      "sourceRef": "Item 27(b): \"...is attached / lost\" (Cancel if not applicable)",
      "requiredWhen": {
        "field": "firstTimeApplicant",
        "equals": false
      },
      "validation": {
        "enum": [
          "attached",
          "lost"
        ]
      }
    },
    {
      "name": "declarationSignatureDate",
      "label": "Declaration — Date",
      "type": "date",
      "required": true,
      "description": "Printed as separate Day/Month/Year in full blanks beside the applicant's Signature, collapsed here into a single date value.",
      "sourceRef": "Item 27: Signature / Date, beside \"And that all above information is true and correct\""
    },
    {
      "name": "guardianRelationshipToApplicant",
      "label": "Applicant is my ___",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "The parent/legal guardian's stated relationship to the applicant. Only applicable when the applicant is under 18 years of age; not requiredWhen-gated since this form has no dedicated boolean minor-status field to key off, consistent with this registry's established practice of only gating on fields the source itself provides (cf. item 9's free-text maritalStatus).",
      "sourceRef": "Item 28: \"I hereby give consent for applicant who is my [ ] to hold a passport\"",
      "validation": {
        "maxLength": 60
      }
    },
    {
      "name": "guardianFullName",
      "label": "Full Name",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "Only applicable when the applicant is under 18 years of age.",
      "sourceRef": "Item 28: Full Name",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "guardianAddress",
      "label": "Address",
      "type": "string",
      "required": false,
      "description": "Only applicable when the applicant is under 18 years of age.",
      "sourceRef": "Item 28: Address",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "guardianTelephoneNo",
      "label": "Telephone No.",
      "type": "string",
      "required": false,
      "description": "Only applicable when the applicant is under 18 years of age.",
      "sourceRef": "Item 28: Telephone No.",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "guardianSignatureDate",
      "label": "Signature — Date",
      "type": "date",
      "required": false,
      "description": "Printed as separate Day/Month/Year in full blanks beside the guardian's Signature, collapsed here into a single date value. Only applicable when the applicant is under 18 years of age.",
      "sourceRef": "Item 28: Signature / Date (Day/Month/Year in full)"
    },
    {
      "name": "translatorLanguage",
      "label": "Interpreted in the ___ language",
      "type": "string",
      "required": false,
      "description": "Only applicable when the applicant cannot read or write English and the declaration was interpreted for them.",
      "sourceRef": "Item 29: \"The above declaration has been read and interpreted by me in the [ ] language to the applicant...\"",
      "validation": {
        "maxLength": 60
      }
    },
    {
      "name": "translatorFullName",
      "label": "Full Name",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "Only applicable when the applicant cannot read or write English.",
      "sourceRef": "Item 29: Full Name",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "translatorAddress",
      "label": "Address",
      "type": "string",
      "required": false,
      "description": "Only applicable when the applicant cannot read or write English.",
      "sourceRef": "Item 29: Address",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "translatorTelephoneNo",
      "label": "Telephone No.",
      "type": "string",
      "required": false,
      "description": "Only applicable when the applicant cannot read or write English.",
      "sourceRef": "Item 29: Telephone No.",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "translatorSignatureDate",
      "label": "Signature — Date",
      "type": "date",
      "required": false,
      "description": "Printed as separate Day/Month/Year in full blanks beside the translator's Signature, collapsed here into a single date value. Only applicable when the applicant cannot read or write English.",
      "sourceRef": "Item 29: Signature / Date (Day/Month/Year in full)"
    },
    {
      "name": "witnessFullName",
      "label": "Full Name",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "A witness from one of the categories listed in the form's own instruction 3 (senior clergy, commissioned officer, senior civil/public servant, registered medical practitioner, solicitor/barrister, head of a recognized educational institution, or another recognized regulated professional) who personally knows the applicant.",
      "sourceRef": "Item 30: WITNESS — Full Name",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "witnessOccupation",
      "label": "Occupation",
      "type": "string",
      "required": false,
      "sourceRef": "Item 30: Occupation",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "witnessPosition",
      "label": "Position",
      "type": "string",
      "required": false,
      "sourceRef": "Item 30: Position",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "witnessBusinessAddress",
      "label": "Business Address",
      "type": "string",
      "required": false,
      "sourceRef": "Item 30: Business Address",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "witnessBusinessPhoneNo",
      "label": "Business Phone No.",
      "type": "string",
      "required": false,
      "sourceRef": "Item 30: Business Phone No.",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "witnessResidentialAddress",
      "label": "Residential Address",
      "type": "string",
      "required": false,
      "sourceRef": "Item 30: Residential Address",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "witnessResidentialPhoneNo",
      "label": "Residential Phone No.",
      "type": "string",
      "required": false,
      "sourceRef": "Item 30: Residential Phone No.",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "witnessSignatureDate",
      "label": "Signature — Date",
      "type": "date",
      "required": true,
      "description": "Printed as separate Day/Month/Year in full blanks beside the witness's Signature, collapsed here into a single date value. A witness is mandatory per the form's own instruction 3.",
      "sourceRef": "Item 30: Signature / Date (Day/Month/Year in full)"
    }
  ],
  "documents": [
    {
      "id": "citizenshipAndIdentityEvidence",
      "label": "Evidence of citizenship and identity",
      "category": "supporting-evidence",
      "required": true,
      "belongsTo": "applicant",
      "acceptedTypes": [
        "birth-certificate",
        "national-identity-card",
        "old-passport",
        "voter-id-card",
        "dual-citizenship-naturalization-or-registration-certificate"
      ],
      "handling": "One of the document types listed in item 25 (A-G), matching the applicant's own attachingDocumentType selection, per the form's own instruction 1: \"The application should be submitted with i/evidence of citizenship and ii/evidence of identity\".",
      "sourceRef": "Instruction 1(a-f); Item 25 attachment table"
    },
    {
      "id": "missingPassportPoliceReport",
      "label": "Police report and affidavit for a missing passport",
      "category": "supporting-evidence",
      "required": false,
      "requiredWhen": {
        "field": "previousPassportStatus",
        "equals": "lost"
      },
      "belongsTo": "applicant",
      "handling": "Only required when the applicant's previous passport is reported lost rather than attached (item 27(b)).",
      "sourceRef": "Instruction 2: \"Police Report and affidavit are to be attached for missing passports.\""
    },
    {
      "id": "passportProcessingFeePayment",
      "label": "Passport processing fee payment",
      "category": "payment",
      "required": true,
      "belongsTo": "applicant",
      "handling": "Paid online before the Manual Form is submitted; results in an SMS-delivered Paid Voucher Code (see `paidVoucherCode` field) that must be written on the form and presented at a Passport Application Center (PAC). This step and its amount are not printed on the PDF specimen itself; they are documented on the MFA's own live passport page.",
      "sourceRef": "mfa.gov.gh/index.php/passport/, \"HOW TO APPLY\": \"Pay for the processing of your application (‘PAY PROCESSING FEE’)... Write the Paid Voucher Code on your Manual Form.\""
    },
    {
      "id": "applicationDeclaration",
      "label": "Declaration of truth of particulars",
      "category": "attestation",
      "required": true,
      "belongsTo": "applicant",
      "statement": "And that all above information is true and correct",
      "sourceRef": "Item 27, beside the Signature/Date line."
    }
  ]
}
