{
  "$schema": "https://govschema.org/spec/v0.3/govschema.schema.json",
  "govschemaVersion": "0.3.0",
  "id": "my/jim/passport-travel-document-application",
  "version": "1.0.0",
  "title": "Malaysia Passport / Travel Document Application (Borang Permohonan Pasport / Dokumen Perjalanan, IM.42)",
  "description": "The general-purpose application form (\"Borang Permohonan Pasport / Dokumen Perjalanan\", form IM.42) that the Jabatan Imigresen Malaysia (JIM, Immigration Department of Malaysia) uses to process a Malaysian passport or travel-document request: a first-time issuance, a replacement due to damage/pages-exhausted/expiry, a replacement due to loss, or an application to insert a child's recent photograph into an existing document, across eight document types (the standard 64- and 32-page international passports, the Malaysia-Indonesia and Malaysia-Philippines border-crossing passports, the Brunei- and Singapore-restricted passports, the Restricted Travel Document, and the Emergency Certificate). Excludes the separate diplomatic/official passport process handled via the Ministry of Foreign Affairs and any process step conducted only in person at a JIM counter (biometric/facial capture, document sighting, and issuance handover), which this form does not itself administer. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Government of Malaysia or the Jabatan Imigresen Malaysia.",
  "status": "draft",
  "jurisdiction": {
    "country": "MY",
    "level": "national"
  },
  "authority": {
    "name": "Jabatan Imigresen Malaysia",
    "abbreviation": "JIM",
    "url": "https://www.imi.gov.my/"
  },
  "process": {
    "type": "application",
    "language": "ms"
  },
  "source": {
    "url": "https://www.imi.gov.my/wp-content/uploads/2022/02/Borang-Permohonan-Pasport.pdf",
    "retrievedAt": "2026-07-08",
    "documentRef": "IM.42 (Pin. 1/97) — BORANG PERMOHONAN PASPORT / DOKUMEN PERJALANAN (Passport / Travel Document Application Form), Bahagian A-F, plus JIM's own \"Pasport Malaysia Antarabangsa\" service page (https://www.imi.gov.my/index.php/perkhidmatan-utama/pasport/pasport-malaysia-antarabangsa/) for eligibility-category identification-document requirements and the current fee table"
  },
  "verification": {
    "method": "manual-source-review-v1",
    "lastVerifiedAt": "2026-07-08",
    "verifiedBy": "GovSchema Engineering (Standards Engineer)",
    "nextReviewBy": "2027-01-08",
    "notes": "GOV-1783: GovSchema Standard Research cycle, Malaysia's 2nd vertical. Screened in the assigned order: LHDN's Borang BE/B/M/BT individual income-tax return PDFs (Taxes) were all fetched directly and confirmed, via a `/AcroForm` dict inspection, to carry an empty `Fields[]` array across every category and year screened (2025) — every one is explicitly labelled 'Contoh' (sample/specimen) because resident-individual filing is mandatory e-Filing only via mytax.hasil.gov.my (an authenticated SPA); rejected as too thin, same reasoning as GOV-1774's SSM Superform rejection. JPN's MyKad replacement/amendment service pages (National ID) were fetched directly and confirmed to describe an entirely in-person, counter-based, walk-in process with no downloadable or fillable application form at all — only a prose \"documents to bring\" checklist; rejected as having no form document to model, weaker even than a thin specimen. JIM's IM.42 passport/travel-document application form (Passport) was picked: a genuine, unauthenticated, directly downloadable, currently-served PDF confirmed live this cycle (HTTP 200, `%PDF` data, an Adobe LiveCycle Designer XFA container), still actively referenced by JIM's own current 'Pasport Malaysia Antarabangsa' service page (fetched the same day, page footer date matching today) as the application form required for several eligibility categories including the fee-exempt staff category ('Borang Permohonan Pasport Percuma'). Its own printed layout is a self-documenting field-by-field form: 14 numbered items across six lettered sections (A-F), each with its own printed label, the same self-documenting shape as GOV-1774's JPJ-L1 precedent (which itself carried no interactive AcroForm/XFA field layer despite the XFA container). See VERIFICATION.md for the full candidate comparison, the XFA text-layer extraction method, and every field-by-field citation."
  },
  "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-08"
  },
  "license": "CC-BY-4.0",
  "fields": [
    {
      "name": "applicationReason",
      "label": "Jenis Permohonan (reason for application)",
      "type": "enum",
      "required": true,
      "description": "The single reason this application is being made, per the form's own five-option checkbox group in Bahagian A: a first-time issuance, or a replacement for one of three stated reasons (pages exhausted or the document has expired; the document is damaged; the document was lost), or an application only to insert a child's recent photograph into an existing document.",
      "sourceRef": "IM.42 p.1, 'A. MAKLUMAT PEMOHON PASPORT / DOKUMEN PERJALANAN', 'Jenis Permohonan' checkboxes: 'Kali Pertama', '**Kehabisan Muka Surat/Tamat Tempoh', 'Kerana Kerosakan', 'Kerana Kehilangan', 'Kerana Memasukkan Gambar Terbaru bagi Kanak-kanak'",
      "validation": {
        "enum": ["first_time", "pages_exhausted_or_expired", "damaged", "lost", "insert_child_photo"]
      }
    },
    {
      "name": "documentTypeRequested",
      "label": "Jenis Dokumen (document type)",
      "type": "enum",
      "required": true,
      "description": "The specific passport or travel-document product being applied for, per the form's own eight-option checkbox group.",
      "sourceRef": "IM.42 p.1, 'Jenis Dokumen' checkboxes: 'Pasport Malaysia 64 mukasurat', 'Pasport Malaysia 32 mukasurat', 'Pasport Menyeberang Sempadan Malaysia - Indonesia', 'Pasport Sempadan Malaysia - Filipina', 'Pasport Malaysia Terhad - Brunei', 'Pasport Malaysia Terhad - Singapura', 'Dokumen Perjalanan Terhad', 'Sijil Perakuan Cemas'",
      "validation": {
        "enum": [
          "passport_64_pages", "passport_32_pages", "cross_border_pass_indonesia",
          "cross_border_pass_philippines", "restricted_passport_brunei",
          "restricted_passport_singapore", "restricted_travel_document",
          "emergency_certificate"
        ]
      }
    },
    {
      "name": "fullName",
      "label": "Nama Penuh (Seperti di dalam Kad Pengenalan)",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "The applicant's full name, as it appears on their MyKad (national identity card).",
      "sourceRef": "IM.42 p.1, 'A. MAKLUMAT PEMOHON PASPORT / DOKUMEN PERJALANAN', item 1 'Nama Penuh (Seperti di dalam Kad Pengenalan)'"
    },
    {
      "name": "otherName",
      "label": "Nama Lain (Jika ada)",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "Any other name the applicant is known by, if applicable.",
      "sourceRef": "IM.42 p.1, item 2 'Nama Lain (Jika ada)'"
    },
    {
      "name": "icNumber",
      "label": "No. Kad Pengenalan",
      "type": "string",
      "required": false,
      "classification": "sensitive-pii",
      "description": "The applicant's MyKad (national identity card) number. Populated in place of `alternativeIdNumber` when the applicant holds a MyKad.",
      "sourceRef": "IM.42 p.1, item 3(i) 'No. Kad Pengenalan'"
    },
    {
      "name": "alternativeIdNumber",
      "label": "No. Sijil Kelahiran / No. Sijil Anak Angkat / Borang W",
      "type": "string",
      "required": false,
      "classification": "sensitive-pii",
      "description": "The applicant's birth certificate number, adoption certificate number, or Borang W (citizenship registration Form W) number, populated instead of `icNumber` when the applicant (typically a child) does not yet hold a MyKad.",
      "sourceRef": "IM.42 p.1, item 3(ii) '(ii) **No.Sijil Kelahiran/No. Sijil Anak Angkat/ Borang W'"
    },
    {
      "name": "dateOfBirth",
      "label": "Tarikh Lahir",
      "type": "date",
      "required": true,
      "classification": "pii",
      "description": "The applicant's date of birth (Hari/Bulan/Tahun — day/month/year, per the form's own three-box layout).",
      "sourceRef": "IM.42 p.1, item 4 'Tarikh Lahir' (Hari / Bulan / Tahun)"
    },
    {
      "name": "placeOfBirth",
      "label": "Negeri Tempat Kelahiran",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "The Malaysian state where the applicant was born, or the country name if born outside Malaysia, per the item's own printed instruction.",
      "sourceRef": "IM.42 p.1, item 5 'Negeri Tempat Kelahiran (sebutkan nama negara jika lahir di luar Malaysia)'"
    },
    {
      "name": "gender",
      "label": "Jantina",
      "type": "enum",
      "required": true,
      "description": "The applicant's gender: Lelaki (male) or Perempuan (female) — the form's own two-option checkbox.",
      "sourceRef": "IM.42 p.1, item 6 '*Jantina' checkboxes: 'Lelaki', 'Perempuan'",
      "validation": {
        "enum": ["Lelaki", "Perempuan"]
      }
    },
    {
      "name": "currentAddress",
      "label": "Alamat Semasa",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "The applicant's current residential address (street/building line).",
      "sourceRef": "IM.42 p.1, item 7 'Alamat Semasa'"
    },
    {
      "name": "postcode",
      "label": "Poskod",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "The postcode of the applicant's current address.",
      "sourceRef": "IM.42 p.1, item 7 sub-field 'Poskod'"
    },
    {
      "name": "city",
      "label": "Bandar",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "The city or town of the applicant's current address.",
      "sourceRef": "IM.42 p.1, item 7 sub-field 'Bandar'"
    },
    {
      "name": "state",
      "label": "Negeri",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "The Malaysian state (or federal territory) of the applicant's current address, or the country name if residing outside Malaysia, per the item's own printed instruction.",
      "sourceRef": "IM.42 p.1, item 7 sub-field 'Negeri' and its instruction '(sebutkan negara sekiranya menetap di luar Malaysia)'"
    },
    {
      "name": "height",
      "label": "Tinggi",
      "type": "number",
      "required": true,
      "description": "The applicant's height in centimetres (sm).",
      "sourceRef": "IM.42 p.1, item 8 'Tinggi ... sm'"
    },
    {
      "name": "maritalStatus",
      "label": "Taraf Perkahwinan",
      "type": "enum",
      "required": true,
      "description": "The applicant's marital status, per the form's own three-option checkbox: Belum Kahwin (single), Kahwin (married), or Duda / Balu / Janda (widowed/divorced).",
      "sourceRef": "IM.42 p.1, item 9 '*Taraf Perkahwinan' checkboxes: 'Belum Kahwin', 'Kahwin', 'Duda / Balu / Janda'",
      "validation": {
        "enum": ["Belum Kahwin", "Kahwin", "Duda / Balu / Janda"]
      }
    },
    {
      "name": "previousDocumentNumber",
      "label": "No. pasport/dokumen perjalanan terakhir",
      "type": "string",
      "required": false,
      "requiredWhen": {
        "field": "applicationReason",
        "in": ["pages_exhausted_or_expired", "damaged", "lost", "insert_child_photo"]
      },
      "description": "The number of the applicant's (or, for a child-photo application, the child's) most recent passport or travel document, required whenever this application is any kind of replacement or amendment of an existing document rather than a first-time issuance. The same literal instruction ('No. pasport/dokumen perjalanan terakhir') appears identically in Bahagian B (item 10), Bahagian C (item 11), and Bahagian D (item 12).",
      "sourceRef": "IM.42 p.1, item 10 'Sila isikan maklumat di Bahagian A, Bahagian B, Bahagian E, dan kepilkan pasport/dokumen perjalanan terakhir bernombor:'; item 11 '... No. pasport/dokumen perjalanan terakhir.'; item 12 '... serta pasport/dokumen perjalanan terakhir.'"
    },
    {
      "name": "previouslyHeldTravelDocument",
      "label": "Pernah/tidak pernah memiliki pasport/dokumen perjalanan",
      "type": "boolean",
      "required": false,
      "description": "Whether the applicant (or, if the application is made on a child's behalf, the child) has ever previously held any Malaysian passport or travel document — the form's own yes/no declaration, distinct from `previousDocumentNumber` (which cites the specific document being replaced for a non-first-time application).",
      "sourceRef": "IM.42 p.1, Bahagian B declaration (b): '*Saya mengaku bahawa **saya/anak saya **pernah/tidak pernah memiliki pasport/dokumen perjalanan bernombor:'"
    },
    {
      "name": "previousTravelDocumentNumberDeclared",
      "label": "Bernombor (previously-held document number)",
      "type": "string",
      "required": false,
      "requiredWhen": {
        "field": "previouslyHeldTravelDocument",
        "equals": true
      },
      "description": "The number of the previously-held passport/travel document named in the declaration above, required only when that declaration is answered 'pernah' (yes, previously held).",
      "sourceRef": "IM.42 p.1, Bahagian B declaration (b): '... memiliki pasport/dokumen perjalanan bernombor: ____'"
    },
    {
      "name": "guardianName",
      "label": "Nama (Bapa/Ibu/Penjaga)",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "The full name of the applicant's father, mother, or lawful guardian. The form's own instruction states this is only completed 'Jika pemohon berusia di bawah 18 tahun' (if the applicant is under 18); this schema does not gate it with a formal age condition (no age-from-date-of-birth comparison is expressible in the shared Condition grammar) and instead discloses the source's own condition here.",
      "sourceRef": "IM.42 p.1, Bahagian E: 'Jika pemohon berusia di bawah 18 tahun, sila isikan maklumat **bapa/ibu/penjaga yang sah seperti berikut:- Nama :'"
    },
    {
      "name": "guardianIcNumber",
      "label": "No. Kad Pengenalan (Bapa/Ibu/Penjaga)",
      "type": "string",
      "required": false,
      "classification": "sensitive-pii",
      "description": "The MyKad number of the applicant's father, mother, or lawful guardian, under the same under-18 condition as `guardianName`.",
      "sourceRef": "IM.42 p.1, Bahagian E: 'No. Kad Pengenalan :'"
    },
    {
      "name": "declarationDate",
      "label": "Tarikh (Tandatangan Pemohon)",
      "type": "date",
      "required": true,
      "description": "The date the applicant signs the Bahagian E declaration attesting that all information given in the form is true and correct.",
      "sourceRef": "IM.42 p.1, Bahagian E: 'Tarikh :  ___/___/_____' beside '(Tandatangan Pemohon)'"
    }
  ],
  "documents": [
    {
      "id": "identityDocument",
      "label": "MyKad, temporary identification document (KPPK 09), or birth certificate",
      "category": "identity-document",
      "required": true,
      "sourceRef": "JIM 'Pasport Malaysia Antarabangsa' service page (https://www.imi.gov.my/index.php/perkhidmatan-utama/pasport/pasport-malaysia-antarabangsa/), eligibility category table: \"MyKad/ Dokumen Pengenalan Sementara (KPPK 09)\" (born in Malaysia, category A/B); \"Sijil Kelahiran pemohon\" required in addition for an applicant born in Malaysia; \"Borang W/ Borang H/ Sijil Perakuan Taraf/ Pengesahan Taraf Warganegara\" for an applicant born outside Malaysia"
    },
    {
      "id": "applicantPhotograph",
      "label": "1 recent passport-style photograph of the applicant, 3.5cm x 5.0cm",
      "category": "supporting-evidence",
      "required": true,
      "sourceRef": "IM.42 p.1, photograph box label: '3.5 sm x 5.0 sm Gambar Pemohon'"
    },
    {
      "id": "previousPassportOrTravelDocument",
      "label": "The applicant's most recent passport or travel document",
      "category": "supporting-evidence",
      "required": false,
      "requiredWhen": {
        "field": "applicationReason",
        "in": ["pages_exhausted_or_expired", "damaged", "insert_child_photo"]
      },
      "sourceRef": "IM.42 p.1, item 10 '... kepilkan pasport/dokumen perjalanan terakhir bernombor:'; item 12 '... kepilkan dua keping gambar terbaru serta pasport/dokumen perjalanan terakhir.'"
    },
    {
      "id": "policeReport",
      "label": "Police report of the loss",
      "category": "supporting-evidence",
      "required": false,
      "requiredWhen": {
        "field": "applicationReason",
        "equals": "lost"
      },
      "sourceRef": "IM.42 p.1, item 11 'Sila isikan maklumat di bahagian A, bahagian C, bahagian E dan kepilkan laporan polis mengenai kehilangan tersebut.'"
    },
    {
      "id": "additionalChildPhotographs",
      "label": "2 additional recent photographs of the child",
      "category": "supporting-evidence",
      "required": false,
      "requiredWhen": {
        "field": "applicationReason",
        "equals": "insert_child_photo"
      },
      "sourceRef": "IM.42 p.1, item 12 'Sila isikan maklumat di bahagian A, bahagian C, bahagian E dan kepilkan dua keping gambar terbaru serta pasport/dokumen perjalanan terakhir.'"
    },
    {
      "id": "applicationFee",
      "label": "Passport fee",
      "category": "payment",
      "required": true,
      "amount": {
        "currency": "MYR",
        "value": 200
      },
      "sourceRef": "JIM 'Pasport Malaysia Antarabangsa' service page (https://www.imi.gov.my/index.php/perkhidmatan-utama/pasport/pasport-malaysia-antarabangsa/), 'Kadar Fi Pasport Malaysia' table, row 1: applicant aged 18-59, RM200 (5-year validity) / RM350 (10-year validity) — the base citizen rate. The full table varies by age band and disclosed exemptions (e.g. free for a registered person with disability, or a fee-exempt category such as JIM's own staff); disclosed in full in VERIFICATION.md rather than modelled as a single universal amount."
    },
    {
      "id": "signedDeclaration",
      "label": "Applicant's declaration and signature",
      "category": "attestation",
      "required": true,
      "statement": "SAYA MENGAKU BAHAWA SEGALA MAKLUMAT YANG DIBERIKAN DALAM BORANG INI ADALAH BETUL DAN BENAR. SAYA FAHAM BAHAWA JIKA SAYA TELAH MEMBERIKAN MAKLUMAT PALSU DALAM BORANG INI ADALAH MENJADI SUATU KESALAHAN DAN JIKA DISABITKAN KESALAHAN SAYA BOLEH DIKENAKAN DENDA TIDAK KURANG DARI RM10,000 DAN TIDAK MELEBIHI RM50,000 ATAU DIHUKUM PENJARA TIDAK KURANG DARI SATU (1) TAHUN DAN TIDAK MELEBIHI LIMA (5) TAHUN ATAU KEDUA-DUANYA SEKALI.",
      "issuingAuthority": "Self-attested by the applicant, signed within the form's marked 'Tandatangan Pemohon' box",
      "sourceRef": "IM.42 p.1, Bahagian E. PERSETUJUAN/AKUAN, declaration text"
    }
  ],
  "steps": [
    {
      "id": "jenis_permohonan",
      "title": "Jenis Permohonan dan Jenis Dokumen (application reason and document type)",
      "fields": ["applicationReason", "documentTypeRequested"],
      "next": "maklumat_pemohon"
    },
    {
      "id": "maklumat_pemohon",
      "title": "A - Maklumat Pemohon Pasport / Dokumen Perjalanan (applicant particulars)",
      "fields": [
        "fullName", "otherName", "icNumber", "alternativeIdNumber", "dateOfBirth",
        "placeOfBirth", "gender", "currentAddress", "postcode", "city", "state",
        "height", "maritalStatus"
      ],
      "next": "penggantian"
    },
    {
      "id": "penggantian",
      "title": "B/C/D - Maklumat Penggantian (replacement/amendment details)",
      "fields": [
        "previousDocumentNumber", "previouslyHeldTravelDocument",
        "previousTravelDocumentNumberDeclared"
      ],
      "next": "persetujuan"
    },
    {
      "id": "persetujuan",
      "title": "E - Persetujuan/Akuan (consent and declaration)",
      "fields": ["guardianName", "guardianIcNumber", "declarationDate"]
    }
  ]
}
