WE BUILD Consortium Attestation Rulebook Explorer

EAASD-JWT VC

Attestation Rulebook for attestations of type Portable Document A1

Category: non-qualified EAA


Version Date Description
1.1 2026-10-02 Restructured onto the generic WE BUILD attestation rulebook template (11 chapters). No normative content removed.

Written against: ARF version 3.0.0, WE BUILD template version 1.0 (generic)

Feedback: GitHub issues

1 Introduction

This attestation addresses the following question:

Which social security legislation applies to a citizen working in a cross-border employment situation within the EU/EFTA area (or UK)?

The Portable Document A1 (PD A1) is a certificate that documents the applicable legislation regarding social security for a citizen in a cross-border employment situation. By determining that only one legislation applies, it supports the mobility of working citizens while protecting their rights (by ensuring coverage while avoiding dual contributions).

In the most common "posting" situation, where a person works abroad for a maximum of 24 months, the PD A1 is issued by the competent social security institution from the "sending state" upon request by the employer or the self-employed person. It is then used for verification abroad in the "receiving state".

The Know Your Employee (KYE) scenario (Scenario 5) is part of BU1 and will lead to MVP and MVP+ implementations using both Natural Person Wallets and Legal Person Wallets. The high-level scenario is:

"A company A in a country A would like to send one of their employees to work and provide a service to company B in country B."

This scenario requires the issuance of three main credentials: - Portable Document (PD) A1 - Posted Worker Notification (PWN) - Employee Credential

1.1 Document scope and purpose

The PD A1 Attestation provides a standardized, verifiable digital representation of the Portable Document A1. The main legal basis is: - Regulation (EC) No. 883/2004 on the coordination of social security systems (especially Articles 11–16) - Regulation (EC) No. 987/2009, implementing regulation - National legislation regarding social security in EU/EFTA member states (and the United Kingdom)

Design Decisions

This PD A1 Attestation Rulebook is based on: - The EU-wide legally defined content of the Portable Document A1 as issued by competent social security institutions - Regulation (EC) No. 883/2004 and Regulation (EC) No. 987/2009 as the primary legal framework - EESSI (Electronic Exchange of Social Security Information) code tables, e.g. for employment type and institution identifiers - ISO 3166-1 alpha-2 for country codes (mostly EU/EFTA countries + UK = 32 countries) - ISO 8601 for date formatting - SD-JWT VC format with selective disclosure based on logical SD element groups (not individual field level) - eIDAS 2.0 / EUDI Wallet framework for digital identity and verifiable attestations

Key Design Principles: - The credential schema SHALL match the legally defined content of the portable document; therefore all elements are contained. - Personal information on the "subject" SHALL be kept within the VC to allow use by a representative (e.g., employer acting on behalf of employee). - Selective Disclosure SHALL NOT be possible on single-element level, but based on logical blocks as defined by SD element groups. For example, it is only possible to disclose a whole address block, not just the street without the town. - As specific Relying Parties may, according to GDPR, not have the right to request/receive all data, there SHOULD be accreditation-based presentation policy options according to the modular SD-element-group design. - A binding mode indicator (e.g., PID binding, Wallet Instance binding, no binding) SHALL be included as a technical parameter.

1.2 Document structure

This Rulebook follows the generic WE BUILD attestation rulebook template. Chapter 2 states how it complies with the ARF and the applicable Regulations. Chapters 3 and 4 define the attributes and metadata in an encoding-independent manner. Chapter 5 states the formats in which this attestation is issued. Chapters 6 to 9 cover protocols, issuance, revocation and presentation. Chapter 10 sets out the trust framework, and chapter 11 lists references.

1.3 Key words

This document uses the capitalised key words 'SHALL', 'SHOULD' and 'MAY' as specified in [RFC 2119], to indicate requirements, recommendations and options.

In addition, 'must' (non-capitalised) indicates an external constraint, a requirement not mandated by this document but by an external document. The word 'can' indicates a capability. Other words such as 'will', 'is' and 'are' are statements of fact.

1.4 Terminology

Additional terminology specific to this attestation:

Term Description
PD A1 Portable Document A1, a certificate documenting the applicable social security legislation for a citizen in a cross-border employment situation within the EU/EFTA area (and UK)
Posted Worker A citizen employed in one EU/EFTA member state ("sending state") who is temporarily sent to work in another member state ("receiving state") for a maximum of 24 months
Sending State The EU/EFTA member state whose social security legislation remains applicable to the posted worker during the posting period
Receiving State The EU/EFTA member state where the posted worker temporarily performs work
Competent Institution The national social security institution of the sending state authorized to issue the PD A1 certificate
PIN Personal Identification Number, currently mostly a Social Security Number of the citizen
PWN Posted Worker Notification, an administrative requirement for companies providing intra-EU cross-border services with posted workers, filed with the host EU Member State authorities
Employee Credential A credential issued by an employer to its employees to certify that they are part of the company at a given point in time
KYE Know Your Employee, a due diligence scenario (Scenario 5 / BU1) enabling companies to verify employee identity and posting status in cross-border work situations
EESSI Electronic Exchange of Social Security Information, the EU system for electronic exchange of social security data between member state institutions
SD Element Group A logical group of attributes that are disclosed together as a unit under Selective Disclosure (SD-JWT); disclosure is at group level, not at individual field level
EAA Electronic Attestation of Attributes, as defined under eIDAS 2.0
PuB-EAA Electronic Attestation of Attributes issued by or on behalf of a public sector body responsible for an authentic source, as defined under eIDAS 2.0
QEAA Qualified Electronic Attestation of Attributes, as defined under eIDAS 2.0
ISO 3166-1 alpha-2 International standard defining 2-digit country codes (e.g., DE, FR, IT); used for EU/EFTA countries + UK (32 countries total)
ISO 8601 International standard for date and time representations (e.g., YYYY-MM-DD)
Regulation EC 883/2004 EU Regulation on the coordination of social security systems; primary legal basis for the PD A1, especially Articles 11–16
Regulation EC 987/2009 EU Regulation laying down the procedure for implementing Regulation (EC) No 883/2004

