Registry entry

Sweden Application for a Swedish Work Permit

Apply to the Swedish Migration Agency (Migrationsverket) for a work permit to work in Sweden, using Migrationsverket Form 149011 ('Ansökan om arbetstillstånd | Application for a Swedish work permit'). Covers first-time applications, extensions of an existing permit, a new-employer/new-assignment permit, a student-in-Sweden employment permit, and an attached application for a permanent residence permit after four years of work-based residence. For citizens of a country outside the EU/EEA area or Switzerland who plan to work in Sweden; if the applicant plans to work more than three months the application also concerns a residence permit, and if less than three months and a visa is otherwise required, a separate visa application is also needed (not modelled here). This is Sweden's first Visa-vertical schema, distinct from the EU-harmonized Schengen short-stay visa template already published elsewhere in this registry (e.g. fr/france-visas/schengen-visa-application); Sweden's other verticals are se/bolagsverket/aktiebolag-formation (Business Formation) and se/transportstyrelsen/vehicle-registration-new-vehicle (DMV). It does not submit anything or imply government endorsement.

Registry entry

se/migrationsverket/work-permit-application

Jurisdiction
Sweden · national
Version
1.0.0
Verification
draft

Authoritative source Migrationsverket Form 149011, edition 2026-06-11 ('Application for a Swedish work permit' / 'Ansökan om arbetstillstånd'), the English-language fillable AcroForm PDF linked from Migrationsverket's own forms page

Machine access

Registry catalog
registry/index.jsonone record per schema id

Field reference

142 fields across 10 steps, read from the published schema.json, with names, types, requiredness, and validation as the document states them. The live government form remains the authoritative source.

Application type

  • applicationCategory enum required

    The form's own four mutually-exclusive top-level application categories (page 1): a first-time work permit, an extension of an existing permit, a new permit following a change of employer/assignment, or a permit for a student in Sweden who has taken employment.

    enum: first_time | extension | new_employer_or_assignments | student_employed
  • firstTimeProfessionType enum optional

    First-time applicant: profession type

    enum: artist | athlete_or_coach | other
  • firstTimeOtherProfession string optional

    First-time applicant: state the profession, if not an artist or professional athlete/coach

    length: 1–200
  • extensionProfessionType enum optional

    Extension applicant: profession type

    enum: artist | athlete_or_coach | other
  • extensionOtherProfession string optional

    Extension applicant: state the profession, if not an artist or professional athlete/coach

    length: 1–200
  • newEmployerProfession string optional

    New-employer/new-assignment applicant: state the profession

    length: 1–200
  • studentEmployedProfession string optional

    Student-in-Sweden applicant: state the profession of the offered employment

    length: 1–200
  • applyingForPermanentResidence boolean optional

    Can only be granted in connection with the examination of an application for an extended residence permit; the form's own guidance notes exceptions to the self-support requirement for pensioners or on special grounds.

Stay in Sweden

  • plannedEntryDate date optional

    Planned date of entry into Sweden

  • workInSwedenFromDate date optional

    Planned start date of work in Sweden

  • workUntilFurtherNotice boolean optional

    Is the planned work in Sweden until further notice (no end date)?

  • workInSwedenUntilDate date optional

    Left blank when the applicant instead indicates work is planned until further notice (workUntilFurtherNotice); the source form does not expose a PDF-level required flag distinguishing these two mutually-exclusive sub-fields.

  • inSwedenSinceDate date optional

    Date since which the applicant has already been in Sweden, if applicable

  • reasonForBeingInSweden string optional

    Applies, among other cases, to an applicant who travelled to Sweden to visit an employer and was offered employment (source §15.1.6), which additionally requires an employer certificate attachment (see documents[].employerVisitCertificate).

    length: 0–500

