{
  "$schema": "https://govschema.org/spec/v0.3/govschema.schema.json",
  "govschemaVersion": "0.3.0",
  "id": "no/udi/soknad-om-opphold-og-arbeidstillatelse",
  "version": "1.0.0",
  "title": "Norway Application for a Residence and Work Permit (Søknad om oppholds- og arbeidstillatelse) — GP-7028 B",
  "description": "The Norwegian Directorate of Immigration's (Utlendingsdirektoratet, UDI) form GP-7028 B, \"Søknad om tillatelse til arbeid og opphold\" (\"Application for a permit to work and reside [in Norway]\"), the general-purpose application UDI publishes for a first-instance or renewal residence/work permit under any of its four permit grounds: family immigration (section A, including up to a 9-month parental visit), work (section B, including au pair and trainee permits), education (section C), or protection/asylum or another basis (section D). This schema models the form's full seven-page applicant-facing content: personal particulars and contact information (section 1); identity/travel document details and any other persons entered in that document (section 2); prior residence, prior applications, and any prior expulsion from Norway (section 3); the top-level first-time-vs-renewal choice and requested permit duration, followed by all four ground-specific branches — the accompanying family member's own bio data and marriage/cohabitation questions for family immigration, the employer/salary/education-background questions for a work permit, the institution/financing questions for an education permit, and the basis-for-protection questions for section D (section 4); a bounded 6-row foreign-travel history table used only when renewing a permit (section 5); family members even when not themselves applying — a spouse/partner/cohabitant, up to two parents, and up to six other close relatives (children, foster children, or siblings), plus aggregate sibling/child counts (section 6); criminal-record questions (section 7); an optional power of attorney for a representative (section 8); the applicant's own signature block and notification-channel consent (section 9); and, when the applicant is a minor or otherwise not legally competent, up to two parent/guardian signature blocks (section 10). Because the source form's own instruction is simply to \"fill in the field(s) that correspond to the basis you are applying on\" — with no single dedicated selector widget for which ground(s) apply — this schema introduces four synthetic boolean gating fields (applyingForFamilyImmigration/applyingForWorkPermit/applyingForEducationPermit/applyingForProtectionOrOtherPermit) so each branch's fields can be expressed with this registry's visibleWhen/requiredWhen conventions; see VERIFICATION.md for the full disclosure. This schema excludes the form's own office-use-only content: the top-of-form date/UDI-case-number (DUF-nummer)/fee-paid stamp box (section 1) and the police/foreign-service-station remarks radios (MerknaderGruppe1-3, section 10, headed \"Merknader for politiet eller utenriksstasjonen\" — Remarks for the police or the foreign service station), since neither is applicant-entered content. It also excludes a disclosed stray duplicate widget layer on pages 4 and 5 (see VERIFICATION.md). Submitting this application is a citizen action performed directly with UDI (in person at a police station/Norwegian foreign mission, or electronically via the udi.no/søknadsportal channel the form's own instructions point to); this schema does not submit the application itself, and the live source (udi.no) is always authoritative. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Kingdom of Norway or UDI.",
  "status": "draft",
  "jurisdiction": {
    "country": "NO",
    "level": "national"
  },
  "authority": {
    "name": "Utlendingsdirektoratet (the Norwegian Directorate of Immigration)",
    "abbreviation": "UDI",
    "url": "https://www.udi.no"
  },
  "process": {
    "type": "application",
    "language": "en"
  },
  "source": {
    "url": "https://www.udi.no/globalassets/global/skjemaer/arbeid-og-opphold-gp7028-b.pdf",
    "retrievedAt": "2026-07-11",
    "documentRef": "GP-7028 B (per 1. januar 2010 edition), \"Søknad om tillatelse til arbeid og opphold\", a 7-page fillable AcroForm PDF published unauthenticated by UDI."
  },
  "verification": {
    "method": "manual-source-review-v1",
    "lastVerifiedAt": "2026-07-11",
    "verifiedBy": "GovSchema Engineering (Standards Engineer)",
    "nextReviewBy": "2027-01-11",
    "notes": "GOV-2340: GovSchema Standard Research cycle. Closes Norway's Visa vertical (6/6) -- the last of Norway's six verticals following GOV-2314/GOV-2316 (Business Formation), GOV-2323 (National ID), and GOV-2330 (DMV); Taxes and Passport were confirmed dead-ends. This form was pre-scouted and named in CATALOG.md's own Known Gaps section (item 8). Fetched fresh (HTTP 200, 1,519,473 bytes, genuine %PDF-1.6 header, no login/CAPTCHA/WAF gate) and independently extracted with pdfjs-dist 3.11.174 (legacy build): 7 pages, 325 raw /Widget annotations, 231 distinct field names (getFieldObjects: 233), matching the pre-extraction recorded in the issue exactly. See this document's own VERIFICATION.md for the full sourcing record, every field-mapping/collapse/exclusion decision (including the four synthetic permit-ground gating fields, the disclosed stray/duplicate widget layers on pages 4-5, and the excluded office-use-only content), and the mock conformance test run."
  },
  "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-11"
  },
  "license": "CC-BY-4.0",
  "fields": [
    {
      "name": "surname",
      "label": "Surname",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "The applicant's surname, to be written exactly as it appears in the applicant's travel document.",
      "sourceRef": "Page 1, Section 1 'Personopplysninger' — widget 'Etternavn'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "firstName",
      "label": "First name",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Fornavn'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "middleName",
      "label": "Middle name",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Mellomnavn'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "previousSurname",
      "label": "Previous name/surname, if any",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Eventuelt tidligere navn/etternavn'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "dateOfBirth",
      "label": "Date of birth",
      "type": "date",
      "required": true,
      "classification": "sensitive-pii",
      "sourceRef": "Page 1, Section 1 — widget 'Fødselsdato (dag.måned.år)'"
    },
    {
      "name": "placeOfBirth",
      "label": "Place/city of birth",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Fødeby/-sted'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "countryOfBirth",
      "label": "Country of birth",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Fødeland'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "ethnicity",
      "label": "Ethnicity",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Etnisitet'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "motherTongue",
      "label": "Mother tongue",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Morsmål'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "otherLanguages",
      "label": "Other languages spoken",
      "type": "string",
      "sourceRef": "Page 1, Section 1 — widget 'Andre språk du behersker'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "gender",
      "label": "Gender",
      "type": "enum",
      "required": true,
      "classification": "pii",
      "description": "Modelled from two independent radio-button widgets sharing the field name 'KjønnGrupp1'.",
      "sourceRef": "Page 1, Section 1 'Kjønn' — widget 'KjønnGrupp1' (radio: Mann/Kvinne)",
      "validation": {
        "enum": [
          "Mann",
          "Kvinne"
        ]
      }
    },
    {
      "name": "occupation",
      "label": "Occupation",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Yrke'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "citizenships",
      "label": "Citizenship(s) — list all",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Statsborgerskap (oppgi alle)'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "civilStatus",
      "label": "Civil status",
      "type": "enum",
      "required": true,
      "description": "Modelled from six radio-button widgets sharing the field name 'SivilstatusGruppe1'.",
      "sourceRef": "Page 1, Section 1 'Sivilstatus' — widget 'SivilstatusGruppe1' (radio, 6 options)",
      "validation": {
        "enum": [
          "Ugift",
          "Gift/partner",
          "Samboer",
          "Separert",
          "Skilt",
          "Enke/enkemann"
        ]
      }
    },
    {
      "name": "civilStatusLastChangedPlaceAndDate",
      "label": "Place and date of last change in civil status",
      "type": "string",
      "sourceRef": "Page 1, Section 1 — widget 'Sted og dato for siste endring i sivilstatus'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "homeCountryAddress",
      "label": "Address in home country",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Adresse i hjemlandet'",
      "validation": {
        "maxLength": 250
      }
    },
    {
      "name": "homeCountryPostalCode",
      "label": "Postal code (home country)",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Postnummer'",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "homeCountryPostTown",
      "label": "Post town (home country)",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Poststed'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "homeCountryCountry",
      "label": "Country (home country address)",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Land' (home-country address block)",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "homeCountryMobilePhone",
      "label": "Mobile phone in home country",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Mobiltelefon i hjemlandet'",
      "validation": {
        "maxLength": 30
      }
    },
    {
      "name": "email",
      "label": "Contact information — email address",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "UDI uses this address to contact the applicant throughout the application process, per the form's own instruction.",
      "sourceRef": "Page 1, Section 1 'Kontaktinformasjon' — widget 'E-post'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "alternateResponseAddress",
      "label": "Alternate address the decision on this application should be sent to, if any",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Eventuell annen adresse svaret på søknaden skal sendes til'",
      "validation": {
        "maxLength": 250
      }
    },
    {
      "name": "alternateResponsePostalCode",
      "label": "Postal code (alternate response address)",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Postnummer_2'",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "alternateResponsePostTown",
      "label": "Place (alternate response address)",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Sted'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "alternateResponseCountry",
      "label": "Country (alternate response address)",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Land_2'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "norwayAddress",
      "label": "Address in Norway where you live or will live (street/road)",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Adresse i Norge der du bor eller skal bo (gate/vei)'",
      "validation": {
        "maxLength": 250
      }
    },
    {
      "name": "norwayPostalCode",
      "label": "Postal code (Norway address)",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Postnummer_3'",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "norwayPostTown",
      "label": "Post town (Norway address)",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Poststed_2'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "norwayMobilePhone",
      "label": "Mobile number in Norway",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, Section 1 — widget 'Mobilnummer i Norge'",
      "validation": {
        "maxLength": 30
      }
    },
    {
      "name": "dateArrivedInNorway",
      "label": "Date arrived in Norway, if applicable",
      "type": "date",
      "sourceRef": "Page 1, Section 1 — widget 'Eventuell dato du kom til Norge'"
    },
    {
      "name": "dateArrivedInSchengenArea",
      "label": "Date arrived in the Schengen area, if applicable",
      "type": "date",
      "sourceRef": "Page 1, Section 1 — widget 'Eventuell dato du kom til Schengen-området'"
    },
    {
      "name": "travelDocumentType",
      "label": "Travel document type",
      "type": "enum",
      "required": true,
      "description": "Modelled from three radio-button widgets sharing the field name 'ReisedokumentGrupp1'.",
      "sourceRef": "Page 2, Section 2 'Reisedokument' — widget 'ReisedokumentGrupp1' (radio, 3 options)",
      "validation": {
        "enum": [
          "Pass fra hjemlandet",
          "Reisebevis, utlendingspass eller liknende",
          "Har ikke reisedokument"
        ]
      }
    },
    {
      "name": "travelDocumentNumber",
      "label": "Travel document number",
      "type": "string",
      "classification": "sensitive-pii",
      "visibleWhen": {
        "field": "travelDocumentType",
        "notEquals": "Har ikke reisedokument"
      },
      "requiredWhen": {
        "field": "travelDocumentType",
        "notEquals": "Har ikke reisedokument"
      },
      "sourceRef": "Page 2, Section 2 — widget 'Nummeret på reisedokumentet'",
      "validation": {
        "maxLength": 50
      }
    },
    {
      "name": "travelDocumentValidUntil",
      "label": "Travel document valid until",
      "type": "date",
      "visibleWhen": {
        "field": "travelDocumentType",
        "notEquals": "Har ikke reisedokument"
      },
      "requiredWhen": {
        "field": "travelDocumentType",
        "notEquals": "Har ikke reisedokument"
      },
      "sourceRef": "Page 2, Section 2 — widget 'Gyldig til (dag.måned.år)'"
    },
    {
      "name": "travelDocumentIssuingCountry",
      "label": "Country where the travel document was issued",
      "type": "string",
      "visibleWhen": {
        "field": "travelDocumentType",
        "notEquals": "Har ikke reisedokument"
      },
      "requiredWhen": {
        "field": "travelDocumentType",
        "notEquals": "Har ikke reisedokument"
      },
      "sourceRef": "Page 2, Section 2 — widget 'Land der dokumentet er utstedt'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "travelDocumentIssuingAuthority",
      "label": "Issuing authority",
      "type": "string",
      "visibleWhen": {
        "field": "travelDocumentType",
        "notEquals": "Har ikke reisedokument"
      },
      "requiredWhen": {
        "field": "travelDocumentType",
        "notEquals": "Har ikke reisedokument"
      },
      "sourceRef": "Page 2, Section 2 — widget 'Utstedelsesmyndighet'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "otherPersonsInTravelDocument",
      "label": "Other persons entered in your travel document, if any",
      "type": "string",
      "description": "Use a separate sheet if more space is needed, per the form's own instruction.",
      "sourceRef": "Page 2, Section 2 — widget 'Oppgi andre personer som er ført inn i reisedokumentet ditt...'",
      "validation": {
        "maxLength": 1000
      }
    },
    {
      "name": "previouslyResidedInNorway",
      "label": "Have you resided in Norway before?",
      "type": "boolean",
      "required": true,
      "description": "Modelled from a Ja/Nei radio pair sharing the field name 'OppholdGruppe1'.",
      "sourceRef": "Page 2, Section 3 — widget 'OppholdGruppe1'"
    },
    {
      "name": "previousResidencePeriodsAndDuration",
      "label": "If yes, time periods and duration",
      "type": "string",
      "visibleWhen": {
        "field": "previouslyResidedInNorway",
        "equals": true
      },
      "requiredWhen": {
        "field": "previouslyResidedInNorway",
        "equals": true
      },
      "sourceRef": "Page 2, Section 3 — widget 'Hvis ja, fyll ut tidsperioder og varighet'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "previouslyAppliedForResidenceInNorway",
      "label": "Have you applied for residence in Norway before?",
      "type": "boolean",
      "required": true,
      "description": "Modelled from a Ja/Nei radio pair sharing the field name 'OppholdtGrupp2'.",
      "sourceRef": "Page 2, Section 3 — widget 'OppholdtGrupp2'"
    },
    {
      "name": "previousResidencePurpose",
      "label": "Purpose of the previous residence in Norway",
      "type": "enum",
      "description": "Modelled from three radio-button widgets sharing the field name 'OppholdGruppe3'.",
      "visibleWhen": {
        "field": "previouslyAppliedForResidenceInNorway",
        "equals": true
      },
      "requiredWhen": {
        "field": "previouslyAppliedForResidenceInNorway",
        "equals": true
      },
      "sourceRef": "Page 2, Section 3 — widget 'OppholdGruppe3' (radio, 3 options)",
      "validation": {
        "enum": [
          "Turisme",
          "Arbeid",
          "Annet. Spesifiser hva"
        ]
      }
    },
    {
      "name": "previousResidencePurposeOther",
      "label": "If other, please specify",
      "type": "string",
      "visibleWhen": {
        "field": "previousResidencePurpose",
        "equals": "Annet. Spesifiser hva"
      },
      "requiredWhen": {
        "field": "previousResidencePurpose",
        "equals": "Annet. Spesifiser hva"
      },
      "sourceRef": "Page 2, Section 3 — widget 'Spesifiser formålet med tidligere opphold i Norge'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "previouslyExpelledFromNorway",
      "label": "Have you previously been expelled from Norway?",
      "type": "boolean",
      "required": true,
      "description": "Modelled from a Ja/Nei radio pair sharing the field name 'OppholdtGrupp4'.",
      "sourceRef": "Page 2, Section 3 — widget 'OppholdtGrupp4'"
    },
    {
      "name": "entryBanStillInEffect",
      "label": "If yes, is the entry ban still in effect?",
      "type": "boolean",
      "description": "Modelled from a two-option radio widget 'OppholdGruppe5' whose 'Ja' option text itself instructs the applicant to attach the form for lifting the entry ban (see documents[] entry 'entryBanLiftingApplication').",
      "visibleWhen": {
        "field": "previouslyExpelledFromNorway",
        "equals": true
      },
      "requiredWhen": {
        "field": "previouslyExpelledFromNorway",
        "equals": true
      },
      "sourceRef": "Page 2, Section 3 — widget 'OppholdGruppe5' (radio: Nei / \"Ja. Legg ved skjema for opphevelse av innreiseforbud\")"
    },
    {
      "name": "permitApplicationType",
      "label": "Is this a first-time application or a renewal?",
      "type": "enum",
      "required": true,
      "description": "Modelled from a two-option radio widget 'TillatelseGruppe1'.",
      "sourceRef": "Page 2, Section 4 'Tillatelsen du søker om' — widget 'TillatelseGruppe1' (radio: Førstegangstillatelse/Fornyelse)",
      "validation": {
        "enum": [
          "Førstegangstillatelse",
          "Fornyelse"
        ]
      }
    },
    {
      "name": "permitDurationRequested",
      "label": "Length of permit requested",
      "type": "string",
      "sourceRef": "Page 2, Section 4 — widget 'Hvor lang tid søker du tillatelse for'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "permitFromDate",
      "label": "Permit requested from date",
      "type": "date",
      "sourceRef": "Page 2, Section 4 — widget 'Fra dato'"
    },
    {
      "name": "permitToDate",
      "label": "Permit requested to date",
      "type": "date",
      "sourceRef": "Page 2, Section 4 — widget 'Til dato'"
    },
    {
      "name": "applyingForFamilyImmigration",
      "label": "Are you applying for a family-immigration permit (section A)?",
      "type": "boolean",
      "required": true,
      "description": "Synthetic gating field introduced by this schema: the source form has no single dedicated selector widget for which of its four permit-ground sections (A family / B work / C education / D protection-or-other) the applicant is completing — its own instruction is simply \"fill in the field(s) that correspond to the basis you are applying on,\" and more than one section can in principle apply at once. This field, and its siblings applyingForWorkPermit/applyingForEducationPermit/applyingForProtectionOrOtherPermit, make that applicability explicit and machine-checkable so the section's fields can be gated with visibleWhen/requiredWhen. See VERIFICATION.md.",
      "sourceRef": "Page 2, Section '4 Tillatelsen du søker om' heading 'A Tillatelse til familieinnvandring (inkludert foreldrebesøk i inntil 9 måneder)' (no dedicated widget)"
    },
    {
      "name": "familyImmigrationRelationship",
      "label": "Relationship to the person you are applying for family immigration with",
      "type": "enum",
      "description": "Modelled from 11 radio-button widgets sharing the field name 'TillatelseGruppe2'.",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "requiredWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 2, Section A 'Relasjon til deg' — widget 'TillatelseGruppe2' (radio, 11 options)",
      "validation": {
        "enum": [
          "Ektefelle/partner",
          "Samboer",
          "Forlovede",
          "Biologiske barn",
          "Adoptivbarn",
          "Fosterbarn",
          "Biologisk mor / adoptivmor",
          "Biologisk far /adoptivfar",
          "Fostermor",
          "Fosterfar",
          "Annet"
        ]
      }
    },
    {
      "name": "accompanyingPersonSurname",
      "label": "Surname of the person you are applying for family immigration with",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "requiredWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 2, Section A — widget 'Etternavn_2'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "accompanyingPersonFirstName",
      "label": "First name of that person",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "requiredWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 2, Section A — widget 'Fornavn_2'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "accompanyingPersonMiddleName",
      "label": "Middle name of that person",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 2, Section A — widget 'Mellomnavn_2'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "accompanyingPersonPreviousSurname",
      "label": "Previous name/surname of that person, if any",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 2, Section A — widget 'Eventuelt tidligere navn/etternavn_2'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "accompanyingPersonDateOfBirth",
      "label": "Date of birth of that person",
      "type": "date",
      "classification": "sensitive-pii",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "requiredWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 2, Section A — widget 'Fødselsdato dagmånedår_2'"
    },
    {
      "name": "accompanyingPersonPlaceOfBirth",
      "label": "Place of birth of that person",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 2, Section A — widget 'Fødebysted_2'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "accompanyingPersonCountryOfBirth",
      "label": "Country of birth of that person",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 2, Section A — widget 'Fødeland_2'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "accompanyingPersonMotherTongue",
      "label": "Mother tongue of that person",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 2, Section A — widget 'Morsmål_2'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "accompanyingPersonGender",
      "label": "Gender of that person",
      "type": "enum",
      "classification": "pii",
      "description": "Modelled from two radio-button widgets sharing the field name 'TillatelseGruppe3'.",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "requiredWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 2, Section A — widget 'TillatelseGruppe3' (radio: Mann/Kvinne)",
      "validation": {
        "enum": [
          "Mann",
          "Kvinne"
        ]
      }
    },
    {
      "name": "accompanyingPersonCitizenships",
      "label": "Citizenship(s) of that person",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 2, Section A — widget 'Statsborgerskap (oppgi alle)_2'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "accompanyingPersonAddress",
      "label": "Address of that person",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 2, Section A — widget 'Adresse'",
      "validation": {
        "maxLength": 250
      }
    },
    {
      "name": "accompanyingPersonPostalCode",
      "label": "Postal code",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 2, Section A — widget 'Postnummer_4'",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "accompanyingPersonPostTown",
      "label": "Post town",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 2, Section A — widget 'Poststed_3'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "accompanyingPersonNorwegianPersonalNumber",
      "label": "Norwegian personal number (personnummer), if any",
      "type": "string",
      "classification": "sensitive-pii",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 2, Section A — widget 'Eventuelt norsk personnummer'",
      "validation": {
        "pattern": "^[0-9]{11}$"
      }
    },
    {
      "name": "accompanyingPersonPhone",
      "label": "Phone",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 2, Section A — widget 'Telefon'",
      "validation": {
        "maxLength": 30
      }
    },
    {
      "name": "accompanyingPersonMobile",
      "label": "Mobile",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 2, Section A — widget 'Mobil'",
      "validation": {
        "maxLength": 30
      }
    },
    {
      "name": "accompanyingPersonEmail",
      "label": "Email",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 2, Section A — widget 'E-post_2'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "previouslyMarried",
      "label": "Have you been married before?",
      "type": "boolean",
      "description": "Modelled from a Ja/Nei radio pair sharing the field name 'GiftGruppe1'.",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "requiredWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 3 'Tillatelse til familieinnvandring' — widget 'GiftGruppe1'"
    },
    {
      "name": "previousMarriageYear",
      "label": "If yes, when (year)? Use an extra sheet if needed.",
      "type": "string",
      "visibleWhen": {
        "field": "previouslyMarried",
        "equals": true
      },
      "requiredWhen": {
        "field": "previouslyMarried",
        "equals": true
      },
      "sourceRef": "Page 3 — widget 'Hvis ja, når (år)? Bruk gjerne ekstra ark dersom du trenger mer plass'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "previousMarriageDuration",
      "label": "How long were you married?",
      "type": "string",
      "visibleWhen": {
        "field": "previouslyMarried",
        "equals": true
      },
      "requiredWhen": {
        "field": "previouslyMarried",
        "equals": true
      },
      "sourceRef": "Page 3 — widget 'Hvor lenge var du gift?'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "previousSpouseName",
      "label": "Who were you married to?",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "previouslyMarried",
        "equals": true
      },
      "requiredWhen": {
        "field": "previouslyMarried",
        "equals": true
      },
      "sourceRef": "Page 3 — widget 'Hvem var du gift med?'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "intendedMarriageOrPartnershipDate",
      "label": "For an application for a fiancé(e) permit: the date you will marry or enter into a partnership",
      "type": "date",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 3 — widget 'Ved søknad om forlovelsestillatelse. Før opp datoen du skal inngå ekteskap eller partnerskap.'"
    },
    {
      "name": "willLiveAtSameAddress",
      "label": "Will you live at the same address (in the same household) for the whole period you are applying for a permit?",
      "type": "boolean",
      "description": "Modelled from a two-option radio widget 'GiftGruppe2' (Ja / Nei, av følgende grunn).",
      "visibleWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "requiredWhen": {
        "field": "applyingForFamilyImmigration",
        "equals": true
      },
      "sourceRef": "Page 3 — widget 'GiftGruppe2'"
    },
    {
      "name": "differentAddressExplanation",
      "label": "If no, explain why you will not live at the same address (in the same household) for the whole period you are applying for a permit",
      "type": "string",
      "visibleWhen": {
        "field": "willLiveAtSameAddress",
        "equals": false
      },
      "requiredWhen": {
        "field": "willLiveAtSameAddress",
        "equals": false
      },
      "sourceRef": "Page 3 — widget 'Forklar hvorfor dere ikke skal bo på samme adresse (i samme husstand)...'",
      "validation": {
        "maxLength": 500
      }
    },
    {
      "name": "willBeSupportedByPersonInNorwayFirstTime",
      "label": "For a first-time application: will you be supported by the person in Norway?",
      "type": "boolean",
      "description": "Modelled from a two-option radio widget 'GiftGruppe3' (Ja / Nei, forklar).",
      "visibleWhen": {
        "all": [
          {
            "field": "applyingForFamilyImmigration",
            "equals": true
          },
          {
            "field": "permitApplicationType",
            "equals": "Førstegangstillatelse"
          }
        ]
      },
      "requiredWhen": {
        "all": [
          {
            "field": "applyingForFamilyImmigration",
            "equals": true
          },
          {
            "field": "permitApplicationType",
            "equals": "Førstegangstillatelse"
          }
        ]
      },
      "sourceRef": "Page 3 — widget 'GiftGruppe3'"
    },
    {
      "name": "notSupportedExplanation",
      "label": "If no, explain why you will not be supported by the person in Norway",
      "type": "string",
      "visibleWhen": {
        "field": "willBeSupportedByPersonInNorwayFirstTime",
        "equals": false
      },
      "requiredWhen": {
        "field": "willBeSupportedByPersonInNorwayFirstTime",
        "equals": false
      },
      "sourceRef": "Page 3 — widget 'Forklar hvorfor du ikke kommer til å bli forsørget av personen i Norge'",
      "validation": {
        "maxLength": 500
      }
    },
    {
      "name": "isSupportedByPersonInNorwayRenewal",
      "label": "For a renewal: are you supported by the person in Norway?",
      "type": "boolean",
      "description": "Modelled from a Ja/Nei radio pair sharing the field name 'GiftGruppe4'.",
      "visibleWhen": {
        "all": [
          {
            "field": "applyingForFamilyImmigration",
            "equals": true
          },
          {
            "field": "permitApplicationType",
            "equals": "Fornyelse"
          }
        ]
      },
      "requiredWhen": {
        "all": [
          {
            "field": "applyingForFamilyImmigration",
            "equals": true
          },
          {
            "field": "permitApplicationType",
            "equals": "Fornyelse"
          }
        ]
      },
      "sourceRef": "Page 3 — widget 'GiftGruppe4'"
    },
    {
      "name": "applyingForWorkPermit",
      "label": "Are you applying for a work permit (section B, including au pair and trainee)?",
      "type": "boolean",
      "required": true,
      "description": "Synthetic gating field; see the description of applyingForFamilyImmigration and VERIFICATION.md.",
      "sourceRef": "Page 3 heading 'B Tillatelse til arbeid (inkludert au pair og praktikant)' (no dedicated widget)"
    },
    {
      "name": "workRenewalHasChanges",
      "label": "For a renewal: have there been changes to your employment since your last application, e.g. a change of employer or work percentage?",
      "type": "boolean",
      "description": "Modelled from a Nei / Ja-fyll-ut-feltet-nedenfor radio pair sharing the field name 'ArbeidGruppe1'.",
      "visibleWhen": {
        "all": [
          {
            "field": "applyingForWorkPermit",
            "equals": true
          },
          {
            "field": "permitApplicationType",
            "equals": "Fornyelse"
          }
        ]
      },
      "requiredWhen": {
        "all": [
          {
            "field": "applyingForWorkPermit",
            "equals": true
          },
          {
            "field": "permitApplicationType",
            "equals": "Fornyelse"
          }
        ]
      },
      "sourceRef": "Page 3, Section B — widget 'ArbeidGruppe1'"
    },
    {
      "name": "employerName",
      "label": "Employer or client (company name or host family)",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "requiredWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "sourceRef": "Page 3, Section B — widget 'Arbeids- eller oppdragsgiver (firmanavn eller vertsfamilie)'",
      "validation": {
        "maxLength": 250
      }
    },
    {
      "name": "employerOrgNumber",
      "label": "Employer's organisation number",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "sourceRef": "Page 3, Section B — widget 'Organisasjonsnummer'",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "employerAddress",
      "label": "Employer's address",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "sourceRef": "Page 3, Section B — widget 'Adresse_2'",
      "validation": {
        "maxLength": 250
      }
    },
    {
      "name": "employerPostalCode",
      "label": "Employer's postal code",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "sourceRef": "Page 3, Section B — widget 'Postnummer_5'",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "employerPostTown",
      "label": "Employer's post town",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "sourceRef": "Page 3, Section B — widget 'Poststed_4'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "employerMobile",
      "label": "Employer's mobile number",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "sourceRef": "Page 3, Section B — widget 'Mobil_2'",
      "validation": {
        "maxLength": 30
      }
    },
    {
      "name": "employerEmail",
      "label": "Employer's email",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "sourceRef": "Page 3, Section B — widget 'E-post_3'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "salaryInNok",
      "label": "Salary in Norwegian kroner",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "requiredWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "sourceRef": "Page 3, Section B — widget 'Lønn i norske kroner'",
      "validation": {
        "maxLength": 50
      }
    },
    {
      "name": "jobTitleOrDuties",
      "label": "Type of work, job title, or main duties",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "requiredWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "sourceRef": "Page 3, Section B — widget 'Arbeidets art (eventuelt stillingstittel eller viktigste oppgave)'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "workPercentageType",
      "label": "Work percentage",
      "type": "enum",
      "description": "Modelled from a two-option radio widget 'ArbeidGruppe2'.",
      "visibleWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "requiredWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "sourceRef": "Page 3, Section B — widget 'ArbeidGruppe2' (radio: 100% / Annet %)",
      "validation": {
        "enum": [
          "100 %",
          "Annet %"
        ]
      }
    },
    {
      "name": "workPercentageOther",
      "label": "If other, specify the work percentage",
      "type": "string",
      "description": "The source PDF's widget for this field ('Stillingsprosent') carries a stray pre-filled default value of \"90\" left over from the form's own authoring/testing; this is disclosed here and not treated as a schema default.",
      "visibleWhen": {
        "field": "workPercentageType",
        "equals": "Annet %"
      },
      "requiredWhen": {
        "field": "workPercentageType",
        "equals": "Annet %"
      },
      "sourceRef": "Page 3, Section B — widget 'Stillingsprosent'",
      "validation": {
        "maxLength": 10
      }
    },
    {
      "name": "applicantEducationLevel",
      "label": "Your education level",
      "type": "enum",
      "description": "Modelled from six radio-button widgets sharing the field name 'ArbeidGruppe3'.",
      "visibleWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "requiredWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "sourceRef": "Page 3, Section B 'Utdannelse' — widget 'ArbeidGruppe3' (radio, 6 options)",
      "validation": {
        "enum": [
          "Grunnskole",
          "Videregående, allmennfag",
          "Videregående skole, yrkesfag",
          "Påbygging til videregående utdanning",
          "Universitets- eller høyskoleutdanning",
          "Annet"
        ]
      }
    },
    {
      "name": "educationDurationYears",
      "label": "Duration of education (years)",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "sourceRef": "Page 3, Section B — widget 'Utdanningens varighet, antall år'",
      "validation": {
        "maxLength": 10
      }
    },
    {
      "name": "educationField",
      "label": "Field of education",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "sourceRef": "Page 3, Section B — widget 'Hvilket fagområde har du utdanning fra?'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "educationDegreeObtained",
      "label": "Degree obtained",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "sourceRef": "Page 3, Section B — widget 'Oppnådd grad'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "hasRelevantWorkExperience",
      "label": "Do you have relevant work experience?",
      "type": "boolean",
      "description": "Modelled from a Nei / Ja radio pair sharing the field name 'ArbeidGruppe4'; the 'Ja' option text itself instructs the applicant to attach supporting documentation (see documents[] entry 'workExperienceDocumentation').",
      "visibleWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "requiredWhen": {
        "field": "applyingForWorkPermit",
        "equals": true
      },
      "sourceRef": "Page 3, Section B — widget 'ArbeidGruppe4' (radio: Nei / \"Ja (husk å legge ved dokumentasjon)\")"
    },
    {
      "name": "applyingForEducationPermit",
      "label": "Are you applying for an education permit (section C)?",
      "type": "boolean",
      "required": true,
      "description": "Synthetic gating field; see the description of applyingForFamilyImmigration and VERIFICATION.md.",
      "sourceRef": "Page 4 heading 'C Tillatelse til utdanning' (no dedicated widget)"
    },
    {
      "name": "followsNormalStudyProgress",
      "label": "For a renewal: are you following normal study progress?",
      "type": "boolean",
      "description": "Modelled from a Ja/Nei radio pair sharing the field name 'UtdanningGruppe1'.",
      "visibleWhen": {
        "all": [
          {
            "field": "applyingForEducationPermit",
            "equals": true
          },
          {
            "field": "permitApplicationType",
            "equals": "Fornyelse"
          }
        ]
      },
      "requiredWhen": {
        "all": [
          {
            "field": "applyingForEducationPermit",
            "equals": true
          },
          {
            "field": "permitApplicationType",
            "equals": "Fornyelse"
          }
        ]
      },
      "sourceRef": "Page 4, Section C — widget 'UtdanningGruppe1'"
    },
    {
      "name": "continuingAtSameInstitution",
      "label": "For a renewal: will you continue your education at the same institution as before?",
      "type": "boolean",
      "description": "Modelled from a Ja/Nei radio pair sharing the field name 'UtdanningGruppe2'.",
      "visibleWhen": {
        "all": [
          {
            "field": "applyingForEducationPermit",
            "equals": true
          },
          {
            "field": "permitApplicationType",
            "equals": "Fornyelse"
          }
        ]
      },
      "requiredWhen": {
        "all": [
          {
            "field": "applyingForEducationPermit",
            "equals": true
          },
          {
            "field": "permitApplicationType",
            "equals": "Fornyelse"
          }
        ]
      },
      "sourceRef": "Page 4, Section C — widget 'UtdanningGruppe2'"
    },
    {
      "name": "institutionName",
      "label": "Place of study/educational institution",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForEducationPermit",
        "equals": true
      },
      "requiredWhen": {
        "field": "applyingForEducationPermit",
        "equals": true
      },
      "sourceRef": "Page 4, Section C — widget 'Studiested/utdanningssted'",
      "validation": {
        "maxLength": 250
      }
    },
    {
      "name": "institutionOrgNumber",
      "label": "Institution's organisation number",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForEducationPermit",
        "equals": true
      },
      "sourceRef": "Page 4, Section C — widget 'Organisasjonsnummer_2'",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "fieldOfStudy",
      "label": "Field of study/subject",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForEducationPermit",
        "equals": true
      },
      "requiredWhen": {
        "field": "applyingForEducationPermit",
        "equals": true
      },
      "sourceRef": "Page 4, Section C — widget 'Studieretning/fag'",
      "validation": {
        "maxLength": 250
      }
    },
    {
      "name": "studyFromMonthYear",
      "label": "Studies from (month/year)",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForEducationPermit",
        "equals": true
      },
      "sourceRef": "Page 4, Section C — widget 'Fra måned/år'",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "studyToMonthYear",
      "label": "Studies to (month/year)",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForEducationPermit",
        "equals": true
      },
      "sourceRef": "Page 4, Section C — widget 'Til måned/år'",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "institutionPhone",
      "label": "Institution's phone number",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForEducationPermit",
        "equals": true
      },
      "sourceRef": "Page 4, Section C — widget 'Telefonnummer'",
      "validation": {
        "maxLength": 30
      }
    },
    {
      "name": "institutionEmail",
      "label": "Institution's email",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForEducationPermit",
        "equals": true
      },
      "sourceRef": "Page 4, Section C — widget 'E-post_4'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "studyPlacementOrganizationName",
      "label": "Name of the organisation that arranged the study/school place, if any",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForEducationPermit",
        "equals": true
      },
      "sourceRef": "Page 4, Section C — widget 'Navn på organisasjon som eventuelt har formidlet studie-/skoleplassen'",
      "validation": {
        "maxLength": 250
      }
    },
    {
      "name": "studyFinancingType",
      "label": "Financing of your stay",
      "type": "enum",
      "description": "Modelled from three radio-button widgets sharing the field name 'UtdanningGruppe3'.",
      "visibleWhen": {
        "field": "applyingForEducationPermit",
        "equals": true
      },
      "requiredWhen": {
        "field": "applyingForEducationPermit",
        "equals": true
      },
      "sourceRef": "Page 4, Section C 'Finansiering av oppholdet' — widget 'UtdanningGruppe3' (radio, 3 options)",
      "validation": {
        "enum": [
          "Egne midler",
          "Stipend",
          "Annet, forklar"
        ]
      }
    },
    {
      "name": "studyFinancingOtherExplanation",
      "label": "If other, explain the financing of your stay",
      "type": "string",
      "visibleWhen": {
        "field": "studyFinancingType",
        "equals": "Annet, forklar"
      },
      "requiredWhen": {
        "field": "studyFinancingType",
        "equals": "Annet, forklar"
      },
      "sourceRef": "Page 4, Section C — widget 'Finansiering av oppholdet: Egne midler / Stipend / Annet, forklar'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "tuitionFeePerSemesterNok",
      "label": "Tuition fee (amount in Norwegian kroner per semester)",
      "type": "string",
      "visibleWhen": {
        "field": "applyingForEducationPermit",
        "equals": true
      },
      "sourceRef": "Page 4, Section C — widget 'Skolepenger (beløp i norske kroner per semester)'",
      "validation": {
        "maxLength": 30
      }
    },
    {
      "name": "applyingForProtectionOrOtherPermit",
      "label": "Are you applying for protection or another type of permit (section D)?",
      "type": "boolean",
      "required": true,
      "description": "Synthetic gating field; see the description of applyingForFamilyImmigration and VERIFICATION.md.",
      "sourceRef": "Page 4 heading 'D Beskyttelse eller annen type tillatelse' (no dedicated widget)"
    },
    {
      "name": "renewingPreviousPermit",
      "label": "Will you renew your previous permit?",
      "type": "boolean",
      "description": "Modelled from a Ja/Nei radio pair sharing the field name 'BeskyttelseGruppe1'.",
      "visibleWhen": {
        "all": [
          {
            "field": "applyingForProtectionOrOtherPermit",
            "equals": true
          },
          {
            "field": "permitApplicationType",
            "equals": "Fornyelse"
          }
        ]
      },
      "requiredWhen": {
        "all": [
          {
            "field": "applyingForProtectionOrOtherPermit",
            "equals": true
          },
          {
            "field": "permitApplicationType",
            "equals": "Fornyelse"
          }
        ]
      },
      "sourceRef": "Page 4, Section D — widget 'BeskyttelseGruppe1'"
    },
    {
      "name": "applyingOnNewBasis",
      "label": "Are you applying for a permit on a new basis?",
      "type": "boolean",
      "description": "Modelled from a Ja/Nei radio pair sharing the field name 'BeskyttelseGruppe2'.",
      "visibleWhen": {
        "all": [
          {
            "field": "applyingForProtectionOrOtherPermit",
            "equals": true
          },
          {
            "field": "permitApplicationType",
            "equals": "Fornyelse"
          }
        ]
      },
      "requiredWhen": {
        "all": [
          {
            "field": "applyingForProtectionOrOtherPermit",
            "equals": true
          },
          {
            "field": "permitApplicationType",
            "equals": "Fornyelse"
          }
        ]
      },
      "sourceRef": "Page 4, Section D — widget 'BeskyttelseGruppe2'"
    },
    {
      "name": "newBasisExplanation",
      "label": "Explain the basis for the permit",
      "type": "string",
      "visibleWhen": {
        "field": "applyingOnNewBasis",
        "equals": true
      },
      "requiredWhen": {
        "field": "applyingOnNewBasis",
        "equals": true
      },
      "sourceRef": "Page 4, Section D — widget 'Forklar grunnlaget for tillatelsen:'",
      "validation": {
        "maxLength": 500
      }
    },
    {
      "name": "protectionPermitBasis",
      "label": "Basis for the permit",
      "type": "enum",
      "description": "Modelled from three radio-button widgets sharing the field name 'BeskyttelseGruppe3'.",
      "visibleWhen": {
        "field": "applyingForProtectionOrOtherPermit",
        "equals": true
      },
      "requiredWhen": {
        "field": "applyingForProtectionOrOtherPermit",
        "equals": true
      },
      "sourceRef": "Page 4, Section D — widget 'BeskyttelseGruppe3' (radio, 3 options)",
      "validation": {
        "enum": [
          "Beskyttelse (asyl)",
          "Tillatelse på grunn av sterke menneskelige hensyn",
          "Annet, forklar"
        ]
      }
    },
    {
      "name": "foreignTripDepartureDate1",
      "label": "Trip 1 — date of departure from Norway",
      "type": "date",
      "description": "Section 5 'Utenlandsopphold' is filled in only when renewing a permit, per its own heading; list trips chronologically starting with the earliest, over the last year before the application date.",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'Utreisedato fra Norge (dag.måned.år)Row1' (this widget, and its Innreisedato/Antall fraværsdager/Oppholdsland row-mates for rows 1-4, exist as two near-duplicate widget layers at near-identical rects in the source PDF, a disclosed forms-authoring artifact matching this registry's precedent for other Norway schemas; de-duplicated by field name here, see VERIFICATION.md)"
    },
    {
      "name": "foreignTripArrivalDate1",
      "label": "Trip 1 — date of arrival back in Norway",
      "type": "date",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'Innreisedato til Norge (dag.måned.år)Row1'"
    },
    {
      "name": "foreignTripAbsenceDays1",
      "label": "Trip 1 — number of days absent",
      "type": "string",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'Antall fraværsdagerRow1'",
      "validation": {
        "maxLength": 10
      }
    },
    {
      "name": "foreignTripResidenceCountry1",
      "label": "Trip 1 — country visited",
      "type": "string",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'OppholdslandRow1'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "foreignTripPurpose1",
      "label": "Trip 1 — purpose of the trip",
      "type": "enum",
      "description": "Modelled from a two-option radio widget.",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'UtenlandsoppholdGruppe1' (radio: Arbeid/Privat)",
      "validation": {
        "enum": [
          "Arbeid",
          "Privat"
        ]
      }
    },
    {
      "name": "foreignTripDepartureDate2",
      "label": "Trip 2 — date of departure from Norway",
      "type": "date",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'Utreisedato fra Norge (dag.måned.år)Row2' (this widget, and its Innreisedato/Antall fraværsdager/Oppholdsland row-mates for rows 1-4, exist as two near-duplicate widget layers at near-identical rects in the source PDF, a disclosed forms-authoring artifact matching this registry's precedent for other Norway schemas; de-duplicated by field name here, see VERIFICATION.md)"
    },
    {
      "name": "foreignTripArrivalDate2",
      "label": "Trip 2 — date of arrival back in Norway",
      "type": "date",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'Innreisedato til Norge (dag.måned.år)Row2'"
    },
    {
      "name": "foreignTripAbsenceDays2",
      "label": "Trip 2 — number of days absent",
      "type": "string",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'Antall fraværsdagerRow2'",
      "validation": {
        "maxLength": 10
      }
    },
    {
      "name": "foreignTripResidenceCountry2",
      "label": "Trip 2 — country visited",
      "type": "string",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'OppholdslandRow2'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "foreignTripPurpose2",
      "label": "Trip 2 — purpose of the trip",
      "type": "enum",
      "description": "Modelled from a two-option radio widget.",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'UtenlandsoppholdGruppe2' (radio: Arbeid/Privat)",
      "validation": {
        "enum": [
          "Arbeid",
          "Privat"
        ]
      }
    },
    {
      "name": "foreignTripDepartureDate3",
      "label": "Trip 3 — date of departure from Norway",
      "type": "date",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'Utreisedato fra Norge (dag.måned.år)Row3' (this widget, and its Innreisedato/Antall fraværsdager/Oppholdsland row-mates for rows 1-4, exist as two near-duplicate widget layers at near-identical rects in the source PDF, a disclosed forms-authoring artifact matching this registry's precedent for other Norway schemas; de-duplicated by field name here, see VERIFICATION.md)"
    },
    {
      "name": "foreignTripArrivalDate3",
      "label": "Trip 3 — date of arrival back in Norway",
      "type": "date",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'Innreisedato til Norge (dag.måned.år)Row3'"
    },
    {
      "name": "foreignTripAbsenceDays3",
      "label": "Trip 3 — number of days absent",
      "type": "string",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'Antall fraværsdagerRow3'",
      "validation": {
        "maxLength": 10
      }
    },
    {
      "name": "foreignTripResidenceCountry3",
      "label": "Trip 3 — country visited",
      "type": "string",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'OppholdslandRow3'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "foreignTripPurpose3",
      "label": "Trip 3 — purpose of the trip",
      "type": "enum",
      "description": "Modelled from a two-option radio widget.",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'UtenlandsoppholdGruppe3' (radio: Arbeid/Privat)",
      "validation": {
        "enum": [
          "Arbeid",
          "Privat"
        ]
      }
    },
    {
      "name": "foreignTripDepartureDate4",
      "label": "Trip 4 — date of departure from Norway",
      "type": "date",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'Utreisedato fra Norge (dag.måned.år)Row4' (this widget, and its Innreisedato/Antall fraværsdager/Oppholdsland row-mates for rows 1-4, exist as two near-duplicate widget layers at near-identical rects in the source PDF, a disclosed forms-authoring artifact matching this registry's precedent for other Norway schemas; de-duplicated by field name here, see VERIFICATION.md)"
    },
    {
      "name": "foreignTripArrivalDate4",
      "label": "Trip 4 — date of arrival back in Norway",
      "type": "date",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'Innreisedato til Norge (dag.måned.år)Row4'"
    },
    {
      "name": "foreignTripAbsenceDays4",
      "label": "Trip 4 — number of days absent",
      "type": "string",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'Antall fraværsdagerRow4'",
      "validation": {
        "maxLength": 10
      }
    },
    {
      "name": "foreignTripResidenceCountry4",
      "label": "Trip 4 — country visited",
      "type": "string",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'OppholdslandRow4'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "foreignTripPurpose4",
      "label": "Trip 4 — purpose of the trip",
      "type": "enum",
      "description": "Modelled from a two-option radio widget.",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'UtenlandsoppholdGruppe4' (radio: Arbeid/Privat)",
      "validation": {
        "enum": [
          "Arbeid",
          "Privat"
        ]
      }
    },
    {
      "name": "foreignTripDepartureDate5",
      "label": "Trip 5 — date of departure from Norway",
      "type": "date",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'Utreisedato fra Norge (dag.måned.år)Row5' (this widget, and its Innreisedato/Antall fraværsdager/Oppholdsland row-mates for rows 1-4, exist as two near-duplicate widget layers at near-identical rects in the source PDF, a disclosed forms-authoring artifact matching this registry's precedent for other Norway schemas; de-duplicated by field name here, see VERIFICATION.md)"
    },
    {
      "name": "foreignTripArrivalDate5",
      "label": "Trip 5 — date of arrival back in Norway",
      "type": "date",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'Innreisedato til Norge (dag.måned.år)Row5'"
    },
    {
      "name": "foreignTripAbsenceDays5",
      "label": "Trip 5 — number of days absent",
      "type": "string",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'Antall fraværsdagerRow5'",
      "validation": {
        "maxLength": 10
      }
    },
    {
      "name": "foreignTripResidenceCountry5",
      "label": "Trip 5 — country visited",
      "type": "string",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'OppholdslandRow5'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "foreignTripPurpose5",
      "label": "Trip 5 — purpose of the trip",
      "type": "enum",
      "description": "Modelled from a two-option radio widget.",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'UtenlandsoppholdGruppe5' (radio: Arbeid/Privat)",
      "validation": {
        "enum": [
          "Arbeid",
          "Privat"
        ]
      }
    },
    {
      "name": "foreignTripDepartureDate6",
      "label": "Trip 6 — date of departure from Norway",
      "type": "date",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'Utreisedato fra Norge (dag.måned.år)Row6' (this widget, and its Innreisedato/Antall fraværsdager/Oppholdsland row-mates for rows 1-4, exist as two near-duplicate widget layers at near-identical rects in the source PDF, a disclosed forms-authoring artifact matching this registry's precedent for other Norway schemas; de-duplicated by field name here, see VERIFICATION.md)"
    },
    {
      "name": "foreignTripArrivalDate6",
      "label": "Trip 6 — date of arrival back in Norway",
      "type": "date",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'Innreisedato til Norge (dag.måned.år)Row6'"
    },
    {
      "name": "foreignTripAbsenceDays6",
      "label": "Trip 6 — number of days absent",
      "type": "string",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'Antall fraværsdagerRow6'",
      "validation": {
        "maxLength": 10
      }
    },
    {
      "name": "foreignTripResidenceCountry6",
      "label": "Trip 6 — country visited",
      "type": "string",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'OppholdslandRow6'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "foreignTripPurpose6",
      "label": "Trip 6 — purpose of the trip",
      "type": "enum",
      "description": "Modelled from a two-option radio widget.",
      "visibleWhen": {
        "field": "permitApplicationType",
        "equals": "Fornyelse"
      },
      "sourceRef": "Page 4, Section 5 — widget 'UtenlandsoppholdGruppe6' (radio: Arbeid/Privat)",
      "validation": {
        "enum": [
          "Arbeid",
          "Privat"
        ]
      }
    },
    {
      "name": "spouseSurname",
      "label": "Spouse/partner/cohabitant — surname",
      "type": "string",
      "classification": "pii",
      "description": "Section 6 'Familiemedlemmer' covers family members even if they are not themselves applying for a residence permit; per the form's own instruction this need not be repeated if already given in a previous application, but should be given if other family members are submitting applications at the same time (each family member must still submit their own application form).",
      "sourceRef": "Page 5, Section 6 'Ektefelle/partner/samboer' — widget 'Etternavn_3'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "spouseFirstName",
      "label": "Spouse/partner/cohabitant — first name",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 5, Section 6 — widget 'Fornavn_3'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "spouseDateOfBirth",
      "label": "Spouse/partner/cohabitant — date of birth",
      "type": "date",
      "classification": "sensitive-pii",
      "sourceRef": "Page 5, Section 6 — widget 'Fødselsdato dagmånedår_3'"
    },
    {
      "name": "spouseGender",
      "label": "Spouse/partner/cohabitant — gender",
      "type": "enum",
      "classification": "pii",
      "description": "Modelled from two radio-button widgets sharing the field name 'FamilieGruppe1'.",
      "sourceRef": "Page 5, Section 6 — widget 'FamilieGruppe1' (radio: Mann/Kvinne)",
      "validation": {
        "enum": [
          "Mann",
          "Kvinne"
        ]
      }
    },
    {
      "name": "spouseApplyingSimultaneously",
      "label": "Is the spouse/partner/cohabitant applying at the same time as you?",
      "type": "boolean",
      "sourceRef": "Page 5, Section 6 — checkbox widget 'Søkersamtidig1'"
    },
    {
      "name": "spouseAddress",
      "label": "Spouse/partner/cohabitant — address",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 5, Section 6 — widget 'Adresse_3'",
      "validation": {
        "maxLength": 250
      }
    },
    {
      "name": "spousePostalCodeAndPlace",
      "label": "Spouse/partner/cohabitant — postal code/place",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 5, Section 6 — widget 'Postnummersted'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "spouseCountry",
      "label": "Spouse/partner/cohabitant — country",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 5, Section 6 — widget 'Land_3'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "parent1FullName",
      "label": "Parent 1 — surname, first name",
      "type": "string",
      "classification": "pii",
      "description": "Section 6 'Foreldre' (Parents).",
      "sourceRef": "Page 5, Section 6 'Foreldre' — widget 'Etternavn Fornavn'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "parent1DateOfBirth",
      "label": "Parent 1 — date of birth",
      "type": "date",
      "classification": "sensitive-pii",
      "sourceRef": "Page 5, Section 6 — widget 'Fødselsdato'"
    },
    {
      "name": "parent1Country",
      "label": "Parent 1 — country of residence",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 5, Section 6 — widget 'Bosatt i land'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "parent1Gender",
      "label": "Parent 1 — gender",
      "type": "enum",
      "classification": "pii",
      "description": "Modelled from two radio-button widgets sharing the field name 'FamilieGruppe2'.",
      "sourceRef": "Page 5, Section 6 — widget 'FamilieGruppe2' (radio: Mann/Kvinne)",
      "validation": {
        "enum": [
          "Mann",
          "Kvinne"
        ]
      }
    },
    {
      "name": "parent1ApplyingSimultaneously",
      "label": "Is parent 1 applying at the same time as you?",
      "type": "boolean",
      "sourceRef": "Page 5, Section 6 — checkbox widget 'Søkersamtidig2'"
    },
    {
      "name": "parent2FullName",
      "label": "Parent 2 — surname, first name",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 5, Section 6 'Foreldre' — widget 'Etternavn Fornavn_2'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "parent2DateOfBirth",
      "label": "Parent 2 — date of birth",
      "type": "date",
      "classification": "sensitive-pii",
      "sourceRef": "Page 5, Section 6 — widget 'Fødselsdato_2'"
    },
    {
      "name": "parent2Country",
      "label": "Parent 2 — country of residence",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 5, Section 6 — widget 'Bosatt i land_2'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "parent2Gender",
      "label": "Parent 2 — gender",
      "type": "enum",
      "classification": "pii",
      "description": "Modelled from two radio-button widgets sharing the field name 'FamilieGruppe3'.",
      "sourceRef": "Page 5, Section 6 — widget 'FamilieGruppe3' (radio: Mann/Kvinne)",
      "validation": {
        "enum": [
          "Mann",
          "Kvinne"
        ]
      }
    },
    {
      "name": "parent2ApplyingSimultaneously",
      "label": "Is parent 2 applying at the same time as you?",
      "type": "boolean",
      "sourceRef": "Page 5, Section 6 — checkbox widget 'Søkersamtidig3'"
    },
    {
      "name": "relative1FullName",
      "label": "Relative 1 — surname, first name",
      "type": "string",
      "classification": "pii",
      "description": "Section 6 'Andre nære slektninger' (other close relatives): list all children (biological or adopted), foster children, and siblings — use a separate sheet if needed. The source PDF names relative 1's combined surname/first-name widget 'Etternavnet til barn nummer 1' (literally \"the surname of child no. 1\"), even though — like the other five relatives' widgets, and the shared column header 'Etternavn, Fornavn' (\"Surname, First name\") spanning the whole row — its rect covers the full combined-name column; this is a disclosed naming quirk in the source PDF, not a second, missing first-name field. See VERIFICATION.md.",
      "sourceRef": "Page 5, Section 6 'Andre nære slektninger' — widget 'Etternavnet til barn nummer 1'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "relative1DateOfBirth",
      "label": "Relative 1 — date of birth",
      "type": "date",
      "classification": "sensitive-pii",
      "sourceRef": "Page 5, Section 6 — widget 'Fødselsdatoen til barn nummer 1 (dd.mm.åååå)'"
    },
    {
      "name": "relative1Country",
      "label": "Relative 1 — country of residence",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 5, Section 6 — widget 'Land barn nummer 1 er bosatt i'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "relative1Relationship",
      "label": "Relative 1 — relationship to you",
      "type": "enum",
      "description": "Modelled from three radio-button widgets sharing the field name 'Barn nummer 1'; the form's own column header abbreviates these B (biologisk/adoptivbarn) / F (fosterbarn) / S (søsken).",
      "sourceRef": "Page 5, Section 6 — widget 'Barn nummer 1' (radio, 3 options)",
      "validation": {
        "enum": [
          "Biologiske barn eller adoptivbarn",
          "Fosterbarn",
          "Søsken"
        ]
      }
    },
    {
      "name": "relative1Gender",
      "label": "Relative 1 — gender",
      "type": "enum",
      "classification": "pii",
      "description": "Modelled from two radio-button widgets sharing the field name 'FamilieGruppe4'.",
      "sourceRef": "Page 5, Section 6 — widget 'FamilieGruppe4' (radio: Mann/Kvinne)",
      "validation": {
        "enum": [
          "Mann",
          "Kvinne"
        ]
      }
    },
    {
      "name": "relative1ApplyingSimultaneously",
      "label": "Is relative 1 applying at the same time as you?",
      "type": "boolean",
      "sourceRef": "Page 5, Section 6 — checkbox widget 'Barn nummer 1 søker samtidig'"
    },
    {
      "name": "relative2FullName",
      "label": "Relative 2 — surname, first name",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 5, Section 6 'Andre nære slektninger' — widget 'Etternavn Fornavn_4'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "relative2DateOfBirth",
      "label": "Relative 2 — date of birth",
      "type": "date",
      "classification": "sensitive-pii",
      "sourceRef": "Page 5, Section 6 — widget 'Fødselsdato_4'"
    },
    {
      "name": "relative2Country",
      "label": "Relative 2 — country of residence",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 5, Section 6 — widget 'Bosatt i land_4'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "relative2Relationship",
      "label": "Relative 2 — relationship to you",
      "type": "enum",
      "description": "Modelled from three radio-button widgets sharing the field name 'SlektGruppe2'; the form's own column header abbreviates these B (biologisk/adoptivbarn) / F (fosterbarn) / S (søsken).",
      "sourceRef": "Page 5, Section 6 — widget 'SlektGruppe2' (radio, 3 options)",
      "validation": {
        "enum": [
          "Biologiske barn eller adoptivbarn",
          "Fosterbarn",
          "Søsken"
        ]
      }
    },
    {
      "name": "relative2Gender",
      "label": "Relative 2 — gender",
      "type": "enum",
      "classification": "pii",
      "description": "Modelled from two radio-button widgets sharing the field name 'FamilieGruppe5'.",
      "sourceRef": "Page 5, Section 6 — widget 'FamilieGruppe5' (radio: Mann/Kvinne)",
      "validation": {
        "enum": [
          "Mann",
          "Kvinne"
        ]
      }
    },
    {
      "name": "relative2ApplyingSimultaneously",
      "label": "Is relative 2 applying at the same time as you?",
      "type": "boolean",
      "sourceRef": "Page 5, Section 6 — checkbox widget 'Søkersamtidig5'"
    },
    {
      "name": "relative3FullName",
      "label": "Relative 3 — surname, first name",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 5, Section 6 'Andre nære slektninger' — widget 'Etternavn Fornavn_5'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "relative3DateOfBirth",
      "label": "Relative 3 — date of birth",
      "type": "date",
      "classification": "sensitive-pii",
      "sourceRef": "Page 5, Section 6 — widget 'Fødselsdato_5'"
    },
    {
      "name": "relative3Country",
      "label": "Relative 3 — country of residence",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 5, Section 6 — widget 'Bosatt i land_5'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "relative3Relationship",
      "label": "Relative 3 — relationship to you",
      "type": "enum",
      "description": "Modelled from three radio-button widgets sharing the field name 'SlektGruppe3'; the form's own column header abbreviates these B (biologisk/adoptivbarn) / F (fosterbarn) / S (søsken).",
      "sourceRef": "Page 5, Section 6 — widget 'SlektGruppe3' (radio, 3 options)",
      "validation": {
        "enum": [
          "Biologiske barn eller adoptivbarn",
          "Fosterbarn",
          "Søsken"
        ]
      }
    },
    {
      "name": "relative3Gender",
      "label": "Relative 3 — gender",
      "type": "enum",
      "classification": "pii",
      "description": "Modelled from two radio-button widgets sharing the field name 'FamilieGrupp6'.",
      "sourceRef": "Page 5, Section 6 — widget 'FamilieGrupp6' (radio: Mann/Kvinne)",
      "validation": {
        "enum": [
          "Mann",
          "Kvinne"
        ]
      }
    },
    {
      "name": "relative3ApplyingSimultaneously",
      "label": "Is relative 3 applying at the same time as you?",
      "type": "boolean",
      "sourceRef": "Page 5, Section 6 — checkbox widget 'Søkersamtidig6'"
    },
    {
      "name": "relative4FullName",
      "label": "Relative 4 — surname, first name",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 5, Section 6 'Andre nære slektninger' — widget 'Etternavn Fornavn_6'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "relative4DateOfBirth",
      "label": "Relative 4 — date of birth",
      "type": "date",
      "classification": "sensitive-pii",
      "sourceRef": "Page 5, Section 6 — widget 'Fødselsdato_6'"
    },
    {
      "name": "relative4Country",
      "label": "Relative 4 — country of residence",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 5, Section 6 — widget 'Bosatt i land_6'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "relative4Relationship",
      "label": "Relative 4 — relationship to you",
      "type": "enum",
      "description": "Modelled from three radio-button widgets sharing the field name 'SlektGrupp4'; the form's own column header abbreviates these B (biologisk/adoptivbarn) / F (fosterbarn) / S (søsken).",
      "sourceRef": "Page 5, Section 6 — widget 'SlektGrupp4' (radio, 3 options)",
      "validation": {
        "enum": [
          "Biologiske barn eller adoptivbarn",
          "Fosterbarn",
          "Søsken"
        ]
      }
    },
    {
      "name": "relative4Gender",
      "label": "Relative 4 — gender",
      "type": "enum",
      "classification": "pii",
      "description": "Modelled from two radio-button widgets sharing the field name 'FamilieGrupp7'.",
      "sourceRef": "Page 5, Section 6 — widget 'FamilieGrupp7' (radio: Mann/Kvinne)",
      "validation": {
        "enum": [
          "Mann",
          "Kvinne"
        ]
      }
    },
    {
      "name": "relative4ApplyingSimultaneously",
      "label": "Is relative 4 applying at the same time as you?",
      "type": "boolean",
      "sourceRef": "Page 5, Section 6 — checkbox widget 'Søkersamtidig7'"
    },
    {
      "name": "relative5FullName",
      "label": "Relative 5 — surname, first name",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 5, Section 6 'Andre nære slektninger' — widget 'Etternavn Fornavn_7'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "relative5DateOfBirth",
      "label": "Relative 5 — date of birth",
      "type": "date",
      "classification": "sensitive-pii",
      "sourceRef": "Page 5, Section 6 — widget 'Fødselsdato_7'"
    },
    {
      "name": "relative5Country",
      "label": "Relative 5 — country of residence",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 5, Section 6 — widget 'Bosatt i land_7'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "relative5Relationship",
      "label": "Relative 5 — relationship to you",
      "type": "enum",
      "description": "Modelled from three radio-button widgets sharing the field name 'SlektGrupp5'; the form's own column header abbreviates these B (biologisk/adoptivbarn) / F (fosterbarn) / S (søsken).",
      "sourceRef": "Page 5, Section 6 — widget 'SlektGrupp5' (radio, 3 options)",
      "validation": {
        "enum": [
          "Biologiske barn eller adoptivbarn",
          "Fosterbarn",
          "Søsken"
        ]
      }
    },
    {
      "name": "relative5Gender",
      "label": "Relative 5 — gender",
      "type": "enum",
      "classification": "pii",
      "description": "Modelled from two radio-button widgets sharing the field name 'FamilieGrupp8'.",
      "sourceRef": "Page 5, Section 6 — widget 'FamilieGrupp8' (radio: Mann/Kvinne)",
      "validation": {
        "enum": [
          "Mann",
          "Kvinne"
        ]
      }
    },
    {
      "name": "relative5ApplyingSimultaneously",
      "label": "Is relative 5 applying at the same time as you?",
      "type": "boolean",
      "sourceRef": "Page 5, Section 6 — checkbox widget 'Søkersamtidig8'"
    },
    {
      "name": "relative6FullName",
      "label": "Relative 6 — surname, first name",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 5, Section 6 'Andre nære slektninger' — widget 'Etternavn Fornavn_8'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "relative6DateOfBirth",
      "label": "Relative 6 — date of birth",
      "type": "date",
      "classification": "sensitive-pii",
      "sourceRef": "Page 5, Section 6 — widget 'Fødselsdato_8'"
    },
    {
      "name": "relative6Country",
      "label": "Relative 6 — country of residence",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 5, Section 6 — widget 'Bosatt i land_8'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "relative6Relationship",
      "label": "Relative 6 — relationship to you",
      "type": "enum",
      "description": "Modelled from three radio-button widgets sharing the field name 'SlektGrupp6'; the form's own column header abbreviates these B (biologisk/adoptivbarn) / F (fosterbarn) / S (søsken).",
      "sourceRef": "Page 5, Section 6 — widget 'SlektGrupp6' (radio, 3 options)",
      "validation": {
        "enum": [
          "Biologiske barn eller adoptivbarn",
          "Fosterbarn",
          "Søsken"
        ]
      }
    },
    {
      "name": "relative6Gender",
      "label": "Relative 6 — gender",
      "type": "enum",
      "classification": "pii",
      "description": "Modelled from two radio-button widgets sharing the field name 'FamilieGrupp9'.",
      "sourceRef": "Page 5, Section 6 — widget 'FamilieGrupp9' (radio: Mann/Kvinne)",
      "validation": {
        "enum": [
          "Mann",
          "Kvinne"
        ]
      }
    },
    {
      "name": "relative6ApplyingSimultaneously",
      "label": "Is relative 6 applying at the same time as you?",
      "type": "boolean",
      "sourceRef": "Page 5, Section 6 — checkbox widget 'Søkersamtidig9'"
    },
    {
      "name": "childrenCount",
      "label": "Number of children",
      "type": "string",
      "sourceRef": "Page 5, Section 6 — widget 'Antall barn'",
      "validation": {
        "maxLength": 10
      }
    },
    {
      "name": "sistersCount",
      "label": "Number of sisters",
      "type": "string",
      "sourceRef": "Page 5, Section 6 — widget 'Antall søstre'",
      "validation": {
        "maxLength": 10
      }
    },
    {
      "name": "brothersCount",
      "label": "Number of brothers",
      "type": "string",
      "sourceRef": "Page 5, Section 6 — widget 'Antall brødre'",
      "validation": {
        "maxLength": 10
      }
    },
    {
      "name": "siblingsInNorwayCount",
      "label": "Number of siblings living in Norway",
      "type": "string",
      "sourceRef": "Page 5, Section 6 — widget 'Antall søsken bosatt i Norge'",
      "validation": {
        "maxLength": 10
      }
    },
    {
      "name": "underInvestigationForCriminalOffense",
      "label": "Are you under investigation for a criminal offense?",
      "type": "boolean",
      "required": true,
      "description": "Modelled from a Ja/Nei radio pair sharing the field name 'StraffGruppe1'.",
      "sourceRef": "Page 6, Section 7 'Straffbare forhold' — widget 'StraffGruppe1'"
    },
    {
      "name": "investigationLocationOrCountry",
      "label": "If yes, in which police district/country?",
      "type": "string",
      "visibleWhen": {
        "field": "underInvestigationForCriminalOffense",
        "equals": true
      },
      "requiredWhen": {
        "field": "underInvestigationForCriminalOffense",
        "equals": true
      },
      "sourceRef": "Page 6, Section 7 — widget 'Hvis ja, i hvilket politidistrikt/land?'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "previouslyConvictedOfCrime",
      "label": "Have you previously been convicted of a crime, in Norway or abroad?",
      "type": "boolean",
      "required": true,
      "description": "Modelled from a Ja/Nei radio pair sharing the field name 'StraffGruppe2'.",
      "sourceRef": "Page 6, Section 7 — widget 'StraffGruppe2'"
    },
    {
      "name": "convictionWhenAndWhere",
      "label": "If yes, when and where were you convicted?",
      "type": "string",
      "visibleWhen": {
        "field": "previouslyConvictedOfCrime",
        "equals": true
      },
      "requiredWhen": {
        "field": "previouslyConvictedOfCrime",
        "equals": true
      },
      "sourceRef": "Page 6, Section 7 — widget 'Hvis ja, når og hvor ble du straffet?'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "convictionReactionFine",
      "label": "Sentence/reaction: fine",
      "type": "boolean",
      "description": "Modelled from a checkbox widget 'Straffereaksjon: Bot'.",
      "visibleWhen": {
        "field": "previouslyConvictedOfCrime",
        "equals": true
      },
      "sourceRef": "Page 6, Section 7 'Straffereaksjon' — widget 'Straffereaksjon: Bot'"
    },
    {
      "name": "fineAmount",
      "label": "Fine amount",
      "type": "string",
      "visibleWhen": {
        "field": "convictionReactionFine",
        "equals": true
      },
      "requiredWhen": {
        "field": "convictionReactionFine",
        "equals": true
      },
      "sourceRef": "Page 6, Section 7 — widget 'Bot'",
      "validation": {
        "maxLength": 30
      }
    },
    {
      "name": "convictionReactionPrison",
      "label": "Sentence/reaction: prison sentence",
      "type": "boolean",
      "description": "Modelled from a checkbox widget 'Straffereaksjon: Fengselstraff'.",
      "visibleWhen": {
        "field": "previouslyConvictedOfCrime",
        "equals": true
      },
      "sourceRef": "Page 6, Section 7 — widget 'Straffereaksjon: Fengselstraff'"
    },
    {
      "name": "prisonSentenceDays",
      "label": "Prison sentence (days)",
      "type": "string",
      "visibleWhen": {
        "field": "convictionReactionPrison",
        "equals": true
      },
      "requiredWhen": {
        "field": "convictionReactionPrison",
        "equals": true
      },
      "sourceRef": "Page 6, Section 7 — widget 'Fengselsstraff: dager'",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "typeOfCriminalOffense",
      "label": "Type of criminal offense",
      "type": "string",
      "visibleWhen": {
        "field": "previouslyConvictedOfCrime",
        "equals": true
      },
      "requiredWhen": {
        "field": "previouslyConvictedOfCrime",
        "equals": true
      },
      "sourceRef": "Page 6, Section 7 — widget 'Type straffbar handling'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "sentenceServedAndProbationOver",
      "label": "Has the sentence been served and any probation period ended?",
      "type": "boolean",
      "description": "Modelled from a two-option radio widget 'StraffGruppe4' (Ja / Nei, forklar).",
      "visibleWhen": {
        "field": "previouslyConvictedOfCrime",
        "equals": true
      },
      "requiredWhen": {
        "field": "previouslyConvictedOfCrime",
        "equals": true
      },
      "sourceRef": "Page 6, Section 7 — widget 'StraffGruppe4'"
    },
    {
      "name": "probationNotOverExplanation",
      "label": "If no, explain why the probation period is not yet over",
      "type": "string",
      "visibleWhen": {
        "field": "sentenceServedAndProbationOver",
        "equals": false
      },
      "requiredWhen": {
        "field": "sentenceServedAndProbationOver",
        "equals": false
      },
      "sourceRef": "Page 6, Section 7 — widget 'Forklare hvorfor prøvetiden er ikke over'",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "poaAcknowledgeCorrespondenceToAttorney",
      "label": "I understand that correspondence from the immigration authorities will be directed to my representative, who will have access to my case",
      "type": "boolean",
      "description": "Acknowledgement checkbox preceding the power-of-attorney grant.",
      "sourceRef": "Page 6, Section 8 'Fullmakt' — checkbox widget 'fullmaktBoks1'"
    },
    {
      "name": "poaAcknowledgeDecisionToAttorney",
      "label": "I understand that my representative will receive the decision instead of me",
      "type": "boolean",
      "sourceRef": "Page 6, Section 8 — checkbox widget 'fullmaktBoks2'"
    },
    {
      "name": "poaGrantAuthority",
      "label": "I grant the following person power of attorney to act on my behalf regarding my application",
      "type": "boolean",
      "sourceRef": "Page 6, Section 8 — checkbox widget 'fullmaktBoks3'"
    },
    {
      "name": "attorneySurname",
      "label": "Representative's surname",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "poaGrantAuthority",
        "equals": true
      },
      "requiredWhen": {
        "field": "poaGrantAuthority",
        "equals": true
      },
      "sourceRef": "Page 6, Section 8 — widget 'Fullmektigens etternavn'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "attorneyFirstName",
      "label": "Representative's first name",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "poaGrantAuthority",
        "equals": true
      },
      "requiredWhen": {
        "field": "poaGrantAuthority",
        "equals": true
      },
      "sourceRef": "Page 6, Section 8 — widget 'Fullmektigens fornavn'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "attorneyAddress",
      "label": "Representative's address",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "poaGrantAuthority",
        "equals": true
      },
      "requiredWhen": {
        "field": "poaGrantAuthority",
        "equals": true
      },
      "sourceRef": "Page 6, Section 8 — widget 'Fullmektigens adresse'",
      "validation": {
        "maxLength": 250
      }
    },
    {
      "name": "attorneyPostalCode",
      "label": "Representative's postal code",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "poaGrantAuthority",
        "equals": true
      },
      "sourceRef": "Page 6, Section 8 — widget 'Postnummer_6'",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "attorneyPostTown",
      "label": "Representative's post town",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "poaGrantAuthority",
        "equals": true
      },
      "sourceRef": "Page 6, Section 8 — widget 'Poststed_5'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "attorneyCountry",
      "label": "Representative's country",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "poaGrantAuthority",
        "equals": true
      },
      "sourceRef": "Page 6, Section 8 — widget 'Land_4'",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "attorneyPhone",
      "label": "Representative's phone",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "poaGrantAuthority",
        "equals": true
      },
      "sourceRef": "Page 6, Section 8 — widget 'Telefon_2'",
      "validation": {
        "maxLength": 30
      }
    },
    {
      "name": "attorneyMobile",
      "label": "Representative's mobile",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "poaGrantAuthority",
        "equals": true
      },
      "sourceRef": "Page 6, Section 8 — widget 'Mobiltelefon'",
      "validation": {
        "maxLength": 30
      }
    },
    {
      "name": "attorneyEmail",
      "label": "Representative's email",
      "type": "string",
      "classification": "pii",
      "visibleWhen": {
        "field": "poaGrantAuthority",
        "equals": true
      },
      "sourceRef": "Page 6, Section 8 — widget 'E-post_5'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "consentToSmsEmailNotifications",
      "label": "I agree to receive information about my case by SMS and email",
      "type": "boolean",
      "sourceRef": "Page 6, Section 9 'Underskrift' — checkbox widget 'UnderskriftBoks1'"
    },
    {
      "name": "applicantSignaturePlaceAndDate",
      "label": "Place and date of your signature",
      "type": "string",
      "required": true,
      "description": "The source PDF has no separate widget for the wet-ink signature itself, only this place-and-date text field alongside the printed line 'Underskriften din' (Your signature).",
      "sourceRef": "Page 6, Section 9 — widget 'Sted og dato'",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "guardian1SignaturePlaceAndDate",
      "label": "Parent/guardian 1 — place and date of signature",
      "type": "string",
      "description": "Section 10 'Når søkeren er barn eller umyndiggjort' (When the applicant is a child or incapacitated) applies only if the applicant is a minor or otherwise not legally competent to sign alone; per the form's own text, if parental responsibility is shared, both parents/guardians must consent. The source form has no dedicated yes/no widget for 'is the applicant a minor,' so these two parent/guardian signature-block fields are left optional rather than gated on a synthetic field.",
      "sourceRef": "Page 7, Section 10 — widget 'Sted og dato_2', printed alongside 'Foreldre/verges underskrift' (Parent's/guardian's signature)",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "guardian2SignaturePlaceAndDate",
      "label": "Parent/guardian 2 — place and date of signature",
      "type": "string",
      "sourceRef": "Page 7, Section 10 — widget 'Sted og dato_3', printed alongside a second 'Foreldre/verges underskrift' line",
      "validation": {
        "maxLength": 200
      }
    }
  ],
  "documents": [
    {
      "id": "passportPhoto",
      "label": "Passport-style photograph",
      "category": "identity-document",
      "required": true,
      "belongsTo": "applicant",
      "sourceRef": "Page 1, top-right 'Bilde' (Photo) placeholder box"
    },
    {
      "id": "entryBanLiftingApplication",
      "label": "Application for lifting the entry ban",
      "category": "supporting-evidence",
      "required": false,
      "requiredWhen": {
        "field": "entryBanStillInEffect",
        "equals": true
      },
      "belongsTo": "applicant",
      "sourceRef": "Page 2, Section 3 — widget 'OppholdGruppe5' option text \"Ja. Legg ved skjema for opphevelse av innreiseforbud\""
    },
    {
      "id": "workExperienceDocumentation",
      "label": "Documentation of relevant work experience",
      "category": "supporting-evidence",
      "required": false,
      "requiredWhen": {
        "field": "hasRelevantWorkExperience",
        "equals": true
      },
      "belongsTo": "applicant",
      "sourceRef": "Page 3, Section B — widget 'ArbeidGruppe4' option text \"Ja (husk å legge ved dokumentasjon)\""
    },
    {
      "id": "correctnessAttestation",
      "label": "Confirmation that the information given in the application is correct and complete",
      "category": "attestation",
      "required": true,
      "belongsTo": "applicant",
      "statement": "Jeg bekrefter at opplysningene som er gitt i denne søknaden er korrekte og fullstendige.",
      "sourceRef": "Page 6, Section 9 'Underskrift' signature block (statement has no separate checkbox widget; implicit in signing, same pattern as this registry's other Norway schemas)"
    }
  ]
}