2 Compliance

2.1 Compliance statement

This Rulebook complies with the applicable requirements of Topic 12, Attestation Rulebooks, in Annex 2 of the Architecture and Reference Framework, version 3.0.0. It uses the terminology of Annex 1 of the ARF.

2.2 Regulatory basis

This attestation is not a qualified electronic attestation of attributes. The data described in Annex V points b, c and e of Regulation (EU) 2024/1183 is addressed as required by EW-DM-12-018 and as recommended by EW-DM-12-020 and EW-DM-12-022. Where a recommendation is not followed, the reason is stated below.

2.3 Traceability

Every applicable requirement mapped to the section that satisfies it. Requirements marked not applicable carry a stated reason.

Requirement Legacy ID Applies Satisfied in section Note
EW-DM-12-001 ARB_01a yes 5 W3C VCDM permitted for this category; no encoding defined in this version
EW-DM-12-002 ARB_01b yes 5 SD-JWT VC following the HAIP profile
EW-DM-12-003 ARB_02 no Proximity presentation is not in scope
EW-DM-12-005 ARB_04 no No W3C VCDM encoding is defined in this version
EW-DM-12-006 ARB_05 yes 5 Unique vct for this attestation type
EW-DM-12-007 ARB_06 yes 3 Attributes defined independently of encoding
EW-DM-12-008 ARB_06a no No mdoc encoding is defined in this version
EW-DM-12-009 ARB_06b yes 5 SD-JWT VC claim naming
EW-DM-12-010 ARB_07 yes 3 Attributes reused from the catalogued vocabulary where one exists
EW-DM-12-012 ARB_09 yes 3, 4 Mandatory, optional and conditional stated per attribute
EW-DM-12-013 ARB_10 no No domestic namespace is defined
EW-DM-12-014 ARB_11 no Annex V and VII point a apply to QEAA and PuB-EAA
EW-DM-12-015 ARB_12 yes 4.1 EAA indication for a non-qualified EAA
EW-DM-12-016 / EW-DM-12-017 / EW-DM-12-018 ARB_13 / ARB_14 / ARB_15 yes 2.2, 4.1 Point b, EW-DM-12-018 for the non-qualified case
EW-DM-12-019 / EW-DM-12-020 ARB_16 / ARB_17 yes 2.2 Point c, recommendation for non-qualified EAA
EW-DM-12-021 / EW-DM-12-022 ARB_18 / ARB_19 yes 2.2, 4.2 Point e, recommendation for non-qualified EAA
EW-DM-12-023 / EW-DM-12-024 ARB_20 / ARB_21 yes 4.2, 10 Trust anchor location and the trust framework
EW-DM-12-029 ARB_25 yes 4.1 Legal category attribute; see the note in section 4.1
EW-DM-12-030 ARB_26 yes 10 Trust anchor publication for non-qualified EAA
EW-DM-12-031 ARB_27 no This attestation does not require the Relying Party to verify a PID
EW-DM-12-032 ARB_28 no cryptographically_bound_to is not used by this attestation
EW-DM-12-034 ARB_30 yes 5 Selective disclosure stated per claim
EW-DM-12-035 ARB_31 no No Claim Selective Disclosure Metadata document is used
EW-DM-12-038 ARB_34 yes 7.1 Device binding

3 Attestation attributes

Attributes are defined here in an encoding-independent manner (EW-DM-12-007). The encoding of each attribute is given in chapter 5.

3.1 Introduction

This chapter describes the PD A1 credential attributes as defined in the v1.0 PD A1 JSON schema. All field names, types, enumerations, and constraints in Sections 2.2–2.9 are derived strictly from that schema. The normative source is the schema file pda1-sd-jwt.json.

Data Model (v1.0):

