{
  "$schema": "https://govschema.org/spec/v0.3/govschema.schema.json",
  "govschemaVersion": "0.3.0",
  "id": "it/poliziadistato/richiesta-passaporto-maggiorenni",
  "version": "1.0.0",
  "title": "Italy Request for a Passport for Adults (Modello 308)",
  "description": "Modello 308, 'Modulo per la richiesta di passaporto per maggiorenni' (Form for the request of a passport for adults), published by the Polizia di Stato (Ministero dell'Interno) and submitted to the Questura (provincial police headquarters) of the applicant's residence/domicile in Italy, or to the competent Diplomatic/Consular Representation abroad — booking is made online via passaportonline.poliziadistato.it. This is a genuine fillable AcroForm (57 Widget annotations confirmed via pdfjs-dist across a 3-page, 1,749,585-byte PDF), not the text-less scanned form the registry's prior GOV-2382/GOV-2404/GOV-2716 scouting passes assumed when a live-fetch WAF block against questure.poliziadistato.it prevented direct inspection — see VERIFICATION.md for the full correction and the Wayback Machine retrieval that made independent re-verification possible. This document models the applicant-facing core of page 1 of 3: personal identity/birth/residence data, the identity document being used to prove identity, contact details, physical-description fields (eye colour code, height, sex) required for the passport's own data, an already-held-passport declaration, a domicile-if-different-from-residence block, the minor-children/parental-responsibility declaration together with up to three other-parent identity blocks (the form's own 'Altro genitore: 1) 2) 3)' rows — three OTHER PARENTS holding parental responsibility, not three children, correcting a mischaracterization in this issue's own pre-scouting note), the four request-type checkboxes ('Chiede: (8)'), a pickup-delegate block, and the document/payment requirements printed on page 3 of 3's instructions. It deliberately does NOT model: the 'Alla Questura di'/'Protocollo' header boxes and the entire 'Riservato all'ufficio' attestation strip at the foot of page 1 (explicitly reserved, per the form's own footnote 11, 'al Pubblico Ufficiale competente a ricevere la documentazione' — the receiving official, not the applicant); page 2 of 3's 'Riservato all'Ufficio' checklist, 'esito accertamenti', VISTO/decision block, Poste Italiane insured-mail code, and office stamp/signature lines (all explicitly office-completed, following this registry's dk/cpr and se/skatteverket office-reserved-content precedent); and both pages' wet-ink signature lines. Two fields with no corresponding AcroForm widget are nonetheless modelled as disclosed judgment calls, matching this registry's it/mit precedent for un-widgeted but clearly applicant-facing boxes: requestingQuestura (the 'Alla Questura di' header box) and dataProtectionConsent (page 2's GDPR Article 13 consent declaration, which page 2 carries as flat image content with zero AcroForm widgets of its own). GovSchema is independent and is not affiliated with, endorsed by, or operated by the Government of Italy, the Ministero dell'Interno, or the Polizia di Stato.",
  "status": "draft",
  "jurisdiction": {
    "country": "IT",
    "level": "national"
  },
  "authority": {
    "name": "Polizia di Stato — Questura (Ufficio Passaporti)",
    "abbreviation": "PS",
    "url": "https://questure.poliziadistato.it/statics/33/modulo-passaporti-maggiorenni.pdf",
    "operatedBy": {
      "name": "Ministero dell'Interno",
      "abbreviation": "MININT",
      "url": "https://www.interno.gov.it",
      "basis": "Legge 21 novembre 1967, n. 1185 (Norme sui passaporti), articoli 3 e 3-bis, e art. 46 lettera aa) del D.P.R. 28 dicembre 2000, n. 445; the form itself (Modello 308) is published and distributed by the Polizia di Stato's own Questure (provincial police headquarters), the passport-issuing authority under Italian law."
    }
  },
  "process": {
    "type": "request",
    "language": "it-IT"
  },
  "source": {
    "url": "https://web.archive.org/web/20250807022716/https://questure.poliziadistato.it/statics/33/modulo-passaporti-maggiorenni.pdf",
    "retrievedAt": "2026-07-15",
    "documentRef": "Modello 308, 'Modulo per la richiesta di passaporto per maggiorenni'"
  },
  "verification": {
    "method": "manual-source-review-v1",
    "lastVerifiedAt": "2026-07-15",
    "verifiedBy": "GovSchema Engineering (Standards Engineer)",
    "nextReviewBy": "2027-01-15",
    "notes": "GOV-3031, a pre-scouted GOV-3026 child issue authoring Italy's Passport-vertical opener (Italy previously 2/6 — DMV and Taxes only — now 4/6 combined with the concurrently-merged GOV-3032 Visa opening). This overturns this registry's own GOV-2382/GOV-2404/GOV-2716 'confirmed dead end' finding for IT Passport, which rested solely on a live-fetch 'Accesso negato' WAF block against questure.poliziadistato.it and never actually inspected the document. Independently re-fetched this cycle via direct curl against the Wayback Machine (the live URL remains WAF-blocked): first queried the CDX API (`web.archive.org/cdx/search/cdx?url=questure.poliziadistato.it/statics/33/modulo-passaporti-maggiorenni.pdf&output=json`), which returned exactly one capture at timestamp 20250807022716; fetched `https://web.archive.org/web/20250807022716/https://questure.poliziadistato.it/statics/33/modulo-passaporti-maggiorenni.pdf` directly (not the approximate '20250807000000*' form in the issue, which is a CDX wildcard query, not a fetchable snapshot URL). Result: HTTP 200, `content-type: application/pdf`, memento-datetime Thu, 07 Aug 2025 02:27:16 GMT, exactly 1,749,585 bytes, sha256 `67ef4f41dd8ee5681aab1c1389a11f8608a52c208ddd93f0f3011ef1a7eee384` — byte-for-byte confirming the prior scouting note's own citation. **Major correction to the prior note**: `pdfjs-dist` 4.10.38 (`legacy/build/pdf.mjs`) `page.getAnnotations()` found this is a genuine fillable AcroForm, not a zero-widget static PDF as the pre-scouting note assumed — page 1 of 3 carries exactly 57 `/Widget` annotations (43 `Tx` text fields, 14 `Btn` independent checkboxes — corrected during review-gate re-verification from an initial 44/13 miscount, the 57 total and every field-name mapping unaffected), page 2 of 3 carries 0 widgets (a flat scanned/rendered image plus a Link annotation), page 3 of 3 carries 0 widgets and one `Link` annotation only (to `https://passaportonline.poliziadistato.it/`). `doc.numPages` is 3, not the 'roughly 2-3 pages' the note guessed. Both `getTextContent()` and an operator-list dump (`getOperatorList()`) showed pages 1-2 have **zero extractable text items** — each page is a single full-page `paintImageXObject` call (2480x3508px JPEG) with the 57 widgets overlaid on top at precise coordinates for data entry; only page 3 (the numbered footnote instructions) carries genuine vector text (325 items). The PDF uses Standard-security-handler V4/AESV2 128-bit encryption with an empty user password (permissions-only, e.g. print restrictions) — `pdfjs-dist` decrypts transparently for `getAnnotations`/`getTextContent`/`getOperatorList`, but the sandbox's `node-canvas`-based `page.render()` reproduced this registry's known GOV-2316/GOV-2389 image-XObject rendering failure ('Image or Canvas expected') for pages 1-2 (page 3 rendered fine). Direct object-stream extraction (as used for GOV-2389's TT2119) was not viable here because the two image objects (474, 476; `/Filter/DCTDecode`) are AES-encrypted at the stream level, and manual PDF decryption was not attempted. Instead, the npm `mupdf` package (`mupdf@1.28.0`, a WASM build of MuPDF with its own decryption/rendering pipeline, independent of `pdfjs-dist`/`node-canvas`) rendered all 3 pages to PNG at 3x scale with no rendering-pipeline failures; page 1 was then read directly, and every one of the 57 widget rects was cross-checked against the rendered image by drawing each widget's rect (converted from PDF user-space, bottom-left origin, to the image's top-left-origin pixel space at the same 3x scale) as a labelled overlay box, confirming every field-name-to-visible-label mapping used in this schema by direct visual co-location (script and annotated PNG discarded after use, not committed). Field count: **57 real AcroForm fields**, not the pre-scouting note's 'roughly 30-35' estimate — the note's estimate undercounted mainly because the up-to-3-repeating block (see below) alone contributes 12 fields, and several single-purpose boxes (birth/residence province-vs-foreign-country code pairs, 'N.civico' house-number boxes) are their own separate widgets rather than being folded into a neighbouring field. **Correcting the issue's own pre-scouting description**: the form's 'Altro genitore: 1) 2) 3)' block (Cognome e nome / Data di nascita / Comune di nascita / Sigla prov., x3) records up to **three OTHER PARENTS** holding parental responsibility for the applicant's minor children (relevant when 'Unico esercente responsabilità genitoriale' = NO) — it is NOT, as the issue's pre-scouting note stated, 'up to 3 children with each parent's data'; the form records only a yes/no fact about whether the applicant has minor children ('Figli minori? (7)'), never the children's own identities. Modelled here as a bounded 1-3 repeating group (`otherParent1`.. `otherParent3`), matching this registry's established `child1`..`childN` bounded-repeating-group convention (e.g. `ng/nis`'s passport schema). All 14 checkboxes are genuinely independent `Btn` widgets with `exportValue: 'Yes'` and no shared radio-group parent (confirmed via `radioButton: false` on every one) — per this registry's `si/ajpes` precedent (GOV-2910), each is modelled as its own independent `boolean` field, with `exclusivityGroups` recording the six pick-one-of-two/four choices the source visually presents as SI/NO or single-select checkbox rows (sex, obstructive-conditions declaration, minor-children declaration, sole-parental-responsibility declaration, spouse-surname-printing declaration, and the four-way request-type row), not modelled as `enum` fields. Two fields with no AcroForm widget of their own are included as disclosed judgment calls: `requestingQuestura` (the 'Alla Questura di' header box, part of the flat page-1 image, but unambiguously an applicant-supplied value) and `dataProtectionConsent` (page 2's GDPR Article 13 consent declaration, also flat image content). All quoted footnote text (footnotes 1-11 plus 'INDICAZIONI GENERALI' and the lettered a-e document list) was transcribed verbatim from page 3's genuine text layer via `getTextContent()` with y-coordinate row-clustering (items grouped within a 3pt y-tolerance band, matching the row-reconstruction technique this registry's `gr/yme` cycle (GOV-3026) established for out-of-visual-order text streams) — page 3's own item order already matched visual reading order once row-clustered, so no further x/y re-sequencing beyond the row grouping was needed. A second independent mirror (studio74.it) was not additionally re-fetched this cycle since the Wayback capture's sha256 already matches the issue's own independently-stated hash byte-for-byte, and `verify-sources.mjs` re-confirms the cited Wayback URL live at PR time. `documents[]` (5 entries: identity-document copy, 2 ICAO photographs, the €42.50 postal payment, the €73.50 administrative-contribution stamp, and the optional prior/lost passport evidence) is transcribed from page 3's own lettered list ('DA PRODURRE ALL'ATTO DELLA PRESENTAZIONE DELL'ISTANZA: a)-e)'). Two mock conformance scenarios (a first-time applicant with no minor children, and an applicant with minor children/another parent holding shared responsibility plus a pickup delegate) found 0 errors each against a from-scratch, ephemeral field-by-field conformance checker (deriving required/requiredWhen/enum/pattern/exclusivityGroups rules directly from this schema's own fields[]/documents[], discarded after use, not committed), plus 6 mutation-control fixtures (missing required field, missing required document, enum violation, pattern violation, exclusivityGroups violation, requiredWhen violation) each correctly raised exactly 1 error."
  },
  "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": "requestingQuestura",
      "label": "Alla Questura di",
      "type": "string",
      "required": true,
      "description": "The Questura (provincial police headquarters) the request is addressed to — the office where the applicant has residence, domicile, or dimora (per footnote 1), or the Diplomatic/Consular Representation if abroad. Printed as a header box on the flat page-1 background image with no AcroForm widget of its own (disclosed judgment call — see VERIFICATION.md); still modelled here since it is unambiguously an applicant-supplied value, not office-reserved content.",
      "sourceRef": "Modello 308 p.1/3, header box 'Alla Questura di'"
    },
    {
      "name": "surname",
      "label": "Cognome",
      "type": "string",
      "required": true,
      "description": "The applicant's surname, part of the declaration made under criminal liability (art. 76 D.P.R. 445/2000) for false statements.",
      "sourceRef": "Modello 308 p.1/3, field 'cognome'",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "firstName",
      "label": "Nome",
      "type": "string",
      "required": true,
      "description": "The applicant's first name(s).",
      "sourceRef": "Modello 308 p.1/3, field 'nome'",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "dateOfBirth",
      "label": "Data di nascita",
      "type": "date",
      "required": true,
      "description": "The applicant's date of birth.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo0'",
      "validation": { "maxLength": 10 }
    },
    {
      "name": "birthMunicipality",
      "label": "Comune di nascita",
      "type": "string",
      "required": true,
      "description": "The applicant's municipality of birth (or foreign city, if born abroad).",
      "sourceRef": "Modello 308 p.1/3, field 'comune'",
      "validation": { "maxLength": 60 }
    },
    {
      "name": "birthProvinceCode",
      "label": "Sigla prov.",
      "type": "string",
      "required": false,
      "description": "Two-letter Italian province code of the municipality of birth (e.g. RM for Roma). Left blank if born abroad, in which case birthForeignStateCode is used instead — the source prints the two boxes side by side as an Italy-vs-abroad pair, not cross-validated here as mutually exclusive.",
      "sourceRef": "Modello 308 p.1/3, field 'Text1'",
      "validation": { "pattern": "^[A-Z]{2}$" }
    },
    {
      "name": "birthForeignStateCode",
      "label": "Sigla stato",
      "type": "string",
      "required": false,
      "description": "Foreign-country code for the applicant's place of birth, used only when born outside Italy (three-character box, comb-formatted).",
      "sourceRef": "Modello 308 p.1/3, field 'Text2'",
      "validation": { "maxLength": 3 }
    },
    {
      "name": "residenceMunicipality",
      "label": "Comune di residenza",
      "type": "string",
      "required": true,
      "description": "The applicant's municipality of residence as of the application date.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo3'",
      "validation": { "maxLength": 80 }
    },
    {
      "name": "residenceProvinceCode",
      "label": "Sigla prov.",
      "type": "string",
      "required": false,
      "description": "Two-letter Italian province code of the municipality of residence (e.g. MI for Milano). Left blank if resident abroad (AIRE), in which case residenceForeignStateCode is used instead.",
      "sourceRef": "Modello 308 p.1/3, field 'Text3'",
      "validation": { "pattern": "^[A-Z]{2}$" }
    },
    {
      "name": "residenceForeignStateCode",
      "label": "Sigla stato",
      "type": "string",
      "required": false,
      "description": "Foreign-country code for the applicant's residence, used only for applicants registered as resident abroad (AIRE).",
      "sourceRef": "Modello 308 p.1/3, field 'Text4'",
      "validation": { "maxLength": 3 }
    },
    {
      "name": "residenceStreetAddress",
      "label": "Via /Piazza",
      "type": "string",
      "required": true,
      "description": "Street or square name of the applicant's residence address.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo6'",
      "validation": { "maxLength": 80 }
    },
    {
      "name": "residenceHouseNumber",
      "label": "N.civico",
      "type": "string",
      "required": false,
      "description": "House/street number of the applicant's residence address.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo7'",
      "validation": { "maxLength": 8 }
    },
    {
      "name": "maritalStatus",
      "label": "Stato civile",
      "type": "string",
      "required": false,
      "description": "The applicant's marital status, free text (e.g. celibe/nubile, coniugato/a, divorziato/a, vedovo/a).",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo8'",
      "validation": { "maxLength": 15 }
    },
    {
      "name": "identityDocumentType",
      "label": "Documento di riconoscimento",
      "type": "string",
      "required": true,
      "description": "Type of the identity document the applicant is presenting to prove their identity (e.g. carta d'identità, patente).",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo9'; nota (4)",
      "validation": { "maxLength": 25 }
    },
    {
      "name": "identityDocumentNumber",
      "label": "Numero",
      "type": "string",
      "required": true,
      "description": "Number of the identity document presented.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo10'",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "identityDocumentIssuingAuthority",
      "label": "Aut. emittente",
      "type": "string",
      "required": true,
      "description": "Authority that issued the identity document presented.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo11'"
    },
    {
      "name": "identityDocumentIssueDate",
      "label": "Data rilascio",
      "type": "date",
      "required": true,
      "description": "Issue date of the identity document presented, which must be currently valid per footnote (4).",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo12'; nota (4)",
      "validation": { "maxLength": 10 }
    },
    {
      "name": "phoneNumber",
      "label": "N.telefono",
      "type": "string",
      "required": false,
      "description": "The applicant's telephone number.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo13'",
      "validation": { "maxLength": 15 }
    },
    {
      "name": "email",
      "label": "E-mail",
      "type": "string",
      "required": false,
      "description": "The applicant's email address.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo14'",
      "validation": { "pattern": "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$", "maxLength": 40 }
    },
    {
      "name": "spouseSurname",
      "label": "Cognome coniuge",
      "type": "string",
      "required": false,
      "description": "Surname of the applicant's spouse, used only if the applicant later requests it be printed on the passport (see printSpouseSurnameYes/No, footnote 10).",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo15'",
      "validation": { "maxLength": 25 }
    },
    {
      "name": "heightCm",
      "label": "statura in cm",
      "type": "integer",
      "required": true,
      "description": "The applicant's height in centimetres, printed on the issued passport.",
      "sourceRef": "Modello 308 p.1/3, field 'Text9'",
      "validation": { "minimum": 100, "maximum": 250 }
    },
    {
      "name": "eyeColorCode",
      "label": "colore occhi",
      "type": "enum",
      "required": true,
      "description": "Single-letter eye-colour code printed on the issued passport, per footnote (3)'s own legend: A = Azzurri (blue), G = Grigi (grey), M = Marroni (brown), N = Neri (black), V = Verdi (green).",
      "sourceRef": "Modello 308 p.1/3, field 'colore occhi'; p.3/3 nota (3) 'Codice scala cromatica occhi'",
      "validation": { "enum": ["A", "G", "M", "N", "V"] }
    },
    {
      "name": "sexMale",
      "label": "M (sesso)",
      "type": "boolean",
      "required": false,
      "description": "Applicant's sex is male. One of two mutually exclusive printed checkbox options; see exclusivityGroups. Modelled as an independent boolean, not an enum, since the source AcroForm implements the two boxes as genuinely independent checkbox widgets rather than one radio-button group (per this registry's si/ajpes precedent, GOV-2910).",
      "sourceRef": "Modello 308 p.1/3, field 'Casella di controllo0', 'sesso M'"
    },
    {
      "name": "sexFemale",
      "label": "F (sesso)",
      "type": "boolean",
      "required": false,
      "description": "Applicant's sex is female. One of two mutually exclusive printed checkbox options; see exclusivityGroups.",
      "sourceRef": "Modello 308 p.1/3, field 'Casella di controllo1', 'sesso F'"
    },
    {
      "name": "obstructiveConditionsYes",
      "label": "ricorrono condizioni ostative al rilascio del passaporto — SI",
      "type": "boolean",
      "required": false,
      "description": "The applicant declares that conditions obstructing passport issuance under Legge 21/11/1967 n. 1185 art. 3/3-bis DO apply (e.g. a pending criminal conviction, security/prevention measure, civil decision, or administrative measure entered in the casellario giudiziale, or an inhibition order under art. 3-bis). One of two mutually exclusive printed checkbox options; see exclusivityGroups.",
      "sourceRef": "Modello 308 p.1/3, field 'Casella di controllo2'; p.3/3 nota (5)"
    },
    {
      "name": "obstructiveConditionsNo",
      "label": "ricorrono condizioni ostative al rilascio del passaporto — NO",
      "type": "boolean",
      "required": false,
      "description": "The applicant declares that no conditions obstructing passport issuance apply. One of two mutually exclusive printed checkbox options; see exclusivityGroups.",
      "sourceRef": "Modello 308 p.1/3, field 'Casella di controllo3'; p.3/3 nota (5)"
    },
    {
      "name": "otherPassportNumber",
      "label": "Altro passaporto di cui è già in possesso — Numero",
      "type": "string",
      "required": false,
      "description": "Number of another passport (ordinary or diplomatic/service) the applicant already holds, if any, per footnote (6) — the old passport must be presented in person, or a copy of the loss/theft report if it was lost or stolen.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo37'; nota (6)",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "otherPassportIssuingAuthority",
      "label": "Altro passaporto di cui è già in possesso — Aut. emittente",
      "type": "string",
      "required": false,
      "description": "Issuing authority of the other passport already held, if any.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo38'; nota (6)"
    },
    {
      "name": "otherPassportIssueDate",
      "label": "Altro passaporto di cui è già in possesso — Data rilascio",
      "type": "date",
      "required": false,
      "description": "Issue date of the other passport already held, if any.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo39'; nota (6)",
      "validation": { "maxLength": 10 }
    },
    {
      "name": "domicileMunicipality",
      "label": "Comune di domicilio diverso dalla residenza",
      "type": "string",
      "required": false,
      "description": "Municipality of the applicant's domicile, only when different from the residence municipality already declared.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo18'",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "domicileStreetAddress",
      "label": "Via /Piazza (domicilio)",
      "type": "string",
      "required": false,
      "description": "Street or square name of the applicant's domicile address, only when different from the residence.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo19'",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "domicileHouseNumber",
      "label": "N.civico (domicilio)",
      "type": "string",
      "required": false,
      "description": "House/street number of the applicant's domicile address, only when different from the residence.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo20'",
      "validation": { "maxLength": 8 }
    },
    {
      "name": "hasMinorChildrenYes",
      "label": "Figli minori? — SI",
      "type": "boolean",
      "required": false,
      "description": "The applicant declares having minor children, per footnote (7) ('Il richiedente è tenuto a dichiarare se ha figli minori'). One of two mutually exclusive printed checkbox options; see exclusivityGroups.",
      "sourceRef": "Modello 308 p.1/3, field 'Casella di controllo4'; nota (7)"
    },
    {
      "name": "hasMinorChildrenNo",
      "label": "Figli minori? — NO",
      "type": "boolean",
      "required": false,
      "description": "The applicant declares having no minor children. One of two mutually exclusive printed checkbox options; see exclusivityGroups.",
      "sourceRef": "Modello 308 p.1/3, field 'Casella di controllo5'; nota (7)"
    },
    {
      "name": "soleParentalResponsibilityYes",
      "label": "Unico esercente responsabilità genitoriale — SI",
      "type": "boolean",
      "required": false,
      "description": "The applicant declares being the sole holder of parental responsibility over their minor children (no other parent's identity needs to be declared below). One of two mutually exclusive printed checkbox options; see exclusivityGroups.",
      "sourceRef": "Modello 308 p.1/3, field 'Casella di controllo6'"
    },
    {
      "name": "soleParentalResponsibilityNo",
      "label": "Unico esercente responsabilità genitoriale — NO",
      "type": "boolean",
      "required": false,
      "description": "The applicant declares NOT being the sole holder of parental responsibility — at least one other parent shares it, to be declared in the 'Altro genitore' block below. One of two mutually exclusive printed checkbox options; see exclusivityGroups.",
      "sourceRef": "Modello 308 p.1/3, field 'Casella di controllo7'"
    },
    {
      "name": "otherParent1FullName",
      "label": "Altro genitore 1) — Cognome e nome",
      "type": "string",
      "required": false,
      "requiredWhen": { "all": [ { "field": "hasMinorChildrenYes", "equals": true }, { "field": "soleParentalResponsibilityNo", "equals": true } ] },
      "description": "Full name of the first other parent holding parental responsibility over the applicant's minor children, declared when the applicant is not the sole holder. The form's own numbered rows ('Altro genitore: 1) 2) 3)') bound this to at most three other parents; flattened here to otherParent1..3, matching this registry's established bounded-repeating-group convention (e.g. ng/nis's child1..childN passport fields). Correcting this issue's own pre-scouting note: this block records up to three OTHER PARENTS, not up to three children — the form never asks for the children's own identities, only whether any exist (hasMinorChildrenYes/No).",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo21'",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "otherParent1DateOfBirth",
      "label": "Altro genitore 1) — Data di nascita",
      "type": "date",
      "required": false,
      "requiredWhen": { "all": [ { "field": "hasMinorChildrenYes", "equals": true }, { "field": "soleParentalResponsibilityNo", "equals": true } ] },
      "description": "Date of birth of the first other parent holding parental responsibility.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo22'",
      "validation": { "maxLength": 10 }
    },
    {
      "name": "otherParent1BirthMunicipality",
      "label": "Altro genitore 1) — Comune di nascita",
      "type": "string",
      "required": false,
      "requiredWhen": { "all": [ { "field": "hasMinorChildrenYes", "equals": true }, { "field": "soleParentalResponsibilityNo", "equals": true } ] },
      "description": "Municipality of birth of the first other parent holding parental responsibility.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo23'",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "otherParent1BirthProvinceCode",
      "label": "Altro genitore 1) — Sigla prov.",
      "type": "string",
      "required": false,
      "description": "Two-letter Italian province code of the first other parent's municipality of birth.",
      "sourceRef": "Modello 308 p.1/3, field 'Text5'",
      "validation": { "pattern": "^[A-Z]{2}$" }
    },
    {
      "name": "otherParent2FullName",
      "label": "Altro genitore 2) — Cognome e nome",
      "type": "string",
      "required": false,
      "description": "Full name of a second other parent holding parental responsibility, if applicable. See otherParent1FullName for the bounded-repeating-group rationale.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo25'",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "otherParent2DateOfBirth",
      "label": "Altro genitore 2) — Data di nascita",
      "type": "date",
      "required": false,
      "description": "Date of birth of the second other parent, if applicable.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo26'",
      "validation": { "maxLength": 10 }
    },
    {
      "name": "otherParent2BirthMunicipality",
      "label": "Altro genitore 2) — Comune di nascita",
      "type": "string",
      "required": false,
      "description": "Municipality of birth of the second other parent, if applicable.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo27'",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "otherParent2BirthProvinceCode",
      "label": "Altro genitore 2) — Sigla prov.",
      "type": "string",
      "required": false,
      "description": "Two-letter Italian province code of the second other parent's municipality of birth, if applicable.",
      "sourceRef": "Modello 308 p.1/3, field 'Text6'",
      "validation": { "pattern": "^[A-Z]{2}$" }
    },
    {
      "name": "otherParent3FullName",
      "label": "Altro genitore 3) — Cognome e nome",
      "type": "string",
      "required": false,
      "description": "Full name of a third other parent holding parental responsibility, if applicable. See otherParent1FullName for the bounded-repeating-group rationale.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo29'",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "otherParent3DateOfBirth",
      "label": "Altro genitore 3) — Data di nascita",
      "type": "date",
      "required": false,
      "description": "Date of birth of the third other parent, if applicable.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo30'",
      "validation": { "maxLength": 10 }
    },
    {
      "name": "otherParent3BirthMunicipality",
      "label": "Altro genitore 3) — Comune di nascita",
      "type": "string",
      "required": false,
      "description": "Municipality of birth of the third other parent, if applicable.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo31'",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "otherParent3BirthProvinceCode",
      "label": "Altro genitore 3) — Sigla prov.",
      "type": "string",
      "required": false,
      "description": "Two-letter Italian province code of the third other parent's municipality of birth, if applicable.",
      "sourceRef": "Modello 308 p.1/3, field 'Text7'",
      "validation": { "pattern": "^[A-Z]{2}$" }
    },
    {
      "name": "requestIssuance",
      "label": "Chiede: Rilascio passaporto",
      "type": "boolean",
      "required": false,
      "description": "The applicant requests issuance of a new passport. One of four printed checkbox options under 'Chiede: (8)' ('Barrare il riquadro che interessa' — tick the box that applies); see exclusivityGroups. Modelled as an independent boolean, not an enum, matching this registry's si/ajpes precedent for genuinely independent (non-radio) checkbox widgets representing a single-select choice.",
      "sourceRef": "Modello 308 p.1/3, field 'Casella di controllo8'; nota (8)"
    },
    {
      "name": "requestBilingualStamp",
      "label": "Chiede: Applicazione timbro bilingue",
      "type": "boolean",
      "required": false,
      "description": "The applicant requests application of a bilingual stamp to an already-held passport, per footnote (9) — the passport to be stamped must be attached, and only specific Questure listed in footnote (9) (Ancona, Aosta, Bari, Bologna, Cagliari, Campobasso, Catanzaro, Firenze, Genova, L'Aquila, Milano, Napoli, Palermo, Perugia, Pesaro Urbino, Potenza, Roma, Torino, Trieste, Trento, Venezia, Verona) offer this service. One of four printed checkbox options under 'Chiede: (8)'; see exclusivityGroups.",
      "sourceRef": "Modello 308 p.1/3, field 'Casella di controllo9'; nota (9)"
    },
    {
      "name": "requestDoublePassport",
      "label": "Chiede: Doppio passaporto",
      "type": "boolean",
      "required": false,
      "description": "The applicant requests a second, simultaneous passport (doppio passaporto). One of four printed checkbox options under 'Chiede: (8)'; see exclusivityGroups.",
      "sourceRef": "Modello 308 p.1/3, field 'Casella di controllo10'; nota (8)"
    },
    {
      "name": "requestResidenceChange",
      "label": "Chiede: Cambio residenza",
      "type": "boolean",
      "required": false,
      "description": "The applicant requests an update to reflect a change of residence. One of four printed checkbox options under 'Chiede: (8)'; see exclusivityGroups.",
      "sourceRef": "Modello 308 p.1/3, field 'Casella di controllo11'; nota (8)"
    },
    {
      "name": "printSpouseSurnameYes",
      "label": "Stampa cognome coniuge — SI",
      "type": "boolean",
      "required": false,
      "description": "The applicant requests that the spouse's surname (spouseSurname) be printed on the passport, per footnote (10) ('Barrare nel caso si intenda far stampare il cognome del coniuge sul passaporto'). One of two mutually exclusive printed checkbox options; see exclusivityGroups.",
      "sourceRef": "Modello 308 p.1/3, field 'Casella di controllo12'; nota (10)"
    },
    {
      "name": "printSpouseSurnameNo",
      "label": "Stampa cognome coniuge — NO",
      "type": "boolean",
      "required": false,
      "description": "The applicant does not request the spouse's surname be printed on the passport. One of two mutually exclusive printed checkbox options; see exclusivityGroups.",
      "sourceRef": "Modello 308 p.1/3, field 'Casella di controllo13'; nota (10)"
    },
    {
      "name": "delegateSurname",
      "label": "Delega al ritiro — Cognome",
      "type": "string",
      "required": false,
      "description": "Surname of the person the applicant delegates to collect the issued passport on their behalf, if any.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo33'",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "delegateFirstName",
      "label": "Delega al ritiro — Nome",
      "type": "string",
      "required": false,
      "description": "First name of the pickup delegate, if any.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo34'",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "delegateDateOfBirth",
      "label": "Delega al ritiro — Data di nascita",
      "type": "date",
      "required": false,
      "description": "Date of birth of the pickup delegate, if any.",
      "sourceRef": "Modello 308 p.1/3, field 'Campo di testo35'",
      "validation": { "maxLength": 10 }
    },
    {
      "name": "delegateFiscalCode",
      "label": "Codice fiscale (delega al ritiro)",
      "type": "string",
      "required": false,
      "description": "Italian codice fiscale (16-character alphanumeric tax code) of the pickup delegate, if any. A comb-formatted 16-box field on the source.",
      "sourceRef": "Modello 308 p.1/3, field 'Text8'",
      "validation": { "pattern": "^[A-Z0-9]{16}$" }
    },
    {
      "name": "dataProtectionConsent",
      "label": "Accettazione al trattamento dei dati personali",
      "type": "boolean",
      "required": true,
      "description": "The applicant declares having read and received a copy of the privacy notice for electronic ordinary passport applicants under Article 13 of Regulation (EU) 2016/679 (GDPR) of 27 April 2016, and consents to the processing of their personal data accordingly. Page 2 of 3 carries this declaration as flat scanned/rendered image content with zero AcroForm widgets of its own (disclosed judgment call — see VERIFICATION.md); still modelled here since it is an applicant consent, not office-reserved content.",
      "sourceRef": "Modello 308 p.2/3, 'Accettazione al trattamento dei dati personali'"
    }
  ],
  "exclusivityGroups": [
    { "id": "sesso", "fields": ["sexMale", "sexFemale"] },
    { "id": "obstructiveConditions", "fields": ["obstructiveConditionsYes", "obstructiveConditionsNo"] },
    { "id": "hasMinorChildren", "fields": ["hasMinorChildrenYes", "hasMinorChildrenNo"] },
    { "id": "soleParentalResponsibility", "fields": ["soleParentalResponsibilityYes", "soleParentalResponsibilityNo"] },
    { "id": "requestType", "fields": ["requestIssuance", "requestBilingualStamp", "requestDoublePassport", "requestResidenceChange"] },
    { "id": "printSpouseSurname", "fields": ["printSpouseSurnameYes", "printSpouseSurnameNo"] }
  ],
  "documents": [
    {
      "id": "identityDocumentCopy",
      "label": "Fotocopia di un documento di riconoscimento del richiedente in corso di validità",
      "category": "identity-document",
      "required": true,
      "belongsTo": "applicant",
      "acceptedTypes": ["photocopy"],
      "handling": "A photocopy of the applicant's valid identity document, presented together with the original, per page 3/3 list item a).",
      "sourceRef": "Modello 308 p.3/3, list item a)"
    },
    {
      "id": "icaoPhotographs",
      "label": "Due fotografie recenti, identiche, frontali, a volto scoperto e a sfondo bianco",
      "category": "supporting-evidence",
      "required": true,
      "belongsTo": "applicant",
      "acceptedTypes": ["photograph"],
      "handling": "Two recent, identical, frontal, bare-headed, white-background photographs conforming to ICAO characteristics (Decisione C(2005) 409 point 7), per footnote (2) and page 3/3 list item b).",
      "freshness": { "issuedWithin": null },
      "sourceRef": "Modello 308 p.3/3, nota (2); list item b)"
    },
    {
      "id": "electronicPassportPaymentReceipt",
      "label": "Attestazione di versamento di € 42,50 (bollettino postale c/c 67422808)",
      "category": "payment",
      "required": true,
      "belongsTo": "applicant",
      "acceptedTypes": ["postal-payment-receipt"],
      "amount": { "currency": "EUR", "value": 42.50 },
      "methods": ["postal-bollettino-cc-67422808"],
      "handling": "Proof of payment of €42.50, exclusively via postal current-account bollettino no. 67422808, made out to the Ministero dell'Economia e delle Finanze — Dipartimento del Tesoro, cause 'importo per il rilascio del passaporto elettronico', per page 3/3 list item c).",
      "sourceRef": "Modello 308 p.3/3, list item c)"
    },
    {
      "id": "administrativeContributionStamp",
      "label": "Contributo amministrativo di € 73,50 in contrassegno telematico",
      "category": "payment",
      "required": false,
      "requiredWhen": { "not": { "field": "requestBilingualStamp", "equals": true } },
      "belongsTo": "applicant",
      "acceptedTypes": ["telematic-stamp"],
      "amount": { "currency": "EUR", "value": 73.50 },
      "methods": ["telematic-stamp-tobacconist"],
      "handling": "A €73.50 administrative-contribution telematic stamp (contrassegno telematico), purchasable from tobacconists/valori-bollati retailers — not necessary for a temporary passport (an office-side determination outside this form's applicant-facing scope), per page 3/3 list item d).",
      "sourceRef": "Modello 308 p.3/3, list item d)"
    },
    {
      "id": "priorPassportOrLossReportCopy",
      "label": "Eventuale precedente passaporto, o copia della denuncia di smarrimento/furto",
      "category": "supporting-evidence",
      "required": false,
      "belongsTo": "applicant",
      "acceptedTypes": ["passport", "police-report-copy"],
      "handling": "The applicant's previous passport, if any is already held (see otherPassportNumber); if it was lost or stolen, a copy of the loss/theft report instead, per footnote (6) and page 3/3 list item e). Not gated by a requiredWhen condition: the source ties this to whether a prior passport is 'eventuale' (possibly held) rather than to a clean boolean trigger field, and this registry avoids gating requiredWhen on an optional text field's emptiness (a known false-negative risk when the field is simply absent rather than an explicit empty string) — left as an always-optional, disclosed judgment call.",
      "sourceRef": "Modello 308 p.3/3, nota (6); list item e)"
    }
  ]
}