Personal details

  • surname string required

    Surname (family name)

    length: 1–200classification: pii
  • previousSurname string optional

    Previous surname, if any

    length: 0–200classification: pii
  • firstNames string required

    First name(s)

    length: 1–200classification: pii
  • dateOfBirthOrPersonalId string required

    Date of birth / Personal ID No.

    length: 1–30classification: sensitive-pii
  • citizenship string required

    Citizenship

    length: 1–100classification: pii
  • previousCitizenship string optional

    Previous citizenship, if any

    length: 0–100classification: pii
  • placeOfBirth string optional

    Place of birth

    length: 0–100classification: pii
  • countryOfBirth string optional

    Country of birth

    length: 0–100classification: pii
  • nativeLanguage string optional

    Native language

    length: 0–100
  • otherLanguagesSpoken string optional

    Other languages the applicant speaks

    length: 0–200
  • sex enum required

    The form's own footnote states that if a different sex is specified in the passport, the applicant must still choose male or female, because only these two genders are used in Swedish legislation.

    enum: male | femaleclassification: sensitive-pii
  • maritalStatus enum required

    Marital status

    enum: unmarried | married_or_registered_partner | divorced | widowed
  • relativesApplyingWithYou boolean optional

    The form's own footnote states that all co-applicants must submit their own separate application.

Passport details

  • passportType enum required

    Type of passport

    enum: national | other
  • otherPassportType string optional

    State the type of passport, if not a national passport

    length: 1–100
  • passportIssuedBy string required

    Passport issued by

    length: 1–100
  • passportNumber string required

    Passport number

    length: 1–50classification: sensitive-pii
  • passportIssuedDate date required

    Passport issued date

  • passportValidUntil date required

    Passport valid until

  • hasResidencePermitInOtherCountry boolean optional

    Do you have a permit to live (reside) in a country other than your home country?

  • residencePermitOtherCountry string optional

    Country where you have a permit to live, if applicable

    length: 1–100
  • residencePermitOtherCountryValidPeriod string optional

    Period the other country's residence permit is valid (from – until)

    length: 0–60

Contact details

  • contactEmail string required

    Email address

    length: 1–200classification: pii
  • contactPhone string required

    Telephone number, with country code (for example +46 or 0046)

    length: 1–30classification: pii
  • contactStreetAddress string required

    The applicant's own address in the country where they live, or their Swedish address if already in Sweden.

    length: 1–200classification: pii
  • contactPostcode string required

    Postcode

    length: 1–20classification: pii
  • contactPlace string required

    Place (city/town)

    length: 1–100classification: pii
  • contactCountry string required

    Country

    length: 1–100classification: pii
  • representativeEmail string optional

    The form's own §4.1 states a power of attorney must be enclosed whenever a representative is used (see documents[].representativePowerOfAttorney).

    length: 0–200classification: pii
  • representativeName string optional

    Representative's name (first name and surname, or name of organisation)

    length: 0–200classification: pii
  • representativeStreetAddress string optional

    Representative's street address

    length: 0–200classification: pii
  • representativePostcode string optional

    Representative's postcode

    length: 0–20classification: pii
  • representativePlace string optional

    Representative's place (city/town)

    length: 0–100classification: pii

Previous applications and stays

  • previouslyAppliedToComeToSweden boolean optional

    Have you previously applied to come to Sweden?

  • previousApplicationYear string optional

    Year of the previous application to come to Sweden

    pattern
  • previousStay1Country string optional

    The form's own §6 asks for the most recent stay first, across up to 4 rows.

    length: 0–100
  • previousStay1EntryDate date optional

    Previous stay row 1: entry date

  • previousStay1DepartureDate date optional

    Previous stay row 1: departure date

  • previousStay2Country string optional

    Previous stay in Sweden/Schengen area, row 2: country

    length: 0–100
  • previousStay2EntryDate date optional

    Previous stay row 2: entry date

  • previousStay2DepartureDate date optional

    Previous stay row 2: departure date

  • previousStay3Country string optional

    Previous stay in Sweden/Schengen area, row 3: country

    length: 0–100
  • previousStay3EntryDate date optional

    Previous stay row 3: entry date

  • previousStay3DepartureDate date optional

    Previous stay row 3: departure date

  • previousStay4Country string optional

    Previous stay in Sweden/Schengen area, row 4: country

    length: 0–100
  • previousStay4EntryDate date optional

    Previous stay row 4: entry date

  • previousStay4DepartureDate date optional

    Previous stay row 4: departure date