PDA1 Credential
├── subject [1:1]
│   ├── pin (string), mandatory | SD Group 1
│   ├── gender (enum "0"/"1"/"2"), mandatory | SD Group 2
│   ├── names [1:1], mandatory | SD Group 3
│   │   ├── surnames (string), mandatory | SD Group 3
│   │   ├── forenames (string), mandatory | SD Group 3
│   │   ├── surnameAtBirth (string), optional | SD Group 3
│   │   └── forenamesAtBirth (string), optional | SD Group 3
│   ├── dateOfBirth (date, YYYY-MM-DD), mandatory | SD Group 4
│   ├── nationalities (array ≥ 1, world codes, unique), mandatory | SD Group 5
│   ├── placeOfBirth [1:1], mandatory | SD Group 6
│   │   ├── town (string), mandatory | SD Group 6
│   │   └── countryCode (world code), mandatory | SD Group 6
│   └── address [1:1], mandatory | SD Groups 7–8
│       ├── stateOfResidence[] (addressWorld), optional | SD Group 7
│       └── stateOfStay[] (addressPDA1State), optional | SD Group 8
│       [anyOf: at least one non-empty list required]
├── memberstateAppliedLegislation [1:1], Non-SD (always disclosed)
│   ├── memberstate (PDA1 code), mandatory
│   ├── startDate (date), mandatory
│   ├── endDate (date), mandatory
│   ├── certificateAppliesForDuranceOfStay (boolean), optional
│   ├── determinationIsProvisional (boolean), optional
│   └── transitionRulesApplyAccordingEG (boolean), optional
├── employmentSituations [1:n], SD Groups 9–10
│   └── [each item:]
│       ├── typeOfEmployment (enum "01"/"02"), mandatory | SD Group 9
│       ├── name (string), mandatory | SD Group 9
│       ├── employerID (string), mandatory | SD Group 9
│       ├── typeOfID (enum), mandatory | SD Group 9
│       └── address (addressWorld), mandatory | SD Group 10
├── placesOfWork {<PDA1 countryCode>: [placeOfWork]} [≥ 1 key], SD Groups 11–12
│   └── [each array item:]
│       ├── companyOrVesselName (string), mandatory | SD Group 11
│       ├── flagBaseHomeState (string), optional | SD Group 11
│       ├── companyID (string), optional† | SD Group 11
│       ├── typeOfID (enum), optional† | SD Group 11
│       └── address (addressPDA1State), mandatory | SD Group 12
│       [† companyID and typeOfID are mutually required]
│       [empty array = works in that country with no fixed address]
├── statusConfirmation [1:1], SD Group 13
│   ├── statusConfirmationCode (enum, 12 codes), mandatory | SD Group 13
│   └── exceptionDescription (string), conditional‡ | SD Group 13
│       [‡ only permitted when statusConfirmationCode = "11"]
├── documentID (string) [1:1], SD Group 14
└── competentInstitution [1:1], SD Groups 15–16
    ├── institutionID (string), mandatory | SD Group 15
    ├── institutionName (string), mandatory | SD Group 15
    ├── countryCode (PDA1 code), mandatory | SD Group 15
    ├── address (addressPDA1State), mandatory | SD Group 16
    ├── officeFaxNumber (E.164 string), optional | SD Group 16
    ├── officePhoneNumber (E.164 string), optional | SD Group 16
    └── email (string), optional | SD Group 16

Selective Disclosure: SD is applied at element-group level, individual fields within a group are not independently selectable. memberstateAppliedLegislation is Non-SD and is always fully disclosed to the Relying Party.

Attestation Classification (contextual, not a schema element): This attestation MAY be classified as QEAA, PuB-EAA, or EAA depending on the issuing institution's qualification status under eIDAS 2.0.


3.1.1 Definitions

The following shared types are defined in $defs of the v1.0 schema and referenced throughout Sections 2.3–2.9.

gender

ISO/IEC 5218 gender code (string enum): "0" = Not known / Not specified · "1" = Male · "2" = Female.

addressBase

Base postal address object:

Data Identifier Semantic Reference Definition Data type Occurrence
streetAndNumber thoroughfare
locatorDesignator
Street name and house or building number String 0:1
town postName Name of the city or town String 1:1
postcode postCode Postal code (format varies by country) String 0:1
addressPDA1State

Postal address restricted to a PDA1-participating country. Extends addressBase with:

Data Identifier Semantic Reference Definition Data type Occurrence
countryCode adminUnitL1 Country of the address (PDA1 set) countryCodePDA1States 1:1

No additional properties permitted (unevaluatedProperties: false).

addressWorld

Postal address for any recognized country in the world. Extends addressBase with:

Data Identifier Semantic Reference Definition Data type Occurrence
countryCode adminUnitL1 Country of the address (world set) countryCodeWorld 1:1

No additional properties permitted (unevaluatedProperties: false).

phoneNumber

Phone number in E.164 international format (e.g., +4930123456). Pattern: ^\+[1-9]\d{1,14}$.

email

Email address conforming to RFC 5321/5322. Pattern: ^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$.

countryCodePDA1States

ISO 3166-1 alpha-2 code restricted to the 32 PD A1-participating states: the 27 EU member states (AT, BE, BG, CY, CZ, DE, DK, EE, ES, FI, FR, GR, HR, HU, IE, IT, LT, LU, LV, MT, NL, PL, PT, RO, SE, SI, SK) plus Iceland (IS), Liechtenstein (LI), Norway (NO), Great Britain (GB), and Switzerland (CH).

Data Identifier Semantic Reference Definition Data type
subject person Personal identity attributes of the citizen subject to the PD A1 Object
member_state_legislation jurisdiction Details of the applicable member state legislation; always disclosed (Non-SD) Object
employer_details employer Details of the employer(s) or self-employment situation Array [EmployerObject]
places_of_work placeOfWork Places where the posted worker performs work Array [PlaceOfWork]
status_confirmation statusConfirmation Status confirmation code identifying the type of cross-border situation Object
document_id @id Unique number of the issued PD A1 document Object
competent_institution cred:issuer Details of the competent social security institution that issued the PD A1 Object

ISO 3166-1 alpha-2 code covering 195 world states: the 193 United Nations member states plus the two UN observer states Holy See (VA) and State of Palestine (PS).

date
Data Identifier Semantic Reference Definition Data type Occurrence SD Group
pin identifier Personal Identification Number (currently Social Security Number) of the citizen String 1:1 1
gender gender Gender of the citizen String / Codelist (tbd) 1:1 2
family_name familyName Family name(s) of the citizen in full String 1:1 3
forename givenName Forename(s) of the citizen in full String 1:1 3
date_of_birth dateOfBirth Date of birth of the citizen (ISO 8601) Date (YYYY-MM-DD) 1:1 4
nationality citizenship Nationality/ies of the citizen; Relying Party always requests all nationalities; user may select which Code [1:n] (ISO 3166-1 alpha-2) 1:n 5
place_of_birth.town placeOfBirth.geographicName Town/locality where the citizen was born String 1:1 6
place_of_birth.country_code placeOfBirth.geographicIdentifier Country where the citizen was born (ISO 3166-1 alpha-2) Code (ISO 3166-1 alpha-2) 1:1 6
typeOfID

Type of identifier used for an employer, self-employed entity, or company at a place of work:

