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
Authoritative source Form One (regulation 3(1)), "National Identity Card Application Form"
Machine access
- Schema document
registry/gh/nia/ghana-card-application-form-1a/1.0.0/schema.jsonapplication/schema+json- Verification record
registry/gh/nia/ghana-card-application-form-1a/1.0.0/VERIFICATION.mdtext/markdown- 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
-
applicantTypeCitizenboolean optionalWhether 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).
-
applicantTypePermanentlyResidentboolean optionalWhether the applicant is applying as a permanently resident non-citizen.
-
applicantTypePersonWithResidencePermitboolean optionalWhether the applicant is applying as a non-citizen holding a residence permit.
-
applicantTypeRefugeeboolean optionalWhether the applicant is applying as a refugee.
-
requestTypeIssuanceboolean optionalWhether this application is for first-time issuance of a Ghana Card. One of four mutually exclusive request-type checkboxes printed under "TYPE OF REQUEST*".
-
requestTypeUpdateboolean optionalWhether this application is to update particulars on an existing Ghana Card.
-
requestTypeReplacementboolean optionalWhether this application is to replace a lost, damaged, or stolen Ghana Card.
-
requestTypeReIssueboolean optionalWhether this application is to re-issue a Ghana Card.
-
dateOfApplicationdate requiredThe date this application is submitted.
-
existingNidNumberstring optionalThe 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 -
surnamestring requiredThe applicant's surname.
length: 0–24classification: pii -
sexenum requiredThe 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 -
forenamesstring requiredThe applicant's first name and other given names.
length: 0–30classification: pii -
maritalStatusSingleboolean optionalOne of five mutually exclusive marital-status checkboxes printed under "Marital Status *:".
-
maritalStatusMarriedboolean optionalMarried
-
maritalStatusLegallySeparatedboolean optionalLegally Separated
-
maritalStatusDivorcedboolean optionalDivorced
-
maritalStatusWidowedboolean optionalWidowed
-
previousOrMaidenNamesstring optionalAny previous or maiden names the applicant has used.
length: 0–35classification: pii -
heightinteger optionalThe applicant's height in centimetres.
range: 0–999classification: sensitive-pii -
colourOfEyesstring optionalThe applicant's eye colour.
length: 0–6classification: sensitive-pii -
colourOfHairstring optionalThe applicant's hair colour.
length: 0–8classification: sensitive-pii -
disabilityCodestring optionalA 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 -
educationLevelNoneboolean optionalOne of five mutually exclusive education-level checkboxes printed under "Level of Education *:".
-
educationLevelBasicboolean optionalBasic
-
educationLevelSecondaryboolean optionalSecondary
-
educationLevelTertiaryboolean optionalTertiary
-
educationLevelHigherboolean optionalHigher
-
birthCertificateNostring optionalThe applicant's birth certificate number.
length: 0–22classification: sensitive-pii -
birthCertificateIssuedDatedate optionalThe date the applicant's birth certificate was issued.
-
dateOfBirthdate requiredThe applicant's date of birth.
classification: sensitive-pii -
dateOfBirthEstimatedboolean optionalWhether the date of birth entered is an estimate rather than a confirmed date.
-
nationalityAtBirthstring requiredThe 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 -
currentNationalitystring requiredThe applicant's current nationality, as a short code (see nationalityAtBirth).
length: 0–3classification: pii -
placeOfBirthVillageTownstring optionalThe village or town where the applicant was born.
length: 0–12classification: pii -
placeOfBirthRegionCountrystring optionalThe region (if born in Ghana) or country (if born abroad) where the applicant was born, as a short code.
length: 0–3classification: pii -
placeOfBirthDistrictStatestring optionalThe district (if born in Ghana) or state (if born abroad) where the applicant was born.
length: 0–12classification: pii -
hometownVillageTownstring requiredThe applicant's hometown village or town.
length: 0–12classification: pii -
hometownRegionCountrystring requiredThe applicant's hometown region or country, as a short code.
length: 0–3classification: pii -
hometownDistrictStatestring requiredThe applicant's hometown district or state.
length: 0–12classification: pii -
occupationstring requiredThe 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 -
residentialVillageTownstring requiredThe village or town of the applicant's residential address.
length: 0–12classification: pii -
residentialRegionCountrystring requiredThe region or country of the applicant's residential address, as a short code.
length: 0–3classification: pii -
residentialDistrictStatestring requiredThe district or state of the applicant's residential address.
length: 0–12classification: pii -
houseNostring optionalThe house number of the applicant's residential address.
length: 0–12classification: pii -
streetNamestring optionalThe street name of the applicant's residential address.
length: 0–19classification: pii -
communityAreaNamestring optionalThe community/area name of the applicant's residential address.
length: 0–21classification: pii -
zipPostalCodestring optionalThe ZIP/postal code of the applicant's residential address.
length: 0–7classification: pii -
postalAddressstring optionalThe applicant's postal address.
length: 0–31classification: pii -
digitalAddressCodestring optionalThe applicant's Ghana Post GPS digital address code.
length: 0–18classification: pii -
languageSpoken1string optionalA 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 -
languageSpoken2string optionalA language spoken by the applicant (blank 2 of 14 under "LANGUAGE(S) SPOKEN :").
length: 0–3 -
languageSpoken3string optionalA language spoken by the applicant (blank 3 of 14 under "LANGUAGE(S) SPOKEN :").
length: 0–3 -
languageSpoken4string optionalA language spoken by the applicant (blank 4 of 14 under "LANGUAGE(S) SPOKEN :").
length: 0–3 -
languageSpoken5string optionalA language spoken by the applicant (blank 5 of 14 under "LANGUAGE(S) SPOKEN :").
length: 0–3 -
languageSpoken6string optionalA language spoken by the applicant (blank 6 of 14 under "LANGUAGE(S) SPOKEN :").
length: 0–3 -
languageSpoken7string optionalA language spoken by the applicant (blank 7 of 14 under "LANGUAGE(S) SPOKEN :").
length: 0–3 -
languageSpoken8string optionalA language spoken by the applicant (blank 8 of 14 under "LANGUAGE(S) SPOKEN :").
length: 0–3 -
languageSpoken9string optionalA language spoken by the applicant (blank 9 of 14 under "LANGUAGE(S) SPOKEN :").
length: 0–3 -
languageSpoken10string optionalA language spoken by the applicant (blank 10 of 14 under "LANGUAGE(S) SPOKEN :").
length: 0–3 -
languageSpoken11string optionalA language spoken by the applicant (blank 11 of 14 under "LANGUAGE(S) SPOKEN :").
length: 0–3 -
languageSpoken12string optionalA language spoken by the applicant (blank 12 of 14 under "LANGUAGE(S) SPOKEN :").
length: 0–3 -
languageSpoken13string optionalA language spoken by the applicant (blank 13 of 14 under "LANGUAGE(S) SPOKEN :").
length: 0–3 -
languageSpoken14string optionalA language spoken by the applicant (blank 14 of 14 under "LANGUAGE(S) SPOKEN :").
length: 0–3 -
fathersFullNamestring requiredThe applicant's father's full name.
length: 0–29classification: pii -
fathersNationalitystring optionalThe applicant's father's nationality, as a short code.
length: 0–3classification: pii -
fathersHometownVillageTownstring optionalThe village or town of the applicant's father's home town.
length: 0–13classification: pii -
fathersHometownRegionCountrystring optionalThe region or country of the applicant's father's home town, as a short code.
length: 0–3classification: pii -
fathersHometownDistrictStatestring optionalThe district or state of the applicant's father's home town.
length: 0–13classification: pii -
isFatherAliveboolean optionalWhether 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.
-
mothersFullNamestring requiredThe applicant's mother's full name.
length: 0–29classification: pii -
mothersMaidenNamestring optionalThe applicant's mother's maiden name.
length: 0–29classification: pii -
mothersNationalitystring optionalThe applicant's mother's nationality, as a short code.
length: 0–3classification: pii -
mothersHometownVillageTownstring optionalThe village or town of the applicant's mother's home town.
length: 0–13classification: pii -
mothersHometownRegionCountrystring optionalThe region or country of the applicant's mother's home town, as a short code.
length: 0–3classification: pii -
mothersHometownDistrictStatestring optionalThe district or state of the applicant's mother's home town.
length: 0–13classification: pii -
isMotherAliveboolean optionalWhether the applicant's mother is alive. A genuine two-option AcroForm radio-button field (export values Yes_2/No_2).
-
nextOfKinFullNamestring optionalThe full name of the applicant's next of kin.
length: 0–32classification: pii -
nextOfKinAddressstring optionalThe address of the applicant's next of kin.
length: 0–32classification: pii -
spouse1FullNamestring optionalThe 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 -
spouse1Nationalitystring optionalThe nationality of spouse 1 of the applicant, as a short code.
length: 0–3classification: pii -
spouse2FullNamestring optionalThe full name of spouse 2 of the applicant.
length: 0–24classification: pii -
spouse2Nationalitystring optionalThe nationality of spouse 2 of the applicant, as a short code.
length: 0–3classification: pii -
spouse3FullNamestring optionalThe full name of spouse 3 of the applicant.
length: 0–24classification: pii -
spouse3Nationalitystring optionalThe nationality of spouse 3 of the applicant, as a short code.
length: 0–3classification: pii -
spouse4FullNamestring optionalThe full name of spouse 4 of the applicant.
length: 0–24classification: pii -
spouse4Nationalitystring optionalThe nationality of spouse 4 of the applicant, as a short code.
length: 0–3classification: pii -
spouse5FullNamestring optionalThe full name of spouse 5 of the applicant.
length: 0–24classification: pii -
spouse5Nationalitystring optionalThe nationality of spouse 5 of the applicant, as a short code.
length: 0–3classification: pii -
dateOfFirstResidenceInGhanadate optionalThe date the applicant first took up residence in Ghana. Printed under "NON CITIZEN ONLY :".
-
issueDateOfLastResidencePermitdate optionalThe issue date of the applicant's most recent residence permit.
-
expiryDateOfLastResidencePermitdate optionalThe expiry date of the applicant's most recent residence permit.
-
employerNamestring optionalThe name of the applicant's employer.
length: 0–16classification: pii -
employerAddressstring optionalThe address of the applicant's employer.
length: 0–31classification: pii -
employerTelNumber1string optionalThe employer's first telephone number.
length: 0–10classification: pii -
employerTelNumber2string optionalThe employer's second telephone number.
length: 0–10classification: pii -
verificationDocumentTypestring optionalThe type of document presented to verify the applicant's identity/particulars.
length: 0–17 -
verificationDocumentNumberstring optionalThe document number, or National ID number, of the verification document.
length: 0–16classification: sensitive-pii -
verificationDocumentDateIssueddate optionalThe date the verification document was issued.
-
verificationDocumentAdditionalNumberstring optionalA 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 -
otherCountryOfNationalitystring optionalFor a dual citizen, the applicant's other country of nationality, as a short code. Printed under "DUAL CITIZENSHIP ONLY :".
length: 0–3classification: pii -
dualNationalityCertificateNostring optionalThe applicant's dual nationality certificate number.
length: 0–16classification: sensitive-pii -
naturalizationRegistrationCertNostring optionalThe applicant's naturalization or registration certificate number.
length: 0–22classification: sensitive-pii -
localPhoneNumber1string optionalA local (Ghana) telephone number for the applicant. Printed as 4 blank boxes under "Local Phone Numbers :".
length: 0–14classification: pii -
localPhoneNumber2string optionalLocal phone number 2 of 4.
length: 0–14classification: pii -
localPhoneNumber3string optionalLocal phone number 3 of 4.
length: 0–14classification: pii -
localPhoneNumber4string optionalLocal phone number 4 of 4.
length: 0–14classification: pii -
foreignPhoneNumber1string optionalA foreign telephone number for the applicant. Printed as 2 blank boxes under "Foreign Numbers :".
length: 0–14classification: pii -
foreignPhoneNumber2string optionalForeign phone number 2 of 2.
length: 0–14classification: pii -
emailAddressstring optionalThe applicant's email address.
patternlength: 0–31classification: pii -
ssnitNostring optionalThe applicant's Social Security and National Insurance Trust (SSNIT) number.
length: 0–22classification: financial -
ssnitDateJoineddate optionalThe date the applicant joined SSNIT.
-
voterIdNostring optionalThe applicant's Voter ID number.
length: 0–22classification: sensitive-pii -
voterIdDateIssueddate optionalThe date the applicant's Voter ID was issued.
-
passportNostring optionalThe applicant's passport number.
length: 0–22classification: sensitive-pii -
passportDateIssueddate optionalThe date the applicant's passport was issued.
-
nationalHealthInsuranceNostring optionalThe applicant's National Health Insurance Scheme (NHIS) number.
length: 0–22classification: health -
nationalHealthInsuranceExpiryDatedate optionalThe expiry date of the applicant's NHIS card.
-
driverLicenceNostring optionalThe applicant's driver's licence number.
length: 0–22classification: sensitive-pii -
driverLicenceDateIssueddate optionalThe date the applicant's driver's licence was issued.
-
taxIdentificationNumberstring optionalThe applicant's Tax Identification Number.
length: 0–22classification: financial -
tinDateIssueddate optionalThe date the applicant's TIN was issued.
-
applicantIsChallengedboolean optionalWhether 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:draftverification.method:manual-source-review-v1verification.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, atfims.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-scratchpdfjs-distextraction (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 annotations — 84 on page 1, 45 on page 2 — matching the issue's own count.getFieldObjects()confirmsIsAcroFormPresent-style structure with 127 distinct field-name keys (two of which,Is Father aliveandIs 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'stransformmatrix for PDF-space x/y) was extracted and every widget'srectcorrelated against the nearest text at matching y-coordinate to resolve these. getFieldObjects()'s per-widgetcharLimit(the AcroForm's own combed text-field character limit) was read for everyTxwidget and used directly as this schema'svalidation.maxLength— a stronger, more source-faithful basis than estimating from rendered widget width. This surfaced a material, disclosed pattern: **all nineNationality*widgets and theOther Nationalitywidget carrycharLimit: 3**,SEXcarriescharLimit: 2, and each of the 14 language-spoken blanks carriescharLimit: 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: 3on nationality/ language fields, anM/Fenum onsex) rather than inventing full-text semantics the AcroForm itself does not accommodate.OCCUPATION(charLimit: 4) andDisability(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 Eyesat 90.6pt/6 chars andDisabilityat 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[]+ 1documents[]entry. The reconciliation: 4 widgets are deliberately excluded as staff-populated, not applicant-supplied —M("MRW Number*:"),Interviewer("Interviewer NID No.*:"), andCentre Number("Registration Centre Number*:"), all printed in the form's administrative header strip alongside the applicant-facing Date of Application/Existing NID Number fields, andSignature1_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 independentBtn-type checkbox widgets in the AcroForm, not a single radio field — confirmed viagetFieldObjects()(each carries its own distinct field name, unlike the trueIs Father/Mother aliveradios). Each group is modelled as N independently optional boolean fields plus anexclusivityGroupsentry (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," butexclusivityGroupsonly expresses the "at most one" half; the "at least one" half is not machine-checkable with this field model's flat boolean groups and nowhen-triggeredrequirePresent, so it is disclosed here in prose only — the same disclosed-not-encoded pattern aske/nrb's "at least one supporting document" constraint (GOV-2500). sexis modelled asenum: ["M", "F"], not free-textstring— a deliberate departure from this registry's usual "no printed options → keep as string" default (cf.ke/nrb'smaritalStatus), justified here by the widget's owncharLimit: 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 combedTxwidget (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-pagegetTextContent()review, not merely absence at first glance. Modelled as an optional string with its undefined status disclosed in the field's owndescription, the same disclosure patternke/nrbused for its unlabelled "R.Number" fields (GOV-2500).M("MRW Number*:",charLimit: 4) is excluded fromfields[]entirely (see above) rather than modelled with a disclosed-unknown description, because — unlikeundefined_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 avisibleWhencondition keyed offapplicantTypeCitizen({"not": {"field": "applicantTypeCitizen", "equals": true}}for the former,{"field": "applicantTypeCitizen", "equals": true}for the latter) — a disclosed inference from the section headings and theapplicantTypeCitizenboolean 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 (
spouse1FullName…spouse5Nationality, 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 (
languageSpoken1…languageSpoken14,localPhoneNumber1…localPhoneNumber4,foreignPhoneNumber1/2) for the same flat-field-model reason. - Nationality-family fields (
nationalityAtBirth,currentNationality,otherCountryOfNationality,fathersNationality,mothersNationality,spouse1Nationality…spouse5Nationality, and the region/country half of every "Village/Town, Region/Country, District/State" triple) are all modelled asmaxLength: 3strings per thecharLimit: 3finding above, described as "a short code" without asserting a specific standard (e.g. ISO 3166-1 alpha-3) the source itself does not name. heightis modelled asinteger(notstring),minimum: 0,maximum: 999— the 3-digit combed-field structural cap, not an invented "realistic human height" range.- Email pattern:
emailAddresscarries a basic^[^@\s]+@[^@\s]+\.[^@\s]+$validation pattern, exercised by a dedicated mutation-control fixture (see below). applicantDeclaration(documents[], categoryattestation) 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 adjacentapplicantIsChallenged("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 theapplicantTypeCitizen-gatedvisibleWhenfields). 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 oppositevisibleWhenbranch). 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— removessurname(required) → 1 error.mutation-control-missing-required-document.json— omits theapplicantDeclarationdocument → 1 error.mutation-control-sex-enum-violation.json— setssexto"X"(not in the["M","F"]enum) → 1 error.mutation-control-email-pattern-violation.json— setsemailAddressto"not-an-email"→ 1 error (pattern violation).mutation-control-exclusivity-violation.json— sets bothapplicantTypeCitizenandapplicantTypePermanentlyResidenttotrue→ 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.0draftlatestthis pagehas verification recordschema.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.