Family

  • spouseSurname string optional

    The form's own §7 states co-applicants (e.g. a spouse applying for their own permit) must submit their own separate application, using form 133011; this section instead collects the applicant's family details for the applicant's own application.

    length: 0–200classification: pii
  • spousePreviousSurname string optional

    Spouse/cohabitant/registered partner: previous surname(s), if any

    length: 0–200classification: pii
  • spouseFirstNames string optional

    Spouse/cohabitant/registered partner: first name(s)

    length: 0–200classification: pii
  • spouseDateOfBirthOrPersonalId string optional

    Spouse/cohabitant/registered partner: date of birth / Personal ID No.

    length: 0–30classification: sensitive-pii
  • spouseCitizenship string optional

    Spouse/cohabitant/registered partner: citizenship

    length: 0–100classification: pii
  • spousePreviousCitizenship string optional

    Spouse/cohabitant/registered partner: previous citizenship, if any

    length: 0–100classification: pii
  • spouseCurrentAddress string optional

    Spouse/cohabitant/registered partner: current address (street, place, and country)

    length: 0–300classification: pii
  • spouseSex enum optional

    Spouse/cohabitant/registered partner: sex

    enum: male | femaleclassification: sensitive-pii
  • child1SurnameFirstName string optional

    Child 1: surname, first name

    length: 0–200classification: pii
  • child1DateOfBirth date optional

    Child 1: date of birth

    classification: pii
  • child1Citizenship string optional

    Child 1: citizenship

    length: 0–100classification: pii
  • child2SurnameFirstName string optional

    Child 2: surname, first name

    length: 0–200classification: pii
  • child2DateOfBirth date optional

    Child 2: date of birth

    classification: pii
  • child2Citizenship string optional

    Child 2: citizenship

    length: 0–100classification: pii
  • child3SurnameFirstName string optional

    Child 3: surname, first name

    length: 0–200classification: pii
  • child3DateOfBirth date optional

    Child 3: date of birth

    classification: pii
  • child3Citizenship string optional

    Child 3: citizenship

    length: 0–100classification: pii
  • child4SurnameFirstName string optional

    Child 4: surname, first name

    length: 0–200classification: pii
  • child4DateOfBirth date optional

    Child 4: date of birth

    classification: pii
  • child4Citizenship string optional

    Child 4: citizenship

    length: 0–100classification: pii
  • child5SurnameFirstName string optional

    Child 5: surname, first name

    length: 0–200classification: pii
  • child5DateOfBirth date optional

    Child 5: date of birth

    classification: pii
  • child5Citizenship string optional

    Child 5: citizenship

    length: 0–100classification: pii

Work in Sweden

  • employerOrClientName string required

    Employer or client in Sweden

    length: 1–200
  • employerContactPerson string optional

    Contact person at the employer/client in Sweden

    length: 0–200
  • employerPhone string optional

    Telephone number of the employer or client in Sweden

    length: 0–30
  • employerStreetAddress string optional

    Street address of the employer or client in Sweden

    length: 0–200
  • employerPostcodeAndPlace string optional

    Postcode and place of the employer or client in Sweden

    length: 0–100
  • employerEmail string optional

    Email address of the employer or client in Sweden

    length: 0–200
  • workplaceAddress string optional

    Workplace address, if different from the employer's address

    length: 0–200
  • howLearnedAboutWork string optional

    How did you learn about the work in Sweden?

    length: 0–500
  • workAssignmentsDescription string required

    Describe your work assignments

    length: 1–1000
  • salaryPayingEmployer string required

    From which employer (in Sweden or abroad) will you receive your salary?

    length: 1–200
  • monthlySalaryBeforeTax number required

    Monthly salary before taxes

    range: 0–∞classification: financial
  • weeklyWorkingHours number required

    How many hours will you be working per week?

    range: 0–168
  • receivesOtherCompensationOrAllowances boolean optional

    Will you receive any other compensation or allowances?

  • otherCompensationMonthlyAmount number optional

    Filled in only when the applicant will receive other compensation or allowances (receivesOtherCompensationOrAllowances).

    range: 0–∞classification: financial
  • employerProvidesHealthcareInsurance boolean optional

    Employer provides: healthcare insurance

  • employerProvidesNoFaultLiabilityInsurance boolean optional

    Employer provides: no-fault liability insurance

  • employerProvidesLifeInsurance boolean optional

    Employer provides: life insurance

  • employerProvidesPensionInsurance boolean optional

    Employer provides: pension insurance

  • previousEmployerInSweden string optional

    Previous employer in Sweden

    length: 0–200
  • previousEmploymentPeriod string optional

    Length of previous employment (from – until)

    length: 0–60
  • reasonForEndingPreviousEmployment string optional

    Reason for ending previous employment

    length: 0–500