Data Identifier Semantic Reference Definition Data type Occurrence SD Group
address_residence.town domicile.postName Town of the address in the state of residence String 1:1 7
address_residence.country_code domicile.adminUnitL1 Country code of the state of residence (ISO 3166-1 alpha-2) Code (ISO 3166-1 alpha-2) 1:1 7
statusConfirmationCode
Data Identifier Semantic Reference Definition Data type Occurrence SD Group
address_stay.town temporaryAddress.postName Town of the address in the state of stay String 1:1 8
address_stay.country_code temporaryAddress.adminUnitL1 Country code of the state of stay (ISO 3166-1 alpha-2) Code (ISO 3166-1 alpha-2) 1:1 8
Code Definition
01 Posted employed person
02 Employed, working in two or more States
03 Posted self-employed person
04 Self-employed, working in two or more States
05 Civil servant
06 Contract staff
07 Mariner
08 Working as an employed person and as a self-employed person in different States
09 Working as a civil servant in one State and as an employed/self-employed person in one or more other States
10 Flight or cabin crew member
11 Exception
12 Working as an employed / self-employed person in the State which legislation applies
Data Identifier Semantic Reference Definition Data type Occurrence
member_state_legislation.member_state jurisdiction Code of the member state whose legislation applies (ISO 3166-1 alpha-2; EU/EFTA + UK = 32 countries) Code (ISO 3166-1 alpha-2) 1:1
member_state_legislation.starting_date cred:validFrom Starting date from which the member state legislation applies (ISO 8601) Date (YYYY-MM-DD) 1:1
member_state_legislation.ending_date cred:validUntil Ending date until which the member state legislation applies (ISO 8601) Date (YYYY-MM-DD) 1:1

Details of a single employer or self-employment activity. All five fields are required. No additional properties permitted (additionalProperties: false).

Data Identifier Semantic Reference Definition Data type Occurrence SD Group
typeOfEmployment typeOfEmployment
code list for the property needs to be checked
Type of employment: 01 = Employee, 02 = Self-employed enum 1:1 9
name legalName Name of the employer or self-employed entity String 1:1 9
employerID legalIdentifier Identifier of the employer or self-employed entity String 1:1 9
typeOfID identifier.Identifier Type of the employer identifier (see typeOfID above) typeOfID 1:1 9
address registeredAddress Address of the employer or self-employed entity (any world country) addressWorld 1:1 10
placeOfWork

When a specific place of work is declared:

Data Identifier Semantic Reference Definition Data type Occurrence SD Group
place_of_work.company_name placeOfWork.legalName;name Name of the company or vessel at the place of work String 1:1 11
place_of_work.town placeOfWork.postName Town of the place of work String 1:1 12
place_of_work.country_code placeOfWork.countryCode Country of the place of work (ISO 3166-1 alpha-2; EU/EFTA + UK) Code (ISO 3166-1 alpha-2) 1:1 12

When no fixed place of work exists:

Data Identifier Semantic Reference Definition Data type Occurrence SD Group
no_fixed_place_of_work.country_code noFixedPlaceOfWork AND placeOfWork.countryCode Country code indicating the country where no fixed place of work exists Code (ISO 3166-1 alpha-2) 1:1 11
Data Identifier Semantic Reference Definition Data type Occurrence SD Group
companyOrVesselName Vessel.schema:name
"name" needs to be added to class Vessel
legalName
Name of the company or vessel where work is performed String 1:1 11
flagBaseHomeState flagState Flag state, base state, or home state for maritime or aviation workers String 0:1 11
companyID legalIdentifier Identifier of the company at the place of work String 0:1† 11
typeOfID TBD; this needs an Identifier class with ID scheme information (like adms:Identifier) Type of the company identifier (see typeOfID above) typeOfID 0:1† 11
address placeOfWork Address of the place of work (PDA1 country) addressPDA1State 1:1 12
Data Identifier Semantic Reference Definition Data type Occurrence SD Group
status_confirmation.status statusConfirmation
presently xsd:boolean, needs to be changed to a code list (skos:Concept?)
Status confirmation code identifying the type of cross-border situation (2-digit code per PD A1 codelist; 12 options, tbd) Code 1:1 13

3.1.2 Subject

Personal details of the PD A1 certificate holder. All seven top-level keys (pin, gender, names, dateOfBirth, nationalities, placeOfBirth, address) are required. No additional properties permitted (additionalProperties: false).

Data Identifier Semantic Reference Definition Data type Occurrence SD Group
pin identifier OR
personalAdministrativeNumber
Personal Identification Number (social security number) of the holder String 1:1 1
gender gender Gender of the holder gender 1:1 2
names.surnames familyName Current family name(s) of the holder String 1:1 3
names.forenames givenName Current given name(s) of the holder String 1:1 3
names.surnameAtBirth birthName Family name at birth, if different from current surname String 0:1 3
names.forenamesAtBirth birthName Given name(s) at birth, if different from current forename(s) String 0:1 3
dateOfBirth dateOfBirth Date of birth of the holder date 1:1 4
nationalities citizenship Nationality/ies of the holder as world-set country codes; at least one required, no duplicates Array of countryCodeWorld (minItems: 1, uniqueItems) 1:n 5
placeOfBirth.town placeOfBirth Town or city of birth String 1:1 6
placeOfBirth.countryCode placeOfBirth Country of birth (world set) countryCodeWorld 1:1 6
address.stateOfResidence[] domicile Residence address(es); each item is a complete world address Array of addressWorld 0:n 7
address.stateOfStay[] temporaryAddress Stay address(es); each item is a complete PDA1-country address Array of addressPDA1State 0:n 8

The address object MUST satisfy anyOf: either stateOfResidence is present with minItems: 1, or stateOfStay is present with minItems: 1 (both MAY be present simultaneously). Only stateOfResidence and stateOfStay are permitted in address (additionalProperties: false). The names and placeOfBirth sub-objects also enforce additionalProperties: false.

