{
  "$schema": "https://govschema.org/spec/v0.3/govschema.schema.json",
  "govschemaVersion": "0.3.0",
  "id": "lk/imm/application-for-a-sri-lankan-passport-emergency-identity-certificate",
  "version": "1.0.0",
  "title": "Application for a Sri Lankan Passport, Emergency/Identity Certificate",
  "description": "The Department of Immigration & Emigration's (DI&E) paper application form for a Sri Lankan passport, emergency certificate, or identity certificate. Opens Sri Lanka as a new jurisdiction in this registry, via its Passport vertical. A genuine AcroForm-fillable PDF (confirmed via pdfjs-dist: 35 Widget annotations across 2 pages, all text/checkbox field types, several using PDF's own 'comb' text-field flag with printed per-box character limits), trilingual (Sinhala/Tamil/English) with the department's own instruction stating the form must be completed in English (\"The data and information are fed into the computer in English. Hence the application must be filled in English\"). The form's own numbered items (1-21, extracted from the English text layer) map cleanly onto its 35 named AcroForm fields; every field below cites the item number and printed field name it corresponds to. Two pairs of printed mutually-exclusive checkbox options (\"Type of Service\": Normal/OneDay; \"Sex\": Female/Male) and one group of four (\"Type of Travel Document\": All Countries/Middle East/Emergency Certificate/Identity Certificate) are each implemented in the underlying PDF as independently named sibling checkbox widgets rather than a single true PDF radio-button field (no shared /Ff radio flag or common parent groups them) — this schema models the form's own clear single-choice intent as a single `enum` field in each case, a disclosed judgment call over a literal one-checkbox-per-AcroForm-widget dump. Item 18 (\"Foreign Passport No.\") is exported from the PDF as field name \"17 Foreign Passport No\" — an off-by-one artifact in the source PDF's own internal field naming relative to its own printed item numbers, disclosed here rather than silently corrected. Item 19 (father/guardian and mother/guardian National Identity Card No. / Present Travel Document No., for applicants under 16) has no applicant-fillable gating checkbox anywhere on the form (no \"this application is for a child under 16\" field exists to condition on), so both fields are modelled as optional with the conditional context recorded in their `description` rather than a fabricated `requiredWhen` referencing a non-existent field; a consuming agent can derive applicability from the already-modelled `dateOfBirth`. No documents/evidence checklist is printed anywhere on the form itself, and the department's separate \"Instructions to Passport Applicants\" PDF (same source domain) is a 6.5MB scanned-image document with zero extractable text (confirmed via pdfjs-dist) — so no `documents[]` array is modelled in this v1.0.0, a disclosed scoping gap rather than an assumption. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Government of Sri Lanka or the Department of Immigration & Emigration.",
  "status": "draft",
  "jurisdiction": {
    "country": "LK",
    "level": "national"
  },
  "authority": {
    "name": "Department of Immigration & Emigration, Sri Lanka",
    "abbreviation": "DI&E",
    "url": "https://www.immigration.gov.lk"
  },
  "process": {
    "type": "application",
    "language": "en"
  },
  "source": {
    "url": "https://www.immigration.gov.lk/content/files/applications/passport_application.pdf",
    "retrievedAt": "2026-07-13",
    "documentRef": "Application for a Sri Lankan Passport, Emergency/Identity Certificate, Department of Immigration & Emigration"
  },
  "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-2716. Opens Sri Lanka as this registry's 47th jurisdiction. This cycle first screened and confirmed a dead end on Ghana's DMV vertical (the one prior-cycle-flagged gap in an already-open jurisdiction): DVLA's dvla.gov.gh has been rebuilt on a modern stack (Next.js marketing site plus a Nuxt.js online-services SPA at service.dvla.gov.gh), but the online system is fully login-gated behind an email/password wall with no public registration or application form exposed before authentication, and every search result independently confirms the paper Forms F/F1 are purchased in person at DVLA offices, not published as a downloadable specimen; a Wayback Machine sweep of dvla.gov.gh's historical /assets/dvla/media/forms and /publications paths turned up only a driving-school-registration form, public notices, and non-form publications, no citizen-fillable driver's-licence or vehicle-registration application. Also re-confirmed (via direct fetch, HTTP 403 \"Accesso negato\") this registry's own prior GOV-2382 dead-end finding for Italy's remaining four verticals. Given both leads were dead, this cycle scouted three new-jurisdiction candidates in parallel (Sri Lanka, Serbia, Jordan), each finding at least one strong lead; Sri Lanka's Passport form was selected as the strongest of the three: the only genuine AcroForm-fillable PDF among them (Serbia's and Jordan's strongest leads were flat print-and-fill PDFs with a real text layer but no AcroForm widgets). Independently re-fetched this cycle directly from immigration.gov.lk (HTTP 200, Content-Type application/pdf, 1,200,324 bytes, sha256 02c3c01165f6bccd19a2295e4e40437d519e1f82e079936b0572e041df4760a1). pdfjs-dist (v4, legacy build) getAnnotations()/getFieldObjects() confirm 35 real Widget annotations across the document's 2 pages (30 on page 1, 5 on page 2): 24 text fields (several using the PDF's own 'comb' flag with a printed per-character-box charLimit, e.g. Surname1/Surname2 each charLimit 22, NIC No charLimit 12, Mobile Phone charLimit 10) and 11 checkbox fields, cross-checked against getTextContent()'s full, clean English text layer (the form's own numbered items 1-21) to derive every field's label, requiredness cue (\"(if any)\" markers), and option grouping. Also fetched the department's separate 'Instructions to Passport Applicants' PDF (immigration.gov.lk/content/files/applications/instructions_english_td.pdf, HTTP 200, 6,541,214 bytes) specifically looking for a printed supporting-documents checklist to model as `documents[]`; pdfjs-dist confirms 0 extractable text characters across its 2 pages (a scanned-image document), so no checklist could be sourced from it, and none is printed on the application form itself — disclosed as an out-of-scope gap in the schema description rather than an invented list. This v1.0.0 scopes to the form's own applicant-facing content (items 1-19, plus the item-21 declaration's date field); the item-20 photograph-placement instructions and the office-only Controller's Order / DC-AC signature / PPT-tracking block below the declaration are staff/physical artifacts and out of scope, consistent with this registry's `gh/nia`/`gh/gis` precedent. 2 valid conformance fixtures plus 6 mutation-control fixtures (each raising exactly 1 error) are committed under `conformance/lk/imm/application-for-a-sri-lankan-passport-emergency-identity-certificate/1.0.0/` and were checked with a from-scratch validator script against this schema.json (0 errors / exactly 1 error respectively, as expected)."
  },
  "maturity": {
    "level": "structural-reference",
    "criteria": {
      "structuralReference": true,
      "verifiedSchema": false,
      "agentReadySchema": false,
      "executionTestedSchema": false
    },
    "method": "maturity-self-assessment-v1",
    "assertedBy": "GovSchema Engineering",
    "assertedAt": "2026-07-13"
  },
  "license": "CC-BY-4.0",
  "fields": [
    {
      "name": "serviceType",
      "label": "Type of Service",
      "type": "enum",
      "required": true,
      "description": "Item 1. Whether the application is being processed under the standard track or the expedited one-day track.",
      "sourceRef": "1. Type of Service } Normal ▢ OneDay ▢ (fields: \"TOS Normal\", \"TOS 1day\")",
      "validation": { "enum": ["normal", "one-day"] }
    },
    {
      "name": "travelDocumentType",
      "label": "Type of Travel Document",
      "type": "enum",
      "required": true,
      "description": "Item 2. Which travel document the applicant is requesting.",
      "sourceRef": "2. Type of Travel Document } All Countries ▢ Middle East Countries ▢ Emergency Certificate ▢ Identity Certificate ▢ (fields: \"TOTDR.AC.0\"-\"TOTDR.AC.3\")",
      "validation": {
        "enum": ["all-countries", "middle-east-countries", "emergency-certificate", "identity-certificate"]
      }
    },
    {
      "name": "presentTravelDocumentNumber",
      "label": "Present Travel Document No. (If any)",
      "type": "string",
      "required": false,
      "classification": "sensitive-pii",
      "description": "Item 3. The number of the applicant's current/most recent travel document, if they hold one.",
      "sourceRef": "3. Present Travel Document No. (If any) (field: \"Present Travel Document Number\")",
      "validation": { "maxLength": 10 }
    },
    {
      "name": "nmrpNumber",
      "label": "NMRP No. (If any)",
      "type": "string",
      "required": false,
      "description": "Item 4. The applicant's National Mutual Recognition Procedure (visa-facilitation) reference number, if applicable.",
      "sourceRef": "4. NMRP No. (If any) (field: \"NMRP No\")",
      "validation": { "maxLength": 10 }
    },
    {
      "name": "nationalIdentityCardNumber",
      "label": "National Identity Card No.",
      "type": "string",
      "required": true,
      "classification": "sensitive-pii",
      "description": "Item 5. The applicant's own Sri Lankan National Identity Card number.",
      "sourceRef": "5. National Identity Card No. } (field: \"NIC No\")",
      "validation": { "maxLength": 12 }
    },
    {
      "name": "surname",
      "label": "Surname",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "Item 6. The applicant's surname. Printed across two comb-style text boxes (\"Surname1\", \"Surname2\", 22 characters each) for a long surname to continue onto a second line; modelled here as a single logical value.",
      "sourceRef": "6. Surname } (fields: \"Surname1\", \"Surname2\")",
      "validation": { "maxLength": 44 }
    },
    {
      "name": "otherNames",
      "label": "Other Names",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "Item 7. The applicant's other (given) names. Printed across two comb-style text boxes (\"OtherName1\", \"OtherName2\", 22 characters each); modelled here as a single logical value.",
      "sourceRef": "7. Other Names } (fields: \"OtherName1\", \"OtherName2\")",
      "validation": { "maxLength": 44 }
    },
    {
      "name": "permanentAddress",
      "label": "Permanent Address",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "Item 8. The applicant's permanent address. Printed across two comb-style text boxes (\"PermAddressOS1\", \"PermAddressOS2\", 22 characters each); modelled here as a single logical value.",
      "sourceRef": "8. Permanent Address } (fields: \"PermAddressOS1\", \"PermAddressOS2\")",
      "validation": { "maxLength": 44 }
    },
    {
      "name": "permanentAddressDistrict",
      "label": "District",
      "type": "string",
      "required": true,
      "description": "Item 8.1. The administrative district of the applicant's permanent address.",
      "sourceRef": "8.1 District (field: \"PA District\")",
      "validation": { "maxLength": 12 }
    },
    {
      "name": "dateOfBirth",
      "label": "Date of Birth",
      "type": "date",
      "required": true,
      "classification": "pii",
      "description": "Item 9. The applicant's date of birth, printed as three separate comb boxes (Date, Month, Year); modelled here as a single canonical ISO date.",
      "sourceRef": "9. Date of Birth } Date Month Year (fields: \"DOB Date\", \"DOB Month\", \"DOB Year\")"
    },
    {
      "name": "birthCertificateNumber",
      "label": "Birth Certificate No.",
      "type": "string",
      "required": false,
      "description": "Item 10. The applicant's birth certificate number.",
      "sourceRef": "10. Birth Certificate } No. (field: \"BC No\")",
      "validation": { "maxLength": 4 }
    },
    {
      "name": "birthCertificateDistrict",
      "label": "Birth Certificate District",
      "type": "string",
      "required": false,
      "description": "Item 10. The district in which the applicant's birth certificate was registered.",
      "sourceRef": "10. Birth Certificate } District (field: \"BC District\")",
      "validation": { "maxLength": 12 }
    },
    {
      "name": "placeOfBirth",
      "label": "Place of Birth",
      "type": "string",
      "required": true,
      "description": "Item 11. The applicant's place of birth.",
      "sourceRef": "11. Place of Birth } (field: \"POB\")",
      "validation": { "maxLength": 22 }
    },
    {
      "name": "sex",
      "label": "Sex",
      "type": "enum",
      "required": true,
      "classification": "pii",
      "description": "Item 12. The applicant's sex as printed on the form.",
      "sourceRef": "12. Sex } Female ▢ Male ▢ (fields: \"SexF\", \"SexM\")",
      "validation": { "enum": ["female", "male"] }
    },
    {
      "name": "profession",
      "label": "Profession/Occupation/Job",
      "type": "string",
      "required": false,
      "description": "Item 13. The applicant's profession, occupation, or job.",
      "sourceRef": "13. Profession/ Occupation/ Job } (field: \"Profession\")",
      "validation": { "maxLength": 22 }
    },
    {
      "name": "dualCitizenshipObtained",
      "label": "Have you obtained Dual Citizenship in Sri Lanka?",
      "type": "boolean",
      "required": true,
      "description": "Item 14. Whether the applicant holds Sri Lankan dual citizenship.",
      "sourceRef": "14. Have you obtained Dual Citizenship in Sri Lanka? } Yes ▢ No ▢ (fields: \"DCitizenship Y\", \"DCitizenship N\")"
    },
    {
      "name": "dualCitizenshipNumber",
      "label": "Dual Citizenship No.",
      "type": "string",
      "required": false,
      "requiredWhen": { "field": "dualCitizenshipObtained", "equals": true },
      "description": "Item 14. The applicant's Dual Citizenship certificate number, required if Item 14 is answered Yes.",
      "sourceRef": "If Yes, Dual Citizenship No. (field: \"DC No\")",
      "validation": { "maxLength": 12 }
    },
    {
      "name": "mobilePhoneNumber",
      "label": "Mobile/Phone No.",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "Item 15. The applicant's mobile/phone number, used to notify the applicant via SMS when the passport is ready for collection.",
      "sourceRef": "15. Mobile/ Phone No. (to be notified via SMS when passport is ready for collection) } (field: \"Mobile Phone\")",
      "validation": { "maxLength": 10 }
    },
    {
      "name": "email",
      "label": "E-mail Address",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "Item 16. The applicant's e-mail address. The source PDF's own comb text box is only 22 characters wide, a genuine specimen constraint that will truncate longer addresses; recorded as printed rather than widened by editorial judgment.",
      "sourceRef": "16. E-mail Address } (field: \"eMail\")",
      "validation": {
        "pattern": "^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$",
        "maxLength": 22
      }
    },
    {
      "name": "foreignNationality",
      "label": "Foreign Nationality",
      "type": "string",
      "required": false,
      "requiredWhen": { "field": "dualCitizenshipObtained", "equals": true },
      "description": "Item 17, printed on page 2 under the heading \"Compulsory for Dual Citizenship Holders\". The applicant's foreign nationality, required if Item 14 (dual citizenship) is answered Yes.",
      "sourceRef": "17. Foreign Nationality (field: \"ForeignN\")",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "foreignPassportNumber",
      "label": "Foreign Passport No.",
      "type": "string",
      "required": false,
      "requiredWhen": { "field": "dualCitizenshipObtained", "equals": true },
      "classification": "sensitive-pii",
      "description": "Item 18, printed on page 2 under the heading \"Compulsory for Dual Citizenship Holders\". The applicant's foreign passport number, required if Item 14 (dual citizenship) is answered Yes. The underlying AcroForm exports this field as \"17 Foreign Passport No\" — an off-by-one artifact of the source PDF's own internal field naming relative to its own printed item number 18, disclosed rather than silently corrected.",
      "sourceRef": "18. Foreign Passport No. (field: \"17 Foreign Passport No\")",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "fatherGuardianNationalIdOrTravelDocumentNumber",
      "label": "Father/Guardian — National Identity Card No. / Present Travel Document No.",
      "type": "string",
      "required": false,
      "classification": "sensitive-pii",
      "description": "Item 19. Applicable only if this application is for a child below the age of 16 (derivable from the already-modelled `dateOfBirth`); the form itself has no separate applicant-fillable field gating this requirement, so it is modelled as optional rather than wired to a fabricated condition.",
      "sourceRef": "19. If this application is for a child below the age of 16 years, following information must also be provided. Father / Guardian: National Identity Card No. / Present Travel Document No. (field: \"National Identity Card No I Present Travel Document No\")",
      "validation": { "maxLength": 12 }
    },
    {
      "name": "motherGuardianNationalIdOrTravelDocumentNumber",
      "label": "Mother/Guardian — National Identity Card No. / Present Travel Document No.",
      "type": "string",
      "required": false,
      "classification": "sensitive-pii",
      "description": "Item 19. Applicable only if this application is for a child below the age of 16 (derivable from the already-modelled `dateOfBirth`); the form itself has no separate applicant-fillable field gating this requirement, so it is modelled as optional rather than wired to a fabricated condition.",
      "sourceRef": "19. If this application is for a child below the age of 16 years, following information must also be provided. Mother / Guardian: National Identity Card No. / Present Travel Document No. (field: \"National Identity Card No I Present Travel Document No_2\")",
      "validation": { "maxLength": 12 }
    },
    {
      "name": "declarationDate",
      "label": "Date",
      "type": "date",
      "required": true,
      "description": "Item 21. The date the applicant signs the declaration of the application's accuracy, printed on page 2 near the signature block.",
      "sourceRef": "21. ... Declaration of the Applicant ... (field: \"Date dd/mm/yyyy\")"
    }
  ]
}
