{
  "$schema": "https://govschema.org/spec/v0.3/govschema.schema.json",
  "govschemaVersion": "0.3.0",
  "id": "th/mfa/thai-national-id-card-application",
  "version": "1.0.0",
  "title": "Thai National ID Card Application Form — Royal Thai Embassy, Washington, D.C.",
  "description": "The Royal Thai Embassy, Washington, D.C.'s consular-services \"Thai National ID Card Application Form\" (แบบแจ้งความประสงค์ขอมีบัตรประจำตัวประชาชนไทย), for Thai nationals resident in the United States requesting a new or replacement Thai National ID Card through the Embassy rather than in person at a district (amphoe/khet) office in Thailand. Closes Thailand's registry coverage to full 6 of 6 verticals (Passport, Taxes, Business Formation, Visa, and DMV are already modelled). A single-page, genuinely flat print form (pdfjs-dist confirms 0 AcroForm/Widget annotations — every blank, checkbox, and the 13-digit ID-number comb grid is static page content, not a fillable widget) with a clean, fully extractable bilingual Thai/English text layer. This is a disclosed judgment call in favor of the consular/overseas variant over the primary domestic process: Thailand's in-country National ID Card issuance (via the Department of Provincial Administration/DOPA, บ.ป.1) was independently confirmed this cycle to be a dead end for schema purposes — the underlying document is generated and printed by a government officer from the civil registry as part of an in-person, counter-only biometric (photograph and fingerprint) enrollment workflow, not a form the citizen fills out in advance; DOPA's own public pages (`dopa.go.th/app_form`, `bora.dopa.go.th/download/`) list only prose service guides and internal manuals, no citizen-fillable blank form. This consular form, by contrast, is genuinely citizen-completed paperwork submitted ahead of (or in lieu of, for a mail-in replacement) an in-person DOPA counter transaction, and the same template recurs across multiple Thai consular posts (Washington D.C., Sydney, Jakarta), evidencing a stable Ministry of Foreign Affairs (MFA) standard template rather than a one-off local variant. The form prints no required-field markers of any kind (no asterisks, bolding, or other convention), so requiredness below is a disclosed judgment call, not read directly off the source, following this registry's established convention for no-marker forms (e.g. `np/donidcr/national-identity-card-application`, `th/mfa/passport-application-royal-thai-embassy-london`): only the applicant's own core identity fields (title, name in Thai and English, National ID number) and the current-address/contact particulars the Embassy needs to process and correspond about the request are modelled as required; demographic fields the form itself treats as bare, unqualified blanks (religion, blood type, occupation) are optional. The form's own \"Purpose\" section presents two mutually exclusive top-level request types — a brand-new card (due to expiry or loss/theft) versus a replacement of an existing card (due to one or more of several independently-selectable change reasons) — modelled as an `applicationPurpose` enum gating a conditionally-required `newCardReason` enum, and a set of independent replacement-reason booleans respectively, consistent with this registry's convention for mutually-exclusive prose/checkbox selectors versus independently-selectable checkbox groups. The applicant's handwritten signature and its accompanying \"printed name in block letters\" confirmation are excluded as physical wet-ink capture, consistent with this registry's established treatment of signature blocks on print-and-fill government forms. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Government of Thailand, the Ministry of Foreign Affairs, or the Royal Thai Embassy.",
  "status": "draft",
  "jurisdiction": {
    "country": "TH",
    "level": "national"
  },
  "authority": {
    "name": "Royal Thai Embassy, Washington, D.C. (Ministry of Foreign Affairs of the Kingdom of Thailand)",
    "abbreviation": "MFA",
    "url": "https://www.mfa.go.th"
  },
  "process": {
    "type": "application",
    "language": "th"
  },
  "source": {
    "url": "https://image.mfa.go.th/mfa/0/91fPdh6NtO/Consular-Services/Consular_service-forms/2.1_Thai_ID_Card_Application_Form.pdf",
    "retrievedAt": "2026-07-15",
    "documentRef": "แบบแจ้งความประสงค์ขอมีบัตรประจำตัวประชาชนไทย (Thai National ID Card Application Form), Royal Thai Embassy, Washington, D.C."
  },
  "verification": {
    "method": "manual-source-review-v1",
    "lastVerifiedAt": "2026-07-15",
    "verifiedBy": "GovSchema Engineering (Standards Engineer)",
    "nextReviewBy": "2027-01-15",
    "notes": "GOV-3228, scouted from GOV-3225 (\"GovSchema Standard Research\"). Thailand stood at 5/6 verticals (Passport, Taxes, Business Formation, Visa, DMV); National ID was the sole remaining gap, with two candidate sources already screened by the scouting cycle: the ThaID digital-ID app/login (confirmed a dead end — a login-gated SPA with no field-level form to model) and DOPA/BORA's in-country counter process (confirmed a dead end this cycle — dopa.go.th/app_form and bora.dopa.go.th/download/ list only prose service guides and internal manuals; independent sources confirm issuance is strictly in-person and counter-only, with the internal บ.ป.1 request form itself generated and printed by the district-office officer from the civil registry as part of a live biometric photograph/fingerprint capture, never filled out in advance by the applicant). This consular form was selected as the schema source for this cycle: independently re-fetched fresh via `curl` (not trusted from the scouting note as final) — HTTP 200, `Content-Type: application/pdf`, `Content-Length: 118599` bytes, sha256 `caf0eb02d4cd97e5cff7f3cd0d9a987084bc785f599917d5da84d371329f7674`. Parsed with pdfjs-dist 3.11.174 (legacy build): `getAnnotations()` confirms **0 Widget annotations** on the form's single page (a plain print-and-fill form, not an AcroForm); `getTextContent()` confirms a real, fully extractable bilingual Thai/English text layer (not a scanned image), read via coordinate-sorted line grouping (items grouped by rounded `y`, ordered by `x`), the same technique used across this registry's other flat-print-form entries (e.g. `th/mfa/passport-application-royal-thai-embassy-london`, `np/donidcr/national-identity-card-application`).\n\n**Consular-vs-domestic judgment call.** This schema models the Washington, D.C. consular variant of Thai National ID Card issuance, not the primary in-country DOPA/BORA process — disclosed here and in the schema's own `description` rather than presented as the canonical domestic form. The same template's recurrence across multiple Thai consular posts (Washington D.C., Sydney, Jakarta — confirmed by matching filenames/layout in prior web-search results this cycle) supports treating it as a stable MFA standard template, not a one-off local variant, but it remains embassy/consular-scoped: the form's own \"Current Address in the U.S.\" block and the fact that it is distributed from the Washington D.C. embassy's own consular-forms page make this an overseas-Thai-national specimen, not a domestic nationwide one.\n\n**No AcroForm widgets; every field modelled from visual/textual layout.** The 13-digit National ID number is drawn as a boxed digit grid (static vector rectangles, not a text-extractable comb of individual boxes) directly beneath its \"เลขประจำตัวประชาชนไทย / Thai Identification No.\" label; modelled as a single `nationalIdNumber` string field validated against Thailand's standard 13-digit format (`^[0-9]{13}$`), consistent with this registry's other Thai schemas (e.g. `th/mfa/passport-application-royal-thai-embassy-london`'s `nationalIdNumber`).\n\n**No required-field marker of any kind exists anywhere on this form** — no asterisks, bold labels, or other convention (confirmed: the extracted text contains zero `*` characters, and no instructional key defining a required/optional convention is printed anywhere). Requiredness is therefore a disclosed judgment call, not read off the source, following this registry's established precedent for no-marker forms (`np/donidcr/national-identity-card-application`, `th/mfa/passport-application-royal-thai-embassy-london`, `bd/dip`). Marked `required`: `applicationDate`, `titlePrefix`, `applicantNameThai`, `applicantNameEnglish`, `nationalIdNumber`, `applicationPurpose`, and the current-address/contact fields the Embassy needs to process a mail-in request and reach the applicant (`addressHouseNo`, `addressRoad`, `addressCity`, `addressState`, `addressZipCode`, `phoneNumber`, `email`) — this form provides no separate delivery-preference or appointment-booking mechanism (unlike `th/mfa/passport-application-royal-thai-embassy-london`'s explicit postal-return-vs-in-person-collection choice), so phone and email are both treated as the Embassy's only means of contacting the applicant about the request, rather than assuming one channel suffices. `addressAptSuite` is left optional since not every address includes a unit number. `religion`, `bloodType`, and `occupation` are printed as bare, unqualified blanks with no surrounding text suggesting they are essential to processing an ID-card request (unlike the applicant's own identity and contact particulars), so all three are left optional — a disclosed judgment call, consistent with `np/donidcr/national-identity-card-application`'s treatment of the same class of bare demographic blank (caste/sex/religion/occupation).\n\n**`applicationPurpose` (มีความประสงค์ขอมีบัตรประจำตัวประชาชน / Purpose for Acquiring New Thai ID Card)** presents two mutually exclusive top-level request types as prose statements each followed by its own checkbox row (no AcroForm checkbox widgets exist at all on this specimen) — \"ขอมีบัตรใหม่ (New card)\" versus \"ขอเปลี่ยนบัตร (Replacement)\" — modelled as a two-value `enum` (`new-card` / `replacement`) rather than two independent booleans plus an `exclusivityGroups` entry, matching this registry's established convention for bare \"choose one of these statements\" prose selectors on plain-print forms (cf. `th/mfa/passport-application-royal-thai-embassy-london`'s `deliveryPreference`).\n\n**`newCardReason`** (บัตรหมดอายุ/Expired vs. บัตรสูญหายหรือถูกทำลาย/Lost-Stolen) is a second mutually exclusive pair nested under the `new-card` purpose, modelled as an `enum` with `requiredWhen: { field: \"applicationPurpose\", equals: \"new-card\" }` (per §10 of the spec, its `required` is therefore statically `false`, and its effective requiredness collapses to `false` whenever `applicationPurpose` is not `new-card`). `oldCardBackNumber` (the number on the back of the current card) is explicitly qualified \"ถ้ามี\" (\"if any\") by the source itself, so it is modelled as unconditionally optional with a `visibleWhen` tying its presentational relevance to the `new-card` purpose, rather than a `requiredWhen`.\n\n**The Replacement reasons are modelled as eight independent boolean fields**, not a single enum, because the source's own checkbox layout allows more than one to apply simultaneously (e.g. a title change and an address change on the same request) — unlike the New-card-vs-Replacement and Expired-vs-Lost/Stolen choices, which are each printed as a single mutually exclusive pair. Each of `replacementTitleChanged`, `replacementAddressChanged`, `replacementThaiFirstNameChanged`, `replacementThaiLastNameChanged`, `replacementThaiFirstAndLastNameChanged`, `replacementEnglishNameChanged`, and `replacementDamaged` carries a `visibleWhen: { field: \"applicationPurpose\", equals: \"replacement\" }`; all are left optional since the source imposes no explicit \"select at least one\" instruction to validate against. Note that `replacementThaiFirstNameChanged`, `replacementThaiLastNameChanged`, and `replacementThaiFirstAndLastNameChanged` are printed as three distinct, seemingly overlapping checkboxes (a change to only the first name, only the last name, or both) — modelled exactly as printed rather than collapsed into two, per this registry's precision-over-editorializing convention. `replacementOther` (อื่น ๆ/Others) carries its own free-text blank, modelled as `replacementOtherDescription` with a `requiredWhen: { field: \"replacementOther\", equals: true }`.\n\n**The applicant's handwritten signature and its accompanying \"ตัวบรรจง (Printed)\" block-letter confirmation are excluded** as physical wet-ink capture that duplicates the already-modelled `applicantNameThai`, consistent with this registry's established treatment of signature blocks on print-and-fill forms (e.g. `np/donidcr/national-identity-card-application`, `do/mirex/passport-application`). Unlike some of this registry's other Nepal/Thailand specimens, this form carries no separate declaration-date blank near the signature to retain as a distinct field.\n\n**`authority.url`** points to the Ministry of Foreign Affairs' main domain (`www.mfa.go.th`, independently confirmed reachable this cycle, HTTP 200) rather than the Washington, D.C. embassy's own site (`thaiembdc.org`): the embassy's own domain returned a TLS handshake failure from this sandbox's network egress on every attempt this cycle (`curl`/`openssl s_client` both fail identically against its Cloudflare-fronted IP, while the MFA's own `image.mfa.go.th` CDN and `www.mfa.go.th` both resolved normally) — a disclosed sandbox-networking limitation, not a claim that the embassy's own site is unreachable in general. The source PDF itself was independently fetched and hashed directly from MFA's own CDN, unaffected by this.\n\nConformance: an ephemeral, from-scratch conformance checker (deriving required/enum/`requiredWhen`/`visibleWhen` rules directly from this schema's own `fields[]`, discarded after use, not committed) ran the fixtures documented in this version's `VERIFICATION.md`. Structural validation: `node tools/validate.mjs` and `node tools/validate-ajv.mjs` (ajv 2020-12 against spec/v0.3) both pass on the full registry after adding this document; `npm run build-index` re-run in `tools/govschema-client/` to regenerate `registry-index.json`."
  },
  "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-15"
  },
  "license": "CC-BY-4.0",
  "fields": [
    {
      "name": "applicationDate",
      "label": "วันที่ (Date)",
      "type": "date",
      "required": true,
      "description": "The date the form is completed, printed as a day/month/พ.ศ.(Buddhist-era year) blank at the top of the form. Modelled as a single canonical ISO date; the printed year blank is Buddhist Era (Gregorian year + 543), a conversion the consuming agent is expected to perform.",
      "sourceRef": "วันที่ (Day) ............... เดือน (Month) .................................. พ.ศ. (Year) ........................."
    },
    {
      "name": "titlePrefix",
      "label": "นาย (Mr.) / นาง (Mrs.) / น.ส. (Miss)",
      "type": "enum",
      "required": true,
      "classification": "pii",
      "description": "The applicant's own title, printed as three checkboxes immediately preceding the applicant's name blanks.",
      "sourceRef": "ข้าพเจ้า I, นาย (Mr.) นาง (Mrs.) น.ส. (Miss) ..............................................................................................",
      "validation": {
        "enum": ["mr", "mrs", "miss"]
      }
    },
    {
      "name": "applicantNameThai",
      "label": "ชื่อ-นามสกุล (ภาษาไทย) — Name (in Thai)",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "The applicant's full name in Thai.",
      "sourceRef": "ข้าพเจ้า I, นาย (Mr.) นาง (Mrs.) น.ส. (Miss) .............................................................................................. (ภาษาไทย / in Thai)",
      "validation": { "maxLength": 200 }
    },
    {
      "name": "applicantNameEnglish",
      "label": "ชื่อ-นามสกุล (ภาษาอังกฤษ) — Name (in English)",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "The applicant's full name transliterated into English.",
      "sourceRef": "............................................................................................... (ภาษาอังกฤษ / in English)",
      "validation": { "maxLength": 200 }
    },
    {
      "name": "nationalIdNumber",
      "label": "เลขประจำตัวประชาชนไทย (Thai Identification No.)",
      "type": "string",
      "required": true,
      "classification": "sensitive-pii",
      "description": "The applicant's own 13-digit Thai National ID Card number, drawn on the source as a boxed digit grid rather than a text-extractable blank.",
      "sourceRef": "เลขประจำตัวประชาชนไทย / Thai Identification No.",
      "validation": { "pattern": "^[0-9]{13}$" }
    },
    {
      "name": "religion",
      "label": "นับถือศาสนา (Religion)",
      "type": "string",
      "required": false,
      "classification": "pii",
      "sourceRef": "นับถือศาสนา ........................ หมู่โลหิต ........................ อาชีพ ..........................................................................................",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "bloodType",
      "label": "หมู่โลหิต (Blood Type)",
      "type": "string",
      "required": false,
      "description": "Printed as a bare blank with no enumerated options, so modelled as free text rather than an invented enum.",
      "sourceRef": "นับถือศาสนา ........................ หมู่โลหิต ........................ อาชีพ ..........................................................................................",
      "validation": { "maxLength": 10 }
    },
    {
      "name": "occupation",
      "label": "อาชีพ (Occupation)",
      "type": "string",
      "required": false,
      "sourceRef": "นับถือศาสนา ........................ หมู่โลหิต ........................ อาชีพ ..........................................................................................",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "addressHouseNo",
      "label": "บ้านเลขที่ (House No.) — Current Address in the U.S.",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "บ้านเลขที่ ............................. ถนน .................................................................................... Apt./ Suite # ......................",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "addressRoad",
      "label": "ถนน (Road) — Current Address in the U.S.",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "บ้านเลขที่ ............................. ถนน .................................................................................... Apt./ Suite # ......................",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "addressAptSuite",
      "label": "Apt./Suite # — Current Address in the U.S.",
      "type": "string",
      "required": false,
      "classification": "pii",
      "sourceRef": "บ้านเลขที่ ............................. ถนน .................................................................................... Apt./ Suite # ......................",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "addressCity",
      "label": "เมือง (City) — Current Address in the U.S.",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "เมือง ...................................................................... รัฐ ................................................... รหัสไปรษณีย์ ..........................",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "addressState",
      "label": "รัฐ (State) — Current Address in the U.S.",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "เมือง ...................................................................... รัฐ ................................................... รหัสไปรษณีย์ ..........................",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "addressZipCode",
      "label": "รหัสไปรษณีย์ (Zip Code) — Current Address in the U.S.",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "เมือง ...................................................................... รัฐ ................................................... รหัสไปรษณีย์ ..........................",
      "validation": { "maxLength": 15 }
    },
    {
      "name": "phoneNumber",
      "label": "โทรศัพท์ (Tel.)",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "The form provides no separate appointment/delivery-preference mechanism, so this is treated as one of the Embassy's two means of contacting the applicant about the request.",
      "sourceRef": "โทรศัพท์ ......................................................... อีเมล .......................................................................................................",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "email",
      "label": "อีเมล (E-mail)",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "The form provides no separate appointment/delivery-preference mechanism, so this is treated as one of the Embassy's two means of contacting the applicant about the request.",
      "sourceRef": "โทรศัพท์ ......................................................... อีเมล .......................................................................................................",
      "validation": { "pattern": "^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$", "maxLength": 254 }
    },
    {
      "name": "applicationPurpose",
      "label": "มีความประสงค์ขอมีบัตรประจำตัวประชาชน (Purpose for Acquiring New Thai ID Card)",
      "type": "enum",
      "required": true,
      "description": "The form's two top-level request types, each printed as its own prose statement with its own checkbox row (no AcroForm checkbox widgets exist on this specimen).",
      "sourceRef": "ขอมีบัตรใหม่ (New card) เนื่องจาก ... / ขอเปลี่ยนบัตร (Replacement) เนื่องจาก ...",
      "validation": {
        "enum": ["new-card", "replacement"]
      }
    },
    {
      "name": "newCardReason",
      "label": "ขอมีบัตรใหม่เนื่องจาก (New Card Reason)",
      "type": "enum",
      "required": false,
      "requiredWhen": {
        "field": "applicationPurpose",
        "equals": "new-card"
      },
      "description": "The reason for requesting a brand-new card, applicable only when applicationPurpose is new-card.",
      "sourceRef": "ขอมีบัตรใหม่ (New card) เนื่องจาก บัตรหมดอายุ (Expired) บัตรสูญหายหรือถูกทำลาย (Lost / Stolen)",
      "validation": {
        "enum": ["expired", "lost-stolen"]
      }
    },
    {
      "name": "oldCardBackNumber",
      "label": "หมายเลขด้านหลังของบัตรเดิม (ถ้ามี) — The Number on the Back of the Current Thai ID Card (If Any)",
      "type": "string",
      "required": false,
      "visibleWhen": {
        "field": "applicationPurpose",
        "equals": "new-card"
      },
      "description": "Explicitly qualified \"ถ้ามี\" (\"if any\") on the source, so modelled as unconditionally optional rather than requiredWhen-gated.",
      "sourceRef": "หมายเลขด้านหลังของบัตรเดิม (ถ้ามี) .......................................................................................",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "replacementTitleChanged",
      "label": "เปลี่ยนคำนำหน้า (Title Changed)",
      "type": "boolean",
      "required": false,
      "visibleWhen": {
        "field": "applicationPurpose",
        "equals": "replacement"
      },
      "sourceRef": "ขอเปลี่ยนบัตร (Replacement) เนื่องจาก เปลี่ยนคำนำหน้า (Title Changed) เปลี่ยนที่อยู่ (Address Changed)"
    },
    {
      "name": "replacementAddressChanged",
      "label": "เปลี่ยนที่อยู่ (Address Changed)",
      "type": "boolean",
      "required": false,
      "visibleWhen": {
        "field": "applicationPurpose",
        "equals": "replacement"
      },
      "sourceRef": "ขอเปลี่ยนบัตร (Replacement) เนื่องจาก เปลี่ยนคำนำหน้า (Title Changed) เปลี่ยนที่อยู่ (Address Changed)"
    },
    {
      "name": "replacementThaiFirstNameChanged",
      "label": "เปลี่ยนชื่อตัวภาษาไทย (Thai First Name Changed)",
      "type": "boolean",
      "required": false,
      "visibleWhen": {
        "field": "applicationPurpose",
        "equals": "replacement"
      },
      "sourceRef": "เปลี่ยนชื่อตัวภาษาไทย (Thai First Name Changed) เปลี่ยนชื่อสกุลภาษาไทย (Thai Last Name Changed)"
    },
    {
      "name": "replacementThaiLastNameChanged",
      "label": "เปลี่ยนชื่อสกุลภาษาไทย (Thai Last Name Changed)",
      "type": "boolean",
      "required": false,
      "visibleWhen": {
        "field": "applicationPurpose",
        "equals": "replacement"
      },
      "sourceRef": "เปลี่ยนชื่อตัวภาษาไทย (Thai First Name Changed) เปลี่ยนชื่อสกุลภาษาไทย (Thai Last Name Changed)"
    },
    {
      "name": "replacementThaiFirstAndLastNameChanged",
      "label": "เปลี่ยนชื่อตัวและชื่อสกุลภาษาไทย (Thai First and Last Names Changed)",
      "type": "boolean",
      "required": false,
      "visibleWhen": {
        "field": "applicationPurpose",
        "equals": "replacement"
      },
      "description": "Printed as a third, distinct checkbox alongside the separate first-name-only and last-name-only options; modelled exactly as printed rather than collapsed into the other two.",
      "sourceRef": "เปลี่ยนชื่อตัวและชื่อสกุลภาษาไทย (Thai First and Last Names Changed)"
    },
    {
      "name": "replacementEnglishNameChanged",
      "label": "เปลี่ยนตัวสะกดชื่อ/นามสกุลภาษาอังกฤษ (English First Name / Last Name Changed)",
      "type": "boolean",
      "required": false,
      "visibleWhen": {
        "field": "applicationPurpose",
        "equals": "replacement"
      },
      "sourceRef": "เปลี่ยนตัวสะกดชื่อ/นามสกุลภาษาอังกฤษ (English First Name / Last Name Changed)"
    },
    {
      "name": "replacementDamaged",
      "label": "บัตรชำรุดในสาระสำคัญ (Damaged)",
      "type": "boolean",
      "required": false,
      "visibleWhen": {
        "field": "applicationPurpose",
        "equals": "replacement"
      },
      "sourceRef": "บัตรชำรุดในสาระสำคัญ (Damaged) อื่น ๆ (Others) ......................................................................................"
    },
    {
      "name": "replacementOther",
      "label": "อื่น ๆ (Others)",
      "type": "boolean",
      "required": false,
      "visibleWhen": {
        "field": "applicationPurpose",
        "equals": "replacement"
      },
      "sourceRef": "บัตรชำรุดในสาระสำคัญ (Damaged) อื่น ๆ (Others) ......................................................................................"
    },
    {
      "name": "replacementOtherDescription",
      "label": "อื่น ๆ — รายละเอียด (Others — Description)",
      "type": "string",
      "required": false,
      "requiredWhen": {
        "field": "replacementOther",
        "equals": true
      },
      "sourceRef": "อื่น ๆ (Others) ......................................................................................",
      "validation": { "maxLength": 200 }
    }
  ]
}