3.1.3 Member State Legislation

The member state whose social security legislation applies to the holder. This section is annotated $comment: "Always disclosed", it is Non-SD and is fully disclosed to the Relying Party in every presentation. No additional properties permitted (additionalProperties: false).

Data Identifier Semantic Reference Definition Data type Occurrence SD Group
memberstate jurisdiction Country code of the member state whose legislation applies countryCodePDA1States 1:1 Non-SD
startDate could be cred:validFrom
or then needs a "PeriodOfTime" reference, but from which class?
Start date from which the member state legislation applies date 1:1 Non-SD
endDate could be cred:validUntil
or then needs a "PeriodOfTime" reference, but from which class?
End date until which the member state legislation applies date 1:1 Non-SD
certificateAppliesForDuranceOfStay activityDurationCovered Indicates whether the certificate applies for the entire duration of the stay Boolean 0:1 Non-SD
determinationIsProvisional provisionalDetermination Indicates whether the determination of applicable legislation is provisional Boolean 0:1 Non-SD
transitionRulesApplyAccordingEG transitionalRules Indicates whether transitional rules apply according to EC Regulation No 883/2004 Boolean 0:1 Non-SD

3.1.4 Employer / Self-Employment Details

employmentSituations is an array of employmentSituation objects (see §2.2). At least one item is required (minItems: 1). Each item's fields are listed below with their SD group annotations.

Data Identifier Semantic Reference Definition Data type Occurrence SD Group
employmentSituations[].typeOfEmployment typeOfEmployment
property needs another code list than the present (Permanent, Temporary)
Type of employment: 01 = Employee, 02 = Self-employed enum 1:1 per item 9
employmentSituations[].name employer.legalName
covers employers that are Economic Operators
Name of the employer or self-employed entity String 1:1 per item 9
employmentSituations[].employerID legalIdentifier
identifier
Identifier of the employer or self-employed entity String 1:1 per item 9
employmentSituations[].typeOfID TBD; needs the construct identifier.Identifier Type of employer identifier (see §2.2) typeOfID 1:1 per item 9
employmentSituations[].address.streetAndNumber registeredAddress Street name and house number of the employer String 0:1 per item 10
employmentSituations[].address.town registeredAddress Town of the employer's address String 1:1 per item 10
employmentSituations[].address.postcode registeredAddress Postal code of the employer's address String 0:1 per item 10
employmentSituations[].address.countryCode registeredAddress Country of the employer's address (world set) countryCodeWorld 1:1 per item 10

3.1.5 Places of Work

placesOfWork is a JSON object (not an array) whose property names are countryCodePDA1States values. At least one property must be present (minProperties: 1). Each property value is an array of placeOfWork objects (see §2.2). An empty array indicates the holder works in that country with no fixed address.

Data Identifier Semantic Reference Definition Data type Occurrence SD Group
placesOfWork.<CC> placeOfWork Work-location entries for country <CC>; empty array = no fixed address in that country Array of placeOfWork 1:n countries 11
placesOfWork.<CC>[].companyOrVesselName placeOfWork.Vessel.schema:name
OR legalName of the Economic Operator acting as host
Name of the company or vessel where work is performed String 1:1 per item 11
placesOfWork.<CC>[].flagBaseHomeState flagState Flag state, base state, or home state (maritime or aviation workers) String 0:1 per item 11
placesOfWork.<CC>[].companyID legalIdentifier Identifier of the company at the place of work String 0:1† per item 11
placesOfWork.<CC>[].typeOfID TBD; needs the construct identifier.Identifier Type of the company identifier (see §2.2) typeOfID 0:1† per item 11
placesOfWork.<CC>[].address.streetAndNumber placeOfWork.Address Street name and house number of the place of work String 0:1 per item 12
placesOfWork.<CC>[].address.town placeOfWork.Address Town of the place of work String 1:1 per item 12
placesOfWork.<CC>[].address.postcode placeOfWork.Address Postal code of the place of work String 0:1 per item 12
placesOfWork.<CC>[].address.countryCode placeOfWork.CountryCode Country of the place of work (PDA1 set) countryCodePDA1States 1:1 per item 12

† companyID and typeOfID are co-dependent: if either is present, the other MUST also be present.

3.1.6 Status Confirmation

Data Identifier Semantic Reference Definition Data type Occurrence SD Group
address_residence.street_nr domicile.thoroughfare
and locatorDesignator
Street and number of the residence address String 0:1 7
address_residence.post_code domicile.postCode Postal code of the residence address String 0:1 7
address_stay.street_nr temporaryAddress.thoroughfare
and locatorDesignator
Street and number of the stay address String 0:1 8
address_stay.post_code temporaryAddress.postCode Postal code of the stay address String 0:1 8
Data Identifier Semantic Reference Definition Data type Occurrence SD Group
statusConfirmation.statusConfirmationCode statusConfirmation Status confirmation code (see §2.2) statusConfirmationCode 1:1 13
statusConfirmation.exceptionDescription not covered by EBWV since "status confirmation" is a property; the proposed property to be used here is schema:description Free-text description of the exception situation String 0:1‡ 13
Data Identifier Semantic Reference Definition Data type Occurrence
member_state_legislation.applies_for_duration fullPeriodCovered
needs to be changed to "activityDurationCovered"
Indicates whether the certificate applies for the full duration of the activity Boolean 0:1
member_state_legislation.provisional provisionalDetermination Indicates whether the determination is provisional Boolean 0:1
member_state_legislation.transitional_rules transitionalRules Indicates whether transitional rules apply Boolean 0:1

