Skip to main content
Version: 0.2.0

v0.6.0

info

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:

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

  1. 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.

  2. 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 the linkRegisterPath no longer has a leading /.

  3. 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 new facilityAlsoKnownAs property
  • operatedByParty structure simplified from Identifier.

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 from RegisteredIdentity

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 with issuerAlsoKnownAs, removing the nested idScheme structure.
  • Simplified party structures: The issuedToParty, assessedOrganisation, and auditor properties now use inline objects instead of referencing the Identifier or Party schemas, removing idScheme.
  • New verification structures:
    • assessedProduct now uses ProductVerification instead of Product, incorporating an inline product object and IDverifiedByCAB.
    • assessedFacility now uses FacilityVerification instead of Facility, with an inline facility object and IDverifiedByCAB.
  • 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 an Identifier reference to an inline object structure, removing idScheme.
  • Similar simplifications applied to assessedOrganisation and auditor properties within the assessment 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 generic Product with complex identifiers to ProductVerification with an inline product object and IDverifiedByCAB boolean.
  • assessedFacility simplified from a generic Facility with complex identifiers to FacilityVerification with an inline facility object and IDverifiedByCAB boolean.
  • assessedOrganisation and auditor simplified to inline party objects, removing idScheme 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 a ProductPassport type with an embedded product object, replacing the direct Product reference, to better encapsulate claims and metadata.
  • Simplified issuer identifier: The otherIdentifier property in the issuer is replaced with issuerAlsoKnownAs, removing the nested idScheme structure.
  • Simplified party and facility structures: The producedByParty and producedAtFacility properties in the product removed the nested idScheme structure.
  • New characteristics field: Added a characteristics property to the product object as an extension point for industry-specific attributes.
  • Renamed material properties: In the Material schema, massAmount is renamed to mass, and recycledAmount is renamed to recycledMassFraction for clarity.
  • Enhanced criterion schema: The Criterion schema now includes description, conformityTopic, status, subCriterion, thresholdValue, performanceLevel, and tags.
  • 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 and producedAtFacility properties removed the nested idScheme structure.
  • Added characteristics property as an extension point for industry-specific attributes.
  • Removed idScheme from the product 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 to mass and recycledAmount to recycledMassFraction.
  • Simplified issuingParty in the Standard and administeredBy in Regulation by removing the nested idScheme 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 with issuerAlsoKnownAs, removing the nested idScheme structure.
  • Updated party identifiers in TransactionEvent: The sourcePartyId and destinationPartyId properties are renamed to sourceParty and destinationParty 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 and destinationPartyId are renamed to sourceParty and destinationParty 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": {...}
}