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
Machine access
- Schema document
registry/se/migrationsverket/work-permit-application/1.0.0/schema.jsonapplication/schema+json- Verification record
registry/se/migrationsverket/work-permit-application/1.0.0/VERIFICATION.mdtext/markdown- 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
-
applicationCategoryenum requiredThe 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 -
firstTimeProfessionTypeenum optionalFirst-time applicant: profession type
enum: artist | athlete_or_coach | other -
firstTimeOtherProfessionstring optionalFirst-time applicant: state the profession, if not an artist or professional athlete/coach
length: 1–200 -
extensionProfessionTypeenum optionalExtension applicant: profession type
enum: artist | athlete_or_coach | other -
extensionOtherProfessionstring optionalExtension applicant: state the profession, if not an artist or professional athlete/coach
length: 1–200 -
newEmployerProfessionstring optionalNew-employer/new-assignment applicant: state the profession
length: 1–200 -
studentEmployedProfessionstring optionalStudent-in-Sweden applicant: state the profession of the offered employment
length: 1–200 -
applyingForPermanentResidenceboolean optionalCan 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
-
plannedEntryDatedate optionalPlanned date of entry into Sweden
-
workInSwedenFromDatedate optionalPlanned start date of work in Sweden
-
workUntilFurtherNoticeboolean optionalIs the planned work in Sweden until further notice (no end date)?
-
workInSwedenUntilDatedate optionalLeft 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.
-
inSwedenSinceDatedate optionalDate since which the applicant has already been in Sweden, if applicable
-
reasonForBeingInSwedenstring optionalApplies, 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
-
surnamestring requiredSurname (family name)
length: 1–200classification: pii -
previousSurnamestring optionalPrevious surname, if any
length: 0–200classification: pii -
firstNamesstring requiredFirst name(s)
length: 1–200classification: pii -
dateOfBirthOrPersonalIdstring requiredDate of birth / Personal ID No.
length: 1–30classification: sensitive-pii -
citizenshipstring requiredCitizenship
length: 1–100classification: pii -
previousCitizenshipstring optionalPrevious citizenship, if any
length: 0–100classification: pii -
placeOfBirthstring optionalPlace of birth
length: 0–100classification: pii -
countryOfBirthstring optionalCountry of birth
length: 0–100classification: pii -
nativeLanguagestring optionalNative language
length: 0–100 -
otherLanguagesSpokenstring optionalOther languages the applicant speaks
length: 0–200 -
sexenum requiredThe 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 -
maritalStatusenum requiredMarital status
enum: unmarried | married_or_registered_partner | divorced | widowed -
relativesApplyingWithYouboolean optionalThe form's own footnote states that all co-applicants must submit their own separate application.
Passport details
-
passportTypeenum requiredType of passport
enum: national | other -
otherPassportTypestring optionalState the type of passport, if not a national passport
length: 1–100 -
passportIssuedBystring requiredPassport issued by
length: 1–100 -
passportNumberstring requiredPassport number
length: 1–50classification: sensitive-pii -
passportIssuedDatedate requiredPassport issued date
-
passportValidUntildate requiredPassport valid until
-
hasResidencePermitInOtherCountryboolean optionalDo you have a permit to live (reside) in a country other than your home country?
-
residencePermitOtherCountrystring optionalCountry where you have a permit to live, if applicable
length: 1–100 -
residencePermitOtherCountryValidPeriodstring optionalPeriod the other country's residence permit is valid (from – until)
length: 0–60
Contact details
-
contactEmailstring requiredEmail address
length: 1–200classification: pii -
contactPhonestring requiredTelephone number, with country code (for example +46 or 0046)
length: 1–30classification: pii -
contactStreetAddressstring requiredThe applicant's own address in the country where they live, or their Swedish address if already in Sweden.
length: 1–200classification: pii -
contactPostcodestring requiredPostcode
length: 1–20classification: pii -
contactPlacestring requiredPlace (city/town)
length: 1–100classification: pii -
contactCountrystring requiredCountry
length: 1–100classification: pii -
representativeEmailstring optionalThe 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 -
representativeNamestring optionalRepresentative's name (first name and surname, or name of organisation)
length: 0–200classification: pii -
representativeStreetAddressstring optionalRepresentative's street address
length: 0–200classification: pii -
representativePostcodestring optionalRepresentative's postcode
length: 0–20classification: pii -
representativePlacestring optionalRepresentative's place (city/town)
length: 0–100classification: pii
Previous applications and stays
-
previouslyAppliedToComeToSwedenboolean optionalHave you previously applied to come to Sweden?
-
previousApplicationYearstring optionalYear of the previous application to come to Sweden
pattern -
previousStay1Countrystring optionalThe form's own §6 asks for the most recent stay first, across up to 4 rows.
length: 0–100 -
previousStay1EntryDatedate optionalPrevious stay row 1: entry date
-
previousStay1DepartureDatedate optionalPrevious stay row 1: departure date
-
previousStay2Countrystring optionalPrevious stay in Sweden/Schengen area, row 2: country
length: 0–100 -
previousStay2EntryDatedate optionalPrevious stay row 2: entry date
-
previousStay2DepartureDatedate optionalPrevious stay row 2: departure date
-
previousStay3Countrystring optionalPrevious stay in Sweden/Schengen area, row 3: country
length: 0–100 -
previousStay3EntryDatedate optionalPrevious stay row 3: entry date
-
previousStay3DepartureDatedate optionalPrevious stay row 3: departure date
-
previousStay4Countrystring optionalPrevious stay in Sweden/Schengen area, row 4: country
length: 0–100 -
previousStay4EntryDatedate optionalPrevious stay row 4: entry date
-
previousStay4DepartureDatedate optionalPrevious stay row 4: departure date
Family
-
spouseSurnamestring optionalThe 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 -
spousePreviousSurnamestring optionalSpouse/cohabitant/registered partner: previous surname(s), if any
length: 0–200classification: pii -
spouseFirstNamesstring optionalSpouse/cohabitant/registered partner: first name(s)
length: 0–200classification: pii -
spouseDateOfBirthOrPersonalIdstring optionalSpouse/cohabitant/registered partner: date of birth / Personal ID No.
length: 0–30classification: sensitive-pii -
spouseCitizenshipstring optionalSpouse/cohabitant/registered partner: citizenship
length: 0–100classification: pii -
spousePreviousCitizenshipstring optionalSpouse/cohabitant/registered partner: previous citizenship, if any
length: 0–100classification: pii -
spouseCurrentAddressstring optionalSpouse/cohabitant/registered partner: current address (street, place, and country)
length: 0–300classification: pii -
spouseSexenum optionalSpouse/cohabitant/registered partner: sex
enum: male | femaleclassification: sensitive-pii -
child1SurnameFirstNamestring optionalChild 1: surname, first name
length: 0–200classification: pii -
child1DateOfBirthdate optionalChild 1: date of birth
classification: pii -
child1Citizenshipstring optionalChild 1: citizenship
length: 0–100classification: pii -
child2SurnameFirstNamestring optionalChild 2: surname, first name
length: 0–200classification: pii -
child2DateOfBirthdate optionalChild 2: date of birth
classification: pii -
child2Citizenshipstring optionalChild 2: citizenship
length: 0–100classification: pii -
child3SurnameFirstNamestring optionalChild 3: surname, first name
length: 0–200classification: pii -
child3DateOfBirthdate optionalChild 3: date of birth
classification: pii -
child3Citizenshipstring optionalChild 3: citizenship
length: 0–100classification: pii -
child4SurnameFirstNamestring optionalChild 4: surname, first name
length: 0–200classification: pii -
child4DateOfBirthdate optionalChild 4: date of birth
classification: pii -
child4Citizenshipstring optionalChild 4: citizenship
length: 0–100classification: pii -
child5SurnameFirstNamestring optionalChild 5: surname, first name
length: 0–200classification: pii -
child5DateOfBirthdate optionalChild 5: date of birth
classification: pii -
child5Citizenshipstring optionalChild 5: citizenship
length: 0–100classification: pii
Work in Sweden
-
employerOrClientNamestring requiredEmployer or client in Sweden
length: 1–200 -
employerContactPersonstring optionalContact person at the employer/client in Sweden
length: 0–200 -
employerPhonestring optionalTelephone number of the employer or client in Sweden
length: 0–30 -
employerStreetAddressstring optionalStreet address of the employer or client in Sweden
length: 0–200 -
employerPostcodeAndPlacestring optionalPostcode and place of the employer or client in Sweden
length: 0–100 -
employerEmailstring optionalEmail address of the employer or client in Sweden
length: 0–200 -
workplaceAddressstring optionalWorkplace address, if different from the employer's address
length: 0–200 -
howLearnedAboutWorkstring optionalHow did you learn about the work in Sweden?
length: 0–500 -
workAssignmentsDescriptionstring requiredDescribe your work assignments
length: 1–1000 -
salaryPayingEmployerstring requiredFrom which employer (in Sweden or abroad) will you receive your salary?
length: 1–200 -
monthlySalaryBeforeTaxnumber requiredMonthly salary before taxes
range: 0–∞classification: financial -
weeklyWorkingHoursnumber requiredHow many hours will you be working per week?
range: 0–168 -
receivesOtherCompensationOrAllowancesboolean optionalWill you receive any other compensation or allowances?
-
otherCompensationMonthlyAmountnumber optionalFilled in only when the applicant will receive other compensation or allowances (receivesOtherCompensationOrAllowances).
range: 0–∞classification: financial -
employerProvidesHealthcareInsuranceboolean optionalEmployer provides: healthcare insurance
-
employerProvidesNoFaultLiabilityInsuranceboolean optionalEmployer provides: no-fault liability insurance
-
employerProvidesLifeInsuranceboolean optionalEmployer provides: life insurance
-
employerProvidesPensionInsuranceboolean optionalEmployer provides: pension insurance
-
previousEmployerInSwedenstring optionalPrevious employer in Sweden
length: 0–200 -
previousEmploymentPeriodstring optionalLength of previous employment (from – until)
length: 0–60 -
reasonForEndingPreviousEmploymentstring optionalReason for ending previous employment
length: 0–500
Previous studies and work experience
-
school1Namestring optionalSchool education up to and including secondary school level, row 1
length: 0–200 -
school1Yearsnumber optionalSchool row 1: number of years
range: 0–30 -
school1GraduatedYearstring optionalSchool row 1: year graduated
pattern -
school2Namestring optionalSchool education up to and including secondary school level, row 2
length: 0–200 -
school2Yearsnumber optionalSchool row 2: number of years
range: 0–30 -
school2GraduatedYearstring optionalSchool row 2: year graduated
pattern -
university1Namestring optionalUniversity/college education (state the level), row 1
length: 0–200 -
university1Yearsnumber optionalUniversity/college row 1: number of years
range: 0–30 -
university1GraduatedYearstring optionalUniversity/college row 1: year graduated
pattern -
university2Namestring optionalUniversity/college education (state the level), row 2
length: 0–200 -
university2Yearsnumber optionalUniversity/college row 2: number of years
range: 0–30 -
university2GraduatedYearstring optionalUniversity/college row 2: year graduated
pattern -
university3Namestring optionalUniversity/college education (state the level), row 3
length: 0–200 -
university3Yearsnumber optionalUniversity/college row 3: number of years
range: 0–30 -
university3GraduatedYearstring optionalUniversity/college row 3: year graduated
pattern -
vocational1Namestring optionalVocational education, row 1
length: 0–200 -
vocational1Yearsnumber optionalVocational education row 1: number of years
range: 0–30 -
vocational1GraduatedYearstring optionalVocational education row 1: year graduated
pattern -
vocational2Namestring optionalVocational education, row 2
length: 0–200 -
vocational2Yearsnumber optionalVocational education row 2: number of years
range: 0–30 -
vocational2GraduatedYearstring optionalVocational education row 2: year graduated
pattern -
previousEmployer1Namestring optionalPrevious employers, row 1: employer
length: 0–200 -
previousEmployer1WorkAsstring optionalPrevious employers, row 1: work as
length: 0–200 -
previousEmployer1Lengthstring optionalPrevious employers, row 1: length of employment
length: 0–60 -
previousEmployer2Namestring optionalPrevious employers, row 2: employer
length: 0–200 -
previousEmployer2WorkAsstring optionalPrevious employers, row 2: work as
length: 0–200 -
previousEmployer2Lengthstring optionalPrevious employers, row 2: length of employment
length: 0–60 -
previousEmployer3Namestring optionalPrevious employers, row 3: employer
length: 0–200 -
previousEmployer3WorkAsstring optionalPrevious employers, row 3: work as
length: 0–200 -
previousEmployer3Lengthstring optionalPrevious employers, row 3: length of employment
length: 0–60
Health insurance and final details
-
healthCoverageBasisenum optionalRelevant 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 -
healthInsuranceCompanystring optionalHealth insurance company
length: 1–200 -
healthInsuranceValidPeriodstring optionalPeriod the health insurance is valid (from – until)
length: 1–60 -
requestRevokeCurrentResidencePermitenum optionalApplies 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 -
otherInformationForApplicationstring optionalOther information you would like to submit regarding your application
length: 0–2000 -
decisionDeliveryAddressstring requiredThe Swedish Migration Agency's own form states it cannot send a decision by email.
length: 1–300 -
placeAndDateOfSignaturestring requiredPlace 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:draftverification.method:manual-source-review-v1verification.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 directcurlfetch 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 directcurlfetch (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-levelgetAnnotations()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) andgetTextContent()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'slabelanddescription. 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'sapplicationCategoryfield plus four parallelProfessionType/Professionsub-fields, preserving the source's own mutual-exclusivity structure within the GSP-0013 flatrequiredWhencondition 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 | previousStay1Country…previousStay4DepartureDate (12 fields) | | p.3-4, §7.1/§7.2 'Your family' (spouse + up to 5 children) | spouseSurname…spouseSex (8 fields), child1SurnameFirstName…child5Citizenship (15 fields) | | p.4, §8 'Work in Sweden' | employerOrClientName…employerProvidesPensionInsurance (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
Requiredflags checked. Unlike the DMV/Business Formation SE schemas, this cycle did not re-run a bit-level check of each widget'sfieldFlags/requiredproperty (pdfjs-dist'sgetAnnotations()output was consulted for field identity/type, not requiredness);required/requiredWhenassignments 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 freeformnewEmployerProfessiontext, which cannot be reliably pattern-matched). Rather than build a fragilerequiredWhenthat only covers two of the three paths, both documents are modelled as unconditionallyrequired: truewith the exception disclosed in their ownlabeltext — the same "fold an ambiguous trigger into a description instead of a brittle condition" mitigation this registry's operating memory already documents for thenotEquals-against-an-absent-optional-field bug class. workInSwedenUntilDatevsworkUntilFurtherNoticeis not modelled as arequiredWhenpair, for the same reason:workUntilFurtherNoticeis 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 inworkInSwedenUntilDate's owndescription.- Repeating rows are modelled as explicit numbered fields, not an array type. GovSchema v0.3's field model is flat (
typeis one ofstring/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 itemizedlabel, 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
requiredWhencondition in this document compares only against a field that is itself either staticallyrequired: true(e.g.applicationCategory,passportType,hasResidencePermitInOtherCountryis optional but gated fields useequals: true, the safe direction per this registry's own documented "notEquals empty-string absent-field bug" memory — an absent optional boolean correctly evaluatesequals: trueas false, never misfiring as required) or another already-requiredWhen-gated enum with a closed value set (firstTimeProfessionType,extensionProfessionType). No condition in this document usesnotEqualsorequalsagainst 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:
- Setting
passportTypetoothercorrectly requiredotherPassportType. - Switching
applicationCategorytoextensioncorrectly requiredextensionProfessionType. - Setting
hasResidencePermitInOtherCountrytotruecorrectly requiredresidencePermitOtherCountry. - Setting either
firstTimeProfessionTypeorextensionProfessionTypetoartistcorrectly requireddocuments[].artistContractin both cases (confirming the document'sany/allcomposed condition spans both the first-time and extension paths), while the baseline "other profession" scenario correctly left it not required; settingapplyingForPermanentResidencetotruecorrectly requireddocuments[].permanentResidenceSupportingDocuments. - Switching
healthCoverageBasisfromprivate_insurancetopopulation_registercorrectly flippedhealthInsuranceCompanyandhealthInsuranceValidPeriodfrom 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 tosex/maritalStatus/passportTypeelsewhere in this document, but an initial draft had split it into two independent, unconstrained booleans (registeredInSwedishPopulationRegister/hasComprehensiveHealthInsurance) that could both be settruesimultaneously — a state the real form cannot produce. Collapsed into the singlehealthCoverageBasisenum (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.0draftlatestthis pagehas verification recordschema.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.