Data Identifier Semantic Reference Definition Data type Occurrence SD Group
employer.address.street_nr employer.registeredAddress.thoroughfare and locatorDesignator Street and number of the employer's address String 0:1 10
employer.address.post_code employer.registeredAddress.postCode Postal code of the employer's address String 0:1 10

documentID is a top-level string, the unique identifier of the issued PD A1 certificate.

Data Identifier Semantic Reference Definition Data type Occurrence SD Group
documentID identifier Unique identifier of the issued PD A1 certificate String 1:1 14

3.1.7 Competent Institution

The social security institution that issued this certificate. The four fields institutionID, institutionName, countryCode, and address are required. No additional properties permitted (additionalProperties: false).

Data Identifier Semantic Reference Definition Data type Occurrence SD Group
competentInstitution.institutionID legalIdentifier
OR
identifier latter one used if the competent institution is not registered nationally as a legal entity
Unique identifier of the competent institution String 1:1 15
competentInstitution.institutionName legalName
OR
schema:name latter one used if the competent institution is not registered nationally as a legal entity
Name of the competent institution String 1:1 15
competentInstitution.countryCode TBD Country code of the competent institution (PDA1 set) countryCodePDA1States 1:1 15
competentInstitution.address.streetAndNumber registeredAddress
OR
hasAddress latter one used if the competent institution is not registered nationally as a legal entity
Street name and house number of the institution String 0:1 16
competentInstitution.address.town registeredAddress
OR
hasAddress latter one used if the competent institution is not registered nationally as a legal entity
Town of the institution's address String 1:1 16
competentInstitution.address.postcode registeredAddress
OR
hasAddress latter one used if the competent institution is not registered nationally as a legal entity
Postal code of the institution's address String 0:1 16
competentInstitution.address.countryCode registeredAddress
OR
hasAddress latter one used if the competent institution is not registered nationally as a legal entity
Country of the institution's address (PDA1 set) countryCodePDA1States 1:1 16
competentInstitution.officeFaxNumber contactPoint
note that "fax number" is not included as a property of the "Contact Point" class in EBWV
Office fax number (E.164 format) phoneNumber 0:1 16
competentInstitution.officePhoneNumber contactPoint Office phone number (E.164 format) phoneNumber 0:1 16
competentInstitution.email contactPoint Email address of the institution email 0:1 16

3.2 Mandatory attributes

3.3 Optional attributes

3.4 Conditional attributes

4 Metadata

Note: The attributes listed below are not part of the v1.0 PD A1 attestation data schema. They are defined at the encoding or framework layer (SD-JWT VC, eIDAS 2.0) and are subject to change as the encoding specification evolves.

The separation is intentional: an application-data schema describes semantic content, field names, types, and constraints, which remains stable across encoding formats. Issuance and transport metadata, by contrast, is format- and infrastructure-specific (SD-JWT VC claim names, eIDAS 2.0 lifecycle attributes). Mixing them would couple a stable data definition to volatile infrastructure choices, and would prevent the schema from being reused across different encoding formats. Metadata attributes are therefore defined at the framework or protocol layer and referenced here for completeness only.

Metadata describes the attestation rather than its subject.

4.1 Mandatory metadata

Legal category. This Rulebook retains the attestation_legal_category attribute. Section 4.1 of the generic template replaces it with the category attribute of [ETSI TS 119 472-1], whose value for this category is eaa:eu:non-qualified. EW-DM-12-029, legacy ARB_25, of ARF version 3.0.0 is a SHALL that still requires attestation_legal_category, so the template and the ARF disagree. The attribute is left as written and the deviation is recorded for the rulebook quality assurance group.

4.2 Optional metadata

4.3 Conditional metadata

4.4 Code lists

4.5 Integrity rules

The following rules are derived strictly from constraints in the v1.0 PD A1 attestation data schema. Rules concerning metadata (§2.10) are marked as framework-layer.

Top-level required properties: All seven properties, subject, memberstateAppliedLegislation, employmentSituations, placesOfWork, statusConfirmation, documentID, competentInstitution, MUST be present. No additional top-level properties are permitted (additionalProperties: false).

Date format: All date values MUST conform to the format YYYY-MM-DD and match the pattern ^\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|02-(?:0[1-9]|1\d|2[0-9]))$.

Country-code set, world (countryCodeWorld, 195 codes): MUST be used for subject.nationalities[], subject.placeOfBirth.countryCode, subject.address.stateOfResidence[].countryCode, and employmentSituations[].address.countryCode.

Country-code set, PDA1 (countryCodePDA1States, 32 codes): MUST be used for memberstateAppliedLegislation.memberstate, subject.address.stateOfStay[].countryCode, all property names (keys) of placesOfWork, placesOfWork.<CC>[].address.countryCode, competentInstitution.countryCode, and competentInstitution.address.countryCode.

Nationalities: subject.nationalities MUST contain at least one entry (minItems: 1) and MUST NOT contain duplicate codes (uniqueItems: true).

Subject address: subject.address MUST satisfy anyOf, either stateOfResidence is present with at least one item (minItems: 1), or stateOfStay is present with at least one item (minItems: 1); both MAY be present simultaneously. No properties other than stateOfResidence and stateOfStay are permitted in subject.address (additionalProperties: false).

Employment situations: employmentSituations MUST contain at least one item (minItems: 1). Each item MUST include all five required fields: typeOfEmployment, name, employerID, typeOfID, address. No additional properties are permitted per item (additionalProperties: false).

Places of work: placesOfWork MUST contain at least one country key (minProperties: 1). All property names MUST be valid countryCodePDA1States values. An empty array value is valid and means the holder works in that country with no fixed address. Each placeOfWork item MUST include address and companyOrVesselName. No additional properties are permitted per item (additionalProperties: false).

