{
  "$schema": "https://govschema.org/spec/v0.3/govschema.schema.json",
  "govschemaVersion": "0.3.0",
  "id": "rw/dgie/passport-application-first-adult",
  "version": "1.0.0",
  "title": "Rwanda First-Time Adult e-Passport Application (Directorate General of Immigration and Emigration)",
  "description": "Apply for a first-time ordinary Rwandan e-passport (or a replacement/renewal of a paper passport issued by the Directorate General of Immigration and Emigration (DGIE) before 28 June 2019) as an adult (18 years and above) applicant, through the sole application channel, the Government of Rwanda's IremboGov online portal (irembo.gov.rw). This opens Rwanda's Passport vertical (4 of 6, alongside the already-closed DMV, Visa, and Business Formation verticals; see rw/rra/vrf-e06-motor-vehicle-registration-form, rw/dgie/visa-application, and rw/rdb/rf-001-domestic-company-application-for-incorporation). There is no downloadable or fillable PDF specimen for this process: e-passport applications are a pure online, portal-only workflow with no AcroForm or paper equivalent. This document is instead sourced from IremboGov's own official support-center walkthrough article, a genuine field-by-field guide (including embedded screenshots of the live 'Applicant Details' and 'Passport & Travel Details' screens) published and hosted by Irembo itself, corroborated by Irembo's own FAQ article and the DGIE's own service page — the same accepted pattern already used by this registry's id/imigrasi/passport-application-first-adult (Indonesia's M-Paspor) for a portal-only application process, rather than a fillable-PDF specimen. This document scopes narrowly to the single adult, first-time-applicant pathway (guide section '2. Steps to apply for an e-passport for the first application', 'Adult applicants' sub-list); it does not model the parallel minor/child (below-18) applicant pathway, the passport-replacement pathway for a passport already issued after 28 June 2019, or the post-submission biometric-capture and collection steps, all of which are out of scope for this v1.0.0 (see VERIFICATION.md). An applicant may submit this application with or without an IremboGov account (guest submission is confirmed possible). GovSchema is independent and is not affiliated with, endorsed by, or operated by the Government of Rwanda or its Directorate General of Immigration and Emigration.",
  "status": "draft",
  "jurisdiction": {
    "country": "RW",
    "level": "national"
  },
  "authority": {
    "name": "Directorate General of Immigration and Emigration",
    "abbreviation": "DGIE",
    "url": "https://www.migration.gov.rw"
  },
  "process": {
    "type": "application",
    "language": "en"
  },
  "source": {
    "url": "https://support.irembo.gov.rw/en/support/solutions/articles/47001165759-how-to-apply-for-an-e-passport-application",
    "retrievedAt": "2026-07-13",
    "documentRef": "\"Tips and how to apply for an E-Passport for the first time\" (IremboGov Support Center article 47001165759), a field-by-field walkthrough of the live irembo.gov.rw e-Passport Application service, including embedded screenshots of the 'Applicant Details' and 'Passport & Travel Details' screens. Corroborated by IremboGov Support Center article 47001230984 ('Frequently asked questions about E-Passport Application') and the Directorate General of Immigration and Emigration's own service page (migration.gov.rw/our-services/e-passport-1)."
  },
  "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-2629, opening Rwanda's Passport vertical (4 of 6). Independently re-fetched all four cited sources directly: support.irembo.gov.rw/.../47001165759 (HTTP 200, text/html; charset=utf-8, 106,136 bytes), support.irembo.gov.rw/.../47001230984 (HTTP 200, text/html; charset=utf-8, 62,228 bytes), rwandainkenya.gov.rw's Canva-made PDF walkthrough (HTTP 200, application/pdf, 149,839 bytes, Last-Modified Tue 06 Apr 2021), and migration.gov.rw/our-services/e-passport-1 (HTTP 200, text/html; charset=utf-8, 26,800 bytes). Read the full extracted plain-text body of the primary support article (its 'article__body markdown' content div) rather than trusting a search-engine summary, and additionally fetched and visually inspected the article's own embedded screenshot images (hosted on cdn.freshdesk.com) of the live 'Applicant Details' screen (both its 'Above 18' and 'Below 18' toggle states) and the live 'Passport & Travel Details' and 'Attachments' screens, to read exact field labels, dropdown option text, required-field asterisks, and the in-app attachment-size/format notice directly from the rendered UI rather than from the article's prose alone. Confirmed the Kenya-embassy PDF (0 AcroForm widgets, confirmed by regex/zlib inspection of its object streams: no extractable text layer, image-only Canva export) is a screenshot-driven visual aid corroborating the same field set, not an independently machine-readable source, consistent with its description in the originating task. All 7 'Adult applicants should fill in the following' bullet items from the primary article were accounted for (ID number; Profession and Employer; Height in cm; Residence details; Birth location; Other nationality and other nationality passport (optional); Street number and house number (optional)), plus the Passport & Travel Details screen (passport type, passport validity, purpose of travel, destination country, destination city) and the final review/submit step (phone number and/or email address, verification checkbox). See VERIFICATION.md for the full field-derivation reasoning, every scoping/judgment call (including a disclosed Residence-Details/Birth-Location administrative-subdivision gap the source's own screenshots do not resolve, and a three-way discrepancy across sources on the signature attachment's exact format/size), and the full conformance run (2 valid mock scenarios, 0 errors each; 3 mutation-control fixtures, exactly 1 error each, using a disposable validate_instance.mjs script implementing this schema's own required/requiredWhen grammar, plus ajv for the static JSON Schema subset)."
  },
  "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": "idNumber",
      "label": "Identification document number",
      "type": "string",
      "required": true,
      "classification": "sensitive-pii",
      "description": "The applicant's Rwandan National ID number. The guide states that an applicant above 18 (and one aged 16-18) enters their Rwandan National ID here; this document scopes only to that adult pathway (the guide's parallel below-16 minor pathway instead collects a Citizen Application Number, not modelled here). The live screen's own field is labelled 'Identification document number' under 'Identification Details', confirmed directly from the article's embedded 'Applicant Details' ('Above 18') screenshot.",
      "sourceRef": "Primary article, section 2 ('Adult applicants should fill in the following: ... ID number'); 'Applicant Details' screenshot, 'Identification Details' — 'Identification document number*'",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "profession",
      "label": "Profession",
      "type": "string",
      "required": true,
      "description": "The applicant's profession. The live screen renders this as a searchable dropdown ('Profession'), but its full option list is not legible in the article's screenshot, so it is modelled as an open string rather than an invented enum, matching this registry's established convention of preferring free text over a fabricated enumeration (e.g. rw/dgie/visa-application's visaTypeApplied field).",
      "sourceRef": "Primary article, section 2 ('Profession and Employer'); 'Applicant Details' screenshot, 'Identification Details' — 'Profession*'",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "employer",
      "label": "Employer",
      "type": "string",
      "required": true,
      "description": "Printed as one of two blanks on the same guide bullet ('Profession and Employer'); the live screen shows these as two distinct labelled fields ('Profession' and 'Employer'), confirmed directly from the embedded screenshot.",
      "sourceRef": "Primary article, section 2 ('Profession and Employer'); 'Applicant Details' screenshot, 'Identification Details' — 'Employer*'",
      "validation": { "maxLength": 150 }
    },
    {
      "name": "heightCm",
      "label": "Height (cm)",
      "type": "integer",
      "required": true,
      "classification": "pii",
      "description": "The applicant's height in centimetres, confirmed as a required numeric field directly from the embedded 'Applicant Details' screenshot.",
      "sourceRef": "Primary article, section 2 ('Height in cm'); 'Applicant Details' screenshot, 'Identification Details' — 'Height (cm)*'",
      "validation": { "minimum": 50, "maximum": 250 }
    },
    {
      "name": "otherNationality",
      "label": "Other Nationality",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "Not required: an applicant with no other (dual) nationality has nothing to declare here. The live screen renders this as a country-select dropdown ('Select country'), modelled as an open string consistent with this registry's convention of not enumerating exhaustive country lists (cf. rw/dgie/visa-application's nationality fields).",
      "sourceRef": "Primary article, section 2 ('Other nationality and other nationality passport (optional)'); 'Applicant Details' screenshot, 'Identification Details' — 'Other Nationality'",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "otherNationalityPassportNumber",
      "label": "Other nationality passport",
      "type": "string",
      "required": false,
      "classification": "sensitive-pii",
      "description": "Expected to be filled in whenever otherNationality is filled in, but not machine-gated with requiredWhen: otherNationality is itself optional and absent (not empty-string) when unused, and comparing an absent sibling field against a sentinel value risks the same misfire class this registry has already hit and fixed elsewhere (see rw/dgie/visa-application's child1Gender precedent).",
      "sourceRef": "Primary article, section 2 ('Other nationality and other nationality passport (optional)'); 'Applicant Details' screenshot, 'Identification Details' — 'Other nationality passport'",
      "validation": { "maxLength": 40 }
    },
    {
      "name": "residenceCountry",
      "label": "Residence Details: Country",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "The applicant's country of residence. The live screen's 'Residence Details' block is confirmed, directly from the embedded screenshot, to begin with a required 'Country' select; however, both of the article's own screenshots (the 'Above 18' and 'Below 18' Applicant Details states) capture this control only in its default, unselected placeholder state ('Select country'), so neither confirms whether selecting Rwanda cascades to further Rwanda-specific administrative-subdivision fields (Province/District/Sector/Cell, as this registry's rw/rdb/rf-001-domestic-company-application-for-incorporation already models for other Rwandan forms). This document conservatively models only the directly-confirmed Country field; see VERIFICATION.md for the full disclosure of this gap.",
      "sourceRef": "Primary article, section 2 ('Residence details'); 'Applicant Details' screenshot, 'Residence Details' — 'Country*'",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "birthLocationCountry",
      "label": "Birth Location: Country",
      "type": "string",
      "required": true,
      "classification": "sensitive-pii",
      "description": "The applicant's country of birth. As with residenceCountry, the embedded screenshot confirms only a required top-level 'Country' select in its default unselected state for this block; see VERIFICATION.md for the same disclosed administrative-subdivision-cascade gap.",
      "sourceRef": "Primary article, section 2 ('Birth location'); 'Applicant Details' screenshot, 'Birth Location' — 'Country*'",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "streetNumber",
      "label": "Street number",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "Explicitly marked optional by the guide's own bullet text ('Street number and house number (optional)'), confirmed directly from the embedded screenshot (no asterisk shown on either field).",
      "sourceRef": "Primary article, section 2 ('Street number and house number (optional)'); 'Applicant Details' screenshot, 'Street number'",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "houseNumber",
      "label": "House number",
      "type": "string",
      "required": false,
      "classification": "pii",
      "sourceRef": "Primary article, section 2 ('Street number and house number (optional)'); 'Applicant Details' screenshot, 'House number'",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "applicantContactPhone",
      "label": "Telephone number for contact",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "Confirmed directly from the embedded 'Applicant Details' screenshot (no asterisk shown), which defaults its country-code selector to +250 (Rwanda). The FAQ article confirms 'All applicants should have a valid phone number, email address, or both' (i.e. this and applicantContactEmail are not each independently required, but at least one of the two must be present) — a business rule this document discloses in prose rather than encoding with requiredWhen (per this registry's own established pitfall: gating one optional field's requiredness on another optional field's absence via notEquals against an empty/absent value misfires, see the notEquals-empty-string-absent-field-bug precedent).",
      "sourceRef": "'Applicant Details' screenshot, 'Telephone number for contact'; FAQ article, 'What are the requirements needed to apply for an E-passport?' ('All applicants should have a valid phone number, email address, or both')",
      "validation": { "maxLength": 20 }
    },
    {
      "name": "applicantContactEmail",
      "label": "Email address",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "Collected at the final review/submit step ('Verify that the information is true, enter a phone number and/or email address, check the verification box, and click Submit'). See applicantContactPhone's description for the 'at least one of phone/email' business rule this document discloses but does not machine-enforce.",
      "sourceRef": "Primary article, section 2, final bullet ('Verify that the information is true, enter a phone number and/or email address, check the verification box, and click Submit')",
      "validation": { "maxLength": 150, "pattern": "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$" }
    },
    {
      "name": "passportType",
      "label": "Passport type",
      "type": "enum",
      "required": true,
      "description": "Confirmed directly from the embedded 'Passport & Travel Details' screenshot's own open dropdown, which lists exactly these three options. Fee and required-attachment sets differ by type and applicant age per the primary article's own pricing table (Service: 15,000 RWF, 5-year validity, requires a government-institution recommendation letter; Ordinary: 100,000 RWF, up to 10-year validity, no recommendation letter; Diplomatic: 50,000 RWF, 5-year validity, requires a MOFA/Cabinet recommendation letter and an appointment letter) — see the conditional recommendationLetter and appointmentLetter documents[] entries.",
      "sourceRef": "'Passport & Travel Details' screenshot, 'Passport details' — 'Passport type*' dropdown ('Service Passport', 'Ordinary Passport', 'Diplomatic Passport')",
      "validation": { "enum": ["service", "ordinary", "diplomatic"] }
    },
    {
      "name": "passportValidity",
      "label": "Passport validity",
      "type": "enum",
      "required": true,
      "description": "Validity period, gated in practice by passportType and (for Ordinary) applicant age: the live screen's own 'New!' notice states Ordinary-passport applicants over 26 may choose either 5 or 10 years, applicants 16-26 may only apply for a 5-year Ordinary passport, and Service/Diplomatic passports are fixed at 5 years per the primary article's pricing table. This age-conditional business rule is disclosed here rather than machine-encoded, since GovSchema's requiredWhen/validation grammar has no numeric-age-plus-enum-subset construct; a consuming agent should treat the 10-year option as available only for an Ordinary passport and an applicant confirmed over 26.",
      "sourceRef": "'Passport & Travel Details' screenshot, 'Passport details' — 'Passport validity*' dropdown; embedded screenshot's own 'New!' notice ('Ordinary Passports: applicants over 26 years old will be able to choose between 5-year and 10-year passport validity; applicants 16 to 26 years old will only be able to apply for 5-year passports...')",
      "validation": { "enum": ["5_years", "10_years"] }
    },
    {
      "name": "purposeOfTravel",
      "label": "Purpose of travel",
      "type": "string",
      "required": true,
      "description": "The live screen renders this as a dropdown ('Purpose of travel'), but its option list is not legible in the article's screenshot, so it is modelled as an open string rather than an invented enum.",
      "sourceRef": "Primary article, section 2 ('travel details: purpose of travel, destination country, and destination city'); 'Passport & Travel Details' screenshot, 'Travel details' — 'Purpose of travel*'",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "destinationCountry",
      "label": "Destination country",
      "type": "string",
      "required": true,
      "description": "The live screen renders this as a country-select dropdown, modelled as an open string per this registry's convention of not enumerating exhaustive country lists.",
      "sourceRef": "Primary article, section 2 ('travel details: purpose of travel, destination country, and destination city'); 'Passport & Travel Details' screenshot, 'Travel details' — 'Destination country*'",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "destinationCity",
      "label": "Destination City",
      "type": "string",
      "required": false,
      "description": "Confirmed optional directly from the embedded screenshot (no asterisk shown on this field, unlike Purpose of travel and Destination country).",
      "sourceRef": "Primary article, section 2 ('travel details: purpose of travel, destination country, and destination city'); 'Passport & Travel Details' screenshot, 'Travel details' — 'Destination City'",
      "validation": { "maxLength": 100 }
    }
  ],
  "documents": [
    {
      "id": "nationalIdCopy",
      "label": "Copy of National ID",
      "category": "identity-document",
      "required": true,
      "belongsTo": "applicant",
      "constraints": {
        "maxBytes": 500000,
        "mediaTypes": ["application/pdf"]
      },
      "sourceRef": "Primary article, e-Passport Types and Requirements table, 'Applicant: 18 and above' row (all three passport types); embedded 'Attachments' screenshot's own in-app notice ('Other attachments are less than 500kb and pdf format only')"
    },
    {
      "id": "passportPhoto",
      "label": "Passport Photo (coloured, white background)",
      "category": "supporting-evidence",
      "required": true,
      "belongsTo": "applicant",
      "constraints": {
        "maxBytes": 200000,
        "mediaTypes": ["image/jpeg"]
      },
      "sourceRef": "Primary article, e-Passport Types and Requirements table, 'Applicant: 18 and above' row; embedded 'Attachments' screenshot's own in-app notice ('Passport photo has to be less than 200kb ... allowed formats are jpeg and jpg'); migration.gov.rw's own service page describes 'One recently taken colored passport size photo with white background'"
    },
    {
      "id": "signature",
      "label": "Signature",
      "category": "supporting-evidence",
      "required": true,
      "belongsTo": "applicant",
      "constraints": {
        "maxBytes": 50000,
        "mediaTypes": ["image/jpeg"]
      },
      "sourceRef": "Primary article, e-Passport Types and Requirements table, 'Applicant: 18 and above' row; embedded 'Attachments' screenshot's own in-app notice ('Signature has to be less than 50kb and allowed formats are jpeg and jpg'). Note: the same article's own prose note elsewhere states the signature must be 'PDF format, maximum size 50 KB', and the FAQ article separately states 'Signature (Format: JPG, Size: 500KB)' — a three-way discrepancy across this same source and its own in-app UI copy on format/size that this document resolves by trusting the live in-app 'Attachments' screen's own notice as most authoritative; see VERIFICATION.md."
    },
    {
      "id": "recommendationLetter",
      "label": "Recommendation letter (issued by a government institution for a Service passport, or by MOFA/Cabinet Resolutions for a Diplomatic passport)",
      "category": "supporting-evidence",
      "required": false,
      "belongsTo": "applicant",
      "requiredWhen": { "field": "passportType", "in": ["service", "diplomatic"] },
      "constraints": {
        "maxBytes": 500000,
        "mediaTypes": ["application/pdf"]
      },
      "sourceRef": "Primary article, e-Passport Types and Requirements table, 'Applicant: 18 and above' row — Service ('A recommendation letter issued by a government institution') and Diplomatic ('A recommendation letter issued by MOFA or Cabinet Resolutions')"
    },
    {
      "id": "appointmentLetter",
      "label": "Appointment letter of the applicant",
      "category": "supporting-evidence",
      "required": false,
      "belongsTo": "applicant",
      "requiredWhen": { "field": "passportType", "equals": "diplomatic" },
      "constraints": {
        "maxBytes": 500000,
        "mediaTypes": ["application/pdf"]
      },
      "sourceRef": "Primary article, e-Passport Types and Requirements table, 'Applicant: 18 and above' row, Diplomatic — 'Appointment letter of the applicant'"
    },
    {
      "id": "informationVerificationCertification",
      "label": "Verification that all submitted information is true",
      "category": "attestation",
      "required": true,
      "belongsTo": "applicant",
      "statement": "Verify that the information is true",
      "sourceRef": "Primary article, section 2, final bullet ('Verify that the information is true, enter a phone number and/or email address, check the verification box, and click Submit')"
    }
  ]
}
