Models API¶
Pydantic models for Digital Product Passport entities.
DigitalProductPassport¶
The main passport model representing a W3C Verifiable Credential.
dppvalidator.models.DigitalProductPassport
¶
Bases: UNTPBaseModel
Digital Product Passport as a Verifiable Credential.
Root model for UNTP DPP v0.6.1, combining DigitalProductPassport and VerifiableCredential types per W3C VC v2 specification.
Source code in src/dppvalidator/models/passport.py
validate_dates()
¶
Ensure validFrom is before validUntil if both are present.
Source code in src/dppvalidator/models/passport.py
validate_material_mass_fractions()
¶
Validate material mass fractions don't exceed 1.0.
Per UNTP spec, mass fractions can be partial declarations (sum < 1.0). Only sum > 1.0 is physically impossible and should error. Semantic validation checks for exact sum when appropriate.
Source code in src/dppvalidator/models/passport.py
options: show_source: false members: - id - type - issuer - valid_from - valid_until - credential_subject
CredentialIssuer¶
The issuer of a Digital Product Passport.
dppvalidator.models.CredentialIssuer
¶
Bases: UNTPStrictModel
Issuer of a verifiable credential.
Source code in src/dppvalidator/models/credential.py
options: show_source: false
Product¶
Product information within a passport.
dppvalidator.models.Product
¶
Bases: UNTPBaseModel
Product information including identification and manufacturer details.
Source code in src/dppvalidator/models/product.py
options: show_source: false
ProductPassport¶
The credential subject containing product passport data.
dppvalidator.models.ProductPassport
¶
Bases: UNTPBaseModel
Product passport credential subject.
Source code in src/dppvalidator/models/credential.py
options: show_source: false
Measure¶
A measurement with value and unit.
dppvalidator.models.Measure
¶
Bases: UNTPStrictModel
Numeric value with unit of measure (UNECE Rec20).
Source code in src/dppvalidator/models/primitives.py
options: show_source: false
Usage Example¶
from dppvalidator.models import (
DigitalProductPassport,
CredentialIssuer,
Product,
Measure,
)
# Create a passport
passport = DigitalProductPassport(
id="https://example.com/dpp/001",
issuer=CredentialIssuer(id="https://example.com/issuer", name="Acme Corp"),
)
# Access fields
print(passport.id)
print(passport.issuer.name)
# Serialize to dict
data = passport.model_dump(by_alias=True)
# Serialize to JSON
json_str = passport.model_dump_json(by_alias=True)