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
url
has changed from/v1/documents
to/api/1.0.0/documents
. -
Identity Resolver (IDR) Service Configuration
The IDR Service configuration URL and
linkRegisterPath
have 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
dlrAPIUrl
now includes the/api/1.0.0
path, and thelinkRegisterPath
no 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
url
now includes the/api/1.0.0
path.
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_data
directory 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
idScheme
references - 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:
otherIdentifier
property replaced with newfacilityAlsoKnownAs
propertyoperatedByParty
structure 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/mock-app/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
Identifier
type 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/mock-app/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
otherIdentifier
property is replaced withissuerAlsoKnownAs
, removing the nestedidScheme
structure. - Simplified party structures: The
issuedToParty
,assessedOrganisation
, andauditor
properties now use inline objects instead of referencing theIdentifier
orParty
schemas, removingidScheme
. - New verification structures:
assessedProduct
now usesProductVerification
instead ofProduct
, incorporating an inlineproduct
object andIDverifiedByCAB
.assessedFacility
now usesFacilityVerification
instead ofFacility
, with an inlinefacility
object 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:
issuedToParty
simplified from anIdentifier
reference to an inline object structure, removingidScheme
.- Similar simplifications applied to
assessedOrganisation
andauditor
properties within theassessment
array.
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:
assessedProduct
simplified from a genericProduct
with complex identifiers toProductVerification
with an inlineproduct
object andIDverifiedByCAB
boolean.assessedFacility
simplified from a genericFacility
with complex identifiers toFacilityVerification
with an inlinefacility
object andIDverifiedByCAB
boolean.assessedOrganisation
andauditor
simplified to inline party objects, removingidScheme
references.
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/mock-app/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
credentialSubject
now uses aProductPassport
type with an embeddedproduct
object, replacing the directProduct
reference, to better encapsulate claims and metadata. - Simplified issuer identifier: The
otherIdentifier
property in the issuer is replaced withissuerAlsoKnownAs
, removing the nestedidScheme
structure. - Simplified party and facility structures: The
producedByParty
andproducedAtFacility
properties in theproduct
removed the nestedidScheme
structure. - New characteristics field: Added a
characteristics
property to theproduct
object as an extension point for industry-specific attributes. - Renamed material properties: In the
Material
schema,massAmount
is renamed tomass
, andrecycledAmount
is renamed torecycledMassFraction
for clarity. - Enhanced criterion schema: The
Criterion
schema 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:
producedByParty
andproducedAtFacility
properties removed the nestedidScheme
structure.- Added
characteristics
property as an extension point for industry-specific attributes. - Removed
idScheme
from theproduct
object 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
massAmount
tomass
andrecycledAmount
torecycledMassFraction
. - Simplified
issuingParty
in theStandard
andadministeredBy
inRegulation
by removing the nestedidScheme
structure.
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/mock-app/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
otherIdentifier
property in the issuer is replaced withissuerAlsoKnownAs
, removing the nestedidScheme
structure. - Updated party identifiers in TransactionEvent: The
sourcePartyId
anddestinationPartyId
properties are renamed tosourceParty
anddestinationParty
respectively. - 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:
sourcePartyId
anddestinationPartyId
are renamed tosourceParty
anddestinationParty
respectively.
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/mock-app/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": {...}
}