Previous studies and work experience

  • school1Name string optional

    School education up to and including secondary school level, row 1

    length: 0–200
  • school1Years number optional

    School row 1: number of years

    range: 0–30
  • school1GraduatedYear string optional

    School row 1: year graduated

    pattern
  • school2Name string optional

    School education up to and including secondary school level, row 2

    length: 0–200
  • school2Years number optional

    School row 2: number of years

    range: 0–30
  • school2GraduatedYear string optional

    School row 2: year graduated

    pattern
  • university1Name string optional

    University/college education (state the level), row 1

    length: 0–200
  • university1Years number optional

    University/college row 1: number of years

    range: 0–30
  • university1GraduatedYear string optional

    University/college row 1: year graduated

    pattern
  • university2Name string optional

    University/college education (state the level), row 2

    length: 0–200
  • university2Years number optional

    University/college row 2: number of years

    range: 0–30
  • university2GraduatedYear string optional

    University/college row 2: year graduated

    pattern
  • university3Name string optional

    University/college education (state the level), row 3

    length: 0–200
  • university3Years number optional

    University/college row 3: number of years

    range: 0–30
  • university3GraduatedYear string optional

    University/college row 3: year graduated

    pattern
  • vocational1Name string optional

    Vocational education, row 1

    length: 0–200
  • vocational1Years number optional

    Vocational education row 1: number of years

    range: 0–30
  • vocational1GraduatedYear string optional

    Vocational education row 1: year graduated

    pattern
  • vocational2Name string optional

    Vocational education, row 2

    length: 0–200
  • vocational2Years number optional

    Vocational education row 2: number of years

    range: 0–30
  • vocational2GraduatedYear string optional

    Vocational education row 2: year graduated

    pattern
  • previousEmployer1Name string optional

    Previous employers, row 1: employer

    length: 0–200
  • previousEmployer1WorkAs string optional

    Previous employers, row 1: work as

    length: 0–200
  • previousEmployer1Length string optional

    Previous employers, row 1: length of employment

    length: 0–60
  • previousEmployer2Name string optional

    Previous employers, row 2: employer

    length: 0–200
  • previousEmployer2WorkAs string optional

    Previous employers, row 2: work as

    length: 0–200
  • previousEmployer2Length string optional

    Previous employers, row 2: length of employment

    length: 0–60
  • previousEmployer3Name string optional

    Previous employers, row 3: employer

    length: 0–200
  • previousEmployer3WorkAs string optional

    Previous employers, row 3: work as

    length: 0–200
  • previousEmployer3Length string optional

    Previous employers, row 3: length of employment

    length: 0–60

Health insurance and final details

  • healthCoverageBasis enum optional

    Relevant only when the applicant will be staying in Sweden for no more than one year; the private-insurance option must cover emergency and other medical care, dental care, hospitalization, and eventual repatriation for medical reasons.

    enum: population_register | private_insurance
  • healthInsuranceCompany string optional

    Health insurance company

    length: 1–200
  • healthInsuranceValidPeriod string optional

    Period the health insurance is valid (from – until)

    length: 1–60
  • requestRevokeCurrentResidencePermit enum optional

    Applies only to an applicant who holds a valid residence permit in Sweden under (or following) the EU Temporary Protection Directive; not applicable to professional athletes and coaches. Answering 'yes' means the applicant receives the new work-based residence permit as soon as it is granted; answering 'no' means the applicant keeps their current permit until it expires, and may need to reapply.

    enum: yes | no
  • otherInformationForApplication string optional

    Other information you would like to submit regarding your application

    length: 0–2000
  • decisionDeliveryAddress string required

    The Swedish Migration Agency's own form states it cannot send a decision by email.

    length: 1–300
  • placeAndDateOfSignature string required

    Place and date of signature

    length: 1–100