Company ID co-dependency: Within each placeOfWork, companyID and typeOfID are co-dependent (dependentRequired): if companyID is present then typeOfID MUST be present, and vice versa.

Status exception: statusConfirmation.statusConfirmationCode is required. statusConfirmation.exceptionDescription MUST NOT be present when statusConfirmationCode is any value other than "11". It is optional even when the code is "11".

No extra properties: The following objects enforce additionalProperties: false or unevaluatedProperties: false, no properties beyond those defined in the schema may appear in: subject, subject.names, subject.placeOfBirth, subject.address, memberstateAppliedLegislation, each employmentSituation, addressPDA1State, addressWorld, each placeOfWork, statusConfirmation, competentInstitution.

Metadata integrity rules (framework-layer, not v1.0 schema): issuance_date and expiry_date MUST be valid ISO 8601 DateTimes; expiry_date MUST be later than issuance_date; attestation_legal_category MUST be one of "QEAA", "PuB-EAA", or "EAA"; vct MUST be eu.we-build.pda1.1.

5 Formats

This chapter defines how the PD A1 attestation is serialized into a concrete verifiable-attestation format. It is important to keep two distinct layers apart:

This chapter does not repeat field meanings, data types, or value codelists, see Chapter 2 for the data model.

5.1 SD-JWT VC-based encoding

The PD A1 attestation uses the SD-JWT VC format to allow for selective disclosure of citizen and employment attributes based on SD element groups.

Selective Disclosure: Disclosure is applied at the SD element group level, not at the individual field level. A Relying Party SHALL request disclosure of complete logical blocks (e.g., a full address block, a full employment block); it is not possible to disclose partial blocks (e.g., only the town from an address without the other address fields). The SD element group membership of every application-data attribute is given by the "SD Group" column in Chapter 2 (§2.3–§2.9); those groupings are not restated here. In particular, memberstateAppliedLegislation (§2.4) is Non-SD and is always fully disclosed.

The . notation is used to indicate the nesting of attributes.

Verifiable Credential Type (vct): vct: eu.we-build.pda1.1

5.1.1 Envelope / Metadata Claims

The claims below form the SD-JWT VC envelope that wraps the Chapter 2 application data. They are defined at the SD-JWT VC / eIDAS 2.0 layer and are not part of the Chapter 2 application data (see §2.10). This table lists only envelope claims, application-data attributes, their data types, and their codelists are defined in Chapter 2 and are not repeated here.

Claim Encoding Format Reference / Notes Disclosable
vct String Verifiable Credential Type; SHALL be eu.we-build.pda1.1 Non-SD
iss String (URI) Issuer identifier (the competent institution issuing the attestation); RFC 7519 Non-SD
iat Number (Unix timestamp) Issuance time; RFC 7519 Non-SD
exp Number (Unix timestamp) Expiry time; MUST be later than iat; RFC 7519 Non-SD
jti String (URI) Unique JWT identifier for this attestation instance; RFC 7519 Non-SD
cnf JSON object (JWK / kid) Holder key-binding confirmation claim; RFC 7519 Non-SD
attestation_legal_category String eIDAS 2.0 legal category; one of QEAA / PuB-EAA / EAA (see §2.11) Non-SD
binding String Holder binding type (e.g., PID binding, Wallet Instance binding, no binding) Non-SD
status JSON object Revocation status via status list; see §3.2.2 Non-SD
trust_anchor_url String (URI) Optional. URL from which the trust anchor for verifying this attestation can be retrieved MAY

Notes:

5.1.2 Status Claim

PD A1 attestations are based on SD-JWT-based Verifiable Digital Credentials (SD-JWT VC). If a PD A1 attestation issued as an SD-JWT VC is meant to be valid for longer than 24 hours, the status claim as shown in SD-JWT-based Verifiable Digital Credentials (SD-JWT VC) and specified in Token Status List (TSL) MUST be used according to this rulebook. This claim enables Relying Parties to determine whether a credential has been revoked via a status list mechanism as specified in Token Status List (TSL).

While the Token Status List (TSL) specification only suggests that the status object of an SD-JWT VC (if present) SHOULD be checked, this rulebook prescribes (and therefore overrules) that the status object of an SD-JWT VC PD A1 attestation (if present) MUST always be checked by the verifying party.

The status object of a PD A1 attestation SD-JWT VC MUST contain the following members according to Token Status List (TSL):

"status": {
    "status_list": {
      "idx": 0,
      "uri": "https://example.com/statuslists/1"
    }
  }

For further details see section 6.2. in Token Status List (TSL).

The Token Status List (TSL) defines basic status types like VALID, INVALID and SUSPENDED. This rulebook limits the statuses allowed to be used for PD A1 SD-JWT VC attestations to only VALID and INVALID. Any status other than VALID or INVALID for a referenced VC is to be considered "not defined" and therefore MUST be treated as if the credential's status is INVALID.

5.1.3 Example Payload

A valid PD A1 JSON example is provided in pda1-sd-jwt-sample.json.

5.2 ISO/IEC 18013-5-compliant encoding

ISO/IEC 18013-5 (also called mdoc) is out of scope for this Rulebook, as specific aspects of offline proximity presentation are not a current requirement for the PD A1 attestation.

5.3 W3C Verifiable Credentials Data Model-based encoding

This Rulebook does not define a W3C Verifiable Credentials Data Model encoding for this attestation type.

6 Protocols

This attestation is issued using OpenID for Verifiable Credential Issuance [OpenID4VCI] and presented using OpenID for Verifiable Presentations [OpenID4VP], both as profiled by [HAIP].

7 Issuance

7.1 Binding

Field Value Source
Device-bound MAY EW-DM-12-038
Cryptographically bound to none EW-DM-12-032
Relying Party must also verify a PID no EW-DM-12-031
Binding subject legal person

