{
  "$schema": "https://govschema.org/spec/v0.3/govschema.schema.json",
  "govschemaVersion": "0.3.0",
  "id": "gh/gis/application-for-grant-of-visa-and-permit-for-return-to-ghana",
  "version": "1.0.0",
  "title": "Application Form for Grant of a Visa and Permit for Return to Ghana",
  "description": "The Ghana Immigration Service's (GIS) standard specimen for a Re-Entry Visa/Permit, granted before an applicant's departure so they may re-enter Ghana on return, distributed unauthenticated from GIS's own forms library (gis.gov.gh/gis-forms/). Opens Ghana's Visa vertical (2 of 6, alongside National ID & Civic Documents). A genuinely scanned specimen: pdfjs-dist confirms 0 AcroForm/Widget annotations and 0 extractable text items across both pages, so every field below is read visually from the rendered page image rather than an embedded field name. A compact, single-page (plus an official-use-only page 2) form of 14 numbered items covering the applicant's full name and any previous name, nationality and date/place of birth, passport particulars (number, date/place of issue, expiry), address in Ghana (a general entry plus separately-lettered postal and residential sub-items, each with its own telephone number), an overseas address and telephone, educational qualifications and occupation, how long the applicant has been resident in Ghana and their dates of first and latest arrival, their full destination address abroad, proposed date of departure, the object of the journey and proposed length of stay abroad, reasons for wishing to return to Ghana (which the form itself flags as needing documentary support), marital status (printed as a bare blank with no enumerated options anywhere on the specimen), and the spouse's name/nationality, closing with a solemn declaration and a signature/thumbprint plus date. This is GIS's Re-Entry Visa/Permit pathway (matching the 'Re-Entry Visa' service listed on gis.gov.gh/visas/), distinct from the first-time tourist e-Visa, which remains a login-gated online portal with no downloadable specimen found at any tier — disclosed as out of scope for this schema rather than silently conflated. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Government of Ghana or the Ghana Immigration Service.",
  "status": "draft",
  "jurisdiction": {
    "country": "GH",
    "level": "national"
  },
  "authority": {
    "name": "Ghana Immigration Service",
    "abbreviation": "GIS",
    "url": "https://gis.gov.gh"
  },
  "process": {
    "type": "application",
    "language": "en"
  },
  "source": {
    "url": "https://gis.gov.gh/wp-content/uploads/2023/10/APPLICATION-FORM-FOR-GRANT-OF-A-VISA-and-PERMIT-FOR-RETURN-TO-GHANA.pdf",
    "retrievedAt": "2026-07-13",
    "documentRef": "Ghana Immigration Service, \"Application Form for Grant of a Visa/Permit for Return to Ghana\" (Re-Entry Visa/Permit specimen)"
  },
  "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-2698, continuing Ghana's research thread from GOV-2695 (parent research issue), which scouted all 5 of Ghana's remaining open verticals in parallel following GOV-2510's opening of Ghana (41st jurisdiction) via National ID. Independently re-fetched the source directly from gis.gov.gh (HTTP 200, application/pdf, 1,500,822 bytes, sha256:14bdb332f24b1fd172db3b851fa369b2235d9ba9710f58cbbc545b5f9fdc470b), matching the issue's own citation exactly. pdfjs-dist (v4, legacy build) getAnnotations() confirms 0 Widget annotations and getTextContent() confirms 0 extractable text items across both pages -- a genuinely scanned specimen (the underlying content is a raster image, not a text layer), rendered via a custom NodeCanvasFactory (page.render() with node-canvas) at 2.5x scale and read visually field-by-field, cross-checked with targeted crops of each numbered item. All 14 numbered items on page 1 plus the page-2 official-use-only block (Fee paid, Receipt No., Signature of Cashier, Stamp) match the issue's own description exactly; no discrepancy found. 33 fields[] entries derived from the 14 numbered items (several with lettered a/b/c sub-parts, e.g. item 3 nationality/date-and-place-of-birth, item 4 passport number/issue/expiry, item 5 a general Ghana-address entry plus lettered postal and residential sub-items each with their own telephone, item 8 residency-duration/first-arrival/latest-arrival), plus a signature date. Item 5 is structurally distinct from items 3/4: it carries its own header-level dotted blank ('ADDRESS IN GHANA (IN FULL)...') before its lettered (a) Postal and (b) Residential sub-items, unlike items 3/4 which go straight into lettered parts with no preceding header blank -- modelled here as a separate general addressInGhana field, disclosed in VERIFICATION.md rather than silently treated as decorative. maritalStatus is modelled as a free-text string, not an enum: the specimen prints only a bare dotted blank with no enumerated options anywhere (confirmed via a targeted crop), unlike this registry's other maritalStatus fields sourced from a specimen or corroborating edition that does print explicit options (e.g. ng/nis, ng/nimc); spouseName/spouseNationality are consequently not requiredWhen-gated on maritalStatus (no reliable machine match against free text), matching this registry's established free-text-gated-conditional convention. 3 documents[] entries: a supporting-evidence photograph requirement (both the empty photo-affixing box printed on page 1 and the page-1 'ATTACHMENTS: 1. TWO (2) CURRENT PASSPORT SIZE PHOTOGRAPHS' note, read together as the same requirement), a supporting-evidence entry for the item-12 documentary evidence the form itself flags for reasons-for-return, and an attestation entry quoting the solemn-declaration statement verbatim. The page-2 'FOR OFFICIAL USE ONLY' block (Fee paid, Receipt No., Signature of Cashier, Stamp) is excluded as staff-populated, consistent with this registry's general practice (cf. gh/nia's excluded MRW Number/Registration Centre Number/Interviewer NID No. widgets). No raw signature/thumbprint capture field is modelled, per the same convention. Confirmed via a fresh check of gis.gov.gh/visas/ that this specimen corresponds to GIS's 'Re-Entry Visa' service (granted before departure so a resident may re-enter Ghana on return), distinct from the first-time tourist e-Visa, which remains a login-gated online application portal with no downloadable blank specimen found at any tier -- disclosed as out of scope rather than silently conflated, matching this registry's rw/dgie and uy/mrree visa-scoping precedent. See VERIFICATION.md for the full sourcing record, every field-scoping judgment call, and the conformance run writeup (2 valid mock scenarios, 0 errors each; 5 mutation-control fixtures, exactly 1 error each)."
  },
  "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": "title",
      "label": "Mr./Mrs./Miss",
      "type": "enum",
      "required": true,
      "classification": "pii",
      "sourceRef": "Item 1: \"NAME (IN FULL) MR./MRS./MISS...\"",
      "validation": { "enum": ["mr", "mrs", "miss"] }
    },
    {
      "name": "fullName",
      "label": "Name (in full)",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Item 1: \"NAME (IN FULL) MR./MRS./MISS...\"",
      "validation": { "maxLength": 200 }
    },
    {
      "name": "previousName",
      "label": "Previous Name (if any)",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "Not required: an applicant with no previous name has nothing to declare here.",
      "sourceRef": "Item 2: \"PREVIOUS NAME (IF ANY)...\"",
      "validation": { "maxLength": 200 }
    },
    {
      "name": "nationality",
      "label": "Nationality",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Item 3(a): \"NATIONALITY...\"",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "dateOfBirth",
      "label": "Date of Birth",
      "type": "date",
      "required": true,
      "classification": "sensitive-pii",
      "sourceRef": "Item 3(b): \"DATE & PLACE OF BIRTH...\""
    },
    {
      "name": "placeOfBirth",
      "label": "Place of Birth",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Item 3(b): \"DATE & PLACE OF BIRTH...\"",
      "validation": { "maxLength": 150 }
    },
    {
      "name": "passportNumber",
      "label": "Passport No.",
      "type": "string",
      "required": true,
      "classification": "sensitive-pii",
      "sourceRef": "Item 4(a): \"PASSPORT NO...\"",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "passportIssueDate",
      "label": "Date of Issue",
      "type": "date",
      "required": true,
      "classification": "sensitive-pii",
      "sourceRef": "Item 4(b): \"DATE & PLACE OF ISSUE...\""
    },
    {
      "name": "passportPlaceOfIssue",
      "label": "Place of Issue",
      "type": "string",
      "required": true,
      "classification": "sensitive-pii",
      "sourceRef": "Item 4(b): \"DATE & PLACE OF ISSUE...\"",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "passportExpiryDate",
      "label": "Date of Expiry",
      "type": "date",
      "required": true,
      "classification": "sensitive-pii",
      "sourceRef": "Item 4(c): \"DATE OF EXPIRY...\""
    },
    {
      "name": "addressInGhana",
      "label": "Address in Ghana (in full)",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "Item 5's own header-level blank, printed before its lettered (a) Postal and (b) Residential sub-items -- structurally distinct from items 3/4, which carry no such preceding header blank. Modelled as a general Ghana-address entry, separate from the lettered sub-items below.",
      "sourceRef": "Item 5: \"ADDRESS IN GHANA (IN FULL)...\"",
      "validation": { "maxLength": 300 }
    },
    {
      "name": "postalAddressGhana",
      "label": "Postal Address (Office/Business)",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "Not required: an applicant without an office or business has nothing to declare here.",
      "sourceRef": "Item 5(a): \"POSTAL (OFFICE/BUSINESS)...TEL...\"",
      "validation": { "maxLength": 300 }
    },
    {
      "name": "postalTelephoneGhana",
      "label": "Postal Address Telephone",
      "type": "string",
      "required": false,
      "classification": "pii",
      "sourceRef": "Item 5(a) continuation: \"TEL...\"",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "residentialAddressGhana",
      "label": "Residential Address (H/No.)",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Item 5(b): \"RESIDENTIAL (H/NO.)...TEL...\"",
      "validation": { "maxLength": 300 }
    },
    {
      "name": "residentialTelephoneGhana",
      "label": "Residential Address Telephone",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Item 5(b) continuation: \"TEL...\"",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "overseasAddress",
      "label": "Address Overseas",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Item 6: \"ADDRESS OVERSEAS...TEL...\"",
      "validation": { "maxLength": 300 }
    },
    {
      "name": "overseasTelephone",
      "label": "Address Overseas Telephone",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Item 6 continuation: \"TEL...\"",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "educationalQualifications",
      "label": "Educational Qualifications",
      "type": "string",
      "required": true,
      "sourceRef": "Item 7: \"EDUCATIONAL QUALIFICATIONS...OCCUPATION...\"",
      "validation": { "maxLength": 200 }
    },
    {
      "name": "occupation",
      "label": "Occupation",
      "type": "string",
      "required": true,
      "sourceRef": "Item 7 continuation: \"OCCUPATION...\"",
      "validation": { "maxLength": 150 }
    },
    {
      "name": "residencyDurationGhana",
      "label": "How long resident in Ghana",
      "type": "string",
      "required": true,
      "sourceRef": "Item 8(a): \"HOW LONG RESIDENT IN GHANA...\"",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "dateOfFirstArrival",
      "label": "Date of first arrival",
      "type": "date",
      "required": true,
      "sourceRef": "Item 8(b): \"DATE OF FIRST ARRIVAL...\""
    },
    {
      "name": "dateOfLatestArrival",
      "label": "Date of latest arrival",
      "type": "date",
      "required": true,
      "sourceRef": "Item 8(c): \"DATE OF LATEST ARRIVAL...\""
    },
    {
      "name": "destinationAbroad",
      "label": "Destination abroad (give full address)",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "The source prints a two-line ruled blank for this item; modelled as a single free-text field.",
      "sourceRef": "Item 9: \"DESTINATION ABROAD (GIVE FULL ADDRESS)...\"",
      "validation": { "maxLength": 400 }
    },
    {
      "name": "dateOfDeparture",
      "label": "Date of departure",
      "type": "date",
      "required": true,
      "sourceRef": "Item 10: \"DATE OF DEPARTURE...\""
    },
    {
      "name": "objectOfJourneyAndProposedStay",
      "label": "Object of journey and proposed length of stay abroad",
      "type": "string",
      "required": true,
      "description": "The source prints a two-line ruled blank for this item; modelled as a single free-text field.",
      "sourceRef": "Item 11: \"OBJECT OF JOURNEY AND PROPOSED LENGTH OF STAY ABROAD...\"",
      "validation": { "maxLength": 400 }
    },
    {
      "name": "reasonsForReturn",
      "label": "Reasons for wishing to return to Ghana",
      "type": "string",
      "required": true,
      "description": "The source prints a three-line ruled blank for this item, followed by its own printed instruction \"(TO BE SUPPORTED BY DOCUMENTARY EVIDENCE)\" -- see the reasonsForReturnEvidence documents[] entry.",
      "sourceRef": "Item 12: \"REASONS FOR WISHING TO RETURN TO GHANA...(TO BE SUPPORTED BY DOCUMENTARY EVIDENCE)\"",
      "validation": { "maxLength": 500 }
    },
    {
      "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 dotted blank for this item, with no enumerated options anywhere on either page (confirmed via a targeted crop of this row), unlike this registry's other maritalStatus fields sourced from an edition that prints explicit options.",
      "sourceRef": "Item 13: \"MARITAL STATUS...\"",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "spouseName",
      "label": "Name of Spouse",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "Applicable only to a married applicant; not requiredWhen-gated on maritalStatus since that sibling field is free text with no reliable machine match against \"married\".",
      "sourceRef": "Item 14: \"NAME OF SPOUSE...NATIONALITY...\"",
      "validation": { "maxLength": 200 }
    },
    {
      "name": "spouseNationality",
      "label": "Spouse's Nationality",
      "type": "string",
      "required": false,
      "classification": "pii",
      "sourceRef": "Item 14 continuation: \"NATIONALITY...\"",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "signatureDate",
      "label": "Date",
      "type": "date",
      "required": true,
      "sourceRef": "Beside the (unwidgeted) signature/thumbprint line: \"DATE...SIGNATURE/THUMBPRINT OF APPLICANT\""
    }
  ],
  "documents": [
    {
      "id": "applicantPhotographs",
      "label": "Two (2) current passport-size photographs",
      "category": "supporting-evidence",
      "required": true,
      "belongsTo": "applicant",
      "constraints": {
        "mediaTypes": ["image/jpeg", "image/png"]
      },
      "sourceRef": "Page 1, empty photo-affixing box (top right, no printed caption) and \"ATTACHMENTS: 1. TWO (2) CURRENT PASSPORT SIZE PHOTOGRAPHS\" -- read together as the same requirement."
    },
    {
      "id": "reasonsForReturnEvidence",
      "label": "Documentary evidence supporting reasons for wishing to return to Ghana",
      "category": "supporting-evidence",
      "required": true,
      "belongsTo": "applicant",
      "sourceRef": "Item 12: \"(TO BE SUPPORTED BY DOCUMENTARY EVIDENCE)\""
    },
    {
      "id": "applicationDeclaration",
      "label": "Declaration of truth of particulars",
      "category": "attestation",
      "required": true,
      "belongsTo": "applicant",
      "statement": "I SOLEMNLY DECLARE THAT THE ABOVE PARTICULARS GIVEN BY ME ARE TRUE IN SUBSTANCE AND FACT",
      "sourceRef": "Beside the (unwidgeted) signature/thumbprint line, above \"DATE\" and \"SIGNATURE/THUMBPRINT OF APPLICANT\"."
    }
  ]
}
