13.4. Authentic Source Endpoints¶
13.4.1. e-Service PDND Authentic Source Catalog¶
Public Authentic Sources MUST provide the following e-Service through PDND to provide the Credential Issuer with User's attributes required to the issuance of a Digital Credential.
The e-service is described via an OpenAPI definition where the request, response, and error messages are detailed.
Note
The base OpenAPI Specification is available here.
This OpenAPI specification can be extended by the Authentic Sources, in fact, the array attributeClaims MAY contain additional properties specific to a particular Credential. These additional properties, as defined in the OpenAPI specification, will be inserted into the Credential by the Credential Issuer.
13.4.1.1. Get Attribute Claims¶
Description |
This e-Service provides the Credential Issuer with all attribute claims necessary for the issuance of a Digital Credential. |
|---|---|
Provider |
Authentic Source |
Consumer |
Credential Issuer |
This e-Service MUST be invoked by the Credential Issuer in the following cases:
During the Credential issuance flow to retrieve the Digital Credential dataset(s). In this situation, the
object_idclaim MUST not be used in the e-service request payload, and the e-service response MUST include all Credential datasets that areVALIDstate and not administratively expired (i.e.,expiry_date> current date of the e-service request).After receiving an update notification through Signal Hub. In this situation, the
object_idclaim MUST be included in the request payload, and the e-service response MUST return only the Credential dataset identified by theobject_idclaim independently from its state.
Note
- The Authentic Source and the Credential Issuer MUST implement the necessary logic to keep track of the requests and responses exchanged via this e-Service, in order to be able to correlate them with the related issuance of a Digital Credential. In particular,
both MUST save the
object_idvalue in the payload of the response to manage Signals related to the deffered issuance of a Digital Credential (see Signals Processing). Any subsequent notification related to a specific dataset MUST be handled viaobject_id.the Authentic Source MUST record the datetime value provided within the
last_updatedparameter, which indicates the last time the User's attributes were updated in the Authentic Source's database;the Credential Issuer MUST read the
last_updatedvalue received in the response to be able to check if the User's attributes have changed since the last issuance of a Digital Credential.
13.4.1.2. Credential Lifecycle States Mapping¶
To ensure consistency between the "Electronic Attestation Lifecycle" documented in Digital Credential Lifecycle and the OpenAPI status Enum, the following mapping and operational logic MUST be applied for the status field in the attributeClaims.
Directionality and Responsibility: State changes of a Digital Credential at the Credential Issuer level DO NOT imply a change at the Authentic Source. Conversely, any state change of a dataset at the Authentic Source MUST be processed by the Credential Issuer to update the technical Digital Credential status.
Operational Guidance:
Technical vs Administrative Validity: Digital Credentials distinguish between a technical validity set by the Credential Issuer (claims
iatandexp) and an administrative validity determined by the Authentic Source (claimsissuance_dateandexpiry_date).Expiry Hierarchy: The technical expiry (
exp) MUST NOT be later than the administrative expiry (expiry_date). For example, a driver's license may be administratively valid for 10 years, while the issued Digital Credential may have a technical expiry of 1 year.Re-issuance: If a Digital Credential reaches its technical expiry (
exp) but the dataset is still administratively valid, the OpenAPI status remainsVALID, allowing the Digital Credential to be re-issued multiple times within the administrative timeframe.Metadata Verification: The Credential Issuer MUST verify the effective usability by checking both the technical claims and the administrative dates.
Irreversibility: After a transition to
INVALID, the Digital Credential cannot return to aVALIDstate. A new issuance is required for a new dataset. This applies to both explicit revocation and administrative expiry.Signal Processing: Signals MUST be processed sequentially. If a Signal invalidates a Digital Credential, subsequent correction Signals for the same object are ignored.
Status Mapping and Case Logic:
The Credential Issuer MUST update the Digital Credential status based on Signals received from the Authentic Source via Signal Hub (signalType=UPDATE):
Revocation: If a dataset is revoked at the Authentic Source (status
INVALID), the Credential Issuer MUST revoke the Digital Credentials that use that dataset (status transition fromVALID/SUSPENDEDtoINVALID).Suspension: If a dataset is suspended at the Authentic Source (status
SUSPENDED), the Credential Issuer MUST suspend the Digital Credentials (status transition fromVALIDtoSUSPENDED).Restoration: If a suspended dataset returns to
VALIDat the Authentic Source, the Credential Issuer MUST restore the Digital Credential validity (status transition fromSUSPENDEDtoVALID).Modification: If a dataset is modified but remains
VALIDat the Authentic Source, the Credential Issuer—detecting the change via thelast_updatedfield—assigns the technical statusATTRIBUTE_UPDATEto the Digital Credential. This triggers a re-issuance flow when the Wallet Instance checks the status.- Administrative Expiry:
Scenario A (Metadata-driven): If
expiry_datewas shared with the Credential Issuer in metadata, the Authentic Source DOES NOT send Signals upon expiry; the Credential Issuer manages the lifecycle independently ensuring technicalexp<=expiry_date.Scenario B (Signal-driven): If
expiry_dateis NOT present in metadata and the dataset expires, the Authentic Source MUST set its status toINVALIDand send a Signal via Signal Hub; the Credential Issuer then revokes the Digital Credentials (status transition toINVALID).
13.4.1.3. Example of Authentic Source response¶
The endpoint response MUST use the HTTP Content-Type set to application/json. Below is a concrete example with fictitious data to clarify the expected shape and content.
{
"userClaims": {
"given_name": "Mario",
"family_name": "Rossi",
"birth_date": "1980-01-10",
"birth_place": "Roma",
"tax_id_code": "TINIT-RSSMRA80A01H501Z",
"personal_administrative_number": "12345A123A"
},
"attributeClaims": [
{
"object_id": "6F9619FF-8B86-D011-B42D-00C04FC964FF",
"status": "VALID",
"last_updated": "2025-09-15T10:30:00Z",
"institute_name": "Nome Istituto Universitario",
"programme_type_name": "Laurea Magistrale",
"degree_course_name": "Computer Science - Informatica",
"academic_qualification_date": "2025-06-25",
"...": ""
},
{
"object_id": "7A0720AB-9C97-E122-C53E-11D05FD075GG",
"status": "VALID",
"last_updated": "2023-01-10T08:00:00Z",
"institute_name": "Nome Istituto Universitario",
"programme_type_name": "Laurea Triennale",
"degree_course_name": "Informatica",
"academic_qualification_date": "2022-11-27",
"...": ""
}
],
"metadataClaims": [
{
"object_id": "6F9619FF-8B86-D011-B42D-00C04FC964FF",
"issuance_date": "2025-06-25"
},
{
"object_id": "7A0720AB-9C97-E122-C53E-11D05FD075GG",
"issuance_date": "2022-11-27"
}
]
}
In summary:
userClaims: user identity data (first name, family name, date/place of birth, tax id or personal administrative number). At least one of
tax_id_codeandpersonal_administrative_numberis required when providing user claims.attributeClaims: array of datasets; each element MUST contain
object_id,status(VALID | INVALID | SUSPENDED),last_updated(ISO 8601 format), plus any dataset-specific attributes (e.g.nationality,residence_address).metadataClaims: array of metadata per dataset (
object_idrequired;issuance_dateandexpiry_dateoptional).interval: required when the request does not include a
claimsparameter; indicates the number of seconds to wait before repeating the request (e.g. 864000 = 10 days).
The successful response (HTTP 200) returns a CredentialClaimsResponse object formatted as a JSON Payload, accompanied by the Agid-JWT-Signature and Digest integrity headers.
13.4.1.3.1. Signature Verification and Key Management¶
The Credential Issuer (Consumer) MUST verify the integrity and authenticity of the JSON response by validating the Agid-JWT-Signature and Digest headers received from the Authentic Source.
The signature verification and key retrieval process MUST strictly follow the INTEGRITY_REST_02 standard pattern defined for PDND e-Services. Please refer to the Technical Appendix (Section e-Service PDND) for details on JWT signature validation and specifications for retrieving the Provider's public key via the Interoperability API.
Warning
Alternative mechanisms for distributing cryptographic material (e.g., public .well-known endpoints directly exposed by the Authentic Source or out-of-band distribution) are not allowed. Trust management MUST remain centralized within the perimeter of the PDND infrastructure as described in the references cited above.