Registry entry

Ghana Card Application Form 1-A (Form One)

Ghana's national form for applying for a Ghana Card (national identity card) — "Form One", printed as made under "regulation 3(1)" (the form's own header citation; the specific regulations instrument is not further identified on the form itself), and administered by the National Identification Authority (NIA), a statutory body established by the National Identification Authority Act, 2006 (Act 707). The form serves citizens, permanently resident non-citizens, persons with a residence permit, and refugees alike, and covers first-time issuance as well as update, replacement, and re-issue of a previously issued card. Opens Ghana as the registry's 41st jurisdiction, via the National ID & Civic Documents vertical. This schema models the form's full applicant-facing content across both pages: applicant/request type, personal particulars (name, sex, marital status, height, colour of eyes/hair, disability code, level of education), birth/nationality particulars and place of birth/hometown, occupation, residential address, up to 14 languages spoken, the applicant's parentage (father's and mother's particulars, including whether each is alive), next of kin, a bounded list of up to 5 spouses (the form's own footnote directs applicants with more spouses to a separate "Spouses Form"), non-citizen-only particulars (residence-permit and employer details), the verification document presented, dual-citizenship-only particulars, contact numbers and email, a set of institutional ID numbers (SSNIT, Voter ID, Passport, National Health Insurance, Driver's Licence, Tax Identification Number), and the applicant's declaration. It deliberately does NOT model three widgets that are populated by NIA staff during in-person registration rather than supplied by the applicant (the "MRW Number", "Registration Centre Number", and "Interviewer NID No." fields printed in the form's header strip), nor the raw signature/thumbprint capture widget — consistent with this registry's general practice of excluding staff-populated and raw-biometric-capture widgets. Applying for a Ghana Card requires in-person attendance at an NIA registration centre for biometric capture; this schema does not submit the application itself, and the live source (nia.gov.gh) is always authoritative. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Republic of Ghana or the National Identification Authority.

Registry entry

gh/nia/ghana-card-application-form-1a

Jurisdiction
Ghana · national
Version
1.0.0
Verification
draft

Authoritative source Form One (regulation 3(1)), "National Identity Card Application Form"

Machine access

Registry catalog
registry/index.jsonone record per schema id

Field reference

123 fields, read from the published schema.json, with names, types, requiredness, and validation as the document states them. The live government form remains the authoritative source.

Fields

  • applicantTypeCitizen boolean optional

    Whether the applicant is applying as a Ghanaian citizen. One of four mutually exclusive applicant-type checkboxes printed under "TYPE OF APPLICANT *"; the form requires exactly one to be ticked, but that overall choice is not machine-enforceable beyond the mutual-exclusivity captured in exclusivityGroups (see notes).

  • applicantTypePermanentlyResident boolean optional

    Whether the applicant is applying as a permanently resident non-citizen.

  • applicantTypePersonWithResidencePermit boolean optional

    Whether the applicant is applying as a non-citizen holding a residence permit.

  • applicantTypeRefugee boolean optional

    Whether the applicant is applying as a refugee.

  • requestTypeIssuance boolean optional

    Whether this application is for first-time issuance of a Ghana Card. One of four mutually exclusive request-type checkboxes printed under "TYPE OF REQUEST*".

  • requestTypeUpdate boolean optional

    Whether this application is to update particulars on an existing Ghana Card.

  • requestTypeReplacement boolean optional

    Whether this application is to replace a lost, damaged, or stolen Ghana Card.

  • requestTypeReIssue boolean optional

    Whether this application is to re-issue a Ghana Card.

  • dateOfApplication date required

    The date this application is submitted.

  • existingNidNumber string optional

    The applicant's existing Ghana Card / National ID number, when this application is an Update, Replacement, or Re-Issue rather than a first-time Issuance.

    length: 0–15classification: sensitive-pii
  • surname string required

    The applicant's surname.

    length: 0–24classification: pii
  • sex enum required

    The applicant's sex. The source form prints only a 2-character-wide combed text box with no printed candidate values; "M"/"F" is modelled here as the universal single-letter convention this box's width structurally accommodates (see VERIFICATION.md).

    enum: M | Fclassification: pii
  • forenames string required

    The applicant's first name and other given names.

    length: 0–30classification: pii
  • maritalStatusSingle boolean optional

    One of five mutually exclusive marital-status checkboxes printed under "Marital Status *:".

  • maritalStatusMarried boolean optional

    Married

  • maritalStatusLegallySeparated boolean optional

    Legally Separated

  • maritalStatusDivorced boolean optional

    Divorced

  • maritalStatusWidowed boolean optional

    Widowed

  • previousOrMaidenNames string optional

    Any previous or maiden names the applicant has used.

    length: 0–35classification: pii
  • height integer optional

    The applicant's height in centimetres.

    range: 0–999classification: sensitive-pii
  • colourOfEyes string optional

    The applicant's eye colour.

    length: 0–6classification: sensitive-pii
  • colourOfHair string optional

    The applicant's hair colour.

    length: 0–8classification: sensitive-pii
  • disabilityCode string optional

    A disability code, per the form's own "Disability / Code:" label. The form does not print a lookup table of valid codes.

    length: 0–3classification: health
  • educationLevelNone boolean optional

    One of five mutually exclusive education-level checkboxes printed under "Level of Education *:".

  • educationLevelBasic boolean optional

    Basic

  • educationLevelSecondary boolean optional

    Secondary

  • educationLevelTertiary boolean optional

    Tertiary

  • educationLevelHigher boolean optional

    Higher

  • birthCertificateNo string optional

    The applicant's birth certificate number.

    length: 0–22classification: sensitive-pii
  • birthCertificateIssuedDate date optional

    The date the applicant's birth certificate was issued.

  • dateOfBirth date required

    The applicant's date of birth.

    classification: sensitive-pii
  • dateOfBirthEstimated boolean optional

    Whether the date of birth entered is an estimate rather than a confirmed date.

  • nationalityAtBirth string required

    The applicant's nationality at birth. The 3-character-wide combed box indicates a short nationality code is expected, not a full country name (see VERIFICATION.md).

    length: 0–3classification: pii
  • currentNationality string required

    The applicant's current nationality, as a short code (see nationalityAtBirth).

    length: 0–3classification: pii
  • placeOfBirthVillageTown string optional

    The village or town where the applicant was born.

    length: 0–12classification: pii
  • placeOfBirthRegionCountry string optional

    The region (if born in Ghana) or country (if born abroad) where the applicant was born, as a short code.

    length: 0–3classification: pii
  • placeOfBirthDistrictState string optional

    The district (if born in Ghana) or state (if born abroad) where the applicant was born.

    length: 0–12classification: pii
  • hometownVillageTown string required

    The applicant's hometown village or town.

    length: 0–12classification: pii
  • hometownRegionCountry string required

    The applicant's hometown region or country, as a short code.

    length: 0–3classification: pii
  • hometownDistrictState string required

    The applicant's hometown district or state.

    length: 0–12classification: pii
  • occupation string required

    The applicant's occupation. The 4-character-wide combed box indicates a short occupation code is expected rather than a free-text job title (see VERIFICATION.md).

    length: 0–4classification: pii
  • residentialVillageTown string required

    The village or town of the applicant's residential address.

    length: 0–12classification: pii
  • residentialRegionCountry string required

    The region or country of the applicant's residential address, as a short code.

    length: 0–3classification: pii
  • residentialDistrictState string required

    The district or state of the applicant's residential address.

    length: 0–12classification: pii
  • houseNo string optional

    The house number of the applicant's residential address.

    length: 0–12classification: pii
  • streetName string optional

    The street name of the applicant's residential address.

    length: 0–19classification: pii
  • communityAreaName string optional

    The community/area name of the applicant's residential address.

    length: 0–21classification: pii
  • zipPostalCode string optional

    The ZIP/postal code of the applicant's residential address.

    length: 0–7classification: pii
  • postalAddress string optional

    The applicant's postal address.

    length: 0–31classification: pii
  • digitalAddressCode string optional

    The applicant's Ghana Post GPS digital address code.

    length: 0–18classification: pii
  • languageSpoken1 string optional

    A language spoken by the applicant. The form prints 14 identical blank boxes (numbered 1-14) under "LANGUAGE(S) SPOKEN :"; each is independently optional. The 3-character-wide combed box on each suggests a short language code, not a full language name (see VERIFICATION.md).

    length: 0–3
  • languageSpoken2 string optional

    A language spoken by the applicant (blank 2 of 14 under "LANGUAGE(S) SPOKEN :").

    length: 0–3
  • languageSpoken3 string optional

    A language spoken by the applicant (blank 3 of 14 under "LANGUAGE(S) SPOKEN :").

    length: 0–3
  • languageSpoken4 string optional

    A language spoken by the applicant (blank 4 of 14 under "LANGUAGE(S) SPOKEN :").

    length: 0–3
  • languageSpoken5 string optional

    A language spoken by the applicant (blank 5 of 14 under "LANGUAGE(S) SPOKEN :").

    length: 0–3
  • languageSpoken6 string optional

    A language spoken by the applicant (blank 6 of 14 under "LANGUAGE(S) SPOKEN :").

    length: 0–3
  • languageSpoken7 string optional

    A language spoken by the applicant (blank 7 of 14 under "LANGUAGE(S) SPOKEN :").

    length: 0–3
  • languageSpoken8 string optional

    A language spoken by the applicant (blank 8 of 14 under "LANGUAGE(S) SPOKEN :").

    length: 0–3
  • languageSpoken9 string optional

    A language spoken by the applicant (blank 9 of 14 under "LANGUAGE(S) SPOKEN :").

    length: 0–3
  • languageSpoken10 string optional

    A language spoken by the applicant (blank 10 of 14 under "LANGUAGE(S) SPOKEN :").

    length: 0–3
  • languageSpoken11 string optional

    A language spoken by the applicant (blank 11 of 14 under "LANGUAGE(S) SPOKEN :").

    length: 0–3
  • languageSpoken12 string optional

    A language spoken by the applicant (blank 12 of 14 under "LANGUAGE(S) SPOKEN :").

    length: 0–3
  • languageSpoken13 string optional

    A language spoken by the applicant (blank 13 of 14 under "LANGUAGE(S) SPOKEN :").

    length: 0–3
  • languageSpoken14 string optional

    A language spoken by the applicant (blank 14 of 14 under "LANGUAGE(S) SPOKEN :").

    length: 0–3
  • fathersFullName string required

    The applicant's father's full name.

    length: 0–29classification: pii
  • fathersNationality string optional

    The applicant's father's nationality, as a short code.

    length: 0–3classification: pii
  • fathersHometownVillageTown string optional

    The village or town of the applicant's father's home town.

    length: 0–13classification: pii
  • fathersHometownRegionCountry string optional

    The region or country of the applicant's father's home town, as a short code.

    length: 0–3classification: pii
  • fathersHometownDistrictState string optional

    The district or state of the applicant's father's home town.

    length: 0–13classification: pii
  • isFatherAlive boolean optional

    Whether the applicant's father is alive. A genuine two-option AcroForm radio-button field (export values Yes/No), unlike the checkbox groups elsewhere on this form.

  • mothersFullName string required

    The applicant's mother's full name.

    length: 0–29classification: pii
  • mothersMaidenName string optional

    The applicant's mother's maiden name.

    length: 0–29classification: pii
  • mothersNationality string optional

    The applicant's mother's nationality, as a short code.

    length: 0–3classification: pii
  • mothersHometownVillageTown string optional

    The village or town of the applicant's mother's home town.

    length: 0–13classification: pii
  • mothersHometownRegionCountry string optional

    The region or country of the applicant's mother's home town, as a short code.

    length: 0–3classification: pii
  • mothersHometownDistrictState string optional

    The district or state of the applicant's mother's home town.

    length: 0–13classification: pii
  • isMotherAlive boolean optional

    Whether the applicant's mother is alive. A genuine two-option AcroForm radio-button field (export values Yes_2/No_2).

  • nextOfKinFullName string optional

    The full name of the applicant's next of kin.

    length: 0–32classification: pii
  • nextOfKinAddress string optional

    The address of the applicant's next of kin.

    length: 0–32classification: pii
  • spouse1FullName string optional

    The full name of a spouse of the applicant. The form's own SPOUSE(S) LIST bounds this at 5 spouses, printing: "Note: In case of more than five (5) Spouses, please use Spouses Form" — a companion form outside this schema's scope for a 6th+ spouse.

    length: 0–24classification: pii
  • spouse1Nationality string optional

    The nationality of spouse 1 of the applicant, as a short code.

    length: 0–3classification: pii
  • spouse2FullName string optional

    The full name of spouse 2 of the applicant.

    length: 0–24classification: pii
  • spouse2Nationality string optional

    The nationality of spouse 2 of the applicant, as a short code.

    length: 0–3classification: pii
  • spouse3FullName string optional

    The full name of spouse 3 of the applicant.

    length: 0–24classification: pii
  • spouse3Nationality string optional

    The nationality of spouse 3 of the applicant, as a short code.

    length: 0–3classification: pii
  • spouse4FullName string optional

    The full name of spouse 4 of the applicant.

    length: 0–24classification: pii
  • spouse4Nationality string optional

    The nationality of spouse 4 of the applicant, as a short code.

    length: 0–3classification: pii
  • spouse5FullName string optional

    The full name of spouse 5 of the applicant.

    length: 0–24classification: pii
  • spouse5Nationality string optional

    The nationality of spouse 5 of the applicant, as a short code.

    length: 0–3classification: pii
  • dateOfFirstResidenceInGhana date optional

    The date the applicant first took up residence in Ghana. Printed under "NON CITIZEN ONLY :".

  • issueDateOfLastResidencePermit date optional

    The issue date of the applicant's most recent residence permit.

  • expiryDateOfLastResidencePermit date optional

    The expiry date of the applicant's most recent residence permit.

  • employerName string optional

    The name of the applicant's employer.

    length: 0–16classification: pii
  • employerAddress string optional

    The address of the applicant's employer.

    length: 0–31classification: pii
  • employerTelNumber1 string optional

    The employer's first telephone number.

    length: 0–10classification: pii
  • employerTelNumber2 string optional

    The employer's second telephone number.

    length: 0–10classification: pii
  • verificationDocumentType string optional

    The type of document presented to verify the applicant's identity/particulars.

    length: 0–17
  • verificationDocumentNumber string optional

    The document number, or National ID number, of the verification document.

    length: 0–16classification: sensitive-pii
  • verificationDocumentDateIssued date optional

    The date the verification document was issued.

  • verificationDocumentAdditionalNumber string optional

    A second combed text widget positioned directly beneath the "Document No. / NID" field, with no printed label of its own anywhere on the form. Its purpose is undefined by the source; modelled here as an optional field on the same basis as the printed field immediately above it, not asserted to carry any specific meaning (see VERIFICATION.md).

    length: 0–16
  • otherCountryOfNationality string optional

    For a dual citizen, the applicant's other country of nationality, as a short code. Printed under "DUAL CITIZENSHIP ONLY :".

    length: 0–3classification: pii
  • dualNationalityCertificateNo string optional

    The applicant's dual nationality certificate number.

    length: 0–16classification: sensitive-pii
  • naturalizationRegistrationCertNo string optional

    The applicant's naturalization or registration certificate number.

    length: 0–22classification: sensitive-pii
  • localPhoneNumber1 string optional

    A local (Ghana) telephone number for the applicant. Printed as 4 blank boxes under "Local Phone Numbers :".

    length: 0–14classification: pii
  • localPhoneNumber2 string optional

    Local phone number 2 of 4.

    length: 0–14classification: pii
  • localPhoneNumber3 string optional

    Local phone number 3 of 4.

    length: 0–14classification: pii
  • localPhoneNumber4 string optional

    Local phone number 4 of 4.

    length: 0–14classification: pii
  • foreignPhoneNumber1 string optional

    A foreign telephone number for the applicant. Printed as 2 blank boxes under "Foreign Numbers :".

    length: 0–14classification: pii
  • foreignPhoneNumber2 string optional

    Foreign phone number 2 of 2.

    length: 0–14classification: pii
  • emailAddress string optional

    The applicant's email address.

    patternlength: 0–31classification: pii
  • ssnitNo string optional

    The applicant's Social Security and National Insurance Trust (SSNIT) number.

    length: 0–22classification: financial
  • ssnitDateJoined date optional

    The date the applicant joined SSNIT.

  • voterIdNo string optional

    The applicant's Voter ID number.

    length: 0–22classification: sensitive-pii
  • voterIdDateIssued date optional

    The date the applicant's Voter ID was issued.

  • passportNo string optional

    The applicant's passport number.

    length: 0–22classification: sensitive-pii
  • passportDateIssued date optional

    The date the applicant's passport was issued.

  • nationalHealthInsuranceNo string optional

    The applicant's National Health Insurance Scheme (NHIS) number.

    length: 0–22classification: health
  • nationalHealthInsuranceExpiryDate date optional

    The expiry date of the applicant's NHIS card.

  • driverLicenceNo string optional

    The applicant's driver's licence number.

    length: 0–22classification: sensitive-pii
  • driverLicenceDateIssued date optional

    The date the applicant's driver's licence was issued.

  • taxIdentificationNumber string optional

    The applicant's Tax Identification Number.

    length: 0–22classification: financial
  • tinDateIssued date optional

    The date the applicant's TIN was issued.

  • applicantIsChallenged boolean optional

    Whether the applicant is a challenged (disabled) person, printed immediately above the form's declaration text describing an applicant whose "hand was guided to make my mark" in place of a signature.

Verification record

This file is the source-review record for this document version. It documents the provenance of the published fields/documents and states the current verification claim honestly.

Current claim

  • status: draft
  • verification.method: manual-source-review-v1
  • verification.lastVerifiedAt: 2026-07-12

This is GovSchema Standard Research cycle GOV-2510 (child of GOV-2507). It opens Ghana as the registry's 41st jurisdiction, via the National ID & Civic Documents vertical, sourced from the National Identification Authority's (NIA) "Form One" (regulation 3(1)), the "NATIONAL IDENTITY CARD APPLICATION FORM" — commonly the "Ghana Card Application Form 1-A."

Sources examined

Source 1 — the PDF itself (chosen as source.url)
  • URL: https://nia.gov.gh/wp-content/uploads/Ghana-Card-Application-Form-Form-1-A.pdf — NIA's own site. Fetched directly via curl: HTTP 200, Content-Type: application/pdf, 498,907 bytes, Last-Modified: Mon, 16 Feb 2026 12:10:31 GMT, sha256: 3f401681db2e6d1f39fcc16b78c6b69a71d81a43075789513de29d00593bc5fa. Re-checked live at verification time (curl -o /dev/null -w '%{http_code}') — still HTTP 200, unauthenticated, no login/paywall gate.
The child-issue's "byte-identical mirror" claim did not hold up — disclosed correction

The GOV-2510 issue description, inherited from GOV-2507's scouting pass, asserted this form was "cross-confirmed byte-identical against a third-party mirror (fims.org.gh)." This schema's own re-verification found that claim inaccurate and did not rely on it:

  • A direct fetch of the literal path implied (fims.org.gh/wp-content/uploads/Ghana-Card-Application-Form-Form-1-A.pdf) returns HTTP 404 (a generic WordPress 404 page, confirmed by reading the response body — not a PDF at all).
  • A web search of fims.org.gh's actual published forms shows that site hosts a different form entirely: FIMS ("Foreigner Identification Management System") publishes the Non-Citizen Ghana Card application ("Form One" under regulation 3(1), for refugees/non-citizens specifically), a distinct document from NIA's own Form 1-A for the general citizen/resident population, at fims.org.gh/wp-content/uploads/application_form.pdf / Application-Form.pdf — not a mirror of this schema's source PDF.
  • This schema therefore cites only the direct NIA fetch (Source 1) as source.url, with no second-mirror byte-hash cross-check performed or claimed. The 129-widget field count the issue also asserted, however, did independently reproduce exactly against this schema's own from-scratch pdfjs-dist extraction (below) — so that specific claim from the scouting pass held up even though the "byte-identical mirror" detail did not. This distinction — verifying each sub-claim independently rather than accepting or rejecting an inherited claim as a single unit — follows this registry's established practice (cf. GOV-2489's finding on a similarly mixed corroboration).
Source 2 — pdfjs-dist structural extraction (own re-derivation)
  • getDocument().promise + page.getAnnotations({intent:"display"}) across both pages confirms 129 real Widget annotations84 on page 1, 45 on page 2 — matching the issue's own count. getFieldObjects() confirms IsAcroFormPresent-style structure with 127 distinct field-name keys (two of which, Is Father alive and Is Mother alive, are genuine two-option AcroForm radio button fields — each backed by 2 widgets sharing one field name — accounting for the 129-widgets/127-names difference).
  • Unlike several other jurisdictions' forms in this registry (Kenya, Vietnam), this form's widgets carry descriptive, largely self-documenting internal field names (SURNAME, Full Name of Father, SSNIT No, etc.), not generic XFA-style tokens — so most fields did not require the coordinate-correlation technique used elsewhere. It was still needed for: repeated generic names re-used across sections (Village/Village_2/ Village_3/Village_4/Village_5, Country/Country_2.../District/ District_2...), the numbered blank grids ("1""14" for languages spoken; "1_2""4_2"/"1_3""2_3" for local/foreign phone numbers), and two ambiguous fields (M, undefined_18) with no obvious printed label of their own. getTextContent() per page (using each item's transform matrix for PDF-space x/y) was extracted and every widget's rect correlated against the nearest text at matching y-coordinate to resolve these.
  • getFieldObjects()'s per-widget charLimit (the AcroForm's own combed text-field character limit) was read for every Tx widget and used directly as this schema's validation.maxLength — a stronger, more source-faithful basis than estimating from rendered widget width. This surfaced a material, disclosed pattern: **all nine Nationality* widgets and the Other Nationality widget carry charLimit: 3**, SEX carries charLimit: 2, and each of the 14 language-spoken blanks carries charLimit: 3 — physical constraints too narrow for free-text country names, full sex words, or most language names, indicating the form expects short codes/abbreviations in these boxes rather than free text. This schema follows that physical evidence (maxLength: 3 on nationality/ language fields, an M/F enum on sex) rather than inventing full-text semantics the AcroForm itself does not accommodate.
  • OCCUPATION (charLimit: 4) and Disability (charLimit: 3) are similarly narrow; both are modelled as short strings with a description disclosing the narrow-width inference rather than presenting them as ordinary free-text fields, consistent with the form's own combed-field design (independently confirmed at a uniform ≈15pt-per-character combed width across every checked field, e.g. Colour of Eyes at 90.6pt/6 chars and Disability at 45.48pt/3 chars).
Source 3 — legal-currency and administering-body check
  • Confirmed via a fresh web search that the National Identification Authority Act, 2006 (Act 707) establishes NIA (the form's administering authority), and that the National Identity Register Act, 2008 (Act 750) — the exact instrument the form's own declaration text cites ("liable to prosecution in accordance with Section 40 of the National Identity Register Act, 2008 (Act 750)") — remains the governing statute for the identity register. Independent reporting from 2026 (NIA marking "20 years since its establishment" under Act 707, and a July–August 2026 IOM-partnered border registration exercise) confirms NIA is a live, currently operating agency, not a dormant or superseded one.
  • https://nia.gov.gh/ itself returns HTTP 200 on a fresh direct fetch.

Field inventory and scoping/disclosure decisions

  • 129 widgets → 123 modelled fields[] + 1 documents[] entry. The reconciliation: 4 widgets are deliberately excluded as staff-populated, not applicant-suppliedM ("MRW Number*:"), Interviewer ("Interviewer NID No.*:"), and Centre Number ("Registration Centre Number*:"), all printed in the form's administrative header strip alongside the applicant-facing Date of Application/Existing NID Number fields, and Signature1_es_:signer:signature (the raw signature/thumbprint capture widget) — consistent with this registry's general practice of excluding officer/witness/interviewer fields (cf. ke/nrb, GOV-2500) and raw signature-capture widgets. The two genuine 2-widget radio fields (Is Father alive, Is Mother alive) each collapse to 1 boolean field. 129 − 4 (excluded) − 2 (radio-pair collapse) = 123, matching the field count published.
  • Four mutually-exclusive checkbox groups (TYPE OF APPLICANT , TYPE OF REQUEST, Marital Status , Level of Education ) are each backed by independent Btn-type checkbox widgets in the AcroForm, not a single radio field — confirmed via getFieldObjects() (each carries its own distinct field name, unlike the true Is Father/Mother alive radios). Each group is modelled as N independently optional boolean fields plus an exclusivityGroups entry (SPEC §8.4) enforcing "at most one true" — machine-checked. The form marks all four groups mandatory with a printed *, i.e. "exactly one must be true," but exclusivityGroups only expresses the "at most one" half; the "at least one" half is not machine-checkable with this field model's flat boolean groups and no when-triggered requirePresent, so it is disclosed here in prose only — the same disclosed-not-encoded pattern as ke/nrb's "at least one supporting document" constraint (GOV-2500).
  • sex is modelled as enum: ["M", "F"], not free-text string — a deliberate departure from this registry's usual "no printed options → keep as string" default (cf. ke/nrb's maritalStatus), justified here by the widget's own charLimit: 2, a structural AcroForm fact (not a visual estimate) that makes any answer beyond a 1–2 letter code physically unenterable in the live PDF.
  • undefined_18 (verificationDocumentAdditionalNumber): a combed Tx widget (charLimit: 16) positioned immediately beneath the "Document No. / NID" field, with no printed text label anywhere on the page at its position — confirmed by full-page getTextContent() review, not merely absence at first glance. Modelled as an optional string with its undefined status disclosed in the field's own description, the same disclosure pattern ke/nrb used for its unlabelled "R.Number" fields (GOV-2500).
  • M ("MRW Number*:", charLimit: 4) is excluded from fields[] entirely (see above) rather than modelled with a disclosed-unknown description, because — unlike undefined_18 — it sits inside the administrative header block alongside Centre Number/Interviewer NID No., where the surrounding fields are unambiguously staff-populated; the acronym's exact meaning is not defined by the source and is not asserted.
  • Non-citizen-only fields (NON CITIZEN ONLY : — residence-permit dates, employer name/address/telephones) and dual-citizenship-only fields (DUAL CITIZENSHIP ONLY : — other nationality, dual-nationality certificate no., naturalization/registration cert. no.) each carry a visibleWhen condition keyed off applicantTypeCitizen ({"not": {"field": "applicantTypeCitizen", "equals": true}} for the former, {"field": "applicantTypeCitizen", "equals": true} for the latter) — a disclosed inference from the section headings and the applicantTypeCitizen boolean this schema itself defines, not a printed cross-reference on the form (the form does not explicitly say "only if applicantTypeCitizen is unchecked"), but a direct, defensible reading of what "NON CITIZEN ONLY"/"DUAL CITIZENSHIP ONLY" mean against this schema's own applicant-type field model.
  • Spouse list bounded at 5 (spouse1FullNamespouse5Nationality, flattened per this registry's numbered-field convention since v0.3's field model is flat, §6.1): the form's own footnote directly under the list reads "*(Note: In case of more than five (5) Spouses, please use Spouses Form)*" — a disclosed, printed escape hatch to a companion form outside this schema's scope, the same pattern as several other bounded repeating-group forms in this registry (e.g. dk/cpr's entrant/child convention, GOV-2260).
  • Languages spoken (14 blanks), local phone numbers (4 blanks), and foreign phone numbers (2 blanks) are each flattened to N independently optional fields (languageSpoken1languageSpoken14, localPhoneNumber1localPhoneNumber4, foreignPhoneNumber1/2) for the same flat-field-model reason.
  • Nationality-family fields (nationalityAtBirth, currentNationality, otherCountryOfNationality, fathersNationality, mothersNationality, spouse1Nationalityspouse5Nationality, and the region/country half of every "Village/Town, Region/Country, District/State" triple) are all modelled as maxLength: 3 strings per the charLimit: 3 finding above, described as "a short code" without asserting a specific standard (e.g. ISO 3166-1 alpha-3) the source itself does not name.
  • height is modelled as integer (not string), minimum: 0, maximum: 999 — the 3-digit combed-field structural cap, not an invented "realistic human height" range.
  • Email pattern: emailAddress carries a basic ^[^@\s]+@[^@\s]+\.[^@\s]+$ validation pattern, exercised by a dedicated mutation-control fixture (see below).
  • applicantDeclaration (documents[], category attestation) quotes the form's own declaration paragraph verbatim, including its citation of "Section 40 of the National Identity Register Act, 2008 (Act 750)" (independently confirmed current, Source 3 above) and its reference to an applicant whose "hand was guided to make my mark" — which also motivates modelling the adjacent applicantIsChallenged ("Challenged :") checkbox as a boolean field, disclosed as an inference from its position immediately above that declaration text rather than a fully explained printed instruction.
  • No documents[] entry models the signature/thumbprint or a payment fee — the source PDF prints no fee schedule on the form itself, and the signature/thumbprint widget is excluded per this registry's general raw-biometric-capture practice (see above).

Conformance run

Two valid fixtures were built against schema.json with a from-scratch, ajv-free checker script (evaluates required/requiredWhen with visibility gating, per-type validation keywords, exclusivityGroups, and documents[] required/requiredWhen directly against the meta-schema's own rules) — not any author-provided tooling, since no shared tools/conformance-runner.mjs exists yet in this repo:

  • citizen-first-time-issuance-single.json — an unmarried female Ghanaian citizen applying for first-time issuance, with a dual-citizenship disclosure (exercising the applicantTypeCitizen-gated visibleWhen fields). 0 errors.
  • permanent-resident-update-married-with-spouse.json — a married male permanently-resident non-citizen applying to update an existing card, with spouse, non-citizen-only (residence permit/employer), verification document, and several institutional-ID fields populated (exercising the opposite visibleWhen branch). 0 errors.

Five mutation-control fixtures, each a single deliberate violation of the first valid fixture, each correctly raised exactly 1 error:

  • mutation-control-missing-required-field.json — removes surname (required) → 1 error.
  • mutation-control-missing-required-document.json — omits the applicantDeclaration document → 1 error.
  • mutation-control-sex-enum-violation.json — sets sex to "X" (not in the ["M","F"] enum) → 1 error.
  • mutation-control-email-pattern-violation.json — sets emailAddress to "not-an-email" → 1 error (pattern violation).
  • mutation-control-exclusivity-violation.json — sets both applicantTypeCitizen and applicantTypePermanentlyResident to true → 1 error (exclusivityGroups "at most one" violation), the one rule category the two prior KE/VN-cycle conformance write-ups in this registry had not yet exercised.

node tools/validate.mjs and node tools/validate-ajv.mjs (JSON Schema draft 2020-12 meta-schema conformance) both pass clean for registry/gh/nia/ghana-card-application-form-1a/1.0.0/schema.json.

Backlog note

Ghana now stands at 1 of 6 verticals (National ID & Civic Documents). Passport, DMV, Business Formation, Taxes, and Visa all remain open for a future cycle; none were screened this cycle (this cycle's GOV-2510 scope was limited to authoring the pre-identified National ID candidate from GOV-2507).

View the raw record (VERIFICATION.md)

Version history

  • 1.0.0 draft latest this page has verification record schema.json

Independent and non-affiliated

GovSchema is an independent, open-source project. This reference is not produced, reviewed, or endorsed by National Identification Authority or any government. The authoritative source is always the live government form and its official instructions.