Verification record

This file is the source-review record for this document version, per the manual-source-review-v1 practice.

Current claim

  • status: draft
  • verification.method: manual-source-review-v1
  • verification.lastVerifiedAt: 2026-07-10

Research trail (GOV-2070, "GovSchema Standard Research")

This cycle's task brief restates the Standards Engineer's standing research→author→verify charter (catalog what exists, research what's missing, document fields, test-run with mock data, publish a schema). Sweden was opened at GOV-2056 (Business Formation) and deepened at GOV-2063 (DMV, 2 of 6 verticals); GOV-2063's own closing note flagged Sweden's other four verticals (Passport, Taxes, Visa, National ID) as open, unscreened backlog candidates — the natural next step for this cycle, rather than re-screening already-gated jurisdictions or opening a 30th country from scratch. A scouting pass (delegated to a research subagent, then independently re-verified) across all four remaining verticals found:

  • Taxes (Skatteverket) — initially the strongest-looking candidate: SKV 4314 ("Preliminär inkomstdeklaration 1", the preliminary income tax declaration for sole proprietors and partnership partners) is a genuine 77-field XFA-structured AcroForm. But its only directly-fetchable static copy, 4314_46.pdf, proved on independent re-extraction to be a stale edition — its own guidance text cites "beskattningsår 2014" (tax year 2014) pension-savings-deduction figures, and the Wayback Machine's closest snapshot of the same download URL dates to 2016. Skatteverket's live PDF-generation servlet (www1.skatteverket.se/lcmp2/lc_webapp/secure/PdfServlet.do, which the info page's own download form posts to) resets the TCP connection for both a direct curl fetch and a real headless-Chromium session alike (confirmed with TLS 1.2-forced and default negotiation, and with a real browser session complete with cookies/referer) — a genuine server-side fault on that specific vhost, not a bot-mitigation gate. A web search independently confirmed SKV 4314 has since been reissued for tax years 2024, 2025, and 2026, each with real structural changes to the form's capital-income section (driven by interest-deduction rule changes) — meaning the cached 2014/2015 copy is genuinely out of date, not merely differently dated. This candidate was abandoned rather than authored against a demonstrably stale source, per this registry's source-of-truth-fidelity discipline.
  • Passport (Polisen) — reconfirmed dead end: the entire process is in-person (photo and fingerprints captured at the appointment itself); the only downloadable PDF found is a static, non-fillable guardian-consent attachment, not the main application.
  • National ID (Skatteverket samordningsnummer / Polisen national ID card) — reconfirmed dead end for the same reason: in-person biometric issuance/verification only, and the samordningsnummer application's fillable-PDF option is served dynamically with no recoverable direct binary URL.
  • Visa (Migrationsverket) — the Schengen short-stay visa form (nos. 118031 SV/119031 EN) is a confirmed duplicate of the EU-harmonized template already published as fr/france-visas/schengen-visa-application (and reconfirmed a duplicate in the prior DMV-cycle's own research trail). But Migrationsverket also publishes a Swedish work-permit application (Form 149011), a genuinely Sweden-national, non-harmonized process with zero field overlap with the Schengen template: employer/salary/insurance details, work-in-Sweden history, education history, and a Temporary-Protection-Directive residence-permit-revocation question that have no EU-harmonized counterpart. This was the strongest candidate found this cycle.

Sources examined

  • Document (id, version): se/migrationsverket/work-permit-application / 1.0.0
  • Spec version: GovSchema 0.3.0
  • Authority: Swedish Migration Agency (Migrationsverket).
  • Primary source: Migrationsverket Form 149011, edition 2026-06-11 ("Application for a Swedish work permit" / "Ansökan om arbetstillstånd"), downloaded directly from https://www.migrationsverket.se/download/18.2cd2e409193b84c506a35b42/1743507129672/149011_ans_AT_en.pdf, linked from the official forms page https://www.migrationsverket.se/en/contact-us/you-need-documents-from-us/forms.html. A genuine, official, fillable AcroForm PDF (9 pages: 7 form/instruction pages, plus a 2-page GDPR-processing appendix that the form itself states is not to be submitted), retrieved with a direct curl fetch (HTTP 200, no CAPTCHA/BankID/login gate). The form's own footer stamp reads "149011 2026-06-11" on every page — one month old at the time of this review, the strongest recency signal found this cycle (directly contrasted with the SKV 4314 candidate's confirmed c.2014/2015 staleness above).
  • Field extraction method: pdfjs-dist's page-level getAnnotations() across all 9 pages (AcroForm field names — this PDF's own field names are already descriptive English strings, e.g. "Surname", "Citizenship - Spouse, cohabitant or registered partner" — plus each field's type: text/checkbox/radio-button) and getTextContent() for the full text layer, sorted into reading order by y/x coordinate, across pages 1-9, the same rigor already used throughout this registry (e.g. se/transportstyrelsen/vehicle-registration-new-vehicle, jp/nta/individual-income-tax-final-return). The PDF carries 159 AcroForm widgets collapsing to 143 distinct field names (radio-button groups share one field name across multiple option kids); every field's own descriptive name and the surrounding section-numbered prose (§1-§16 on pages 2-7) were used directly to write each schema field's label and description. Page 1's four mutually-exclusive "what are you applying for" blocks (first-time / extension / new-employer / student-employed), each with its own artist/athlete-coach/other-profession sub-choice, were collapsed into this document's applicationCategory field plus four parallel ProfessionType/Profession sub-fields, preserving the source's own mutual-exclusivity structure within the GSP-0013 flat requiredWhen condition grammar (no nested-object/array field type exists in the v0.3 spec).
  • Retrieved / reviewed: 2026-07-10.
  • Reviewer: GovSchema Engineering (Standards Engineer — initial authoring source review).

What was confirmed against the source

| Source element | Field(s) | |---|---| | p.1 'Your application': four application-category blocks | applicationCategory, firstTimeProfessionType, firstTimeOtherProfession, extensionProfessionType, extensionOtherProfession, newEmployerProfession, studentEmployedProfession | | p.2 top: permanent-residence-permit checkbox | applyingForPermanentResidence | | p.2, §1 'Stay in Sweden' | plannedEntryDate, workInSwedenFromDate, workUntilFurtherNotice, workInSwedenUntilDate, inSwedenSinceDate, reasonForBeingInSweden | | p.2, §2 'Personal details' | surname, previousSurname, firstNames, dateOfBirthOrPersonalId, citizenship, previousCitizenship, placeOfBirth, countryOfBirth, nativeLanguage, otherLanguagesSpoken, sex, maritalStatus, relativesApplyingWithYou | | p.2, §3 'Passport details' | passportType, otherPassportType, passportIssuedBy, passportNumber, passportIssuedDate, passportValidUntil, hasResidencePermitInOtherCountry, residencePermitOtherCountry, residencePermitOtherCountryValidPeriod | | p.3, §4/§4.1 'Contact details' | contactEmail, contactPhone, contactStreetAddress, contactPostcode, contactPlace, contactCountry, representativeEmail, representativeName, representativeStreetAddress, representativePostcode, representativePlace | | p.3, §5 'Previous applications' | previouslyAppliedToComeToSweden, previousApplicationYear | | p.3, §6 'Previous stays', rows 1-4 | previousStay1CountrypreviousStay4DepartureDate (12 fields) | | p.3-4, §7.1/§7.2 'Your family' (spouse + up to 5 children) | spouseSurnamespouseSex (8 fields), child1SurnameFirstNamechild5Citizenship (15 fields) | | p.4, §8 'Work in Sweden' | employerOrClientNameemployerProvidesPensionInsurance (18 fields) | | p.4, §9 'Previous work in Sweden' | previousEmployerInSweden, previousEmploymentPeriod, reasonForEndingPreviousEmployment | | p.5, §10 'Previous studies and work experience' | school rows 1-2, university rows 1-3, vocational rows 1-2, previous-employer rows 1-3 (30 fields) | | p.5, §11 'Comprehensive health insurance' | healthCoverageBasis, healthInsuranceCompany, healthInsuranceValidPeriod | | p.5, §12 'Temporary Protection Directive' | requestRevokeCurrentResidencePermit | | p.6, §13 'Other information' | otherInformationForApplication | | p.6, §14 'Decision delivery' | decisionDeliveryAddress | | p.7, §16 'Signature' | placeAndDateOfSignature, documents[].applicantSignature | | p.6-7, §15 'Enclose the following documents' (main list + 15.1.1-15.1.6 category branches) | documents[].passportCopyPages, employmentContract, employmentInformation, unionOpinion, healthInsuranceProof, extensionSupportingDocuments, artistContract, athleteOrCoachContract, studentSupportingDocuments, permanentResidenceSupportingDocuments, employerVisitCertificate | | p.3, §4.1 representative note | documents[].representativePowerOfAttorney |

What is NOT independently confirmed / out of scope

  • No PDF-level Required flags checked. Unlike the DMV/Business Formation SE schemas, this cycle did not re-run a bit-level check of each widget's fieldFlags/required property (pdfjs-dist's getAnnotations() output was consulted for field identity/type, not requiredness); required/ requiredWhen assignments here are derived entirely from the form's own section-numbered prose and standard work-permit necessity (e.g. passport and salary details are always needed; family/education/previous-work rows are inherently optional per the form's own blank-row tolerance).
  • The "athletes/coaches exempted" scope note is folded into label text, not requiredWhen. The main document list's employment-information and union-opinion attachments are stated as always required except for professional athletes/coaches, but "is this an athlete/coach application" spans three different mutually-exclusive top-level paths (firstTimeProfessionType, extensionProfessionType, and the freeform newEmployerProfession text, which cannot be reliably pattern-matched). Rather than build a fragile requiredWhen that only covers two of the three paths, both documents are modelled as unconditionally required: true with the exception disclosed in their own label text — the same "fold an ambiguous trigger into a description instead of a brittle condition" mitigation this registry's operating memory already documents for the notEquals-against-an-absent-optional-field bug class.
  • workInSwedenUntilDate vs workUntilFurtherNotice is not modelled as a requiredWhen pair, for the same reason: workUntilFurtherNotice is an optional boolean with no PDF Required flag, so gating the end-date field on its absence-vs-value state would risk the same class of bug: the mutual dependency is disclosed only in workInSwedenUntilDate's own description.
  • Repeating rows are modelled as explicit numbered fields, not an array type. GovSchema v0.3's field model is flat (type is one of string/number/integer/boolean/date/enum/file/object, with no array/repeatable-group construct), so the form's own bounded repeating blocks (4 previous-stay rows, 5 children, 2 school rows, 3 university rows, 2 vocational rows, 3 previous-employer rows) are each modelled as the exact number of explicit, individually-optional fields the source PDF itself provides — consistent with this registry's existing convention for bounded repeating structures (e.g. Transportstyrelsen's plate-combination checkboxes).
  • Bundled document descriptions for §15.1.1/§15.1.4/§15.1.5. The extension, student, and permanent-residence document bundles each aggregate several distinct enclosure items (e.g. the extension bundle covers a tax-return summary, payslips, an employment certificate, and an absence statement) into one documents[] entry with an itemized label, rather than one entry per bullet — consistent with this registry's convention of not over-fragmenting a source's own always-co-required bundle into many single-purpose entries.
  • The GDPR-processing appendix (pages 8-9) is out of scope. The form's own instruction states this appendix "shall not be sent in to the Swedish Migration Agency"; it is informational only and contributes no fields or documents to this schema.
  • Companion form 133011 ("Application for a permit for family members of workers, researchers, athletes or coaches and self-employed persons"), which the source explicitly names as the separate form co-applicant family members must use, is out of scope — flagged as a future companion-schedule candidate.
  • Live e-service parity. Not screened this cycle; this document is sourced entirely from the paper/PDF form, matching this registry's existing scoping precedent for other Swedish schemas.