7.2 Issuance Policy

The PD A1 Attestation is a certificate that documents the applicable legislation regarding social security in a cross-border employment situation. It is mainly intended for verifying that a "posted worker" abroad is covered by the social security system of his "sending state"(home country) while temporarily working in a "receiving state". Based on an application by the "sending" employer, the PD A1 Attestation is issued by a competent social security institution of the "sending state".

Typical usage scenarios include:

Verification contexts include labour inspections, social security inspections, employee-to-employer/contractor, employer-to-employer interactions and administrative procedures. A Relying Party receiving the attestation SHALL verify: - the issuer signature; - the SD-JWT VC type (vct); - the issuer authorisation to issue PD A1 Attestation; - the credential validity period; - the credential status, where a status mechanism is present; - holder binding, where used; - the integrity rules defined in Section 3.1.7;

In EUDI Wallet related usage scenarios, the Relying Party SHOULD request and verify PID or another accepted identity credential - or compare the PD A1 subject data with other identification means - to verify that it matches the affected person. In such cases, the Relying Party SHOULD compare the relevant identity attributes with the PD A1 Attestation. The Relying Party SHALL apply data minimisation and SHALL request only the attributes required for their specific purposes.

Unlike many identity-related attestations, a PD A1 Attestation MAY legitimately be presented by different actors or wallets, i.e. EUDI or EBW, depending on the business process.

As the PD A1 Attestation is not only relevant for usage by the citizen but also by the applying employer and also in specific "transfer" scenarios, any holder binding MUST be handled in a flexible way, based on the intended usage and a decision taken during issuance: - The attestation MAY have no specific binding at all; - The Attestation MAY be device-bound through holder binding where supported by the EUDI Wallet and the applicable SD-JWT VC profile; - The attestation MAY be cryptographically bound to a PID or another accepted identity attestation where the usage requires stronger identity matching. Where this binding is used, the metadata attribute cryptographically_bound_to SHOULD contain: urn:eudi:pid:1

7.3 Lifecycle management

The issuer sets the validity period of the attestation and reissues it when the underlying facts change, revoking the superseded attestation as described in chapter 8.

7.4 Embedded disclosure policy

This attestation defines no embedded disclosure policy.

8 Revocation

This chapter will be completed in a future version of this Rulebook.

9 Presentation

9.1 Presentation Policy

To verify and validate a received presentation of an attestation of this type, the following steps SHALL be performed:

  1. verify the signature over the attestation using a trust anchor obtained as described in chapter 10;
  2. verify that the attestation is within its validity period;
  3. check revocation status as described in chapter 8, unless the attestation is short-lived, or its remaining lifetime is below the revocation time threshold;
  4. verify device binding where section 7.1 records the attestation as device-bound;
  5. request only those attributes that are necessary for the stated purpose of the transaction, and, where the trust model for this attestation requires Relying Party registration, only those attributes it is registered and authorised to request.

Obligations specific to this attestation type, carried over from the previous version of this Rulebook:

9.2 Presentation modes

Remote presentation is in scope. Proximity presentation is in scope only where chapter 5 records an mdoc encoding.

9.3 Transactional data

This Rulebook defines no transactional data.

10 Trust Framework

This chapter will be completed in a future version of this Rulebook.

Trust anchor location

The attribute or metadata carrying the trust anchor location contains at least the URL at which a machine-readable version can be found or looked up.

11 References

This chapter will be completed in a future version of this Rulebook.

Item Reference Standard name/details
[European Digital Identity Regulation] Regulation (EU) 2024/1183 of the European Parliament and of the Council of 11 April 2024 amending Regulation (EU) No 910/2014 as regards establishing the European Digital Identity Framework
[HAIP] Yasuda, K. et al, OpenID4VC High Assurance Interoperability Profile, OpenId Foundation, Version draft-03
[IANA-JWT-Claims] IANA JSON Web Token Claims Registry. Available: https://www.iana.org/assignments/jwt/jwt.xhtml
[ISO/IEC 18013-5] ISO/IEC 18013-5, Personal identification, ISO-compliant driving licence - Part 5: Mobile driving licence (mDL) application, First edition, 2021-09
[ISO 4217] ISO 4217, Currency codes. Available: https://www.iso.org/iso-4217-currency-codes.html
[ISO 8601] ISO 8601, Date and time format. Available: https://www.iso.org/iso-8601-date-and-time-format.html
[OIDC] Sakimura, N. et al., "OpenID Connect Core 1.0", OpenID Foundation. Available: https://openid.net/specs/openid-connect-core-1_0.html
[RFC 2119] RFC 2119, Key words for use in RFCs to Indicate Requirement Levels, S. Bradner, March 1997
[RFC 3339] RFC 3339, Date and Time on the Internet: Timestamps, G. Klyne et al., July 2002
[RFC 8610] RFC 8610, Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures, H. Birkholz et al., June 2019
[RFC 8943] RFC 8943, Concise Binary Object Representation (CBOR) Tags for Date, M. Jones et al., November 2020
[RFC 8949] RFC 8949, Concise Binary Object Representation (CBOR), C. Bormann et al., December 2020
[SD-JWT VC] SD-JWT-based Verifiable Credentials (SD-JWT VC). Available: https://datatracker.ietf.org/doc/draft-ietf-oauth-sd-jwt-vc/, version draft-ietf-oauth-sd-jwt-vc-09
[Topic 7] ARF Annex 2 - Topic 7 - Attestation revocation and revocation checking. Available: https://eu-digital-identity-wallet.github.io/eudi-doc-architecture-and-reference-framework/latest/annexes/annex-2/annex-2-high-level-requirements/#a237-topic-7-attestation-revocation-and-revocation-checking