UNTP v0.6.0
Please note that this content is under development and is not ready for implementation. This status message will be updated as content development progresses.
Overview
This guide outlines:
- The migration from UNTP (UN Transparency Protocol) version 0.5.0 to 0.6.0 across all supported data models in the Reference Implementation. This update introduces structural changes, enhanced schema definitions, improved data validation patterns, and updated JSON-LD contexts.
- Functional updates to the Reference Implementation, including updates to dependent services, credential rendering, and configuration changes.
Functional Updates
Dependent Service Updates
The Reference Implementation now uses the following updated services:
- Storage Service: v1.0.1 (Repository)
- VCkit Service: v1.1.0 (Repository)
- Identity Resolver Service: v1.0.0 (Repository)
The docker-compose configuration has been updated to use the corresponding images for these service versions. Refer to the respective changelogs in each service’s repository for detailed information.
Key Changes for Existing Implementations
-
Storage Service Configuration
The Storage Service configuration URL has been updated:
Previous Configuration:
"storage": {
"url": "http://localhost:3334/v1/documents",
"params": {
"bucket": "verifiable-credentials"
},
"options": {
"method": "POST",
"headers": {
"Content-Type": "application/json"
}
}
}New Configuration:
"storage": {
"url": "http://localhost:3334/api/1.0.0/documents",
"params": {
"bucket": "verifiable-credentials"
},
"options": {
"method": "POST",
"headers": {
"Content-Type": "application/json"
}
}
}Note: The
urlhas changed from/v1/documentsto/api/1.0.0/documents. -
Identity Resolver (IDR) Service Configuration
The IDR Service configuration URL and
linkRegisterPathhave been updated:Previous Configuration:
"dlr": {
"dlrAPIUrl": "http://localhost:3000",
"dlrAPIKey": "test123",
"namespace": "gs1",
"linkRegisterPath": "/api/resolver"
}New Configuration:
"dlr": {
"dlrAPIUrl": "http://localhost:3000/api/1.0.0",
"dlrAPIKey": "test123",
"namespace": "gs1",
"linkRegisterPath": "resolver"
}Note: The
dlrAPIUrlnow includes the/api/1.0.0path, and thelinkRegisterPathno longer has a leading/. -
Identity Provider Configuration (Mock IDR GS1 Register)
The Identity Provider configuration URL has been updated:
Previous Configuration:
"identifyProvider": {
"type": "gs1",
"url": "http://localhost:3001",
"namespace": "gs1"
}New Configuration:
"identifyProvider": {
"type": "gs1",
"url": "http://localhost:3001/api/1.0.0",
"namespace": "gs1"
}Note: The
urlnow includes the/api/1.0.0path.
These URL updates ensure the system remains stable when underlying service API versions change.
Seed Script Updates
The IDR Service and Mock GS1 IDR Service seed scripts have been updated to reflect the new link structure. To ensure compatibility:
- Update any custom or additional seed scripts to align with the new URL structures (
/api/1.0.0). - Clear all data in the corresponding object store (e.g., delete the
minio_datadirectory or reset the cloud-based object store) to ensure the system uses the new URLs.
API versions are now included in the seed scripts. If you are using Docker Compose, this is handled automatically. Otherwise, refer to the seed script section in the repository's README.
VCkit Render Package Update
The @uncefact/vckit-renderer package has been updated from version 1.0.0-next.50 to 1.0.0-next.59.
This update addresses an issue where the previous implementation used malformed IRIs to extract render templates from credentials (see details here). With UNTP v0.6.0 and the updated package, the system now uses valid IRIs for rendering.
Important: Credentials issued with previous versions will no longer render. You must use the v0.6.0 data models for credentials to render correctly with the this latest version of the Reference Implementation.
Data Model Updates
Digital Facility Record (DFR)
Summary of Changes
The main changes for Digital Facility Records in UNTP 0.6.0 include:
- Enhanced validation patterns: The updated schema validations simplify the extension of UNTP credential types.
- Improved identifier structure: Simplified identifier scheme with better organisation and removal of nested
idSchemereferences - Updated JSON-LD contexts: New vocabulary context path structure with improved semantic mappings and vocabulary organisation
- Schema refinements: Better property organisation, improved abstraction, and enhanced data model consistency
Data Model Changes
1. JSON-LD Context
Before (0.5.0):
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://vocabulary.uncefact.org/untp/dfr/0.5.0/"
]
After (0.6.0):
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://test.uncefact.org/vocabulary/untp/dfr/0.6.0/"
]
2. Credential Subject Structure
The credentialSubject property has been restructured from a direct Facility reference to a FacilityRecord that contains the facility.
Example data structure change:
Before (0.5.0):
{
"credentialSubject": {
"type": ["Facility"],
"id": "https://id.gs1.org/414/1321202290648",
"name": "Greenacres battery factory",
"conformityClaim": [...]
}
}
After (0.6.0):
{
"credentialSubject": {
"type": ["FacilityRecord"],
"facility": {
"type": ["Facility"],
"id": "https://id.gs1.org/414/1321202290648",
"name": "Greenacres battery factory"
},
"conformityClaim": [...]
}
}
3. Issuer Identifier Structure
The issuer identifier otherIdentifier property has been replaced with a new issuerAlsoKnownAs property.
Example data structure change:
Before (0.5.0):
{
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:identifiers.example-company.com:12345",
"name": "Example Company Pty Ltd",
"otherIdentifier": [
{
"type": ["Identifier"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
}
]
}
}
After (0.6.0):
{
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:identifiers.example-company.com:12345",
"name": "Example Company Pty Ltd",
"issuerAlsoKnownAs": [
{
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327"
}
]
}
}
4. Facility Structure
Key Changes:
otherIdentifierproperty replaced with newfacilityAlsoKnownAspropertyoperatedByPartystructure simplified fromIdentifier.
Example: facilityAlsoKnownAs structure change
Before (0.5.0):
{
"credentialSubject": {
"type": ["Facility"],
"otherIdentifier": [
{
"type": ["Identifier"],
"id": "https://id.gs1.org/414/1321202290648",
"name": "Greenacres battery factory",
"registeredId": "1321202290648",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://id.gs1.org/414/",
"name": "Global Location Number"
}
}
]
}
}
After (0.6.0):
{
"credentialSubject": {
"type": ["FacilityRecord"],
"facility": {
"type": ["Facility"],
"facilityAlsoKnownAs": [
{
"id": "https://id.gs1.org/414/1321202290648",
"name": "Greenacres battery factory",
"registeredId": "1321202290648"
}
]
}
}
}
Example: operatedByParty structure change
Before (0.5.0):
{
"credentialSubject": {
"type": ["Facility"],
"operatedByParty": {
"type": ["Identifier"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
}
}
}
After (0.6.0):
{
"credentialSubject": {
"type": ["FacilityRecord"],
"facility": {
"type": ["Facility"],
"operatedByParty": {
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327"
}
}
}
}
Reference Implementation Updates
1. Schema URL Updates
Before (0.5.0):
"schema": {
"url": "https://jargon.sh/user/unece/DigitalFacilityRecord/v/working/artefacts/jsonSchemas/Facility.json?class=Facility"
}
After (0.6.0):
"schema": {
"url": "https://jargon.sh/user/unece/DigitalFacilityRecord/v/0.6.0/artefacts/jsonSchemas/FacilityRecord.json?class=FacilityRecord"
}
2. Context Configuration in Services
Before (0.5.0):
"digitalFacilityRecord": {
"context": ["https://test.uncefact.org/vocabulary/untp/dfr/0.5.0/"]
}
After (0.6.0):
"digitalFacilityRecord": {
"context": ["https://test.uncefact.org/vocabulary/untp/dfr/0.6.0/"]
}
3. Form Data Structure Updates
If you're passing pre-populated data into the JsonForm component, update the data structure to conform to the new FacilityRecord schema:
Before (0.5.0):
"data": {
"type": ["Facility"],
"id": "https://id.gs1.org/414/1321202290648",
"name": "Greenacres battery factory",
"operatedByParty": {
"type": ["Identifier"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
},
"conformityClaim": [...]
}
After (0.6.0):
"data": {
"type": ["FacilityRecord"],
"facility": {
"type": ["Facility"],
"id": "https://id.gs1.org/414/1321202290648",
"name": "Greenacres battery factory",
"operatedByParty": {
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327"
}
},
"conformityClaim": [...]
}
4. Render Template Updates
Update the render template to use the new 0.6.0 compliant template. The updated template can be found at:
packages/reference-implementation/src/templates/v0.6.0/digital_facility_record/template.hbs
Example template configuration update:
Before (0.5.0):
"renderTemplate": [
{
"type": "WebRenderingTemplate2022",
"template": "{v0.5.0-template}..."
}
]
After (0.6.0):
"renderTemplate": [
{
"type": "WebRenderingTemplate2022",
"template": "{v0.6.0-template}..."
}
]
5. VCkit Issuer Structure Updates
Update the VCkit issuer configuration to use the new identifier structure:
Before (0.5.0):
"vckit": {
"vckitAPIUrl": "http://localhost:3332/v2",
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:uncefact.github.io:project-vckit:test-and-development",
"name": "Example Company Pty Ltd",
"otherIdentifier": [
{
"type": ["Identifier"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
}
]
},
"headers": {...}
}
After (0.6.0):
"vckit": {
"vckitAPIUrl": "http://localhost:3332/v2",
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:uncefact.github.io:project-vckit:test-and-development",
"name": "Example Company Pty Ltd",
"issuerAlsoKnownAs": [
{
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327"
}
]
},
"headers": {...}
}
Digital Identity Anchor (DIA)
Summary of Changes
The main change to the Digital Identity Anchor in UNTP 0.6.0 is the same change present for the other UNTP credentials: the credential issuer's otherIdentifier field was changed in name and format. See the details above, together with the other smaller changes that are mostly version number updates.
Data Model Changes
1. JSON-LD Context Updates
Before (0.2.1):
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://vocabulary.uncefact.org/untp/dia/0.2.1/"
]
After (0.6.0):
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://test.uncefact.org/vocabulary/untp/dia/0.6.0/"
]
2. Issuer Identifier Structure Changes
The issuer identifier otherIdentifier property has been replaced with a new issuerAlsoKnownAs property.
Example data structure change:
Before (0.2.1):
{
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:identifiers.example-company.com:12345",
"name": "Example Company Pty Ltd",
"otherIdentifier": [
{
"type": ["Identifier"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
}
]
}
}
After (0.6.0):
{
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:identifiers.example-company.com:12345",
"name": "Example Company Pty Ltd",
"issuerAlsoKnownAs": [
{
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327"
}
]
}
}
3. RegisteredIdentity Structure Updates
Key Changes:
- Removed
Identifiertype inheritance fromRegisteredIdentity
Example: RegisteredIdentity type change
Before (0.2.1):
{
"credentialSubject": {
"type": ["RegisteredIdentity", "Identifier"],
"id": "did:web:samplecompany.com/123456789",
"name": "Sample business Ltd",
"registeredId": "123456789",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://id.gs1.org/01/",
"name": "Global Trade Identification Number (GTIN)"
}
}
}
After (0.6.0):
{
"credentialSubject": {
"type": ["RegisteredIdentity"],
"id": "did:web:samplecompany.com/123456789",
"name": "Sample business Ltd",
"registeredId": "123456789",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://id.gs1.org/01/",
"name": "Global Trade Identification Number (GTIN)"
}
}
}
Reference Implementation Updates
1. Schema URL Updates
Before (0.2.1):
"schema": {
"url": "https://jargon.sh/user/unece/DigitalIdentityAnchor/v/working/artefacts/jsonSchemas/RegisteredIdentity.json?class=RegisteredIdentity"
}
After (0.6.0):
"schema": {
"url": "https://jargon.sh/user/unece/DigitalIdentityAnchor/v/0.6.0/artefacts/jsonSchemas/RegisteredIdentity.json?class=RegisteredIdentity"
}
2. Context Configuration in Services
Before (0.2.1):
"digitalIdentityAnchor": {
"context": ["https://test.uncefact.org/vocabulary/untp/dia/0.2.1/"]
}
After (0.6.0):
"digitalIdentityAnchor": {
"context": ["https://test.uncefact.org/vocabulary/untp/dia/0.6.0/"]
}
3. Form Data Structure Updates
If you're passing pre-populated data into the JsonForm component, update the data structure to conform to the new schema:
Before (0.2.1):
"data": {
"type": ["RegisteredIdentity", "Identifier"],
"id": "did:web:samplecompany.com/123456789",
"name": "Sample business Ltd",
"registeredId": "123456789",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://id.gs1.org/01/",
"name": "Global Trade Identification Number (GTIN)"
}
}
After (0.6.0):
"data": {
"type": ["RegisteredIdentity"],
"id": "did:web:samplecompany.com/123456789",
"name": "Sample business Ltd",
"registeredId": "123456789",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://id.gs1.org/01/",
"name": "Global Trade Identification Number (GTIN)"
}
}
4. Render Template Updates
Update the render template to use the new 0.6.0 compliant template. The updated template can be found at:
packages/reference-implementation/src/templates/v0.6.0/digital_identity_anchor/template.hbs
Example template configuration update:
Before (0.2.1):
"renderTemplate": [
{
"type": "WebRenderingTemplate2022",
"template": "{v0.2.1-template}..."
}
]
After (0.6.0):
"renderTemplate": [
{
"type": "WebRenderingTemplate2022",
"template": "{v0.6.0-template}..."
}
]
5. VCKit Issuer Structure Updates
Update the VCKit issuer configuration to use the new identifier structure:
Before (0.2.1):
"vckit": {
"vckitAPIUrl": "http://localhost:3332/v2",
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:uncefact.github.io:project-vckit:test-and-development",
"name": "Example Company Pty Ltd",
"otherIdentifier": [
{
"type": ["Identifier"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
}
]
},
"headers": {...}
}
After (0.6.0):
"vckit": {
"vckitAPIUrl": "http://localhost:3332/v2",
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:uncefact.github.io:project-vckit:test-and-development",
"name": "Example Company Pty Ltd",
"issuerAlsoKnownAs": [
{
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327"
}
]
},
"headers": {...}
}
Digital Conformity Credential (DCC)
Summary of Changes
The main changes to the Digital Conformity Credential in UNTP 0.6.0 include:
- Simplified issuer identifier: The
otherIdentifierproperty is replaced withissuerAlsoKnownAs, removing the nestedidSchemestructure. - Simplified party structures: The
issuedToParty,assessedOrganisation, andauditorproperties now use inline objects instead of referencing theIdentifierorPartyschemas, removingidScheme. - New verification structures:
assessedProductnow usesProductVerificationinstead ofProduct, incorporating an inlineproductobject andIDverifiedByCAB.assessedFacilitynow usesFacilityVerificationinstead ofFacility, with an inlinefacilityobject andIDverifiedByCAB.
- Updated JSON-LD context: The context URL is updated to reflect version 0.6.0.
- Schema refinements: Improved validation patterns and consistency with other UNTP credentials. See the details above.
Data Model Changes
1. JSON-LD Context Updates
Before (0.5.0):
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://vocabulary.uncefact.org/untp/dcc/0.5.0/"
]
After (0.6.0):
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://test.uncefact.org/vocabulary/untp/dcc/0.6.0/"
]
2. Issuer Identifier Structure Changes
The issuer identifier otherIdentifier property has been replaced with a new issuerAlsoKnownAs property, simplifying the structure by removing the idScheme reference.
Example data structure change:
Before (0.5.0):
{
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:identifiers.example-company.com:12345",
"name": "Example Company Pty Ltd",
"otherIdentifier": [
{
"type": ["Identifier"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
}
]
}
}
After (0.6.0):
{
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:identifiers.example-company.com:12345",
"name": "Example Company Pty Ltd",
"issuerAlsoKnownAs": [
{
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327"
}
]
}
}
3. Party Structure Changes
Key Changes:
issuedToPartysimplified from anIdentifierreference to an inline object structure, removingidScheme.- Similar simplifications applied to
assessedOrganisationandauditorproperties within theassessmentarray.
Example: issuedToParty structure change
Before (0.5.0):
{
"credentialSubject": {
"type": ["ConformityAttestation", "Attestation"],
"issuedToParty": {
"type": ["Party"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Sample Company Pty Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
}
}
}
After (0.6.0):
{
"credentialSubject": {
"type": ["ConformityAttestation", "Attestation"],
"issuedToParty": {
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Sample Company Pty Ltd.",
"registeredId": "90664869327",
"description": "A leading electric energy storage company"
}
}
}
4. Assessment Structure Updates
Key Changes:
assessedProductsimplified from a genericProductwith complex identifiers toProductVerificationwith an inlineproductobject andIDverifiedByCABboolean.assessedFacilitysimplified from a genericFacilitywith complex identifiers toFacilityVerificationwith an inlinefacilityobject andIDverifiedByCABboolean.assessedOrganisationandauditorsimplified to inline party objects, removingidSchemereferences.
Example: assessedProduct structure change
Before (0.5.0):
{
"credentialSubject": {
"assessment": [
{
"assessedProduct": [
{
"type": ["Product"],
"id": "https://id.gs1.org/01/09520123456788/21/12345",
"name": "EV battery 300Ah.",
"registeredId": "09520123456788.21.12345",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://id.gs1.org/01/",
"name": "Global Trade Identification Number (GTIN)"
}
}
]
}
]
}
}
After (0.6.0):
{
"credentialSubject": {
"assessment": [
{
"assessedProduct": [
{
"type": ["ProductVerification"],
"product": {
"id": "https://id.gs1.org/01/09520123456788/21/12345",
"name": "EV battery 300Ah.",
"registeredId": "09520123456788.21.12345",
"serialNumber": "12345678",
"batchNumber": "6789"
},
"IDverifiedByCAB": true
}
]
}
]
}
}
Example: assessedFacility structure change
Before (0.5.0):
{
"credentialSubject": {
"assessment": [
{
"assessedFacility": [
{
"type": ["Facility"],
"id": "https://sample-facility-register.com/1234567",
"name": "Greenacres battery factory",
"registeredId": "1234567",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://id.gs1.org/414/",
"name": "Global Location Number"
}
}
]
}
]
}
}
After (0.6.0):
{
"credentialSubject": {
"assessment": [
{
"assessedFacility": [
{
"type": ["FacilityVerification"],
"facility": {
"id": "https://sample-facility-register.com/1234567",
"name": "Greenacres battery factory",
"registeredId": "1234567"
},
"IDverifiedByCAB": true
}
]
}
]
}
}
Example: assessedOrganisation structure change
Before (0.5.0):
{
"credentialSubject": {
"assessment": [
{
"assessedOrganisation": {
"type": ["Party"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Sample Company Pty Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
}
}
]
}
}
After (0.6.0):
{
"credentialSubject": {
"assessment": [
{
"assessedOrganisation": {
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Sample Company Pty Ltd.",
"registeredId": "90664869327",
"description": "A leading electric energy storage company"
}
}
]
}
}
Example: auditor structure change
Before (0.5.0):
{
"credentialSubject": {
"assessment": [
{
"auditor": {
"type": ["Party"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Sample Auditor Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
}
}
]
}
}
After (0.6.0):
{
"credentialSubject": {
"assessment": [
{
"auditor": {
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Sample Auditor Ltd.",
"registeredId": "90664869327",
"description": "A certified conformity assessment body"
}
}
]
}
}
Reference Implementation Updates
1. Schema URL Updates
Before (0.5.0):
"schema": {
"url": "https://jargon.sh/user/unece/ConformityCredential/v/working/artefacts/jsonSchemas/ConformityAttestation.json?class=ConformityAttestation"
}
After (0.6.0):
"schema": {
"url": "https://jargon.sh/user/unece/ConformityCredential/v/0.6.0/artefacts/jsonSchemas/ConformityAttestation.json?class=ConformityAttestation"
}
2. Context Configuration in Services
Before (0.5.0):
"digitalConformityCredential": {
"context": ["https://uncefact.org/vocabulary/untp/dcc/0.5.0/"]
}
After (0.6.0):
"digitalConformityCredential": {
"context": ["https://test.uncefact.org/vocabulary/untp/dcc/0.6.0/"]
}
3. Form Data Structure Updates
If you're passing pre-populated data into the JsonForm component, update the data structure to conform to the new schema, reflecting the simplified party structures, new verification structures, and updated auditor structure.
Before (0.5.0):
"data": {
"type": ["ConformityAttestation", "Attestation"],
"issuedToParty": {
"type": ["Party"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Sample Company Pty Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
},
"assessment": [
{
"assessedProduct": [
{
"type": ["Product"],
"id": "https://id.gs1.org/01/09520123456788/21/12345",
"name": "EV battery 300Ah.",
"registeredId": "09520123456788.21.12345",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://id.gs1.org/01/",
"name": "Global Trade Identification Number (GTIN)"
}
}
],
"assessedFacility": [
{
"type": ["Facility"],
"id": "https://sample-facility-register.com/1234567",
"name": "Greenacres battery factory",
"registeredId": "1234567",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://id.gs1.org/414/",
"name": "Global Location Number"
}
}
],
"assessedOrganisation": {
"type": ["Party"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Sample Company Pty Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
},
"auditor": {
"type": ["Party"],
"id": "https://abr.business.gov.au/ABN/View?abn=12345678901",
"name": "Sample Auditor Ltd.",
"registeredId": "12345678901",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
}
}
]
}
After (0.6.0):
"data": {
"type": ["ConformityAttestation", "Attestation"],
"issuedToParty": {
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Sample Company Pty Ltd.",
"registeredId": "90664869327",
"description": "A leading electric energy storage company"
},
"assessment": [
{
"assessedProduct": [
{
"type": ["ProductVerification"],
"product": {
"id": "https://id.gs1.org/01/09520123456788/21/12345",
"name": "EV battery 300Ah.",
"registeredId": "09520123456788.21.12345",
"serialNumber": "12345678",
"batchNumber": "6789"
},
"IDverifiedByCAB": true
}
],
"assessedFacility": [
{
"type": ["FacilityVerification"],
"facility": {
"id": "https://sample-facility-register.com/1234567",
"name": "Greenacres battery factory",
"registeredId": "1234567"
},
"IDverifiedByCAB": true
}
],
"assessedOrganisation": {
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Sample Company Pty Ltd.",
"registeredId": "90664869327",
"description": "A leading electric energy storage company"
},
"auditor": {
"id": "https://abr.business.gov.au/ABN/View?abn=12345678901",
"name": "Sample Auditor Ltd.",
"registeredId": "12345678901",
"description": "A certified conformity assessment body"
}
}
]
}
4. Render Template Updates
Update the render template to use the new 0.6.0 compliant template. The updated template can be found at:
packages/reference-implementation/src/templates/v0.6.0/digital_conformity_credential/template.hbs
Example template configuration update:
Before (0.5.0):
"renderTemplate": [
{
"type": "WebRenderingTemplate2022",
"template": "{v0.5.0-template}..."
}
]
After (0.6.0):
"renderTemplate": [
{
"type": "WebRenderingTemplate2022",
"template": "{v0.6.0-template}..."
}
]
5. VCkit Issuer Structure Updates
Update the VCkit issuer configuration to use the new issuerAlsoKnownAs structure:
Before (0.5.0):
"vckit": {
"vckitAPIUrl": "http://localhost:3332/v2",
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:uncefact.github.io:project-vckit:test-and-development",
"name": "Example Company Pty Ltd",
"otherIdentifier": [
{
"type": ["Identifier"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
}
]
},
"headers": {...}
}
After (0.6.0):
"vckit": {
"vckitAPIUrl": "http://localhost:3332/v2",
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:uncefact.github.io:project-vckit:test-and-development",
"name": "Example Company Pty Ltd",
"issuerAlsoKnownAs": [
{
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327"
}
]
},
"headers": {...}
}
Digital Product Passport (DPP)
Summary of Changes
The main changes to the Digital Product Passport in UNTP 0.6.0 include:
- Restructured credential subject: The
credentialSubjectnow uses aProductPassporttype with an embeddedproductobject, replacing the directProductreference, to better encapsulate claims and metadata. - Simplified issuer identifier: The
otherIdentifierproperty in the issuer is replaced withissuerAlsoKnownAs, removing the nestedidSchemestructure. - Simplified party and facility structures: The
producedByPartyandproducedAtFacilityproperties in theproductremoved the nestedidSchemestructure. - New characteristics field: Added a
characteristicsproperty to theproductobject as an extension point for industry-specific attributes. - Renamed material properties: In the
Materialschema,massAmountis renamed tomass, andrecycledAmountis renamed torecycledMassFractionfor clarity. - Enhanced criterion schema: The
Criterionschema now includesdescription,conformityTopic,status,subCriterion,thresholdValue,performanceLevel, andtags. - Updated JSON-LD context: The context URL is updated to reflect version 0.6.0.
- Schema refinements: Improved validation patterns, including stricter type constraints and date-time formats, for consistency with other UNTP credentials. See the details above.
Data Model Changes
1. JSON-LD Context Updates
Before (0.5.0):
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://vocabulary.uncefact.org/untp/dpp/0.5.0/"
]
After (0.6.0):
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://test.uncefact.org/vocabulary/untp/dpp/0.6.0/"
]
2. Credential Subject Structure
The credentialSubject has been restructured to use a ProductPassport type, which encapsulates a product object and additional metadata like granularityLevel and claims.
Example data structure change:
Before (0.5.0):
{
"credentialSubject": {
"type": ["Product"],
"id": "https://id.gs1.org/01/09520123456788/21/12345",
"name": "EV battery 300Ah.",
"registeredId": "09520123456788.21.12345",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://id.gs1.org/01/",
"name": "Global Trade Identification Number (GTIN)"
},
"conformityClaim": [...]
}
}
After (0.6.0):
{
"credentialSubject": {
"type": ["ProductPassport"],
"id": "example:product/1234",
"product": {
"type": ["Product"],
"id": "https://id.gs1.org/01/09520123456788/21/12345",
"name": "EV battery 300Ah.",
"registeredId": "09520123456788.21.12345"
},
"granularityLevel": "item",
"conformityClaim": [...]
}
}
3. Issuer Identifier Structure
The issuer’s otherIdentifier property is replaced with issuerAlsoKnownAs, simplifying the structure by removing the idScheme reference.
Example data structure change:
Before (0.5.0):
{
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:identifiers.example-company.com:12345",
"name": "Example Company Pty Ltd",
"otherIdentifier": [
{
"type": ["Identifier"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
}
]
}
}
After (0.6.0):
{
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:identifiers.example-company.com:12345",
"name": "Example Company Pty Ltd",
"issuerAlsoKnownAs": [
{
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327"
}
]
}
}
4. Product Structure Changes
Key Changes:
producedByPartyandproducedAtFacilityproperties removed the nestedidSchemestructure.- Added
characteristicsproperty as an extension point for industry-specific attributes. - Removed
idSchemefrom theproductobject itself, as it’s no longer required in the inline structure.
Example: producedByParty structure change
Before (0.5.0):
{
"credentialSubject": {
"type": ["Product"],
"producedByParty": {
"type": ["Identifier"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Sample Company Pty Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
}
}
}
After (0.6.0):
{
"credentialSubject": {
"type": ["ProductPassport"],
"product": {
"type": ["Product"],
"producedByParty": {
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Sample Company Pty Ltd.",
"registeredId": "90664869327"
}
}
}
}
Example: producedAtFacility structure change
Before (0.5.0):
{
"credentialSubject": {
"type": ["Product"],
"producedAtFacility": {
"type": ["Identifier"],
"id": "https://sample-facility-register.com/1234567",
"name": "Greenacres battery factory",
"registeredId": "1234567",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://id.gs1.org/414/",
"name": "Global Location Number"
}
}
}
}
After (0.6.0):
{
"credentialSubject": {
"type": ["ProductPassport"],
"product": {
"type": ["Product"],
"producedAtFacility": {
"id": "https://sample-facility-register.com/1234567",
"name": "Greenacres battery factory",
"registeredId": "1234567"
}
}
}
}
Example: characteristics addition
After (0.6.0):
{
"credentialSubject": {
"type": ["ProductPassport"],
"product": {
"type": ["Product"],
"characteristics": {
"type": ["Characteristics"],
"capacity": "300 Ah"
}
}
}
}
5. Material Structure Changes
Key Changes:
- Renamed
massAmounttomassandrecycledAmounttorecycledMassFraction. - Simplified
issuingPartyin theStandardandadministeredByinRegulationby removing the nestedidSchemestructure.
Example: material structure change
Before (0.5.0):
{
"credentialSubject": {
"type": ["Product"],
"materialsProvenance": [
{
"type": ["Material"],
"name": "Lithium Spodumene",
"massAmount": {
"type": ["Measure"],
"value": 10,
"unit": "KGM"
},
"recycledAmount": 0.5
}
]
}
}
After (0.6.0):
{
"credentialSubject": {
"type": ["ProductPassport"],
"materialsProvenance": [
{
"name": "Lithium Spodumene",
"mass": {
"value": 10,
"unit": "KGM"
},
"recycledMassFraction": 0.5
}
]
}
}
Example: issuingParty structure change (Standard schema)
Before (0.5.0):
{
"credentialSubject": {
"type": ["Product"],
"conformityClaim": [
{
"type": ["Claim", "Declaration"],
"referenceStandard": {
"type": ["Standard"],
"id": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf",
"name": "GBA Battery Passport Greenhouse Gas Rulebook - V.2.0",
"issuingParty": {
"type": ["Identifier"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Global Battery Alliance",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
}
}
}
]
}
}
After (0.6.0):
{
"credentialSubject": {
"type": ["ProductPassport"],
"conformityClaim": [
{
"type": ["Claim", "Declaration"],
"referenceStandard": {
"type": ["Standard"],
"id": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf",
"name": "GBA Battery Passport Greenhouse Gas Rulebook - V.2.0",
"issuingParty": {
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Global Battery Alliance",
"registeredId": "90664869327"
}
}
}
]
}
}
Example: administeredBy structure change (Regulation schema)
Before (0.5.0):
{
"credentialSubject": {
"type": ["Product"],
"conformityClaim": [
{
"type": ["Claim", "Declaration"],
"referenceRegulation": {
"type": ["Regulation"],
"id": "https://www.legislation.gov.au/F2008L02309/latest/versions",
"name": "National Greenhouse and Energy Reporting (Measurement) Determination",
"administeredBy": {
"type": ["Identifier"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Australian Government Department of Climate Change",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
}
}
}
]
}
}
After (0.6.0):
{
"credentialSubject": {
"type": ["ProductPassport"],
"conformityClaim": [
{
"type": ["Claim", "Declaration"],
"referenceRegulation": {
"type": ["Regulation"],
"id": "https://www.legislation.gov.au/F2008L02309/latest/versions",
"name": "National Greenhouse and Energy Reporting (Measurement) Determination",
"administeredBy": {
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Australian Government Department of Climate Change",
"registeredId": "90664869327"
}
}
}
]
}
}
6. Criterion Structure Enhancements
Criterion now includes additional fields: description, conformityTopic, status, subCriterion, thresholdValue (replacing thresholdValues), performanceLevel, and tags. The thresholdValues property has been renamed to thresholdValue to reflect a singular metric focus per criterion. The subCriterion property allows for hierarchical structuring, enabling a criterion to reference subordinate criteria.
Example: criterion structure change
Before (0.5.0):
{
"credentialSubject": {
"conformityClaim": [
{
"type": ["Claim", "Declaration"],
"assessmentCriteria": [
{
"type": ["Criterion"],
"id": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf#BatteryAssembly",
"name": "GBA Battery rule book v2.0 battery assembly guidelines.",
"thresholdValues": [
{
"metricName": "Recyclability",
"metricValue": {
"value": 0.73,
"unit": "fraction"
}
}
]
}
]
}
]
}
}
After (0.6.0):
{
"credentialSubject": {
"type": ["ProductPassport"],
"conformityClaim": [
{
"type": ["Claim", "Declaration"],
"assessmentCriteria": [
{
"type": ["Criterion"],
"id": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf#BatteryAssembly",
"name": "GBA Battery rule book v2.0 battery assembly guidelines.",
"description": "Battery is designed for easy disassembly and recycling at end-of-life.",
"conformityTopic": "circularity.design",
"status": "active",
"thresholdValue": {
"metricName": "Recyclability",
"metricValue": {
"value": 0.73,
"unit": "fraction"
}
},
"performanceLevel": "Category 3 recyclable with 73% recyclability",
"tags": "battery, recycling",
"subCriterion": [
{
"type": ["Criterion"],
"id": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf#BatteryDisassembly",
"name": "Battery disassembly requirements",
"description": "Ensures battery components can be separated without specialized tools.",
"conformityTopic": "circularity.design",
"status": "active",
"thresholdValue": {
"metricName": "Disassembly Time",
"metricValue": {
"value": 30,
"unit": "minutes"
}
},
"performanceLevel": "Category 3 efficient disassembly",
"tags": "battery, disassembly"
}
]
}
]
}
]
}
}
Reference Implementation Updates
1. Schema URL Updates
Before (0.5.0):
"schema": {
"url": "https://jargon.sh/user/unece/DigitalProductPassport/v/working/artefacts/jsonSchemas/Product.json?class=Product"
}
After (0.6.0):
"schema": {
"url": "https://jargon.sh/user/unece/DigitalProductPassport/v/0.6.0/artefacts/jsonSchemas/ProductPassport.json?class=ProductPassport"
}
2. Context Configuration in Services
Before (0.5.0):
"dpp": {
"context": ["https://vocabulary.uncefact.org/untp/dpp/0.5.0/"]
}
After (0.6.0):
"dpp": {
"context": ["https://test.uncefact.org/vocabulary/untp/dpp/0.6.0/"]
}
3. Form Data Structure Updates
Update the data structure for the JsonForm component to conform to the new ProductPassport schema, reflecting the restructured credentialSubject, simplified identifiers, and new fields.
Before (0.5.0):
"data": {
"type": ["Product"],
"id": "https://id.gs1.org/01/09520123456788/21/12345",
"name": "EV battery 300Ah.",
"registeredId": "09520123456788.21.12345",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://id.gs1.org/01/",
"name": "Global Trade Identification Number (GTIN)"
},
"producedByParty": {
"type": ["Identifier"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Sample Company Pty Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
},
"materialsProvenance": [
{
"name": "Lithium Spodumene",
"massAmount": {
"value": 10,
"unit": "KGM"
},
"recycledAmount": 0.5
}
]
}
After (0.6.0):
"data": {
"type": ["ProductPassport"],
"id": "https://example.com/products/09520123456788",
"product": {
"type": ["Product"],
"id": "https://id.gs1.org/01/09520123456788/21/12345",
"name": "EV battery 300Ah.",
"registeredId": "09520123456788.21.12345",
"producedByParty": {
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Sample Company Pty Ltd.",
"registeredId": "90664869327"
},
"characteristics": {
"type": ["Characteristics"],
"capacity": "300 Ah"
}
},
"granularityLevel": "item",
"materialsProvenance": [
{
"name": "Lithium Spodumene",
"mass": {
"value": 10,
"unit": "KGM"
},
"recycledMassFraction": 0.5
}
],
"conformityClaim": [
{
"type": ["Claim", "Declaration"],
"id": "https://example.com/claims/12345",
"conformance": true,
"conformityTopic": "circularity.design",
"assessmentDate": "2024-03-15",
"referenceStandard": {
"type": ["Standard"],
"id": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf",
"name": "GBA Battery Passport Greenhouse Gas Rulebook - V.2.0",
"issuingParty": {
"id": "https://example.com/parties/gba",
"name": "Global Battery Alliance",
"registeredId": "GBA123"
}
},
"referenceRegulation": {
"type": ["Regulation"],
"id": "https://www.legislation.gov.au/F2008L02309/latest/versions",
"name": "National Greenhouse and Energy Reporting (Measurement) Determination",
"administeredBy": {
"id": "https://example.com/parties/dcceew",
"name": "Australian Government Department of Climate Change",
"registeredId": "DCCEEW123"
}
},
"assessmentCriteria": [
{
"type": ["Criterion"],
"id": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf#BatteryAssembly",
"name": "GBA Battery rule book v2.0 battery assembly guidelines.",
"description": "Battery is designed for easy disassembly and recycling at end-of-life.",
"conformityTopic": "circularity.design",
"status": "active",
"thresholdValue": {
"metricName": "Recyclability",
"metricValue": {
"value": 0.73,
"unit": "fraction"
}
},
"performanceLevel": "Category 3 recyclable with 73% recyclability",
"tags": "battery, recycling",
"subCriterion": [
{
"type": ["Criterion"],
"id": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf#BatteryDisassembly",
"name": "Battery disassembly requirements",
"description": "Ensures battery components can be separated without specialized tools.",
"conformityTopic": "circularity.design",
"status": "active",
"thresholdValue": {
"metricName": "Disassembly Time",
"metricValue": {
"value": 30,
"unit": "minutes"
}
},
"performanceLevel": "Category 3 efficient disassembly",
"tags": "battery, disassembly"
}
]
}
]
}
]
}
4. Render Template Updates
Update the render template to use the new 0.6.0 compliant template. The updated template can be found at:
packages/reference-implementation/src/templates/v0.6.0/digital_product_passport/template.hbs
Example template configuration update:
Before (0.5.0):
"renderTemplate": [
{
"type": "WebRenderingTemplate2022",
"template": "{v0.5.0-template}..."
}
]
After (0.6.0):
"renderTemplate": [
{
"type": "WebRenderingTemplate2022",
"template": "{v0.6.0-template}..."
}
]
5. VCkit Issuer Structure Updates
Update the VCkit issuer configuration to use the new issuerAlsoKnownAs structure:
Before (0.5.0):
"vckit": {
"vckitAPIUrl": "http://localhost:3332/v2",
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:uncefact.github.io:project-vckit:test-and-development",
"name": "Example Company Pty Ltd",
"otherIdentifier": [
{
"type": ["Identifier"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
}
]
},
"headers": {...}
}
After (0.6.0):
"vckit": {
"vckitAPIUrl": "http://localhost:3332/v2",
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:uncefact.github.io:project-vckit:test-and-development",
"name": "Example Company Pty Ltd",
"issuerAlsoKnownAs": [
{
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327"
}
]
},
"headers": {...}
}
Digital Traceability Event (DTE)
Summary of Changes
The main changes to the Digital Traceability Event (DTE) in UNTP 0.6.0 include:
- Simplified issuer identifier: The
otherIdentifierproperty in the issuer is replaced withissuerAlsoKnownAs, removing the nestedidSchemestructure. - Updated party identifiers in TransactionEvent: The
sourcePartyIdanddestinationPartyIdproperties are renamed tosourcePartyanddestinationPartyrespectively. - Updated JSON-LD context: The context URL is updated to reflect version 0.6.0.
- Schema refinements: Improved validation patterns, including stricter type constraints and date-time formats, for consistency with other UNTP credentials. See the details above.
Data Model Changes
1. JSON-LD Context Updates
Before (0.5.0):
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://vocabulary.uncefact.org/untp/dte/0.5.0/"
]
After (0.6.0):
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://test.uncefact.org/vocabulary/untp/dte/0.6.0/"
]
2. Issuer Identifier Structure
The issuer’s otherIdentifier property is replaced with issuerAlsoKnownAs, simplifying the structure by removing the idScheme reference.
Example data structure change:
Before (0.5.0):
{
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:identifiers.example-company.com:12345",
"name": "Example Company Pty Ltd",
"otherIdentifier": [
{
"type": ["Identifier"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
}
]
}
}
After (0.6.0):
{
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:identifiers.example-company.com:12345",
"name": "Example Company Pty Ltd",
"issuerAlsoKnownAs": [
{
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327"
}
]
}
}
3. TransactionEvent Party Structure
Key Changes:
sourcePartyIdanddestinationPartyIdare renamed tosourcePartyanddestinationPartyrespectively.
Example: TransactionEvent structure change
Before (0.5.0):
{
"type": ["TransactionEvent", "Event"],
"id": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd",
"processType": "Shipment",
"eventTime": "2024-09-01T12:00:00",
"action": "observe",
"bizStep": "urn:epcglobal:cbv:bizStep:shipping",
"disposition": "urn:epcglobal:cbv:disp:in_transit",
"bizLocation": "https://id.gs1.org/414/9520123456788",
"sourcePartyId": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"destinationPartyId": "https://abr.business.gov.au/ABN/View?abn=12345678901",
"bizTransaction": "urn:epcglobal:cbv:btt:po",
"epcList": [
{
"type": ["Item"],
"id": "https://id.gs1.org/01/09520123456788/21/12345",
"name": "EV battery 300Ah."
}
]
}
After (0.6.0):
{
"type": ["TransactionEvent", "Event"],
"id": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd",
"processType": "Shipment",
"eventTime": "2024-09-01T12:00:00Z",
"action": "observe",
"bizStep": "urn:epcglobal:cbv:bizStep:shipping",
"disposition": "urn:epcglobal:cbv:disp:in_transit",
"bizLocation": "https://id.gs1.org/414/9520123456788",
"sourceParty": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"destinationParty": "https://abr.business.gov.au/ABN/View?abn=12345678901",
"bizTransaction": "urn:epcglobal:cbv:btt:po",
"epcList": [
{
"type": ["Item"],
"id": "https://id.gs1.org/01/09520123456788/21/12345",
"name": "EV battery 300Ah."
}
]
}
Reference Implementation Updates
1. Schema URL Updates
The schema URL depends on the specific event type being issued (e.g., TransactionEvent, ObjectEvent, AssociationEvent, AggregationEvent, TransformationEvent). Below is an example for TransactionEvent.
Before (0.5.0):
"schema": {
"url": "https://jargon.sh/user/unece/traceabilityEvents/v/working/artefacts/jsonSchemas/TransactionEvent.json?class=TransactionEvent"
}
After (0.6.0):
"schema": {
"url": "https://jargon.sh/user/unece/traceabilityEvents/v/0.6.0/artefacts/jsonSchemas/TransactionEvent.json?class=TransactionEvent"
}
Note: Replace TransactionEvent with the appropriate event type (e.g., ObjectEvent, AssociationEvent, AggregationEvent, TransformationEvent) based on the event being issued. For example, for an ObjectEvent:
Before (0.5.0):
"schema": {
"url": "https://jargon.sh/user/unece/traceabilityEvents/v/working/artefacts/jsonSchemas/ObjectEvent.json?class=ObjectEvent"
}
After (0.6.0):
"schema": {
"url": "https://jargon.sh/user/unece/traceabilityEvents/v/0.6.0/artefacts/jsonSchemas/ObjectEvent.json?class=ObjectEvent"
}
2. Context Configuration in Services
Before (0.5.0):
"traceabilityEvent": {
"context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"]
}
After (0.6.0):
"traceabilityEvent": {
"context": ["https://test.uncefact.org/vocabulary/untp/dte/0.6.0/"]
}
3. Form Data Structure Updates (Transaction Event)
Update the data structure for the JsonForm component to conform to the new TransactionEvent schema, reflecting the renamed sourceParty and destinationParty properties.
Before (0.5.0):
"data": {
"type": ["TransactionEvent", "Event"],
"id": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd",
"processType": "Shipment",
"eventTime": "2024-09-01T12:00:00",
"action": "observe",
"bizStep": "urn:epcglobal:cbv:bizStep:shipping",
"disposition": "urn:epcglobal:cbv:disp:in_transit",
"bizLocation": "https://id.gs1.org/414/9520123456788",
"sourcePartyId": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"destinationPartyId": "https://abr.business.gov.au/ABN/View?abn=12345678901",
"bizTransaction": "urn:epcglobal:cbv:btt:po",
"epcList": [
{
"type": ["Item"],
"id": "https://id.gs1.org/01/09520123456788/21/12345",
"name": "EV battery 300Ah."
}
]
}
After (0.6.0):
"data": {
"type": ["TransactionEvent", "Event"],
"id": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd",
"processType": "Shipment",
"eventTime": "2024-09-01T12:00:00Z",
"action": "observe",
"bizStep": "urn:epcglobal:cbv:bizStep:shipping",
"disposition": "urn:epcglobal:cbv:disp:in_transit",
"bizLocation": "https://id.gs1.org/414/9520123456788",
"sourceParty": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"destinationParty": "https://abr.business.gov.au/ABN/View?abn=12345678901",
"bizTransaction": "urn:epcglobal:cbv:btt:po",
"epcList": [
{
"type": ["Item"],
"id": "https://id.gs1.org/01/09520123456788/21/12345",
"name": "EV battery 300Ah."
}
]
}
4. Render Template Updates
Update the render template to use the new 0.6.0 compliant template. The updated template can be found at:
packages/reference-implementation/src/templates/v0.6.0/digital_traceability_event/template.hbs
Example template configuration update:
Before (0.5.0):
"renderTemplate": [
{
"type": "WebRenderingTemplate2022",
"template": "{v0.5.0-template}..."
}
]
After (0.6.0):
"renderTemplate": [
{
"type": "WebRenderingTemplate2022",
"template": "{v0.6.0-template}..."
}
]
5. VCkit Issuer Structure Updates
Update the VCkit issuer configuration to use the new issuerAlsoKnownAs structure:
Before (0.5.0):
"vckit": {
"vckitAPIUrl": "http://localhost:3332/v2",
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:uncefact.github.io:project-vckit:test-and-development",
"name": "Example Company Pty Ltd",
"otherIdentifier": [
{
"type": ["Identifier"],
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327",
"idScheme": {
"type": ["IdentifierScheme"],
"id": "https://abr.business.gov.au/ABN/",
"name": "Australian Business Number (ABN)"
}
}
]
},
"headers": {...}
}
After (0.6.0):
"vckit": {
"vckitAPIUrl": "http://localhost:3332/v2",
"issuer": {
"type": ["CredentialIssuer"],
"id": "did:web:uncefact.github.io:project-vckit:test-and-development",
"name": "Example Company Pty Ltd",
"issuerAlsoKnownAs": [
{
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "Example Company Pty Ltd.",
"registeredId": "90664869327"
}
]
},
"headers": {...}
}