Scope and jurisdiction notes

  • Opens Sweden's Visa vertical (3 of 6 verticals now open: Business Formation, DMV, Visa). Sweden's other three verticals (Passport, Taxes, National ID) remain open: Passport and National ID are confirmed dead ends (in-person/biometric-only), while Taxes is a genuinely open but currently source-blocked candidate — SKV 4314 is a real, structurally strong form, but its only recoverable copy is stale and its live generation endpoint is presently unreachable (connection reset); a future cycle should retry once either the dynamic servlet becomes reachable or a current static mirror is found.
  • Distinct from the EU-harmonized Schengen short-stay visa template already published elsewhere in this registry — this document models a Sweden-national, non-harmonized work-permit process with no field overlap.
  • Every requiredWhen condition in this document compares only against a field that is itself either statically required: true (e.g. applicationCategory, passportType, hasResidencePermitInOtherCountry is optional but gated fields use equals: true, the safe direction per this registry's own documented "notEquals empty-string absent-field bug" memory — an absent optional boolean correctly evaluates equals: true as false, never misfiring as required) or another already-requiredWhen-gated enum with a closed value set (firstTimeProfessionType, extensionProfessionType). No condition in this document uses notEquals or equals against a sentinel default (empty string, zero) on an optional field.

Path to a verified claim (next step)

To advance to status: verified, a reviewer confirms the exact requiredness Migrationsverket enforces on its live e-service equivalent (the form itself notes "Your employer can initiate the permit application at www.migrationsverket.se"), and whether that e-service exposes fields this paper-form sourcing does not — recording the outcome here, shipping a new schema version if discrepancies are found (VERSIONING.md §3, immutability).

Test run

A mock conformance/se/migrationsverket/work-permit-application/1.0.0/application-packet.json scenario (Priya Nair, a first-time applicant and software engineer offered a backend-developer role at a Stockholm tech company, not registered in the Swedish Population Register and therefore covered by a private comprehensive health policy, receiving a monthly housing allowance in addition to salary) was checked with a from-scratch Node.js script (/tmp/gov2070-mig149011/check_conformance.mjs, not committed to the repository) re-implementing this document's own required/requiredWhen condition grammar (GSP-0013: equals/notEquals/in/greaterThan/ lessThan/all/any/not). Result: 0 errors across all 142 fields (45 collected, 10 conditionally-gated fields correctly marked not-applicable, the remainder genuinely optional and left blank) and all 13 documents (6 provided, 7 correctly marked not-applicable), with every conditionally-gated field and document accounted for exactly once. Five mutation tests confirmed the condition grammar fires correctly in both directions:

  1. Setting passportType to other correctly required otherPassportType.
  2. Switching applicationCategory to extension correctly required extensionProfessionType.
  3. Setting hasResidencePermitInOtherCountry to true correctly required residencePermitOtherCountry.
  4. Setting either firstTimeProfessionType or extensionProfessionType to artist correctly required documents[].artistContract in both cases (confirming the document's any/all composed condition spans both the first-time and extension paths), while the baseline "other profession" scenario correctly left it not required; setting applyingForPermanentResidence to true correctly required documents[].permanentResidenceSupportingDocuments.
  5. Switching healthCoverageBasis from private_insurance to population_register correctly flipped healthInsuranceCompany and healthInsuranceValidPeriod from required to not-applicable — the fix for this cycle's requested-changes finding (GOV-2073/PR #336 review): the source's §11 health-coverage question is one mutually-exclusive radio-button field, structurally identical to sex/maritalStatus/ passportType elsewhere in this document, but an initial draft had split it into two independent, unconstrained booleans (registeredInSwedishPopulationRegister / hasComprehensiveHealthInsurance) that could both be set true simultaneously — a state the real form cannot produce. Collapsed into the single healthCoverageBasis enum (population_register / private_insurance) before merge.

The schema was also validated against the GovSchema v0.3 meta-schema with tools/validate-ajv.mjs (pass, 321/321 documents) and tools/validate.mjs (pass, 321/321 documents), after regenerating tools/govschema-client/registry-index.json via npm run build-index.

Re-verification

Per the practice's Cadence, nextReviewBy is set to 2027-01-10 (6 months).

View the raw record (VERIFICATION.md)

Version history

  • 1.0.0 draft latest this page has verification record schema.json

Independent and non-affiliated

GovSchema is an independent, open-source project. This reference is not produced, reviewed, or endorsed by Swedish Migration Agency or any government. The authoritative source is always the live government form and its official instructions.