diff --git a/packages/untp-test-suite/credentials/conformityCredential/DigitalConformityCredential_instance-v0.4.0.json b/packages/untp-test-suite/credentials/conformityCredential/DigitalConformityCredential_instance-v0.4.0.json new file mode 100644 index 00000000..8b326f95 --- /dev/null +++ b/packages/untp-test-suite/credentials/conformityCredential/DigitalConformityCredential_instance-v0.4.0.json @@ -0,0 +1,495 @@ +{ + "type": ["DigitalProductPassport", "VerifiableCredential"], + "@context": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.4.0/"], + "id": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "issuer": { + "type": ["CredentialIssuer"], + "id": "did:web:identifiers.example-company.com:12345", + "name": "Example Company Pty Ltd", + "otherIdentifiers": [ + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + } + ] + }, + "validFrom": "2024-03-15T12:00:00", + "validUntil": "2034-03-15T12:00:00", + "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)" + }, + "serialNumber": "12345678", + "batchNumber": "6789", + "productImage": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "description": "400Ah 24v LiFePO4 battery", + "productCategory": [ + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + } + ], + "furtherInformation": [ + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + ], + "producedByParty": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "producedAtFacility": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "dimensions": { + "weight": { + "value": 10, + "unit": "KGM" + }, + "length": { + "value": 10, + "unit": "KGM" + }, + "width": { + "value": 10, + "unit": "KGM" + }, + "height": { + "value": 10, + "unit": "KGM" + }, + "volume": { + "value": 10, + "unit": "KGM" + } + }, + "productionDate": "2024-04-25", + "countryOfProduction": "AU", + "dueDiligenceDeclaration": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "materialsProvenance": [ + { + "name": "Lithium Spodumene", + "originCountry": "AU", + "materialType": { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + "massFraction": 0.2, + "massAmount": { + "value": 10, + "unit": "KGM" + }, + "recycledAmount": 0.5, + "hazardous": false, + "symbol": "undefined", + "materialSafetyInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + }, + { + "name": "Lithium Spodumene", + "originCountry": "AU", + "materialType": { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + "massFraction": 0.2, + "massAmount": { + "value": 10, + "unit": "KGM" + }, + "recycledAmount": 0.5, + "hazardous": false, + "symbol": "undefined", + "materialSafetyInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + } + ], + "conformityClaims": [ + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "Enumeration Value", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + }, + { + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValues": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "compliance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + }, + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "Enumeration Value", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + }, + { + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValues": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "compliance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + } + ], + "circularityScorecard": { + "recyclingInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "repairInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "recyclableContent": 0.5, + "recyecledContent": 0.3, + "utilityFactor": 1.2, + "materialCircularityIndicator": 0.67 + }, + "emissionsScorecard": { + "carbonFootprint": 1.8, + "declaredUnit": "KGM", + "operationalScope": "CradleToGate", + "primarySourcedRatio": 0.3, + "reportingStandard": { + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + } + }, + "traceabilityInformation": { + "valueChainProcess": "Spinning", + "verifiedRatio": 0.5, + "traceabilityEvents": [ + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + }, + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + ] + } + } +} diff --git a/packages/untp-test-suite/credentials/conformityCredential/DigitalConformityCredential_instance-v0.4.1.json b/packages/untp-test-suite/credentials/conformityCredential/DigitalConformityCredential_instance-v0.4.1.json new file mode 100644 index 00000000..727d5f16 --- /dev/null +++ b/packages/untp-test-suite/credentials/conformityCredential/DigitalConformityCredential_instance-v0.4.1.json @@ -0,0 +1,536 @@ +{ + "type": ["DigitalProductPassport", "VerifiableCredential"], + "@context": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.4.1/"], + "id": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "issuer": { + "type": ["CredentialIssuer"], + "id": "did:web:identifiers.example-company.com:12345", + "name": "Example Company Pty Ltd", + "otherIdentifier": [ + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + } + ] + }, + "validFrom": "2024-03-15T12:00:00", + "validUntil": "2034-03-15T12:00:00", + "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)" + }, + "serialNumber": "12345678", + "batchNumber": "6789", + "productImage": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "description": "400Ah 24v LiFePO4 battery", + "productCategory": [ + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + } + ], + "furtherInformation": [ + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + ], + "producedByParty": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "producedAtFacility": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "dimensions": { + "weight": { + "value": 10, + "unit": "KGM" + }, + "length": { + "value": 10, + "unit": "KGM" + }, + "width": { + "value": 10, + "unit": "KGM" + }, + "height": { + "value": 10, + "unit": "KGM" + }, + "volume": { + "value": 10, + "unit": "KGM" + } + }, + "productionDate": "2024-04-25", + "countryOfProduction": "AU", + "granularityLevel": "batch", + "dueDiligenceDeclaration": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "materialsProvenance": [ + { + "name": "Lithium Spodumene", + "originCountry": "AU", + "materialType": { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + "massFraction": 0.2, + "massAmount": { + "value": 10, + "unit": "KGM" + }, + "recycledAmount": 0.5, + "hazardous": false, + "symbol": "undefined", + "materialSafetyInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + }, + { + "name": "Lithium Spodumene", + "originCountry": "AU", + "materialType": { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + "massFraction": 0.2, + "massAmount": { + "value": 10, + "unit": "KGM" + }, + "recycledAmount": 0.5, + "hazardous": false, + "symbol": "undefined", + "materialSafetyInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + } + ], + "conformityClaim": [ + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "declaredValue": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "Enumeration Value", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + }, + { + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValues": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "compliance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + }, + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "declaredValue": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "Enumeration Value", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + }, + { + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValues": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "compliance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + } + ], + "circularityScorecard": { + "recyclingInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "repairInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "recyclableContent": 0.5, + "recycledContent": 0.3, + "utilityFactor": 1.2, + "materialCircularityIndicator": 0.67 + }, + "emissionsScorecard": { + "carbonFootprint": 1.8, + "declaredUnit": "KGM", + "operationalScope": "CradleToGate", + "primarySourcedRatio": 0.3, + "reportingStandard": { + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + } + }, + "traceabilityInformation": { + "valueChainProcess": "Spinning", + "verifiedRatio": 0.5, + "traceabilityEvent": [ + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + }, + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + ] + } + } +} diff --git a/packages/untp-test-suite/credentials/conformityCredential/DigitalConformityCredential_instance-v0.4.2.json b/packages/untp-test-suite/credentials/conformityCredential/DigitalConformityCredential_instance-v0.4.2.json new file mode 100644 index 00000000..73583da0 --- /dev/null +++ b/packages/untp-test-suite/credentials/conformityCredential/DigitalConformityCredential_instance-v0.4.2.json @@ -0,0 +1,536 @@ +{ + "type": ["DigitalProductPassport", "VerifiableCredential"], + "@context": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.4.2/"], + "id": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "issuer": { + "type": ["CredentialIssuer"], + "id": "did:web:identifiers.example-company.com:12345", + "name": "Example Company Pty Ltd", + "otherIdentifier": [ + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + } + ] + }, + "validFrom": "2024-03-15T12:00:00", + "validUntil": "2034-03-15T12:00:00", + "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)" + }, + "serialNumber": "12345678", + "batchNumber": "6789", + "productImage": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "description": "400Ah 24v LiFePO4 battery", + "productCategory": [ + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + } + ], + "furtherInformation": [ + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + ], + "producedByParty": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "producedAtFacility": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "dimensions": { + "weight": { + "value": 10, + "unit": "KGM" + }, + "length": { + "value": 10, + "unit": "KGM" + }, + "width": { + "value": 10, + "unit": "KGM" + }, + "height": { + "value": 10, + "unit": "KGM" + }, + "volume": { + "value": 10, + "unit": "KGM" + } + }, + "productionDate": "2024-04-25", + "countryOfProduction": "AU", + "granularityLevel": "batch", + "dueDiligenceDeclaration": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "materialsProvenance": [ + { + "name": "Lithium Spodumene", + "originCountry": "AU", + "materialType": { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + "massFraction": 0.2, + "massAmount": { + "value": 10, + "unit": "KGM" + }, + "recycledAmount": 0.5, + "hazardous": false, + "symbol": "undefined", + "materialSafetyInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + }, + { + "name": "Lithium Spodumene", + "originCountry": "AU", + "materialType": { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + "massFraction": 0.2, + "massAmount": { + "value": 10, + "unit": "KGM" + }, + "recycledAmount": 0.5, + "hazardous": false, + "symbol": "undefined", + "materialSafetyInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + } + ], + "conformityClaim": [ + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "declaredValue": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "Enumeration Value", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + }, + { + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValues": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "compliance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + }, + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "declaredValue": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "Enumeration Value", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + }, + { + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValues": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "compliance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + } + ], + "circularityScorecard": { + "recyclingInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "repairInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "recyclableContent": 0.5, + "recycledContent": 0.3, + "utilityFactor": 1.2, + "materialCircularityIndicator": 0.67 + }, + "emissionsScorecard": { + "carbonFootprint": 1.8, + "declaredUnit": "KGM", + "operationalScope": "CradleToGate", + "primarySourcedRatio": 0.3, + "reportingStandard": { + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + } + }, + "traceabilityInformation": { + "valueChainProcess": "Spinning", + "verifiedRatio": 0.5, + "traceabilityEvent": [ + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + }, + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + ] + } + } +} diff --git a/packages/untp-test-suite/credentials/conformityCredential/DigitalConformityCredential_instance-v0.5.0.json b/packages/untp-test-suite/credentials/conformityCredential/DigitalConformityCredential_instance-v0.5.0.json new file mode 100644 index 00000000..36cea531 --- /dev/null +++ b/packages/untp-test-suite/credentials/conformityCredential/DigitalConformityCredential_instance-v0.5.0.json @@ -0,0 +1,536 @@ +{ + "type": ["DigitalProductPassport", "VerifiableCredential"], + "@context": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.5.0/"], + "id": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "issuer": { + "type": ["CredentialIssuer"], + "id": "did:web:identifiers.example-company.com:12345", + "name": "Example Company Pty Ltd", + "otherIdentifier": [ + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + } + ] + }, + "validFrom": "2024-03-15T12:00:00", + "validUntil": "2034-03-15T12:00:00", + "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)" + }, + "serialNumber": "12345678", + "batchNumber": "6789", + "productImage": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "description": "400Ah 24v LiFePO4 battery", + "productCategory": [ + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + } + ], + "furtherInformation": [ + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + ], + "producedByParty": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "producedAtFacility": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "dimensions": { + "weight": { + "value": 10, + "unit": "KGM" + }, + "length": { + "value": 10, + "unit": "KGM" + }, + "width": { + "value": 10, + "unit": "KGM" + }, + "height": { + "value": 10, + "unit": "KGM" + }, + "volume": { + "value": 10, + "unit": "KGM" + } + }, + "productionDate": "2024-04-25", + "countryOfProduction": "AU", + "granularityLevel": "batch", + "dueDiligenceDeclaration": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "materialsProvenance": [ + { + "name": "Lithium Spodumene", + "originCountry": "AU", + "materialType": { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + "massFraction": 0.2, + "massAmount": { + "value": 10, + "unit": "KGM" + }, + "recycledAmount": 0.5, + "hazardous": false, + "symbol": "undefined", + "materialSafetyInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + }, + { + "name": "Lithium Spodumene", + "originCountry": "AU", + "materialType": { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + "massFraction": 0.2, + "massAmount": { + "value": 10, + "unit": "KGM" + }, + "recycledAmount": 0.5, + "hazardous": false, + "symbol": "undefined", + "materialSafetyInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + } + ], + "conformityClaim": [ + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "declaredValue": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "Enumeration Value", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + }, + { + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValues": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "conformance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + }, + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "declaredValue": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "Enumeration Value", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + }, + { + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValues": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "conformance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + } + ], + "circularityScorecard": { + "recyclingInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "repairInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "recyclableContent": 0.5, + "recycledContent": 0.3, + "utilityFactor": 1.2, + "materialCircularityIndicator": 0.67 + }, + "emissionsScorecard": { + "carbonFootprint": 1.8, + "declaredUnit": "KGM", + "operationalScope": "CradleToGate", + "primarySourcedRatio": 0.3, + "reportingStandard": { + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + } + }, + "traceabilityInformation": { + "valueChainProcess": "Spinning", + "verifiedRatio": 0.5, + "traceabilityEvent": [ + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + }, + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + ] + } + } +} diff --git a/packages/untp-test-suite/credentials/digitalFacilityRecord/DigitalFacilityRecord_instance-v0.4.0.json b/packages/untp-test-suite/credentials/digitalFacilityRecord/DigitalFacilityRecord_instance-v0.4.0.json new file mode 100644 index 00000000..2031201f --- /dev/null +++ b/packages/untp-test-suite/credentials/digitalFacilityRecord/DigitalFacilityRecord_instance-v0.4.0.json @@ -0,0 +1,162 @@ +{ + "type": ["DigitalFacilityRecord", "VerifiableCredential"], + "@context": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dfr/0.4.0/"], + "id": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "issuer": { + "type": ["CredentialIssuer"], + "id": "did:web:identifiers.example-company.com:12345", + "name": "Example Company Pty Ltd", + "otherIdentifiers": [ + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "Battery Product Identifier", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + } + ] + }, + "validFrom": "2024-03-15T12:00:00Z", + "validUntil": "2034-03-15T12:00:00Z", + "credentialSubject": { + "type": ["Facility"], + "id": "https://id.gs1.org/gln/0614141123452", + "registeredId": "614141123452", + "name": "Example Facility 7", + "description": "LiFePO4 Battery Plant number 7", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + }, + "countryOfOperation": "AU", + "processCategories": [ + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + } + ], + "operatedByParty": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "Battery Manufacturing Company", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "address": { + "type": ["Address"], + "streetAddress": "Level 11, 15 London Circuit", + "postalCode": "2601", + "addressLocality": "Acton", + "addressRegion": "ACT", + "addressCountry": "AU" + }, + "locationInformation": { + "type": ["Location"], + "plusCode": "https://plus.codes/8CGRC78W+MM", + "geoLocation": { + "type": "Point", + "coordinates": [3.141579, 3.141579] + }, + "geoBoundary": { + "type": "Polygon", + "coordinates": [ + [ + [3.141579, 3.141579], + [3.141579, 3.141579] + ] + ] + } + }, + "conformityClaims": [ + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "compliance": true, + "conformityTopic": "environment.emissions", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "Battery Product Identifier", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "National Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "AU", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "Battery Product Identifier", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "assessmentCriteria": [ + { + "type": ["Criterion"], + "id": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf#BatteryAssembly", + "name": "Battery Assembly Guidelines", + "thresholdValues": [ + { + "type": ["Metric"], + "metricName": "GHG emissions intensity", + "metricValue": { "value": 10, "unit": "KGM" }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValues": [ + { + "type": ["Metric"], + "metricName": "GHG emissions intensity", + "metricValue": { "value": 10, "unit": "KGM" }, + "score": "BB", + "accuracy": 0.05 + } + ], + "conformityEvidence": { + "type": ["SecureLink", "Link"], + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA Rulebook Conformity Certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119dda5bd4c8a6ffb832fe16feaa5c27b7dba154d24c53d4470a2c69adc2", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + } + ] + } +} diff --git a/packages/untp-test-suite/credentials/digitalFacilityRecord/DigitalFacilityRecord_instance-v0.4.1.json b/packages/untp-test-suite/credentials/digitalFacilityRecord/DigitalFacilityRecord_instance-v0.4.1.json new file mode 100644 index 00000000..6d831f78 --- /dev/null +++ b/packages/untp-test-suite/credentials/digitalFacilityRecord/DigitalFacilityRecord_instance-v0.4.1.json @@ -0,0 +1,163 @@ +{ + "type": ["DigitalFacilityRecord", "VerifiableCredential"], + "@context": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dfr/0.4.1/"], + "id": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "issuer": { + "type": ["CredentialIssuer"], + "id": "did:web:identifiers.example-company.com:12345", + "name": "Example Company Pty Ltd", + "otherIdentifier": [ + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + } + ] + }, + "validFrom": "2024-03-15T12:00:00Z", + "validUntil": "2034-03-15T12:00:00Z", + "credentialSubject": { + "type": ["Facility"], + "id": "https://id.gs1.org/gln/0614141123452", + "registeredId": "614141123452", + "description": "LiFePO4 Battery Plant Number 7", + "name": "Example Facility 7", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + }, + "countryOfOperation": "AU", + "processCategory": [ + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + } + ], + "operatedByParty": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "Battery Production Facility", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "address": { + "type": ["Address"], + "streetAddress": "Level 11, 15 London Circuit", + "postalCode": "2601", + "addressLocality": "Acton", + "addressRegion": "ACT", + "addressCountry": "AU" + }, + "locationInformation": { + "type": ["Location"], + "plusCode": "https://plus.codes/8CGRC78W+MM", + "geoLocation": { + "type": "Point", + "coordinates": [3.141579, 3.141579] + }, + "geoBoundary": { + "type": "Polygon", + "coordinates": [[[3.141579, 3.141579]]] + } + }, + "conformityClaim": [ + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "Battery Production Facility", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "National Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "AU", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "Battery Production Facility", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "assessmentCriteria": [ + { + "type": ["Criterion"], + "id": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf#BatteryAssembly", + "name": "Battery Assembly Guidelines", + "thresholdValues": [ + { + "type": ["Metric"], + "metricName": "GHG Emissions Intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValue": [ + { + "type": ["Metric"], + "metricName": "GHG Emissions Intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "compliance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "type": ["SecureLink", "Link"], + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA Rulebook Conformity Certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119dda5bd4c8a6ffb832fe16feaa5c27b7dba154d24c53d4470a2c69adc2", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + } + ] + } +} diff --git a/packages/untp-test-suite/credentials/digitalFacilityRecord/DigitalFacilityRecord_instance-v0.4.2.json b/packages/untp-test-suite/credentials/digitalFacilityRecord/DigitalFacilityRecord_instance-v0.4.2.json new file mode 100644 index 00000000..3ccc51d9 --- /dev/null +++ b/packages/untp-test-suite/credentials/digitalFacilityRecord/DigitalFacilityRecord_instance-v0.4.2.json @@ -0,0 +1,176 @@ +{ + "type": ["DigitalFacilityRecord", "VerifiableCredential"], + "@context": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dfr/0.4.2/"], + "id": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "issuer": { + "type": ["CredentialIssuer"], + "id": "did:web:identifiers.example-company.com:12345", + "name": "Example Company Pty Ltd", + "otherIdentifier": [ + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + } + ] + }, + "validFrom": "2024-03-15T12:00:00Z", + "validUntil": "2034-03-15T12:00:00Z", + "credentialSubject": { + "type": ["Facility"], + "id": "https://id.gs1.org/gln/0614141123452", + "registeredId": "614141123452", + "description": "LiFePO4 Battery Plant Number 7", + "name": "Example Facility 7", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + }, + "countryOfOperation": "AU", + "processCategory": [ + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + } + ], + "operatedByParty": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "Battery Production Facility", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "otherIdentifier": [ + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + } + ], + "address": { + "type": ["Address"], + "streetAddress": "Level 11, 15 London Circuit", + "postalCode": "2601", + "addressLocality": "Acton", + "addressRegion": "ACT", + "addressCountry": "AU" + }, + "locationInformation": { + "type": ["Location"], + "plusCode": "https://plus.codes/8CGRC78W+MM", + "geoLocation": { + "type": "Point", + "coordinates": [3.141579, 3.141579] + }, + "geoBoundary": { + "type": "Polygon", + "coordinates": [[[3.141579, 3.141579]]] + } + }, + "conformityClaim": [ + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "Battery Production Facility", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "National Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "AU", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "Battery Production Facility", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "assessmentCriteria": [ + { + "type": ["Criterion"], + "id": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf#BatteryAssembly", + "name": "Battery Assembly Guidelines", + "thresholdValues": [ + { + "type": ["Metric"], + "metricName": "GHG Emissions Intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValue": [ + { + "type": ["Metric"], + "metricName": "GHG Emissions Intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "compliance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "type": ["SecureLink", "Link"], + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA Rulebook Conformity Certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119dda5bd4c8a6ffb832fe16feaa5c27b7dba154d24c53d4470a2c69adc2", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + } + ] + } +} diff --git a/packages/untp-test-suite/credentials/digitalFacilityRecord/DigitalFacilityRecord_instance-v0.5.0.json b/packages/untp-test-suite/credentials/digitalFacilityRecord/DigitalFacilityRecord_instance-v0.5.0.json new file mode 100644 index 00000000..88d2b60c --- /dev/null +++ b/packages/untp-test-suite/credentials/digitalFacilityRecord/DigitalFacilityRecord_instance-v0.5.0.json @@ -0,0 +1,366 @@ +{ + "type": ["DigitalFacilityRecord", "VerifiableCredential"], + "@context": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dfr/0.5.0/"], + "id": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "issuer": { + "type": ["CredentialIssuer"], + "id": "did:web:identifiers.example-company.com:12345", + "name": "Example Company Pty Ltd", + "otherIdentifier": [ + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + } + ] + }, + "validFrom": "2024-03-15T12:00:00", + "validUntil": "2034-03-15T12:00:00", + "credentialSubject": { + "type": ["Facility"], + "id": "https://id.gs1.org/gln/0614141123452", + "registeredId": "614141123452", + "description": "LiFePO4 Battery plant number 7", + "name": "Example facility 7", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + }, + "countryOfOperation": "AU", + "processCategory": [ + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + } + ], + "operatedByParty": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "otherIdentifier": [ + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + } + ], + "address": { + "streetAddress": "level 11, 15 London Circuit", + "postalCode": "2601", + "addressLocality": "Acton", + "addressRegion": "ACT", + "addressCountry": "AU" + }, + "locationInformation": { + "plusCode": "https://plus.codes/8CGRC78W+MM", + "geoLocation": { + "type": "Point", + "coordinates": [3.141579, 3.141579] + }, + "geoBoundary": { + "type": "Polygon", + "coordinates": [[[3.141579, 3.141579]]] + } + }, + "conformityClaim": [ + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "Enumeration Value", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + }, + { + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValue": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "conformance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + }, + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "Enumeration Value", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + }, + { + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValue": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "conformance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + } + ] + } +} diff --git a/packages/untp-test-suite/credentials/productPassport/DigitalProductPassport_instance-v0.4.0.json b/packages/untp-test-suite/credentials/productPassport/DigitalProductPassport_instance-v0.4.0.json new file mode 100644 index 00000000..8b326f95 --- /dev/null +++ b/packages/untp-test-suite/credentials/productPassport/DigitalProductPassport_instance-v0.4.0.json @@ -0,0 +1,495 @@ +{ + "type": ["DigitalProductPassport", "VerifiableCredential"], + "@context": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.4.0/"], + "id": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "issuer": { + "type": ["CredentialIssuer"], + "id": "did:web:identifiers.example-company.com:12345", + "name": "Example Company Pty Ltd", + "otherIdentifiers": [ + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + } + ] + }, + "validFrom": "2024-03-15T12:00:00", + "validUntil": "2034-03-15T12:00:00", + "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)" + }, + "serialNumber": "12345678", + "batchNumber": "6789", + "productImage": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "description": "400Ah 24v LiFePO4 battery", + "productCategory": [ + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + } + ], + "furtherInformation": [ + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + ], + "producedByParty": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "producedAtFacility": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "dimensions": { + "weight": { + "value": 10, + "unit": "KGM" + }, + "length": { + "value": 10, + "unit": "KGM" + }, + "width": { + "value": 10, + "unit": "KGM" + }, + "height": { + "value": 10, + "unit": "KGM" + }, + "volume": { + "value": 10, + "unit": "KGM" + } + }, + "productionDate": "2024-04-25", + "countryOfProduction": "AU", + "dueDiligenceDeclaration": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "materialsProvenance": [ + { + "name": "Lithium Spodumene", + "originCountry": "AU", + "materialType": { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + "massFraction": 0.2, + "massAmount": { + "value": 10, + "unit": "KGM" + }, + "recycledAmount": 0.5, + "hazardous": false, + "symbol": "undefined", + "materialSafetyInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + }, + { + "name": "Lithium Spodumene", + "originCountry": "AU", + "materialType": { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + "massFraction": 0.2, + "massAmount": { + "value": 10, + "unit": "KGM" + }, + "recycledAmount": 0.5, + "hazardous": false, + "symbol": "undefined", + "materialSafetyInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + } + ], + "conformityClaims": [ + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "Enumeration Value", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + }, + { + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValues": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "compliance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + }, + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "Enumeration Value", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + }, + { + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValues": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "compliance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + } + ], + "circularityScorecard": { + "recyclingInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "repairInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "recyclableContent": 0.5, + "recyecledContent": 0.3, + "utilityFactor": 1.2, + "materialCircularityIndicator": 0.67 + }, + "emissionsScorecard": { + "carbonFootprint": 1.8, + "declaredUnit": "KGM", + "operationalScope": "CradleToGate", + "primarySourcedRatio": 0.3, + "reportingStandard": { + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + } + }, + "traceabilityInformation": { + "valueChainProcess": "Spinning", + "verifiedRatio": 0.5, + "traceabilityEvents": [ + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + }, + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + ] + } + } +} diff --git a/packages/untp-test-suite/credentials/productPassport/DigitalProductPassport_instance-v0.4.1.json b/packages/untp-test-suite/credentials/productPassport/DigitalProductPassport_instance-v0.4.1.json new file mode 100644 index 00000000..727d5f16 --- /dev/null +++ b/packages/untp-test-suite/credentials/productPassport/DigitalProductPassport_instance-v0.4.1.json @@ -0,0 +1,536 @@ +{ + "type": ["DigitalProductPassport", "VerifiableCredential"], + "@context": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.4.1/"], + "id": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "issuer": { + "type": ["CredentialIssuer"], + "id": "did:web:identifiers.example-company.com:12345", + "name": "Example Company Pty Ltd", + "otherIdentifier": [ + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + } + ] + }, + "validFrom": "2024-03-15T12:00:00", + "validUntil": "2034-03-15T12:00:00", + "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)" + }, + "serialNumber": "12345678", + "batchNumber": "6789", + "productImage": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "description": "400Ah 24v LiFePO4 battery", + "productCategory": [ + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + } + ], + "furtherInformation": [ + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + ], + "producedByParty": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "producedAtFacility": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "dimensions": { + "weight": { + "value": 10, + "unit": "KGM" + }, + "length": { + "value": 10, + "unit": "KGM" + }, + "width": { + "value": 10, + "unit": "KGM" + }, + "height": { + "value": 10, + "unit": "KGM" + }, + "volume": { + "value": 10, + "unit": "KGM" + } + }, + "productionDate": "2024-04-25", + "countryOfProduction": "AU", + "granularityLevel": "batch", + "dueDiligenceDeclaration": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "materialsProvenance": [ + { + "name": "Lithium Spodumene", + "originCountry": "AU", + "materialType": { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + "massFraction": 0.2, + "massAmount": { + "value": 10, + "unit": "KGM" + }, + "recycledAmount": 0.5, + "hazardous": false, + "symbol": "undefined", + "materialSafetyInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + }, + { + "name": "Lithium Spodumene", + "originCountry": "AU", + "materialType": { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + "massFraction": 0.2, + "massAmount": { + "value": 10, + "unit": "KGM" + }, + "recycledAmount": 0.5, + "hazardous": false, + "symbol": "undefined", + "materialSafetyInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + } + ], + "conformityClaim": [ + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "declaredValue": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "Enumeration Value", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + }, + { + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValues": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "compliance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + }, + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "declaredValue": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "Enumeration Value", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + }, + { + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValues": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "compliance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + } + ], + "circularityScorecard": { + "recyclingInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "repairInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "recyclableContent": 0.5, + "recycledContent": 0.3, + "utilityFactor": 1.2, + "materialCircularityIndicator": 0.67 + }, + "emissionsScorecard": { + "carbonFootprint": 1.8, + "declaredUnit": "KGM", + "operationalScope": "CradleToGate", + "primarySourcedRatio": 0.3, + "reportingStandard": { + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + } + }, + "traceabilityInformation": { + "valueChainProcess": "Spinning", + "verifiedRatio": 0.5, + "traceabilityEvent": [ + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + }, + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + ] + } + } +} diff --git a/packages/untp-test-suite/credentials/productPassport/DigitalProductPassport_instance-v0.4.2.json b/packages/untp-test-suite/credentials/productPassport/DigitalProductPassport_instance-v0.4.2.json new file mode 100644 index 00000000..73583da0 --- /dev/null +++ b/packages/untp-test-suite/credentials/productPassport/DigitalProductPassport_instance-v0.4.2.json @@ -0,0 +1,536 @@ +{ + "type": ["DigitalProductPassport", "VerifiableCredential"], + "@context": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.4.2/"], + "id": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "issuer": { + "type": ["CredentialIssuer"], + "id": "did:web:identifiers.example-company.com:12345", + "name": "Example Company Pty Ltd", + "otherIdentifier": [ + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + } + ] + }, + "validFrom": "2024-03-15T12:00:00", + "validUntil": "2034-03-15T12:00:00", + "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)" + }, + "serialNumber": "12345678", + "batchNumber": "6789", + "productImage": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "description": "400Ah 24v LiFePO4 battery", + "productCategory": [ + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + } + ], + "furtherInformation": [ + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + ], + "producedByParty": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "producedAtFacility": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "dimensions": { + "weight": { + "value": 10, + "unit": "KGM" + }, + "length": { + "value": 10, + "unit": "KGM" + }, + "width": { + "value": 10, + "unit": "KGM" + }, + "height": { + "value": 10, + "unit": "KGM" + }, + "volume": { + "value": 10, + "unit": "KGM" + } + }, + "productionDate": "2024-04-25", + "countryOfProduction": "AU", + "granularityLevel": "batch", + "dueDiligenceDeclaration": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "materialsProvenance": [ + { + "name": "Lithium Spodumene", + "originCountry": "AU", + "materialType": { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + "massFraction": 0.2, + "massAmount": { + "value": 10, + "unit": "KGM" + }, + "recycledAmount": 0.5, + "hazardous": false, + "symbol": "undefined", + "materialSafetyInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + }, + { + "name": "Lithium Spodumene", + "originCountry": "AU", + "materialType": { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + "massFraction": 0.2, + "massAmount": { + "value": 10, + "unit": "KGM" + }, + "recycledAmount": 0.5, + "hazardous": false, + "symbol": "undefined", + "materialSafetyInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + } + ], + "conformityClaim": [ + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "declaredValue": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "Enumeration Value", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + }, + { + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValues": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "compliance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + }, + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "declaredValue": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "Enumeration Value", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + }, + { + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValues": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "compliance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + } + ], + "circularityScorecard": { + "recyclingInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "repairInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "recyclableContent": 0.5, + "recycledContent": 0.3, + "utilityFactor": 1.2, + "materialCircularityIndicator": 0.67 + }, + "emissionsScorecard": { + "carbonFootprint": 1.8, + "declaredUnit": "KGM", + "operationalScope": "CradleToGate", + "primarySourcedRatio": 0.3, + "reportingStandard": { + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + } + }, + "traceabilityInformation": { + "valueChainProcess": "Spinning", + "verifiedRatio": 0.5, + "traceabilityEvent": [ + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + }, + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + ] + } + } +} diff --git a/packages/untp-test-suite/credentials/productPassport/DigitalProductPassport_instance-v0.5.0.json b/packages/untp-test-suite/credentials/productPassport/DigitalProductPassport_instance-v0.5.0.json new file mode 100644 index 00000000..36cea531 --- /dev/null +++ b/packages/untp-test-suite/credentials/productPassport/DigitalProductPassport_instance-v0.5.0.json @@ -0,0 +1,536 @@ +{ + "type": ["DigitalProductPassport", "VerifiableCredential"], + "@context": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.5.0/"], + "id": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "issuer": { + "type": ["CredentialIssuer"], + "id": "did:web:identifiers.example-company.com:12345", + "name": "Example Company Pty Ltd", + "otherIdentifier": [ + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + } + ] + }, + "validFrom": "2024-03-15T12:00:00", + "validUntil": "2034-03-15T12:00:00", + "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)" + }, + "serialNumber": "12345678", + "batchNumber": "6789", + "productImage": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "description": "400Ah 24v LiFePO4 battery", + "productCategory": [ + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + } + ], + "furtherInformation": [ + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + ], + "producedByParty": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "producedAtFacility": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "dimensions": { + "weight": { + "value": 10, + "unit": "KGM" + }, + "length": { + "value": 10, + "unit": "KGM" + }, + "width": { + "value": 10, + "unit": "KGM" + }, + "height": { + "value": 10, + "unit": "KGM" + }, + "volume": { + "value": 10, + "unit": "KGM" + } + }, + "productionDate": "2024-04-25", + "countryOfProduction": "AU", + "granularityLevel": "batch", + "dueDiligenceDeclaration": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "materialsProvenance": [ + { + "name": "Lithium Spodumene", + "originCountry": "AU", + "materialType": { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + "massFraction": 0.2, + "massAmount": { + "value": 10, + "unit": "KGM" + }, + "recycledAmount": 0.5, + "hazardous": false, + "symbol": "undefined", + "materialSafetyInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + }, + { + "name": "Lithium Spodumene", + "originCountry": "AU", + "materialType": { + "type": ["Classification"], + "id": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "code": "46410", + "name": "Primary cells and primary batteries", + "schemeID": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "schemeName": "UN Central Product Classification (CPC)" + }, + "massFraction": 0.2, + "massAmount": { + "value": 10, + "unit": "KGM" + }, + "recycledAmount": 0.5, + "hazardous": false, + "symbol": "undefined", + "materialSafetyInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + } + } + ], + "conformityClaim": [ + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "declaredValue": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "Enumeration Value", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + }, + { + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValues": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "conformance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + }, + { + "type": ["Claim", "Declaration"], + "assessmentDate": "2024-03-15", + "declaredValue": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "id": "https://products.example-company.com/09520123456788/declarations/12345", + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + }, + "referenceRegulation": { + "type": ["Regulation"], + "id": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "name": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "jurisdictionCountry": "Enumeration Value", + "administeredBy": { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "effectiveDate": "2024-03-20" + }, + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + }, + { + "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": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ] + } + ], + "declaredValues": [ + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + }, + { + "metricName": "GHG emissions intensity", + "metricValue": { + "value": 10, + "unit": "KGM" + }, + "score": "BB", + "accuracy": 0.05 + } + ], + "conformance": true, + "conformityTopic": "environment.emissions", + "conformityEvidence": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + } + ], + "circularityScorecard": { + "recyclingInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "repairInformation": { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc" + }, + "recyclableContent": 0.5, + "recycledContent": 0.3, + "utilityFactor": 1.2, + "materialCircularityIndicator": 0.67 + }, + "emissionsScorecard": { + "carbonFootprint": 1.8, + "declaredUnit": "KGM", + "operationalScope": "CradleToGate", + "primarySourcedRatio": 0.3, + "reportingStandard": { + "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://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + "issueDate": "2023-12-05" + } + }, + "traceabilityInformation": { + "valueChainProcess": "Spinning", + "verifiedRatio": 0.5, + "traceabilityEvent": [ + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + }, + { + "linkURL": "https://files.example-certifier.com/1234567.json", + "linkName": "GBA rule book conformity certificate", + "linkType": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "hashDigest": "6239119", + "hashMethod": "SHA-256", + "encryptionMethod": "AES" + } + ] + } + } +} diff --git a/packages/untp-test-suite/credentials/traceabilityEvents/DigitalTraceabilityEvent_instance-v0.4.0.json b/packages/untp-test-suite/credentials/traceabilityEvents/DigitalTraceabilityEvent_instance-v0.4.0.json new file mode 100644 index 00000000..a3724d6f --- /dev/null +++ b/packages/untp-test-suite/credentials/traceabilityEvents/DigitalTraceabilityEvent_instance-v0.4.0.json @@ -0,0 +1,92 @@ +{ + "type": ["DigitalTraceabilityEvent", "VerifiableCredential"], + "id": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "@context": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dte/0.4.0/"], + "issuer": { + "type": ["CredentialIssuer"], + "id": "did:web:identifiers.example-company.com:12345", + "name": "Example Company Pty Ltd", + "otherIdentifiers": [ + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + } + ] + }, + "validFrom": "2024-03-15T12:00:00", + "credentialSubject": [ + { + "type": "n/a", + "id": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "processType": "Weaving", + "eventTime": "2024-09-01T12:00:00", + "action": "add", + "disposition": "https://ref.gs1.org/cbv/Disp-active", + "bizStep": "https://ref.gs1.org/cbv/BizStep-commissioning", + "bizLocation": "https://id.gs1.org/414/9520123456788", + "sensorElementList": [ + { + "type": ["SensorElement"], + "sensorMetadata": { + "type": ["Sensor"], + "device": { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + }, + "dataProcessingMethod": "https://standards.org/sensorMethod#1234" + }, + "sensorReport": [ + { + "type": ["SensorData"], + "time": "2024-07-24T12:00:00", + "sensorType": "https://samplesensors.com/model1234", + "value": 25, + "uom": "KGM" + } + ], + "sensorIntegrityProof": "https://jargon.sh" + } + ], + "inputEPCList": [ + { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + } + ], + "inputQuantityList": [ + { + "type": ["QuantityElement"], + "productId": "https://id.gs1.org/01/09520123456788/21/12345", + "productName": "EV battery 300Ah.", + "quantity": 20, + "uom": "KGM" + } + ], + "outputEPCList": [ + { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + } + ], + "outputQuantityList": [ + { + "type": ["QuantityElement"], + "productId": "https://id.gs1.org/01/09520123456788/21/12345", + "productName": "EV battery 300Ah.", + "quantity": 20, + "uom": "KGM" + } + ] + } + ] +} diff --git a/packages/untp-test-suite/credentials/traceabilityEvents/DigitalTraceabilityEvent_instance-v0.4.1.json b/packages/untp-test-suite/credentials/traceabilityEvents/DigitalTraceabilityEvent_instance-v0.4.1.json new file mode 100644 index 00000000..ed36c674 --- /dev/null +++ b/packages/untp-test-suite/credentials/traceabilityEvents/DigitalTraceabilityEvent_instance-v0.4.1.json @@ -0,0 +1,151 @@ +{ + "type": ["DigitalTraceabilityEvent", "VerifiableCredential"], + "id": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "@context": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dte/0.4.1/"], + "issuer": { + "type": ["CredentialIssuer"], + "id": "did:web:identifiers.example-company.com:12345", + "name": "Example Company Pty Ltd", + "otherIdentifier": [ + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + } + ] + }, + "validFrom": "2024-03-15T12:00:00", + "credentialSubject": [ + { + "type": ["TransformationEvent", "Event"], + "id": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "processType": "Weaving", + "eventTime": "2024-09-01T12:00:00", + "action": "add", + "disposition": "https://ref.gs1.org/cbv/Disp-active", + "bizStep": "https://ref.gs1.org/cbv/BizStep-commissioning", + "bizLocation": "https://id.gs1.org/414/9520123456788", + "sensorElementList": [ + { + "sensorMetadata": { + "device": { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + }, + "dataProcessingMethod": "https://standards.org/sensorMethod#1234" + }, + "sensorReport": [ + { + "time": "2024-07-24T12:00:00", + "sensorType": "https://samplesensors.com/model1234", + "value": 25, + "uom": "KGM" + }, + { + "time": "2024-07-24T12:00:00", + "sensorType": "https://samplesensors.com/model1234", + "value": 25, + "uom": "KGM" + } + ], + "sensorIntegrityProof": "https://jargon.sh" + }, + { + "sensorMetadata": { + "device": { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + }, + "dataProcessingMethod": "https://standards.org/sensorMethod#1234" + }, + "sensorReport": [ + { + "time": "2024-07-24T12:00:00", + "sensorType": "https://samplesensors.com/model1234", + "value": 25, + "uom": "KGM" + }, + { + "time": "2024-07-24T12:00:00", + "sensorType": "https://samplesensors.com/model1234", + "value": 25, + "uom": "KGM" + } + ], + "sensorIntegrityProof": "https://jargon.sh" + } + ], + "outputEPCList": [ + { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + }, + { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + } + ], + "inputEPCList": [ + { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + }, + { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + } + ], + "inputQuantityList": [ + { + "productId": "https://id.gs1.org/01/09520123456788/21/12345", + "productName": "EV battery 300Ah.", + "quantity": 20, + "uom": "KGM" + }, + { + "productId": "https://id.gs1.org/01/09520123456788/21/12345", + "productName": "EV battery 300Ah.", + "quantity": 20, + "uom": "KGM" + } + ], + "outputQuantityList": [ + { + "productId": "https://id.gs1.org/01/09520123456788/21/12345", + "productName": "EV battery 300Ah.", + "quantity": 20, + "uom": "KGM" + }, + { + "productId": "https://id.gs1.org/01/09520123456788/21/12345", + "productName": "EV battery 300Ah.", + "quantity": 20, + "uom": "KGM" + } + ] + } + ] +} diff --git a/packages/untp-test-suite/credentials/traceabilityEvents/DigitalTraceabilityEvent_instance-v0.4.2.json b/packages/untp-test-suite/credentials/traceabilityEvents/DigitalTraceabilityEvent_instance-v0.4.2.json new file mode 100644 index 00000000..635470a1 --- /dev/null +++ b/packages/untp-test-suite/credentials/traceabilityEvents/DigitalTraceabilityEvent_instance-v0.4.2.json @@ -0,0 +1,151 @@ +{ + "type": ["DigitalTraceabilityEvent", "VerifiableCredential"], + "id": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "@context": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dte/0.4.2/"], + "issuer": { + "type": ["CredentialIssuer"], + "id": "did:web:identifiers.example-company.com:12345", + "name": "Example Company Pty Ltd", + "otherIdentifier": [ + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + } + ] + }, + "validFrom": "2024-03-15T12:00:00", + "credentialSubject": [ + { + "type": ["TransformationEvent", "Event"], + "id": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "processType": "Weaving", + "eventTime": "2024-09-01T12:00:00", + "action": "add", + "disposition": "https://ref.gs1.org/cbv/Disp-active", + "bizStep": "https://ref.gs1.org/cbv/BizStep-commissioning", + "bizLocation": "https://id.gs1.org/414/9520123456788", + "sensorElementList": [ + { + "sensorMetadata": { + "device": { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + }, + "dataProcessingMethod": "https://standards.org/sensorMethod#1234" + }, + "sensorReport": [ + { + "time": "2024-07-24T12:00:00", + "sensorType": "https://samplesensors.com/model1234", + "value": 25, + "uom": "KGM" + }, + { + "time": "2024-07-24T12:00:00", + "sensorType": "https://samplesensors.com/model1234", + "value": 25, + "uom": "KGM" + } + ], + "sensorIntegrityProof": "https://jargon.sh" + }, + { + "sensorMetadata": { + "device": { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + }, + "dataProcessingMethod": "https://standards.org/sensorMethod#1234" + }, + "sensorReport": [ + { + "time": "2024-07-24T12:00:00", + "sensorType": "https://samplesensors.com/model1234", + "value": 25, + "uom": "KGM" + }, + { + "time": "2024-07-24T12:00:00", + "sensorType": "https://samplesensors.com/model1234", + "value": 25, + "uom": "KGM" + } + ], + "sensorIntegrityProof": "https://jargon.sh" + } + ], + "outputEPCList": [ + { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + }, + { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + } + ], + "inputEPCList": [ + { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + }, + { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + } + ], + "inputQuantityList": [ + { + "productId": "https://id.gs1.org/01/09520123456788/21/12345", + "productName": "EV battery 300Ah.", + "quantity": 20, + "uom": "KGM" + }, + { + "productId": "https://id.gs1.org/01/09520123456788/21/12345", + "productName": "EV battery 300Ah.", + "quantity": 20, + "uom": "KGM" + } + ], + "outputQuantityList": [ + { + "productId": "https://id.gs1.org/01/09520123456788/21/12345", + "productName": "EV battery 300Ah.", + "quantity": 20, + "uom": "KGM" + }, + { + "productId": "https://id.gs1.org/01/09520123456788/21/12345", + "productName": "EV battery 300Ah.", + "quantity": 20, + "uom": "KGM" + } + ] + } + ] +} diff --git a/packages/untp-test-suite/credentials/traceabilityEvents/DigitalTraceabilityEvent_instance-v0.5.0.json b/packages/untp-test-suite/credentials/traceabilityEvents/DigitalTraceabilityEvent_instance-v0.5.0.json new file mode 100644 index 00000000..cfd29788 --- /dev/null +++ b/packages/untp-test-suite/credentials/traceabilityEvents/DigitalTraceabilityEvent_instance-v0.5.0.json @@ -0,0 +1,151 @@ +{ + "type": ["DigitalTraceabilityEvent", "VerifiableCredential"], + "id": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "@context": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "issuer": { + "type": ["CredentialIssuer"], + "id": "did:web:identifiers.example-company.com:12345", + "name": "Example Company Pty Ltd", + "otherIdentifier": [ + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + }, + { + "type": ["Identifier"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah.", + "registeredId": "90664869327", + "idScheme": { + "type": ["IdentifierScheme"], + "id": "https://id.gs1.org/01/", + "name": "Global Trade Identification Number (GTIN)" + } + } + ] + }, + "validFrom": "2024-03-15T12:00:00", + "credentialSubject": [ + { + "type": ["TransformationEvent", "Event"], + "id": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "processType": "Weaving", + "eventTime": "2024-09-01T12:00:00", + "action": "add", + "disposition": "https://ref.gs1.org/cbv/Disp-active", + "bizStep": "https://ref.gs1.org/cbv/BizStep-commissioning", + "bizLocation": "https://id.gs1.org/414/9520123456788", + "sensorElementList": [ + { + "sensorMetadata": { + "device": { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + }, + "dataProcessingMethod": "https://standards.org/sensorMethod#1234" + }, + "sensorReport": [ + { + "time": "2024-07-24T12:00:00", + "sensorType": "https://samplesensors.com/model1234", + "value": 25, + "uom": "KGM" + }, + { + "time": "2024-07-24T12:00:00", + "sensorType": "https://samplesensors.com/model1234", + "value": 25, + "uom": "KGM" + } + ], + "sensorIntegrityProof": "https://jargon.sh" + }, + { + "sensorMetadata": { + "device": { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + }, + "dataProcessingMethod": "https://standards.org/sensorMethod#1234" + }, + "sensorReport": [ + { + "time": "2024-07-24T12:00:00", + "sensorType": "https://samplesensors.com/model1234", + "value": 25, + "uom": "KGM" + }, + { + "time": "2024-07-24T12:00:00", + "sensorType": "https://samplesensors.com/model1234", + "value": 25, + "uom": "KGM" + } + ], + "sensorIntegrityProof": "https://jargon.sh" + } + ], + "outputEPCList": [ + { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + }, + { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + } + ], + "inputEPCList": [ + { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + }, + { + "type": ["Item"], + "id": "https://id.gs1.org/01/09520123456788/21/12345", + "name": "EV battery 300Ah." + } + ], + "inputQuantityList": [ + { + "productId": "https://id.gs1.org/01/09520123456788/21/12345", + "productName": "EV battery 300Ah.", + "quantity": 20, + "uom": "KGM" + }, + { + "productId": "https://id.gs1.org/01/09520123456788/21/12345", + "productName": "EV battery 300Ah.", + "quantity": 20, + "uom": "KGM" + } + ], + "outputQuantityList": [ + { + "productId": "https://id.gs1.org/01/09520123456788/21/12345", + "productName": "EV battery 300Ah.", + "quantity": 20, + "uom": "KGM" + }, + { + "productId": "https://id.gs1.org/01/09520123456788/21/12345", + "productName": "EV battery 300Ah.", + "quantity": 20, + "uom": "KGM" + } + ] + } + ] +} diff --git a/packages/untp-test-suite/src/schemas/conformityCredential/v0.4.0/schema.json b/packages/untp-test-suite/src/schemas/conformityCredential/v0.4.0/schema.json index 02409d4e..3ad63b2a 100644 --- a/packages/untp-test-suite/src/schemas/conformityCredential/v0.4.0/schema.json +++ b/packages/untp-test-suite/src/schemas/conformityCredential/v0.4.0/schema.json @@ -5,123 +5,128 @@ "type": { "type": "array", "readOnly": true, - "const": ["ConformityAttestation", "Attestation"], - "default": ["ConformityAttestation", "Attestation"], + "const": ["DigitalProductPassport", "VerifiableCredential"], + "default": ["DigitalProductPassport", "VerifiableCredential"], "items": { "type": "string", - "enum": ["ConformityAttestation", "Attestation"] + "enum": ["DigitalProductPassport", "VerifiableCredential"] } }, + "@context": { + "example": "https://test.uncefact.org/vocabulary/untp/dpp/dpp-context.jsonld", + "type": "array", + "items": { + "type": "string", + "enum": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.4.0/"] + }, + "description": "A list of JSON-LD context URIs that define the seamntic meaning of prperties within the credential. ", + "readOnly": true, + "const": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.4.0/"], + "default": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.4.0/"] + }, "id": { - "example": "https://exampleCAB.com/38f73303-a39e-45a7-b8b7-e73517548f27", + "example": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", "type": "string", "format": "uri", - "description": "The globally unique ID of this conformity attestation." - }, - "name": { - "example": "Carbon Lifecycle assessment 12345567", - "type": "string", - "description": "Product GHG Footprint certificate in accordance with GBA Rulebook." - }, - "assessorLevel": { - "type": "string", - "enum": ["Self", "Commercial", "Buyer", "Membership", "Unspecified", "3rdParty"], - "example": "Self", - "description": "Assurance code pertaining to assessor (relation to the object under assessment)" + "description": "A unique identifier (URI) assigned to the product passport. May be a UUID" }, - "assessmentLevel": { - "type": "string", - "enum": ["GovtApproval", "GlobalMRA", "Accredited", "Verified", "Validated", "Unspecified"], - "example": "GovtApproval", - "description": "Assurance pertaining to assessment (any authority or support for the assessment process)" + "issuer": { + "$ref": "#/$defs/CredentialIssuer", + "description": "The organisation that is the isuer of this VC. Note that the \"id\" property MUST be a W3C DID. Other identifiers such as tax registration numbers can be listed in the \"otherIdentifiers\" property." }, - "attestationType": { + "validFrom": { + "example": "2024-03-15T12:00:00", "type": "string", - "enum": ["certification", "declaration", "inspection", "testing", "verification", "validation", "calibration"], - "example": "certification", - "description": "The type of criterion (optional or mandatory)." + "format": "date-time", + "description": "The date and time from which the credential is valid." }, - "attestationDescription": { - "example": "Assessment of battery products against the GHG Protocol.", + "validUntil": { + "example": "2034-03-15T12:00:00", "type": "string", - "description": "SampleCAB Inc attests that the product class LiFePO4 EV batteries manufactured at Sample battery facility have reported GHG foorptint that conform to the GBA rulebook version 1.5. " + "format": "date-time", + "description": "The expiry date (if applicable) of this verifiable credential." }, - "issuedToParty": { - "$ref": "#/$defs/Party", - "description": "" - }, - "authorisations": { - "type": "array", - "items": { - "$ref": "#/$defs/Endorsement" - }, - "description": "The authority under which a conformity claim is issued. For example a national accrediation authority may accredit a test lab to issue test certificates about a product against a standard. " - }, - "conformityCertificate": { - "$ref": "#/$defs/SecureLink", - "description": "A reference to the human / printable version of this conformity attestation - typically represented as a PDF document. The document may have more details than are represented in the digital attestation." - }, - "auditableEvidence": { - "$ref": "#/$defs/SecureLink", - "description": "Auditable evidence supporting this assessment such as raw measurements, supporting documents. This is usally private data and would normally be encrypted." - }, - "scope": { - "$ref": "#/$defs/ConformityAssessmentScheme", - "description": "A list of relevant standards and/or regulations against which apply to this attestation (eg AS1163:2016). " - }, - "assessments": { - "type": "array", - "items": { - "$ref": "#/$defs/ConformityAssessment" - }, - "description": "The list of specific assessments made within this conformity attestation." + "credentialSubject": { + "$ref": "#/$defs/Product", + "description": "The subject of a digital product passport credential is the identified product. " } }, - "description": "A conformity attestation issued by a competent body that defines one or more assessments (eg carbon intensity) about a product (eg batttery) against a specification (eg LCA method) defined in a standard or regulation.", - "required": ["id", "assessorLevel", "assessmentLevel", "attestationType"], + "description": "The ProductPassport is a comprehensive data structure that encapsulates various details pertaining to a product, including its identification details, who issued it, batch information, provernance information, circularity information and a set of verifable product confomrity & sistainability claims.", + "required": ["@context", "id", "issuer"], "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { - "Party": { + "CredentialIssuer": { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "array", "readOnly": true, - "const": ["Party"], - "default": ["Party"], + "const": ["CredentialIssuer"], + "default": ["CredentialIssuer"], "items": { "type": "string", - "enum": ["Party"] + "enum": ["CredentialIssuer"] } }, "id": { - "example": "https://abr.business.gov.au/ABN/View?abn=90664869327", + "example": "did:web:identifiers.example-company.com:12345", "type": "string", "format": "uri", - "description": "The globally unique ID of the party as a URI, ideall as a resolvable ID. " + "description": "The W3C DID of the issuer - should be a did:web or did:tdw" }, "name": { - "example": "Sample Company Pty Ltd.", + "example": "Example Company Pty Ltd", "type": "string", - "description": "The registered name of the party within the identifier scheme." + "description": "The name of the issuer person or organisation" + }, + "otherIdentifiers": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this credential issuer " + } + }, + "description": "The issuer party ()person or orgnaition) of a verifiable credential.", + "required": ["id", "name"] + }, + "Identifier": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Identifier"], + "default": ["Identifier"], + "items": { + "type": "string", + "enum": ["Identifier"] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the entity as a resolvable URL according to ISO 18975. ExamplesProduct - id.gs1.org/01/09520123456788/21/12345 Party - abr.business.gov.au/ABN/View?abn=90664869327. Facility - did:web:facilities.example-company.com:123. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the entity within the identifier scheme. Examplesproduct - EV battery 300Ahparty - Sample Company Pty Ltd. facility - Greenacres battery factory" }, "registeredId": { "example": "90664869327", "type": "string", - "description": "The registration number (alphanumeric) of the Party within the register. Unique within the register." + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." }, "idScheme": { "$ref": "#/$defs/IdentifierScheme", - "description": "The identifier scheme of the party. Typically a national business register or a global schem such as GLEIF. " - }, - "description": { - "example": "A leading electric energy storage company", - "type": "string", - "description": "An optional short description of the party." + "description": "The identifier scheme. Exampleproduct - id.gs1.org/01. party - business.gov.au/abn facility - did:web:facilities.acme.com. " } }, - "description": "An organisation. May be a supply chain actor, a certifier, a government agency.", + "description": "The ID and Name of an identified entity such qs a product, facility, party, standard, etc. If the identifier is a W3C DID then the corresponding DID document SHOULD include a serviceEndpoint of type \"IdentityResolver\". If the identifier is not a W3C DID then the id peroperty SHOULD be an identity resolver URL.", "required": ["id", "name"] }, "IdentifierScheme": { @@ -152,116 +157,128 @@ }, "description": "An identifier registration scheme for products, facilities, or organisations. Typically operated by a state, national or gloabl authority." }, - "Endorsement": { + "Product": { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "array", "readOnly": true, - "const": ["Endorsement"], - "default": ["Endorsement"], + "const": ["Product"], + "default": ["Product"], "items": { "type": "string", - "enum": ["Endorsement"] + "enum": ["Product"] } }, "id": { - "example": "https://authority.gov/schemeABC/123456789", + "example": "https://id.gs1.org/01/09520123456788/21/12345", "type": "string", "format": "uri", - "description": "Globally unique identifier of an accreditation or authority issued to a confomrity assessment body by a regulator or national accreditation authority." + "description": "The globally unique ID of the product as a URI. Ideall as a resolvable URL according to ISO 18975. " }, "name": { - "example": "Accreditation of certifiers.com under the Australian National Greenhouse and Energy Reporting scheme (NGER).", + "example": "EV battery 300Ah.", "type": "string", - "description": "The name of the accreditation." + "description": "The registered name of the product within the identifier scheme. " }, - "trustmark": { - "$ref": "#/$defs/BinaryFile", - "description": "The trust mark image awarded by the AB to the CAB to indicate accrediation." + "registeredId": { + "example": "09520123456788.21.12345", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." }, - "issuingAuthority": { - "$ref": "#/$defs/Identifier", - "description": "The competent authority that issued the accreditation." + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme for this product. Eg a GS1 GTIn or an AU Livestock NLIS, or similar. If self issued then use the party ID of the issuer. " + }, + "serialNumber": { + "example": "12345678", + "type": "string", + "description": "A number or code representing a specific serialised item of the product. Unique within product class." }, - "accreditationCertificate": { + "batchNumber": { + "example": "6789", + "type": "string", + "description": "Identifier of the specific production batch of the product. Unique within the product class." + }, + "productImage": { "$ref": "#/$defs/Link", - "description": "The evidence that supports the authroty under which the attestation is issued - eg an accreditation certificate." - } - }, - "description": "The authority under which a conformity claim is issued. For example a national accrediation authority may accredit a test lab to issue test certificates about a product against a standard. ", - "required": ["id", "name", "issuingAuthority"] - }, - "BinaryFile": { - "type": "object", - "additionalProperties": false, - "properties": { - "type": { + "description": "Reference information (location, type, name) of an image of the product." + }, + "description": { + "example": "400Ah 24v LiFePO4 battery", + "type": "string", + "description": "A textual description providing details about the product." + }, + "productCategory": { "type": "array", - "readOnly": true, - "const": ["BinaryFile"], - "default": ["BinaryFile"], "items": { - "type": "string", - "enum": ["BinaryFile"] - } + "$ref": "#/$defs/Classification" + }, + "description": "A code representing the product's class, typically using the UN CPC (United Nations Central Product Classification) https://unstats.un.org/unsd/classifications/Econ/cpc" }, - "fileName": { - "example": "GHG protocol trust mark", - "type": "string", - "description": "A name for referenced binary file" + "furtherInformation": { + "type": "array", + "items": { + "$ref": "#/$defs/Link" + }, + "description": "A URL pointing to further human readable information about the product." + }, + "producedByParty": { + "$ref": "#/$defs/Identifier", + "description": "The Party entity that manufactured the product." }, - "fileType": { + "producedAtFacility": { + "$ref": "#/$defs/Identifier", + "description": "The Facility where the product batch was produced / manufactured." + }, + "dimensions": { + "$ref": "#/$defs/Dimension", + "description": "The physical dimensions of the product. Not every dimension is relevant to every products. For example bulk materials may have wieght and volume but not length, with, or height.\"weight\":{\"value\":10, \"unit\":\"KGM\"}" + }, + "productionDate": { + "example": "2024-04-25", "type": "string", - "x-external-enumeration": "https://mimetype.io/all-types", - "description": "The type of file, represented as a MIME type.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://mimetype.io/all-types\n " + "format": "date", + "description": "The ISO 8601 date on which the product batch was manufactured." }, - "file": { - "example": "iVBORw0KGgoAAAANSUhEUgAAADkAAAA2CAYAAAB9TjFQAAAABGdBTUEAAi/9H3pWy6vI9uFdAAAAAElFTkSuQmCC", + "countryOfProduction": { "type": "string", - "format": "byte", - "description": "The binary file data encoded as Base64 string." - } - }, - "description": "A binary file reference including name and filetype" - }, - "Identifier": { - "type": "object", - "additionalProperties": false, - "properties": { - "type": { + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The country in which this item was produced / manufactured.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "dueDiligenceDeclaration": { + "$ref": "#/$defs/Link", + "description": "The due diligence declaration that conforms with the regulations of the market into which the product is sold." + }, + "materialsProvenance": { "type": "array", - "readOnly": true, - "const": ["Identifier"], - "default": ["Identifier"], "items": { - "type": "string", - "enum": ["Identifier"] - } + "$ref": "#/$defs/Material" + }, + "description": "An array of Provenance objects providing details on the origin and mass fraction of components or ingredients of the product batch. " }, - "id": { - "example": "https://id.gs1.org/01/09520123456788/21/12345", - "type": "string", - "format": "uri", - "description": "The globally unique ID of the entity as a resolvable URL according to ISO 18975. ExamplesProduct - id.gs1.org/01/09520123456788/21/12345 Party - abr.business.gov.au/ABN/View?abn=90664869327. Facility - did:web:facilities.example-company.com:123. " + "conformityClaims": { + "type": "array", + "items": { + "$ref": "#/$defs/Claim" + }, + "description": "An array of claim objects representing various product conformity claims about the product / batch. These can be sustainability claims, circularity claims, or any other claim type within the conformity topic list." }, - "name": { - "example": "EV battery 300Ah.", - "type": "string", - "description": "The registered name of the entity within the identifier scheme. Examplesproduct - EV battery 300Ahparty - Sample Company Pty Ltd. facility - Greenacres battery factory" + "circularityScorecard": { + "$ref": "#/$defs/CircularityPerformance", + "description": "A circularity performance scorecard" }, - "registeredId": { - "example": "90664869327", - "type": "string", - "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + "emissionsScorecard": { + "$ref": "#/$defs/EmissionsPerformance", + "description": "An emissions performacne scorecard" }, - "idScheme": { - "$ref": "#/$defs/IdentifierScheme", - "description": "The identifier scheme. Exampleproduct - id.gs1.org/01. party - business.gov.au/abn facility - did:web:facilities.acme.com. " + "traceabilityInformation": { + "$ref": "#/$defs/TraceabilityPerformance", + "description": "An array of secure links to TraceabilityEvent objects detailing EPCIS events related to the traceability of the product batch. SHOULD be provided for any product passport issued at batch or item level. Links should include the hash of the target and may point to encrypted targets." } }, - "description": "The ID and Name of an identified entity such qs a product, facility, party, standard, etc. If the identifier is a W3C DID then the corresponding DID document SHOULD include a serviceEndpoint of type \"IdentityResolver\". If the identifier is not a W3C DID then the id peroperty SHOULD be an identity resolver URL.", + "description": "The ProductInformation class encapsulates detailed information regarding a specific product, including its identification details, manufacturer, and other pertinent details. ", "required": ["id", "name"] }, "Link": { @@ -297,111 +314,188 @@ }, "description": "A structure to provide a URL link plus metadata associated with the link." }, - "SecureLink": { + "Classification": { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "array", "readOnly": true, - "const": ["SecureLink", "Link"], - "default": ["SecureLink", "Link"], + "const": ["Classification"], + "default": ["Classification"], "items": { "type": "string", - "enum": ["SecureLink", "Link"] + "enum": ["Classification"] } }, - "linkURL": { - "example": "https://files.example-certifier.com/1234567.json", + "id": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", "type": "string", "format": "uri", - "description": "The URL of the target resource. " + "description": "The globally unique URI representing the specific classifier value" }, - "linkName": { - "example": "GBA rule book conformity certificate", + "code": { + "example": "46410", "type": "string", - "description": "A display name for the target resource " + "description": "classification code within the scheme" }, - "linkType": { - "example": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "name": { + "example": "Primary cells and primary batteries", "type": "string", - "description": "The type of the target resource - drawn from a controlled vocabulary " + "description": "Name of the classification represented by the code" }, - "hashDigest": { - "example": "6239119dda5bd4c8a6ffb832fe16feaa5c27b7dba154d24c53d4470a2c69adc2", + "schemeID": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/", "type": "string", - "description": "The hash of the file." + "format": "uri", + "description": "Classification scheme ID" }, - "hashMethod": { + "schemeName": { + "example": "UN Central Product Classification (CPC)", "type": "string", - "enum": ["SHA-256", "SHA-1"], - "example": "SHA-256", - "description": "The hashing algorithm used to create the target hash. SHA-265 is the recommedned standard" + "description": "The name of the classification scheme" + } + }, + "description": "A classification scheme and code / name representing a category value for a product, entity, or facility.", + "required": ["id", "name"] + }, + "Dimension": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Dimension"], + "default": ["Dimension"], + "items": { + "type": "string", + "enum": ["Dimension"] + } }, - "encryptionMethod": { - "type": "string", - "enum": ["none", "AES"], - "example": "none", - "description": "The symmetric encryption algorithm used to encrypt the link target. AES is the recommended standard. Decryption keys are expected to be passed out of bounds." + "weight": { + "$ref": "#/$defs/Measure", + "description": "the weight of the product. EG {\"value\":10, \"unit\":\"KGM\"}" + }, + "length": { + "$ref": "#/$defs/Measure", + "description": "The length of the product or packaging eg {\"value\":840, \"unit\":\"MMT\"}" + }, + "width": { + "$ref": "#/$defs/Measure", + "description": "The width of the product or packaging. eg {\"value\":150, \"unit\":\"MMT\"}" + }, + "height": { + "$ref": "#/$defs/Measure", + "description": "The height of the product or packaging. eg {\"value\":220, \"unit\":\"MMT\"}" + }, + "volume": { + "$ref": "#/$defs/Measure", + "description": "The displacement volume of the product. eg {\"value\":7.5, \"unit\":\"LTR\"}" } }, - "description": "A binary file that is hashed ()for tamper evidence) and optionally encrypted (for confidentiality)." + "description": "Overall (length, width, height) dimensions and weight/volume of an item." }, - "ConformityAssessmentScheme": { + "Measure": { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "array", "readOnly": true, - "const": ["ConformityAssessmentScheme", "Standard"], - "default": ["ConformityAssessmentScheme", "Standard"], + "const": ["Measure"], + "default": ["Measure"], "items": { "type": "string", - "enum": ["ConformityAssessmentScheme", "Standard"] + "enum": ["Measure"] } }, - "id": { - "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf", + "value": { + "example": 10, + "type": "number", + "description": "The numeric value of the measure" + }, + "unit": { "type": "string", - "format": "uri", - "description": "A unique identifier for the standard (eg https://www.iso.org/standard/60857.html)." + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "Unit of measure drawn from the UNECE rec20 measure code list.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "The measure class defines a numeric measured value (eg 10) and a coded unit of measure (eg KG).", + "required": ["value", "unit"] + }, + "Material": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Material"], + "default": ["Material"], + "items": { + "type": "string", + "enum": ["Material"] + } }, "name": { - "example": "GBA Battery Passport Greenhouse Gas Rulebook - V.2.0", + "example": "Lithium Spodumene", "type": "string", - "description": "The name of the standard" + "description": "Name of this material (eg \"Egyptian Cotton\")" }, - "issuingParty": { - "$ref": "#/$defs/Identifier", - "description": "The party that issued the standard " + "originCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "A ISO 3166-1 code representing the country of origin of the component or ingredient.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " }, - "issueDate": { - "example": "2023-12-05", + "materialType": { + "$ref": "#/$defs/Classification", + "description": "The type of this material - as a value drawn from a controlled vocabulary eg from UN Framework Classification for Resources (UNFC)." + }, + "massFraction": { + "example": 0.2, + "type": "number", + "description": "The mass fraction of the product represented by this material. The sum of all mass fraction values for a given passport should be 1." + }, + "massAmount": { + "$ref": "#/$defs/Measure", + "description": "The mass of the material component." + }, + "recycledAmount": { + "example": 0.5, + "type": "number", + "description": "Mass fraction of this material that is recycled (eg 50% recycled Lithium)" + }, + "hazardous": { + "example": "false", + "type": "boolean", + "description": "Indicates whether this material is hazardous. If true then the materialSafetyInformation proerty must be present" + }, + "symbol": { "type": "string", - "format": "date", - "description": "The date when the standard was issued." + "format": "binary", + "description": "Based 64 encoded binary used to represent a visual symbol for a given material. " }, - "trustmark": { - "$ref": "#/$defs/BinaryFile", - "description": "The trust mark that represents the conformity assessment scheme." + "materialSafetyInformation": { + "$ref": "#/$defs/Link", + "description": "Refernece to further information obout safe handling of this hazardous material (for example a link to a material safety data sheet)" } }, - "description": "A formal governance scheme under which this attestation is issued (eg ACRS structural steel certification) ", - "required": ["issuingParty"] + "description": "The material class encapsulates details about the origin or source of raw materials in a product, including the country of origin and the mass fraction.", + "required": ["name"] }, - "ConformityAssessment": { + "Claim": { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "array", "readOnly": true, - "const": ["ConformityAssessment", "Declaration"], - "default": ["ConformityAssessment", "Declaration"], + "const": ["Claim", "Declaration"], + "default": ["Claim", "Declaration"], "items": { "type": "string", - "enum": ["ConformityAssessment", "Declaration"] + "enum": ["Claim", "Declaration"] } }, "assessmentDate": { @@ -411,7 +505,7 @@ "description": "The date on which this assessment was made. " }, "id": { - "example": "https://exampleCAB.com/38f73303-a39e-45a7-b8b7-e73517548f27/01", + "example": "https://products.example-company.com/09520123456788/declarations/12345", "type": "string", "format": "uri", "description": "A unique identifier for the delcaration. Often this will be an extension of the product.id or attestation.id. But could be a UUID." @@ -465,30 +559,12 @@ "example": "environment.energy", "description": "The conformity topic category for this assessment (eg vocabulary.uncefact.org/sustainability/emissions)" }, - "assessedProducts": { - "type": "array", - "items": { - "$ref": "#/$defs/Product" - }, - "description": "The list of products that are the subject of this conformity assessment" - }, - "assessedFacilities": { - "type": "array", - "items": { - "$ref": "#/$defs/Facility" - }, - "description": "The list of facilities that are the subject of this conformity assessment." - }, - "assessedOrganisation": { - "$ref": "#/$defs/Party", - "description": "The organisation that is the subject of this assessment." - }, - "auditor": { - "$ref": "#/$defs/Party", - "description": "The person or organisations that performed this assessment (if different to the issuer of the parent attestaiton)" + "conformityEvidence": { + "$ref": "#/$defs/SecureLink", + "description": "A URI pointing to the evidence supporting the claim. SHOULD be a URL to a UNTP Digital COnformity Credential (DCC)" } }, - "description": "A specific assessment about the product or facility against a specific specification. Eg the carbon intensity of a given product or batch.", + "description": "A declaration of conformance with one or more criteria from a specific standard or regulation. ", "required": ["id", "compliance", "conformityTopic"] }, "Standard": { @@ -647,294 +723,183 @@ "description": "A specific measure of performance against the criteria that governs the claim. Expressed as an array of metric (ie unit of emasure) / value (ie the actual numeric value) pairs. ", "required": ["metricName", "metricValue"] }, - "Measure": { - "type": "object", - "additionalProperties": false, - "properties": { - "type": { - "type": "array", - "readOnly": true, - "const": ["Measure"], - "default": ["Measure"], - "items": { - "type": "string", - "enum": ["Measure"] - } - }, - "value": { - "example": 10, - "type": "number", - "description": "The numeric value of the measure" - }, - "unit": { - "type": "string", - "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", - "description": "Unit of measure drawn from the UNECE rec20 measure code list.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " - } - }, - "description": "The measure class defines a numeric measured value (eg 10) and a coded unit of measure (eg KG).", - "required": ["value", "unit"] - }, - "Product": { + "SecureLink": { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "array", "readOnly": true, - "const": ["Product"], - "default": ["Product"], + "const": ["SecureLink", "Link"], + "default": ["SecureLink", "Link"], "items": { "type": "string", - "enum": ["Product"] + "enum": ["SecureLink", "Link"] } }, - "id": { - "example": "https://id.gs1.org/01/09520123456788/21/12345", + "linkURL": { + "example": "https://files.example-certifier.com/1234567.json", "type": "string", "format": "uri", - "description": "The globally unique ID of the product as a URI. Ideall as a resolvable URL according to ISO 18975. " + "description": "The URL of the target resource. " }, - "name": { - "example": "EV battery 300Ah.", + "linkName": { + "example": "GBA rule book conformity certificate", "type": "string", - "description": "The registered name of the product within the identifier scheme. " + "description": "A display name for the target resource " }, - "registeredId": { - "example": "09520123456788.21.12345", + "linkType": { + "example": "https://test.uncefact.org/vocabulary/linkTypes/dcc", "type": "string", - "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." - }, - "idScheme": { - "$ref": "#/$defs/IdentifierScheme", - "description": "The identifier scheme for this product. Eg a GS1 GTIn or an AU Livestock NLIS, or similar. If self issued then use the party ID of the issuer. " + "description": "The type of the target resource - drawn from a controlled vocabulary " }, - "serialNumber": { - "example": "12345678", + "hashDigest": { + "example": "6239119dda5bd4c8a6ffb832fe16feaa5c27b7dba154d24c53d4470a2c69adc2", "type": "string", - "description": "A number or code representing a specific serialised item of the product. Unique within product class." + "description": "The hash of the file." }, - "batchNumber": { - "example": "6789", + "hashMethod": { "type": "string", - "description": "Identifier of the specific production batch of the product. Unique within the product class." + "enum": ["SHA-256", "SHA-1"], + "example": "SHA-256", + "description": "The hashing algorithm used to create the target hash. SHA-265 is the recommedned standard" }, - "IDverifiedByCAB": { - "example": "true", - "type": "boolean", - "description": "Indicates whether the conformity assessment body has verified the identity product that is the subject of the assessment." + "encryptionMethod": { + "type": "string", + "enum": ["none", "AES"], + "example": "none", + "description": "The symmetric encryption algorithm used to encrypt the link target. AES is the recommended standard. Decryption keys are expected to be passed out of bounds." } }, - "description": "The product which is the subject of this conformity assessment", - "required": ["id", "name"] + "description": "A binary file that is hashed ()for tamper evidence) and optionally encrypted (for confidentiality)." }, - "Facility": { + "CircularityPerformance": { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "array", "readOnly": true, - "const": ["Facility"], - "default": ["Facility"], + "const": ["CircularityPerformance"], + "default": ["CircularityPerformance"], "items": { "type": "string", - "enum": ["Facility"] + "enum": ["CircularityPerformance"] } }, - "id": { - "example": "https://sample-facility-register.com/1234567", - "type": "string", - "format": "uri", - "description": "The globally unique ID of the facility as URI, ideally as a resolvable URL." - }, - "name": { - "example": "Greenacres battery factory", - "type": "string", - "description": "The registered name of the facility within the identifier scheme. " + "recyclingInformation": { + "$ref": "#/$defs/Link", + "description": "A URI pointing to recycling information for the product." }, - "registeredId": { - "example": "1234567", - "type": "string", - "description": "The registration number (alphanumeric) of the facility within the identifir scheme. Unique within the register." + "repairInformation": { + "$ref": "#/$defs/Link", + "description": "A URI pointing to repair instructions for this product." }, - "idScheme": { - "$ref": "#/$defs/IdentifierScheme", - "description": "The ID scheme of the facility. eg a GS1 GLN or a National land registry scheme. If self issued then use the prty ID of the facility owner. " + "recyclableContent": { + "example": 0.5, + "type": "number", + "format": "float", + "description": "The fraction of the this product (my mass) that has been designed to be recyclable / re-usable. This will be be the total fraction that can avoid waste / landfill." }, - "locationInformation": { - "$ref": "#/$defs/Location", - "description": "Geolocation information for this facility. For example \"id\":\"maps.app.goo.gl/6yyPVdwJDWjtj9fG6\" \"areaReference\":\"plus.codes/4RPFR872+\"\" \"geoLocation\":[\"-35.186250\",\"149.301250\"]" + "recyecledContent": { + "example": 0.3, + "type": "number", + "format": "float", + "description": "The fraction (by mass) of recycled / repurposed, repaired content in this product. This will be the total virgin content fraction." }, - "address": { - "$ref": "#/$defs/Address", - "description": "The Postal address of the location." + "utilityFactor": { + "example": 1.2, + "type": "number", + "format": "float", + "description": "An indicator of durability defined as the lifetime (typically measures as usage cycles) for this product divided by the industry average. For example a battery with a 10,000 cycle lifetime where industry average is 5,000 cycles will have a durability factor of 2. If unknown set to 1 or omit. " }, - "IDverifiedByCAB": { - "example": "true", - "type": "boolean", - "description": "Indicates whether the conformity assessment body has verified the identity of the facility which is the subject of the assement." + "materialCircularityIndicator": { + "example": 0.67, + "type": "number", + "format": "float", + "description": "The overall circularity performance indicator for this product. Calculated as 1 - (V+W)/2D where - V = Virgin material proportion by mass (will be 1- recycled content) - W = Waste leakage proportion by mass (will be 1 - recyclableContent) - D = Utility factor (set to 1 if unknown). " } }, - "description": "The facility which is the subject of this conformity assessment", - "required": ["id", "name"] + "description": "High level corcularity information about this product. Note that this doens not substitute for detailed product circularity data sheet (PCDS) criteria which would be represented as a set of conformity claims against individual ISO PCDS criteria." }, - "Location": { + "EmissionsPerformance": { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "array", "readOnly": true, - "const": ["Location"], - "default": ["Location"], + "const": ["EmissionsPerformance"], + "default": ["EmissionsPerformance"], "items": { "type": "string", - "enum": ["Location"] + "enum": ["EmissionsPerformance"] } }, - "plusCode": { - "example": "https://plus.codes/8CGRC78W+MM", + "carbonFootprint": { + "example": 1.8, + "type": "number", + "format": "float", + "description": "The carbon footprint of the product in KgCO2e per declared unit." + }, + "declaredUnit": { "type": "string", - "format": "uri", - "description": "An open location code (https://maps.google.com/pluscodes/) representing this geographic location or region. Open location codes can represent any sized area from a point to a large region and are easily resolved to a visual map location. " + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "The unit of product (EA, KGM, LTR, etc) that is the basis for carbon footprint.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + }, + "operationalScope": { + "type": "string", + "enum": ["None", "CradleToGate", "CradleToGrave"], + "example": "None", + "description": "The operational scope of the emissions performance. Only scope 1 & 2, or inlcuing upstream scope 3 (cradle to gate) or upstream and downstream scope 3 (cradle to grave)." }, - "geoLocation": { - "$ref": "#/$defs/Point", - "description": "The latitude and logditude coordinates that best represent the specified location. Using GeoJSON Point notation." + "primarySourcedRatio": { + "example": 0.3, + "type": "number", + "format": "float", + "description": "The ratio of emissions data from primary sources (ie from supplier / product specific information rather than secondary / industry averages)." }, - "geoBoundary": { - "$ref": "#/$defs/Polygon", - "description": "The list of ordered coordinates that define a closed area polygon as a location boundary using GeoJSON polygon notation." + "reportingStandard": { + "$ref": "#/$defs/Standard", + "description": "The reporting standard (eg GHG Protocol, IFRS S2, ESRS, etc) against which this product emissions performance is assessed." } }, - "description": "Location information including address and geolocation of points, areas, and boundaries" + "description": "Product specific characteristics. This class is an extension point for industry specific product characteristics or performance information such as clothing size or battery capacity.", + "required": ["carbonFootprint", "declaredUnit", "operationalScope", "primarySourcedRatio"] }, - "Point": { + "TraceabilityPerformance": { "type": "object", "additionalProperties": false, "properties": { "type": { - "type": "string", - "enum": ["Point"], - "example": "Point", - "description": "" - }, - "coordinates": { - "$ref": "#/$defs/Point3D", - "description": "Coordinates property of type Point3D" - } - }, - "description": "Represents a Point geometry", - "required": ["type"] - }, - "Point3D": { - "description": "Point in 3d space", - "oneOf": [ - { "type": "array", "readOnly": true, - "const": ["Point3D"], - "default": ["Point3D"], + "const": ["TraceabilityPerformance"], + "default": ["TraceabilityPerformance"], "items": { "type": "string", - "enum": ["Point3D"] + "enum": ["TraceabilityPerformance"] } }, - { - "type": "array", - "items": { - "type": "number", - "format": "float" - }, - "description": "Array of decimal values" - } - ] - }, - "Polygon": { - "type": "object", - "additionalProperties": false, - "properties": { - "type": { + "valueChainProcess": { + "example": "Spinning", "type": "string", - "enum": ["Polygon"], - "example": "Polygon", - "description": "" + "description": "Hman readable name for the industry specific value chain process representing this traceability data set." }, - "coordinates": { - "type": "array", - "items": { - "$ref": "#/$defs/Point3DWrapper" - }, - "description": "Array of PolygonCoordinates" - } - }, - "description": "Represents a Polygon geometry", - "required": ["type"] - }, - "Point3DWrapper": { - "description": "", - "oneOf": [ - { - "type": "array", - "readOnly": true, - "const": ["Point3DWrapper"], - "default": ["Point3DWrapper"], - "items": { - "type": "string", - "enum": ["Point3DWrapper"] - } + "verifiedRatio": { + "example": 0.5, + "type": "number", + "description": "The proportion (0 to 1) of materials in this value chain process that have been traced using verifiable traceability event." }, - { + "traceabilityEvents": { "type": "array", "items": { - "$ref": "#/$defs/Point3D" + "$ref": "#/$defs/SecureLink" }, - "description": "" - } - ] - }, - "Address": { - "type": "object", - "additionalProperties": false, - "properties": { - "type": { - "type": "array", - "readOnly": true, - "const": ["Address"], - "default": ["Address"], - "items": { - "type": "string", - "enum": ["Address"] - } - }, - "streetAddress": { - "example": "level 11, 15 London Circuit", - "type": "string", - "description": "the street address - eg " - }, - "postalCode": { - "example": "2601", - "type": "string", - "description": "The post code" - }, - "addressLocality": { - "example": "Acton", - "type": "string", - "description": "The city, suburb or township." - }, - "addressRegion": { - "example": "ACT", - "type": "string", - "description": "The state or territory or province" - }, - "addressCountry": { - "type": "string", - "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", - "description": "The address country\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + "description": "A list of secure links to digital traceability events that support this traceability performance statement. May be encrypted for confidentiality purposes. " } }, - "description": "A postal address" + "description": "" } } } diff --git a/packages/untp-test-suite/src/schemas/conformityCredential/v0.4.1/schema.json b/packages/untp-test-suite/src/schemas/conformityCredential/v0.4.1/schema.json new file mode 100644 index 00000000..5c6baed6 --- /dev/null +++ b/packages/untp-test-suite/src/schemas/conformityCredential/v0.4.1/schema.json @@ -0,0 +1,918 @@ +{ + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["DigitalProductPassport", "VerifiableCredential"], + "default": ["DigitalProductPassport", "VerifiableCredential"], + "items": { + "type": "string", + "enum": ["DigitalProductPassport", "VerifiableCredential"] + } + }, + "@context": { + "example": "https://test.uncefact.org/vocabulary/untp/dpp/dpp-context.jsonld", + "type": "array", + "items": { + "type": "string", + "enum": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.4.1/"] + }, + "description": "A list of JSON-LD context URIs that define the seamntic meaning of prperties within the credential. ", + "readOnly": true, + "const": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.4.1/"], + "default": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.4.1/"] + }, + "id": { + "example": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "type": "string", + "format": "uri", + "description": "A unique identifier (URI) assigned to the product passport. May be a UUID" + }, + "issuer": { + "$ref": "#/$defs/CredentialIssuer", + "description": "The organisation that is the isuer of this VC. Note that the \"id\" property MUST be a W3C DID. Other identifiers such as tax registration numbers can be listed in the \"otherIdentifiers\" property." + }, + "validFrom": { + "example": "2024-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The date and time from which the credential is valid." + }, + "validUntil": { + "example": "2034-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The expiry date (if applicable) of this verifiable credential." + }, + "credentialSubject": { + "$ref": "#/$defs/Product", + "description": "The subject of a digital product passport credential is the identified product. " + } + }, + "description": "The ProductPassport is a comprehensive data structure that encapsulates various details pertaining to a product, including its identification details, who issued it, batch information, provernance information, circularity information and a set of verifable product confomrity & sistainability claims.", + "required": ["@context", "id", "issuer"], + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$defs": { + "CredentialIssuer": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["CredentialIssuer"], + "default": ["CredentialIssuer"], + "items": { + "type": "string", + "enum": ["CredentialIssuer"] + } + }, + "id": { + "example": "did:web:identifiers.example-company.com:12345", + "type": "string", + "format": "uri", + "description": "The W3C DID of the issuer - should be a did:web or did:tdw" + }, + "name": { + "example": "Example Company Pty Ltd", + "type": "string", + "description": "The name of the issuer person or organisation" + }, + "otherIdentifier": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this credential issuer " + } + }, + "description": "The issuer party ()person or orgnaition) of a verifiable credential.", + "required": ["id", "name"] + }, + "Identifier": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Identifier"], + "default": ["Identifier"], + "items": { + "type": "string", + "enum": ["Identifier"] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the entity as a resolvable URL according to ISO 18975. ExamplesProduct - id.gs1.org/01/09520123456788/21/12345 Party - abr.business.gov.au/ABN/View?abn=90664869327. Facility - did:web:facilities.example-company.com:123. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the entity within the identifier scheme. Examplesproduct - EV battery 300Ahparty - Sample Company Pty Ltd. facility - Greenacres battery factory" + }, + "registeredId": { + "example": "90664869327", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme. Exampleproduct - id.gs1.org/01. party - business.gov.au/abn facility - did:web:facilities.acme.com. " + } + }, + "description": "The ID and Name of an identified entity such qs a product, facility, party, standard, etc. If the identifier is a W3C DID then the corresponding DID document SHOULD include a serviceEndpoint of type \"IdentityResolver\". If the identifier is not a W3C DID then the id peroperty SHOULD be an identity resolver URL.", + "required": ["id", "name"] + }, + "IdentifierScheme": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["IdentifierScheme"], + "default": ["IdentifierScheme"], + "items": { + "type": "string", + "enum": ["IdentifierScheme"] + } + }, + "id": { + "example": "https://id.gs1.org/01/", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of the registration scheme. The scheme should be registered and discoverable from vocabulary.uncefact.org/identifierSchemes" + }, + "name": { + "example": "Global Trade Identification Number (GTIN)", + "type": "string", + "description": "The name of the identifier scheme. " + } + }, + "description": "An identifier registration scheme for products, facilities, or organisations. Typically operated by a state, national or gloabl authority." + }, + "Product": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Product"], + "default": ["Product"], + "items": { + "type": "string", + "enum": ["Product"] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the product as a URI. Ideall as a resolvable URL according to ISO 18975. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the product within the identifier scheme. " + }, + "registeredId": { + "example": "09520123456788.21.12345", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme for this product. Eg a GS1 GTIn or an AU Livestock NLIS, or similar. If self issued then use the party ID of the issuer. " + }, + "serialNumber": { + "example": "12345678", + "type": "string", + "description": "A number or code representing a specific serialised item of the product. Unique within product class." + }, + "batchNumber": { + "example": "6789", + "type": "string", + "description": "Identifier of the specific production batch of the product. Unique within the product class." + }, + "productImage": { + "$ref": "#/$defs/Link", + "description": "Reference information (location, type, name) of an image of the product." + }, + "description": { + "example": "400Ah 24v LiFePO4 battery", + "type": "string", + "description": "A textual description providing details about the product." + }, + "productCategory": { + "type": "array", + "items": { + "$ref": "#/$defs/Classification" + }, + "description": "A code representing the product's class, typically using the UN CPC (United Nations Central Product Classification) https://unstats.un.org/unsd/classifications/Econ/cpc" + }, + "furtherInformation": { + "type": "array", + "items": { + "$ref": "#/$defs/Link" + }, + "description": "A URL pointing to further human readable information about the product." + }, + "producedByParty": { + "$ref": "#/$defs/Identifier", + "description": "The Party entity that manufactured the product." + }, + "producedAtFacility": { + "$ref": "#/$defs/Identifier", + "description": "The Facility where the product batch was produced / manufactured." + }, + "dimensions": { + "$ref": "#/$defs/Dimension", + "description": "The physical dimensions of the product. Not every dimension is relevant to every products. For example bulk materials may have wieght and volume but not length, with, or height.\"weight\":{\"value\":10, \"unit\":\"KGM\"}" + }, + "productionDate": { + "example": "2024-04-25", + "type": "string", + "format": "date", + "description": "The ISO 8601 date on which the product batch or individual serialised item was manufactured." + }, + "countryOfProduction": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The country in which this item was produced / manufactured.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "granularityLevel": { + "type": "string", + "enum": ["item", "batch", "model"], + "example": "item", + "description": "Code to indicate the granularity of this digital product passport - item level, batch level or product class level." + }, + "dueDiligenceDeclaration": { + "$ref": "#/$defs/Link", + "description": "The due diligence declaration that conforms with the regulations of the market into which the product is sold." + }, + "materialsProvenance": { + "type": "array", + "items": { + "$ref": "#/$defs/Material" + }, + "description": "An array of Provenance objects providing details on the origin and mass fraction of components or ingredients of the product batch. " + }, + "conformityClaim": { + "type": "array", + "items": { + "$ref": "#/$defs/Claim" + }, + "description": "An array of claim objects representing various product conformity claims about the product / batch. These can be sustainability claims, circularity claims, or any other claim type within the conformity topic list." + }, + "circularityScorecard": { + "$ref": "#/$defs/CircularityPerformance", + "description": "A circularity performance scorecard" + }, + "emissionsScorecard": { + "$ref": "#/$defs/EmissionsPerformance", + "description": "An emissions performacne scorecard" + }, + "traceabilityInformation": { + "$ref": "#/$defs/TraceabilityPerformance", + "description": "An array of traceability events grouped by value chain process. Where actual traceability events are unavailable or carry sensitive information, passport publishers may specify the extent to which the traceability information has been independently verified. " + } + }, + "description": "The ProductInformation class encapsulates detailed information regarding a specific product, including its identification details, manufacturer, and other pertinent details. ", + "required": ["id", "name"] + }, + "Link": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Link"], + "default": ["Link"], + "items": { + "type": "string", + "enum": ["Link"] + } + }, + "linkURL": { + "example": "https://files.example-certifier.com/1234567.json", + "type": "string", + "format": "uri", + "description": "The URL of the target resource. " + }, + "linkName": { + "example": "GBA rule book conformity certificate", + "type": "string", + "description": "A display name for the target resource " + }, + "linkType": { + "example": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "type": "string", + "description": "The type of the target resource - drawn from a controlled vocabulary " + } + }, + "description": "A structure to provide a URL link plus metadata associated with the link." + }, + "Classification": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Classification"], + "default": ["Classification"], + "items": { + "type": "string", + "enum": ["Classification"] + } + }, + "id": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "type": "string", + "format": "uri", + "description": "The globally unique URI representing the specific classifier value" + }, + "code": { + "example": "46410", + "type": "string", + "description": "classification code within the scheme" + }, + "name": { + "example": "Primary cells and primary batteries", + "type": "string", + "description": "Name of the classification represented by the code" + }, + "schemeID": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "type": "string", + "format": "uri", + "description": "Classification scheme ID" + }, + "schemeName": { + "example": "UN Central Product Classification (CPC)", + "type": "string", + "description": "The name of the classification scheme" + } + }, + "description": "A classification scheme and code / name representing a category value for a product, entity, or facility.", + "required": ["id", "name"] + }, + "Dimension": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Dimension"], + "default": ["Dimension"], + "items": { + "type": "string", + "enum": ["Dimension"] + } + }, + "weight": { + "$ref": "#/$defs/Measure", + "description": "the weight of the product. EG {\"value\":10, \"unit\":\"KGM\"}" + }, + "length": { + "$ref": "#/$defs/Measure", + "description": "The length of the product or packaging eg {\"value\":840, \"unit\":\"MMT\"}" + }, + "width": { + "$ref": "#/$defs/Measure", + "description": "The width of the product or packaging. eg {\"value\":150, \"unit\":\"MMT\"}" + }, + "height": { + "$ref": "#/$defs/Measure", + "description": "The height of the product or packaging. eg {\"value\":220, \"unit\":\"MMT\"}" + }, + "volume": { + "$ref": "#/$defs/Measure", + "description": "The displacement volume of the product. eg {\"value\":7.5, \"unit\":\"LTR\"}" + } + }, + "description": "Overall (length, width, height) dimensions and weight/volume of an item." + }, + "Measure": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Measure"], + "default": ["Measure"], + "items": { + "type": "string", + "enum": ["Measure"] + } + }, + "value": { + "example": 10, + "type": "number", + "description": "The numeric value of the measure" + }, + "unit": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "Unit of measure drawn from the UNECE rec20 measure code list.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "The measure class defines a numeric measured value (eg 10) and a coded unit of measure (eg KG).", + "required": ["value", "unit"] + }, + "Material": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Material"], + "default": ["Material"], + "items": { + "type": "string", + "enum": ["Material"] + } + }, + "name": { + "example": "Lithium Spodumene", + "type": "string", + "description": "Name of this material (eg \"Egyptian Cotton\")" + }, + "originCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "A ISO 3166-1 code representing the country of origin of the component or ingredient.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "materialType": { + "$ref": "#/$defs/Classification", + "description": "The type of this material - as a value drawn from a controlled vocabulary eg from UN Framework Classification for Resources (UNFC)." + }, + "massFraction": { + "example": 0.2, + "type": "number", + "description": "The mass fraction of the product represented by this material. The sum of all mass fraction values for a given passport should be 1." + }, + "massAmount": { + "$ref": "#/$defs/Measure", + "description": "The mass of the material component." + }, + "recycledAmount": { + "example": 0.5, + "type": "number", + "description": "Mass fraction of this material that is recycled (eg 50% recycled Lithium)" + }, + "hazardous": { + "example": "false", + "type": "boolean", + "description": "Indicates whether this material is hazardous. If true then the materialSafetyInformation proerty must be present" + }, + "symbol": { + "type": "string", + "format": "binary", + "description": "Based 64 encoded binary used to represent a visual symbol for a given material. " + }, + "materialSafetyInformation": { + "$ref": "#/$defs/Link", + "description": "Refernece to further information obout safe handling of this hazardous material (for example a link to a material safety data sheet)" + } + }, + "description": "The material class encapsulates details about the origin or source of raw materials in a product, including the country of origin and the mass fraction.", + "required": ["name"] + }, + "Claim": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Claim", "Declaration"], + "default": ["Claim", "Declaration"], + "items": { + "type": "string", + "enum": ["Claim", "Declaration"] + } + }, + "assessmentDate": { + "example": "2024-03-15", + "type": "string", + "format": "date", + "description": "The date on which this assessment was made. " + }, + "declaredValue": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "The list of specific values measured as part of this assessment (eg tensile strength)" + }, + "id": { + "example": "https://products.example-company.com/09520123456788/declarations/12345", + "type": "string", + "format": "uri", + "description": "A unique identifier for the delcaration. Often this will be an extension of the product.id or attestation.id. But could be a UUID." + }, + "referenceStandard": { + "$ref": "#/$defs/Standard", + "description": "The reference to the standard that defines the specification / criteria" + }, + "referenceRegulation": { + "$ref": "#/$defs/Regulation", + "description": "The reference to the regulation that defines the assessment criteria" + }, + "assessmentCriteria": { + "type": "array", + "items": { + "$ref": "#/$defs/Criterion" + }, + "description": "The specification against which the assessment is made." + }, + "declaredValues": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "The list of specific values measured as part of this assessment (eg tensile strength)" + }, + "compliance": { + "example": "true", + "type": "boolean", + "description": "An indicator of whether or not the assessment meets the specification." + }, + "conformityTopic": { + "type": "string", + "enum": [ + "environment.energy", + "environment.emissions", + "environment.water", + "environment.waste", + "environment.deforestation", + "environment.biodiversity", + "circularity.content", + "circularity.design", + "social.labour", + "social.rights", + "social.community", + "social.safety", + "governance.ethics", + "governance.compliance", + "governance.transparency" + ], + "example": "environment.energy", + "description": "The conformity topic category for this assessment (eg vocabulary.uncefact.org/sustainability/emissions)" + }, + "conformityEvidence": { + "$ref": "#/$defs/SecureLink", + "description": "A URI pointing to the evidence supporting the claim. SHOULD be a URL to a UNTP Digital COnformity Credential (DCC)" + } + }, + "description": "A declaration of conformance with one or more criteria from a specific standard or regulation. ", + "required": ["id", "compliance", "conformityTopic"] + }, + "Metric": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Metric"], + "default": ["Metric"], + "items": { + "type": "string", + "enum": ["Metric"] + } + }, + "metricName": { + "example": "GHG emissions intensity", + "type": "string", + "description": "A human readable name for this metric (for example \"Tensile strength\")" + }, + "metricValue": { + "$ref": "#/$defs/Measure", + "description": "A numeric value and unit of measure for this metric. Could be a measured value or a specified threshold. Eg {\"value\":400, \"unit\":\"MPA\"} as tensile strenght of structural steel" + }, + "score": { + "example": "BB", + "type": "string", + "description": "A score or rank associated with this measured metric." + }, + "accuracy": { + "example": 0.05, + "type": "number", + "description": "A percentage represented as a numeric between 0 and 1 indicating the rage of accuracy of the claimed value (eg 0.05 means that the actual value is within 5% of the claimed value.)" + } + }, + "description": "A specific measure of performance against the criteria that governs the claim. Expressed as an array of metric (ie unit of emasure) / value (ie the actual numeric value) pairs. ", + "required": ["metricName", "metricValue"] + }, + "Standard": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Standard"], + "default": ["Standard"], + "items": { + "type": "string", + "enum": ["Standard"] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf", + "type": "string", + "format": "uri", + "description": "A unique identifier for the standard (eg https://www.iso.org/standard/60857.html)." + }, + "name": { + "example": "GBA Battery Passport Greenhouse Gas Rulebook - V.2.0", + "type": "string", + "description": "The name of the standard" + }, + "issuingParty": { + "$ref": "#/$defs/Identifier", + "description": "The party that issued the standard " + }, + "issueDate": { + "example": "2023-12-05", + "type": "string", + "format": "date", + "description": "The date when the standard was issued." + } + }, + "description": "A standard (eg ISO 14000) that specifies the criteria for conformance.", + "required": ["issuingParty"] + }, + "Regulation": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Regulation"], + "default": ["Regulation"], + "items": { + "type": "string", + "enum": ["Regulation"] + } + }, + "id": { + "example": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of this regulation. " + }, + "name": { + "example": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "type": "string", + "description": "The name of the regulation or act." + }, + "jurisdictionCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The legal jurisdiction (country) under which the regulation is issued.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "administeredBy": { + "$ref": "#/$defs/Identifier", + "description": "the issuing body of the regulation. For example Australin Goernment Department of Climate Change, Energy, the Environment and Water" + }, + "effectiveDate": { + "example": "2024-03-20", + "type": "string", + "format": "date", + "description": "the date at which the regulation came into effect." + } + }, + "description": "A regulation (eg EU deforestation regulation) that defines the criteria for assessment.", + "required": ["administeredBy"] + }, + "Criterion": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Criterion"], + "default": ["Criterion"], + "items": { + "type": "string", + "enum": ["Criterion"] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf#BatteryAssembly", + "type": "string", + "format": "uri", + "description": "A unique identifier for the criteria within the standard or regulation. For example CO2 emissions calaculations for liquid fule combusion." + }, + "name": { + "example": "GBA Battery rule book v2.0 battery assembly guidelines.", + "type": "string", + "description": "A name that describes this criteria." + }, + "thresholdValues": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "A conformity threshold defined by the specification (eg minimum compressive strength) " + } + }, + "description": "A specific rule or criterion within a standard or regulation. eg a carbon intensity calculation rule within an emissions standard.", + "required": ["id", "name"] + }, + "SecureLink": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["SecureLink", "Link"], + "default": ["SecureLink", "Link"], + "items": { + "type": "string", + "enum": ["SecureLink", "Link"] + } + }, + "linkURL": { + "example": "https://files.example-certifier.com/1234567.json", + "type": "string", + "format": "uri", + "description": "The URL of the target resource. " + }, + "linkName": { + "example": "GBA rule book conformity certificate", + "type": "string", + "description": "A display name for the target resource " + }, + "linkType": { + "example": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "type": "string", + "description": "The type of the target resource - drawn from a controlled vocabulary " + }, + "hashDigest": { + "example": "6239119dda5bd4c8a6ffb832fe16feaa5c27b7dba154d24c53d4470a2c69adc2", + "type": "string", + "description": "The hash of the file." + }, + "hashMethod": { + "type": "string", + "enum": ["SHA-256", "SHA-1"], + "example": "SHA-256", + "description": "The hashing algorithm used to create the target hash. SHA-265 is the recommedned standard" + }, + "encryptionMethod": { + "type": "string", + "enum": ["none", "AES"], + "example": "none", + "description": "The symmetric encryption algorithm used to encrypt the link target. AES is the recommended standard. Decryption keys are expected to be passed out of bounds." + } + }, + "description": "A binary file that is hashed ()for tamper evidence) and optionally encrypted (for confidentiality)." + }, + "CircularityPerformance": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["CircularityPerformance"], + "default": ["CircularityPerformance"], + "items": { + "type": "string", + "enum": ["CircularityPerformance"] + } + }, + "recyclingInformation": { + "$ref": "#/$defs/Link", + "description": "A URI pointing to recycling information for the product." + }, + "repairInformation": { + "$ref": "#/$defs/Link", + "description": "A URI pointing to repair instructions for this product." + }, + "recyclableContent": { + "example": 0.5, + "type": "number", + "format": "float", + "description": "The fraction of the this product (my mass) that has been designed to be recyclable / re-usable. This will be be the total fraction that can avoid waste / landfill." + }, + "recycledContent": { + "example": 0.3, + "type": "number", + "format": "float", + "description": "The fraction (by mass) of recycled / repurposed, repaired content in this product. This will be the total virgin content fraction." + }, + "utilityFactor": { + "example": 1.2, + "type": "number", + "format": "float", + "description": "An indicator of durability defined as the lifetime (typically measures as usage cycles) for this product divided by the industry average. For example a battery with a 10,000 cycle lifetime where industry average is 5,000 cycles will have a durability factor of 2. If unknown set to 1 or omit. " + }, + "materialCircularityIndicator": { + "example": 0.67, + "type": "number", + "format": "float", + "description": "The overall circularity performance indicator for this product. Calculated as 1 - (V+W)/2D where - V = Virgin material proportion by mass (will be 1- recycled content) - W = Waste leakage proportion by mass (will be 1 - recyclableContent) - D = Utility factor (set to 1 if unknown). " + } + }, + "description": "High level corcularity information about this product. Note that this doens not substitute for detailed product circularity data sheet (PCDS) criteria which would be represented as a set of conformity claims against individual ISO PCDS criteria." + }, + "EmissionsPerformance": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["EmissionsPerformance"], + "default": ["EmissionsPerformance"], + "items": { + "type": "string", + "enum": ["EmissionsPerformance"] + } + }, + "carbonFootprint": { + "example": 1.8, + "type": "number", + "format": "float", + "description": "The carbon footprint of the product in KgCO2e per declared unit." + }, + "declaredUnit": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "The unit of product (EA, KGM, LTR, etc) that is the basis for carbon footprint.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + }, + "operationalScope": { + "type": "string", + "enum": ["None", "CradleToGate", "CradleToGrave"], + "example": "None", + "description": "The operational scope of the emissions performance. Only scope 1 & 2, or inlcuing upstream scope 3 (cradle to gate) or upstream and downstream scope 3 (cradle to grave)." + }, + "primarySourcedRatio": { + "example": 0.3, + "type": "number", + "format": "float", + "description": "The ratio of emissions data from primary sources (ie from supplier / product specific information rather than secondary / industry averages)." + }, + "reportingStandard": { + "$ref": "#/$defs/Standard", + "description": "The reporting standard (eg GHG Protocol, IFRS S2, ESRS, etc) against which this product emissions performance is assessed." + } + }, + "description": "Product specific characteristics. This class is an extension point for industry specific product characteristics or performance information such as clothing size or battery capacity.", + "required": ["carbonFootprint", "declaredUnit", "operationalScope", "primarySourcedRatio"] + }, + "TraceabilityPerformance": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["TraceabilityPerformance"], + "default": ["TraceabilityPerformance"], + "items": { + "type": "string", + "enum": ["TraceabilityPerformance"] + } + }, + "valueChainProcess": { + "example": "Spinning", + "type": "string", + "description": "Hman readable name for the industry specific value chain process representing this traceability data set." + }, + "verifiedRatio": { + "example": 0.5, + "type": "number", + "description": "The proportion (0 to 1) of materials in this value chain process that have been traced using verifiable traceability event." + }, + "traceabilityEvent": { + "type": "array", + "items": { + "$ref": "#/$defs/SecureLink" + }, + "description": "A list of secure links to digital traceability events that support this traceability performance statement. May be encrypted for confidentiality purposes. " + } + }, + "description": "An array of secure links to TraceabilityEvent objects detailing EPCIS events related to the traceability of the product batch. Events are grouped by value chain process (eg \"Weaving\" in textiles supply chain)." + } + } +} diff --git a/packages/untp-test-suite/src/schemas/conformityCredential/v0.4.2/schema.json b/packages/untp-test-suite/src/schemas/conformityCredential/v0.4.2/schema.json new file mode 100644 index 00000000..a49ea77d --- /dev/null +++ b/packages/untp-test-suite/src/schemas/conformityCredential/v0.4.2/schema.json @@ -0,0 +1,918 @@ +{ + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["DigitalProductPassport", "VerifiableCredential"], + "default": ["DigitalProductPassport", "VerifiableCredential"], + "items": { + "type": "string", + "enum": ["DigitalProductPassport", "VerifiableCredential"] + } + }, + "@context": { + "example": "https://test.uncefact.org/vocabulary/untp/dpp/dpp-context.jsonld", + "type": "array", + "items": { + "type": "string", + "enum": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.4.2/"] + }, + "description": "A list of JSON-LD context URIs that define the semantic meaning of properties within the credential. ", + "readOnly": true, + "const": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.4.2/"], + "default": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.4.2/"] + }, + "id": { + "example": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "type": "string", + "format": "uri", + "description": "A unique identifier (URI) assigned to the product passport. May be a UUID" + }, + "issuer": { + "$ref": "#/$defs/CredentialIssuer", + "description": "The organisation that is the issuer of this VC. Note that the \"id\" property MUST be a W3C DID. Other identifiers such as tax registration numbers can be listed in the \"otherIdentifiers\" property." + }, + "validFrom": { + "example": "2024-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The date and time from which the credential is valid." + }, + "validUntil": { + "example": "2034-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The expiry date (if applicable) of this verifiable credential." + }, + "credentialSubject": { + "$ref": "#/$defs/Product", + "description": "The subject of a digital product passport credential is the identified product. " + } + }, + "description": "The Product Passport is a comprehensive data structure that encapsulates various details pertaining to a product, including its identification details, who issued it, batch information, provenance information, circularity information and a set of verifiable product conformity & sustainability claims.", + "required": ["@context", "id", "issuer"], + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$defs": { + "CredentialIssuer": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["CredentialIssuer"], + "default": ["CredentialIssuer"], + "items": { + "type": "string", + "enum": ["CredentialIssuer"] + } + }, + "id": { + "example": "did:web:identifiers.example-company.com:12345", + "type": "string", + "format": "uri", + "description": "The W3C DID of the issuer - should be a did:web or did:tdw" + }, + "name": { + "example": "Example Company Pty Ltd", + "type": "string", + "description": "The name of the issuer person or organisation" + }, + "otherIdentifier": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this credential issuer " + } + }, + "description": "The issuer party (person or organisation) of a verifiable credential.", + "required": ["id", "name"] + }, + "Identifier": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Identifier"], + "default": ["Identifier"], + "items": { + "type": "string", + "enum": ["Identifier"] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the entity as a resolvable URL according to ISO 18975. ExamplesProduct - id.gs1.org/01/09520123456788/21/12345 Party - abr.business.gov.au/ABN/View?abn=90664869327. Facility - did:web:facilities.example-company.com:123. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the entity within the identifier scheme. Examples: product - EV battery 300Ah, Party - Sample Company Pty Ltd, Facility - Green Acres battery factory" + }, + "registeredId": { + "example": "90664869327", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme. Examples : Product - id.gs1.org/01, Party - business.gov.au/abn, Facility - did:web:facilities.acme.com. " + } + }, + "description": "The ID and Name of an identified entity such as a product, facility, party, standard, etc. If the identifier is a W3C DID then the corresponding DID document SHOULD include a serviceEndpoint of type \"IdentityResolver\". If the identifier is not a W3C DID then the id property SHOULD be an identity resolver URL.", + "required": ["id", "name"] + }, + "IdentifierScheme": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["IdentifierScheme"], + "default": ["IdentifierScheme"], + "items": { + "type": "string", + "enum": ["IdentifierScheme"] + } + }, + "id": { + "example": "https://id.gs1.org/01/", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of the registration scheme. The scheme should be registered and discoverable from vocabulary.uncefact.org/identifierSchemes" + }, + "name": { + "example": "Global Trade Identification Number (GTIN)", + "type": "string", + "description": "The name of the identifier scheme. " + } + }, + "description": "An identifier registration scheme for products, facilities, or organisations. Typically operated by a state, national or global authority." + }, + "Product": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Product"], + "default": ["Product"], + "items": { + "type": "string", + "enum": ["Product"] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the product as a URI. Ideally as a resolvable URL according to ISO 18975. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the product within the identifier scheme. " + }, + "registeredId": { + "example": "09520123456788.21.12345", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme for this product. Eg a GS1 GTIN or an AU Livestock NLIS, or similar. If self issued then use the party ID of the issuer. " + }, + "serialNumber": { + "example": "12345678", + "type": "string", + "description": "A number or code representing a specific serialised item of the product. Unique within product class." + }, + "batchNumber": { + "example": "6789", + "type": "string", + "description": "Identifier of the specific production batch of the product. Unique within the product class." + }, + "productImage": { + "$ref": "#/$defs/Link", + "description": "Reference information (location, type, name) of an image of the product." + }, + "description": { + "example": "400Ah 24v LiFePO4 battery", + "type": "string", + "description": "A textual description providing details about the product." + }, + "productCategory": { + "type": "array", + "items": { + "$ref": "#/$defs/Classification" + }, + "description": "A code representing the product's class, typically using the UN CPC (United Nations Central Product Classification) https://unstats.un.org/unsd/classifications/Econ/cpc" + }, + "furtherInformation": { + "type": "array", + "items": { + "$ref": "#/$defs/Link" + }, + "description": "A URL pointing to further human readable information about the product." + }, + "producedByParty": { + "$ref": "#/$defs/Identifier", + "description": "The Party entity that manufactured the product." + }, + "producedAtFacility": { + "$ref": "#/$defs/Identifier", + "description": "The Facility where the product batch was produced / manufactured." + }, + "dimensions": { + "$ref": "#/$defs/Dimension", + "description": "The physical dimensions of the product. Not every dimension is relevant to every products. For example bulk materials may have weight and volume but not length, with, or height.\"weight\":{\"value\":10, \"unit\":\"KGM\"}" + }, + "productionDate": { + "example": "2024-04-25", + "type": "string", + "format": "date", + "description": "The ISO 8601 date on which the product batch or individual serialised item was manufactured." + }, + "countryOfProduction": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The country in which this item was produced / manufactured.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "granularityLevel": { + "type": "string", + "enum": ["item", "batch", "model"], + "example": "item", + "description": "Code to indicate the granularity of this digital product passport - item level, batch level or product class level." + }, + "dueDiligenceDeclaration": { + "$ref": "#/$defs/Link", + "description": "The due diligence declaration that conforms with the regulations of the market into which the product is sold." + }, + "materialsProvenance": { + "type": "array", + "items": { + "$ref": "#/$defs/Material" + }, + "description": "An array of Provenance objects providing details on the origin and mass fraction of components or ingredients of the product batch. " + }, + "conformityClaim": { + "type": "array", + "items": { + "$ref": "#/$defs/Claim" + }, + "description": "An array of claim objects representing various product conformity claims about the product / batch. These can be sustainability claims, circularity claims, or any other claim type within the conformity topic list." + }, + "circularityScorecard": { + "$ref": "#/$defs/CircularityPerformance", + "description": "A circularity performance scorecard" + }, + "emissionsScorecard": { + "$ref": "#/$defs/EmissionsPerformance", + "description": "An emissions performance scorecard" + }, + "traceabilityInformation": { + "$ref": "#/$defs/TraceabilityPerformance", + "description": "An array of traceability events grouped by value chain process. Where actual traceability events are unavailable or carry sensitive information, passport publishers may specify the extent to which the traceability information has been independently verified. " + } + }, + "description": "The ProductInformation class encapsulates detailed information regarding a specific product, including its identification details, manufacturer, and other pertinent details. ", + "required": ["id", "name"] + }, + "Link": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Link"], + "default": ["Link"], + "items": { + "type": "string", + "enum": ["Link"] + } + }, + "linkURL": { + "example": "https://files.example-certifier.com/1234567.json", + "type": "string", + "format": "uri", + "description": "The URL of the target resource. " + }, + "linkName": { + "example": "GBA rule book conformity certificate", + "type": "string", + "description": "A display name for the target resource " + }, + "linkType": { + "example": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "type": "string", + "description": "The type of the target resource - drawn from a controlled vocabulary " + } + }, + "description": "A structure to provide a URL link plus metadata associated with the link." + }, + "Classification": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Classification"], + "default": ["Classification"], + "items": { + "type": "string", + "enum": ["Classification"] + } + }, + "id": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "type": "string", + "format": "uri", + "description": "The globally unique URI representing the specific classifier value" + }, + "code": { + "example": "46410", + "type": "string", + "description": "classification code within the scheme" + }, + "name": { + "example": "Primary cells and primary batteries", + "type": "string", + "description": "Name of the classification represented by the code" + }, + "schemeID": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "type": "string", + "format": "uri", + "description": "Classification scheme ID" + }, + "schemeName": { + "example": "UN Central Product Classification (CPC)", + "type": "string", + "description": "The name of the classification scheme" + } + }, + "description": "A classification scheme and code / name representing a category value for a product, entity, or facility.", + "required": ["id", "name"] + }, + "Dimension": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Dimension"], + "default": ["Dimension"], + "items": { + "type": "string", + "enum": ["Dimension"] + } + }, + "weight": { + "$ref": "#/$defs/Measure", + "description": "the weight of the product. EG {\"value\":10, \"unit\":\"KGM\"}" + }, + "length": { + "$ref": "#/$defs/Measure", + "description": "The length of the product or packaging eg {\"value\":840, \"unit\":\"MMT\"}" + }, + "width": { + "$ref": "#/$defs/Measure", + "description": "The width of the product or packaging. eg {\"value\":150, \"unit\":\"MMT\"}" + }, + "height": { + "$ref": "#/$defs/Measure", + "description": "The height of the product or packaging. eg {\"value\":220, \"unit\":\"MMT\"}" + }, + "volume": { + "$ref": "#/$defs/Measure", + "description": "The displacement volume of the product. eg {\"value\":7.5, \"unit\":\"LTR\"}" + } + }, + "description": "Overall (length, width, height) dimensions and weight/volume of an item." + }, + "Measure": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Measure"], + "default": ["Measure"], + "items": { + "type": "string", + "enum": ["Measure"] + } + }, + "value": { + "example": 10, + "type": "number", + "description": "The numeric value of the measure" + }, + "unit": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "Unit of measure drawn from the UNECE Rec20 measure code list.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "The measure class defines a numeric measured value (eg 10) and a coded unit of measure (eg KG).", + "required": ["value", "unit"] + }, + "Material": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Material"], + "default": ["Material"], + "items": { + "type": "string", + "enum": ["Material"] + } + }, + "name": { + "example": "Lithium Spodumene", + "type": "string", + "description": "Name of this material (eg \"Egyptian Cotton\")" + }, + "originCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "A ISO 3166-1 code representing the country of origin of the component or ingredient.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "materialType": { + "$ref": "#/$defs/Classification", + "description": "The type of this material - as a value drawn from a controlled vocabulary eg from UN Framework Classification for Resources (UNFC)." + }, + "massFraction": { + "example": 0.2, + "type": "number", + "description": "The mass fraction of the product represented by this material. The sum of all mass fraction values for a given passport should be 1." + }, + "massAmount": { + "$ref": "#/$defs/Measure", + "description": "The mass of the material component." + }, + "recycledAmount": { + "example": 0.5, + "type": "number", + "description": "Mass fraction of this material that is recycled (eg 50% recycled Lithium)" + }, + "hazardous": { + "example": "false", + "type": "boolean", + "description": "Indicates whether this material is hazardous. If true then the materialSafetyInformation property must be present" + }, + "symbol": { + "type": "string", + "format": "binary", + "description": "Based 64 encoded binary used to represent a visual symbol for a given material. " + }, + "materialSafetyInformation": { + "$ref": "#/$defs/Link", + "description": "Reference to further information about safe handling of this hazardous material (for example a link to a material safety data sheet)" + } + }, + "description": "The material class encapsulates details about the origin or source of raw materials in a product, including the country of origin and the mass fraction.", + "required": ["name"] + }, + "Claim": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Claim", "Declaration"], + "default": ["Claim", "Declaration"], + "items": { + "type": "string", + "enum": ["Claim", "Declaration"] + } + }, + "assessmentDate": { + "example": "2024-03-15", + "type": "string", + "format": "date", + "description": "The date on which this assessment was made. " + }, + "declaredValue": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "The list of specific values measured as part of this assessment (eg tensile strength)" + }, + "id": { + "example": "https://products.example-company.com/09520123456788/declarations/12345", + "type": "string", + "format": "uri", + "description": "A unique identifier for the declaration. Often this will be an extension of the product.id or attestation.id. But could be a UUID." + }, + "referenceStandard": { + "$ref": "#/$defs/Standard", + "description": "The reference to the standard that defines the specification / criteria" + }, + "referenceRegulation": { + "$ref": "#/$defs/Regulation", + "description": "The reference to the regulation that defines the assessment criteria" + }, + "assessmentCriteria": { + "type": "array", + "items": { + "$ref": "#/$defs/Criterion" + }, + "description": "The specification against which the assessment is made." + }, + "declaredValues": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "The list of specific values measured as part of this assessment (eg tensile strength)" + }, + "compliance": { + "example": "true", + "type": "boolean", + "description": "An indicator of whether or not the assessment meets the specification." + }, + "conformityTopic": { + "type": "string", + "enum": [ + "environment.energy", + "environment.emissions", + "environment.water", + "environment.waste", + "environment.deforestation", + "environment.biodiversity", + "circularity.content", + "circularity.design", + "social.labour", + "social.rights", + "social.community", + "social.safety", + "governance.ethics", + "governance.compliance", + "governance.transparency" + ], + "example": "environment.energy", + "description": "The conformity topic category for this assessment (eg vocabulary.uncefact.org/sustainability/emissions)" + }, + "conformityEvidence": { + "$ref": "#/$defs/SecureLink", + "description": "A URI pointing to the evidence supporting the claim. SHOULD be a URL to a UNTP Digital Conformity Credential (DCC)" + } + }, + "description": "A declaration of conformance with one or more criteria from a specific standard or regulation. ", + "required": ["id", "compliance", "conformityTopic"] + }, + "Metric": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Metric"], + "default": ["Metric"], + "items": { + "type": "string", + "enum": ["Metric"] + } + }, + "metricName": { + "example": "GHG emissions intensity", + "type": "string", + "description": "A human readable name for this metric (for example \"Tensile strength\")" + }, + "metricValue": { + "$ref": "#/$defs/Measure", + "description": "A numeric value and unit of measure for this metric. Could be a measured value or a specified threshold. Eg {\"value\":400, \"unit\":\"MPA\"} as tensile strength of structural steel" + }, + "score": { + "example": "BB", + "type": "string", + "description": "A score or rank associated with this measured metric." + }, + "accuracy": { + "example": 0.05, + "type": "number", + "description": "A percentage represented as a numeric between 0 and 1 indicating the rage of accuracy of the claimed value (eg 0.05 means that the actual value is within 5% of the claimed value.)" + } + }, + "description": "A specific measure of performance against the criteria that governs the claim. Expressed as an array of metric (ie unit of measure) / value (ie the actual numeric value) pairs. ", + "required": ["metricName", "metricValue"] + }, + "Standard": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Standard"], + "default": ["Standard"], + "items": { + "type": "string", + "enum": ["Standard"] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf", + "type": "string", + "format": "uri", + "description": "A unique identifier for the standard (eg https://www.iso.org/standard/60857.html)." + }, + "name": { + "example": "GBA Battery Passport Greenhouse Gas Rulebook - V.2.0", + "type": "string", + "description": "The name of the standard" + }, + "issuingParty": { + "$ref": "#/$defs/Identifier", + "description": "The party that issued the standard " + }, + "issueDate": { + "example": "2023-12-05", + "type": "string", + "format": "date", + "description": "The date when the standard was issued." + } + }, + "description": "A standard (eg ISO 14000) that specifies the criteria for conformance.", + "required": ["issuingParty"] + }, + "Regulation": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Regulation"], + "default": ["Regulation"], + "items": { + "type": "string", + "enum": ["Regulation"] + } + }, + "id": { + "example": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of this regulation. " + }, + "name": { + "example": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "type": "string", + "description": "The name of the regulation or act." + }, + "jurisdictionCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The legal jurisdiction (country) under which the regulation is issued.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "administeredBy": { + "$ref": "#/$defs/Identifier", + "description": "the issuing body of the regulation. For example Australian Government Department of Climate Change, Energy, the Environment and Water" + }, + "effectiveDate": { + "example": "2024-03-20", + "type": "string", + "format": "date", + "description": "the date at which the regulation came into effect." + } + }, + "description": "A regulation (eg EU deforestation regulation) that defines the criteria for assessment.", + "required": ["administeredBy"] + }, + "Criterion": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Criterion"], + "default": ["Criterion"], + "items": { + "type": "string", + "enum": ["Criterion"] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf#BatteryAssembly", + "type": "string", + "format": "uri", + "description": "A unique identifier for the criterion within the standard or regulation. For example CO2 emissions calculations for liquid fuel combustion." + }, + "name": { + "example": "GBA Battery rule book v2.0 battery assembly guidelines.", + "type": "string", + "description": "A name that describes this criteria." + }, + "thresholdValues": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "A conformity threshold defined by the specification (eg minimum compressive strength) " + } + }, + "description": "A specific rule or criterion within a standard or regulation. eg a carbon intensity calculation rule within an emissions standard.", + "required": ["id", "name"] + }, + "SecureLink": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["SecureLink", "Link"], + "default": ["SecureLink", "Link"], + "items": { + "type": "string", + "enum": ["SecureLink", "Link"] + } + }, + "linkURL": { + "example": "https://files.example-certifier.com/1234567.json", + "type": "string", + "format": "uri", + "description": "The URL of the target resource. " + }, + "linkName": { + "example": "GBA rule book conformity certificate", + "type": "string", + "description": "A display name for the target resource " + }, + "linkType": { + "example": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "type": "string", + "description": "The type of the target resource - drawn from a controlled vocabulary " + }, + "hashDigest": { + "example": "6239119dda5bd4c8a6ffb832fe16feaa5c27b7dba154d24c53d4470a2c69adc2", + "type": "string", + "description": "The hash of the file." + }, + "hashMethod": { + "type": "string", + "enum": ["SHA-256", "SHA-1"], + "example": "SHA-256", + "description": "The hashing algorithm used to create the target hash. SHA-265 is the recommended standard" + }, + "encryptionMethod": { + "type": "string", + "enum": ["none", "AES"], + "example": "none", + "description": "The symmetric encryption algorithm used to encrypt the link target. AES is the recommended standard. Decryption keys are expected to be passed out of bounds." + } + }, + "description": "A binary file that is hashed ()for tamper evidence) and optionally encrypted (for confidentiality)." + }, + "CircularityPerformance": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["CircularityPerformance"], + "default": ["CircularityPerformance"], + "items": { + "type": "string", + "enum": ["CircularityPerformance"] + } + }, + "recyclingInformation": { + "$ref": "#/$defs/Link", + "description": "A URI pointing to recycling information for the product." + }, + "repairInformation": { + "$ref": "#/$defs/Link", + "description": "A URI pointing to repair instructions for this product." + }, + "recyclableContent": { + "example": 0.5, + "type": "number", + "format": "float", + "description": "The fraction of the this product (my mass) that has been designed to be recyclable / re-usable. This will be be the total fraction that can avoid waste / landfill." + }, + "recycledContent": { + "example": 0.3, + "type": "number", + "format": "float", + "description": "The fraction (by mass) of recycled / repurposed, repaired content in this product. This will be the total virgin content fraction." + }, + "utilityFactor": { + "example": 1.2, + "type": "number", + "format": "float", + "description": "An indicator of durability defined as the lifetime (typically measures as usage cycles) for this product divided by the industry average. For example a battery with a 10,000 cycle lifetime where industry average is 5,000 cycles will have a durability factor of 2. If unknown set to 1 or omit. " + }, + "materialCircularityIndicator": { + "example": 0.67, + "type": "number", + "format": "float", + "description": "The overall circularity performance indicator for this product. Calculated as 1 - (V+W)/2D where - V = Virgin material proportion by mass (will be 1- recycled content) - W = Waste leakage proportion by mass (will be 1 - recyclableContent) - D = Utility factor (set to 1 if unknown). " + } + }, + "description": "High level circularity information about this product. Note that this does not substitute for detailed product circularity data sheet (PCDS) criteria which would be represented as a self-issued UNTP Digital Conformity Credential as a set of assessments against individual ISO PCDS criteria." + }, + "EmissionsPerformance": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["EmissionsPerformance"], + "default": ["EmissionsPerformance"], + "items": { + "type": "string", + "enum": ["EmissionsPerformance"] + } + }, + "carbonFootprint": { + "example": 1.8, + "type": "number", + "format": "float", + "description": "The carbon footprint of the product in KgCO2e per declared unit." + }, + "declaredUnit": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "The unit of product (EA, KGM, LTR, etc) that is the basis for carbon footprint.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + }, + "operationalScope": { + "type": "string", + "enum": ["None", "CradleToGate", "CradleToGrave"], + "example": "None", + "description": "The operational scope of the emissions performance. Only scope 1 & 2, or including upstream scope 3 (cradle to gate) or upstream and downstream scope 3 (cradle to grave)." + }, + "primarySourcedRatio": { + "example": 0.3, + "type": "number", + "format": "float", + "description": "The ratio of emissions data from primary sources (ie from supplier / product specific information rather than secondary / industry averages)." + }, + "reportingStandard": { + "$ref": "#/$defs/Standard", + "description": "The reporting standard (eg GHG Protocol, IFRS S2, ESRS, etc) against which this product emissions performance is assessed." + } + }, + "description": "Product specific characteristics. This class is an extension point for industry specific product characteristics or performance information such as clothing size or battery capacity.", + "required": ["carbonFootprint", "declaredUnit", "operationalScope", "primarySourcedRatio"] + }, + "TraceabilityPerformance": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["TraceabilityPerformance"], + "default": ["TraceabilityPerformance"], + "items": { + "type": "string", + "enum": ["TraceabilityPerformance"] + } + }, + "valueChainProcess": { + "example": "Spinning", + "type": "string", + "description": "Human readable name for the industry specific value chain process representing this traceability data set." + }, + "verifiedRatio": { + "example": 0.5, + "type": "number", + "description": "The proportion (0 to 1) of materials in this value chain process that have been traced using verifiable traceability event." + }, + "traceabilityEvent": { + "type": "array", + "items": { + "$ref": "#/$defs/SecureLink" + }, + "description": "A list of secure links to digital traceability events that support this traceability performance statement. May be encrypted for confidentiality purposes. " + } + }, + "description": "An array of secure links to TraceabilityEvent objects detailing EPCIS events related to the traceability of the product batch. Events are grouped by value chain process (eg \"Weaving\" in textiles supply chain)." + } + } +} diff --git a/packages/untp-test-suite/src/schemas/conformityCredential/v0.5.0/schema.json b/packages/untp-test-suite/src/schemas/conformityCredential/v0.5.0/schema.json new file mode 100644 index 00000000..59f50054 --- /dev/null +++ b/packages/untp-test-suite/src/schemas/conformityCredential/v0.5.0/schema.json @@ -0,0 +1,918 @@ +{ + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["DigitalProductPassport", "VerifiableCredential"], + "default": ["DigitalProductPassport", "VerifiableCredential"], + "items": { + "type": "string", + "enum": ["DigitalProductPassport", "VerifiableCredential"] + } + }, + "@context": { + "example": "https://test.uncefact.org/vocabulary/untp/dpp/dpp-context.jsonld", + "type": "array", + "items": { + "type": "string", + "enum": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.5.0/"] + }, + "description": "A list of JSON-LD context URIs that define the semantic meaning of properties within the credential. ", + "readOnly": true, + "const": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.5.0/"], + "default": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dpp/0.5.0/"] + }, + "id": { + "example": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "type": "string", + "format": "uri", + "description": "A unique identifier (URI) assigned to the product passport. May be a UUID" + }, + "issuer": { + "$ref": "#/$defs/CredentialIssuer", + "description": "The organisation that is the issuer of this VC. Note that the \"id\" property MUST be a W3C DID. Other identifiers such as tax registration numbers can be listed in the \"otherIdentifiers\" property." + }, + "validFrom": { + "example": "2024-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The date and time from which the credential is valid." + }, + "validUntil": { + "example": "2034-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The expiry date (if applicable) of this verifiable credential." + }, + "credentialSubject": { + "$ref": "#/$defs/Product", + "description": "The subject of a digital product passport credential is the identified product. " + } + }, + "description": "The Product Passport is a comprehensive data structure that encapsulates various details pertaining to a product, including its identification details, who issued it, batch information, provenance information, circularity information and a set of verifiable product conformity & sustainability claims. ", + "required": ["@context", "id", "issuer"], + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$defs": { + "CredentialIssuer": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["CredentialIssuer"], + "default": ["CredentialIssuer"], + "items": { + "type": "string", + "enum": ["CredentialIssuer"] + } + }, + "id": { + "example": "did:web:identifiers.example-company.com:12345", + "type": "string", + "format": "uri", + "description": "The W3C DID of the issuer - should be a did:web or did:tdw" + }, + "name": { + "example": "Example Company Pty Ltd", + "type": "string", + "description": "The name of the issuer person or organisation" + }, + "otherIdentifier": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this credential issuer " + } + }, + "description": "The issuer party (person or organisation) of a verifiable credential.", + "required": ["id", "name"] + }, + "Identifier": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Identifier"], + "default": ["Identifier"], + "items": { + "type": "string", + "enum": ["Identifier"] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the entity as a resolvable URL according to ISO 18975. ExamplesProduct - id.gs1.org/01/09520123456788/21/12345 Party - abr.business.gov.au/ABN/View?abn=90664869327. Facility - did:web:facilities.example-company.com:123. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the entity within the identifier scheme. Examples: product - EV battery 300Ah, Party - Sample Company Pty Ltd, Facility - Green Acres battery factory" + }, + "registeredId": { + "example": "90664869327", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme. Examples : Product - id.gs1.org/01, Party - business.gov.au/abn, Facility - did:web:facilities.acme.com. " + } + }, + "description": "The ID and Name of an identified entity such as a product, facility, party, standard, etc. If the identifier is a W3C DID then the corresponding DID document SHOULD include a serviceEndpoint of type \"IdentityResolver\". If the identifier is not a W3C DID then the id property SHOULD be an identity resolver URL.", + "required": ["id", "name"] + }, + "IdentifierScheme": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["IdentifierScheme"], + "default": ["IdentifierScheme"], + "items": { + "type": "string", + "enum": ["IdentifierScheme"] + } + }, + "id": { + "example": "https://id.gs1.org/01/", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of the registration scheme. The scheme should be registered and discoverable from vocabulary.uncefact.org/identifierSchemes" + }, + "name": { + "example": "Global Trade Identification Number (GTIN)", + "type": "string", + "description": "The name of the identifier scheme. " + } + }, + "description": "An identifier registration scheme for products, facilities, or organisations. Typically operated by a state, national or global authority." + }, + "Product": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Product"], + "default": ["Product"], + "items": { + "type": "string", + "enum": ["Product"] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the product as a URI. Ideally as a resolvable URL according to ISO 18975. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the product within the identifier scheme. " + }, + "registeredId": { + "example": "09520123456788.21.12345", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme for this product. Eg a GS1 GTIN or an AU Livestock NLIS, or similar. If self issued then use the party ID of the issuer. " + }, + "serialNumber": { + "example": "12345678", + "type": "string", + "description": "A number or code representing a specific serialised item of the product. Unique within product class." + }, + "batchNumber": { + "example": "6789", + "type": "string", + "description": "Identifier of the specific production batch of the product. Unique within the product class." + }, + "productImage": { + "$ref": "#/$defs/Link", + "description": "Reference information (location, type, name) of an image of the product." + }, + "description": { + "example": "400Ah 24v LiFePO4 battery", + "type": "string", + "description": "A textual description providing details about the product." + }, + "productCategory": { + "type": "array", + "items": { + "$ref": "#/$defs/Classification" + }, + "description": "A code representing the product's class, typically using the UN CPC (United Nations Central Product Classification) https://unstats.un.org/unsd/classifications/Econ/cpc" + }, + "furtherInformation": { + "type": "array", + "items": { + "$ref": "#/$defs/Link" + }, + "description": "A URL pointing to further human readable information about the product." + }, + "producedByParty": { + "$ref": "#/$defs/Identifier", + "description": "The Party entity that manufactured the product." + }, + "producedAtFacility": { + "$ref": "#/$defs/Identifier", + "description": "The Facility where the product batch was produced / manufactured." + }, + "dimensions": { + "$ref": "#/$defs/Dimension", + "description": "The physical dimensions of the product. Not every dimension is relevant to every products. For example bulk materials may have weight and volume but not length, with, or height.\"weight\":{\"value\":10, \"unit\":\"KGM\"}" + }, + "productionDate": { + "example": "2024-04-25", + "type": "string", + "format": "date", + "description": "The ISO 8601 date on which the product batch or individual serialised item was manufactured." + }, + "countryOfProduction": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The country in which this item was produced / manufactured.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "granularityLevel": { + "type": "string", + "enum": ["item", "batch", "model"], + "example": "item", + "description": "Code to indicate the granularity of this digital product passport - item level, batch level or product class level." + }, + "dueDiligenceDeclaration": { + "$ref": "#/$defs/Link", + "description": "The due diligence declaration that conforms with the regulations of the market into which the product is sold." + }, + "materialsProvenance": { + "type": "array", + "items": { + "$ref": "#/$defs/Material" + }, + "description": "An array of Provenance objects providing details on the origin and mass fraction of components or ingredients of the product batch. " + }, + "conformityClaim": { + "type": "array", + "items": { + "$ref": "#/$defs/Claim" + }, + "description": "An array of claim objects representing various product conformity claims about the product / batch. These can be sustainability claims, circularity claims, or any other claim type within the conformity topic list." + }, + "circularityScorecard": { + "$ref": "#/$defs/CircularityPerformance", + "description": "A circularity performance scorecard" + }, + "emissionsScorecard": { + "$ref": "#/$defs/EmissionsPerformance", + "description": "An emissions performance scorecard" + }, + "traceabilityInformation": { + "$ref": "#/$defs/TraceabilityPerformance", + "description": "An array of traceability events grouped by value chain process. Where actual traceability events are unavailable or carry sensitive information, passport publishers may specify the extent to which the traceability information has been independently verified. " + } + }, + "description": "The ProductInformation class encapsulates detailed information regarding a specific product, including its identification details, manufacturer, and other pertinent details. ", + "required": ["id", "name"] + }, + "Link": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Link"], + "default": ["Link"], + "items": { + "type": "string", + "enum": ["Link"] + } + }, + "linkURL": { + "example": "https://files.example-certifier.com/1234567.json", + "type": "string", + "format": "uri", + "description": "The URL of the target resource. " + }, + "linkName": { + "example": "GBA rule book conformity certificate", + "type": "string", + "description": "A display name for the target resource " + }, + "linkType": { + "example": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "type": "string", + "description": "The type of the target resource - drawn from a controlled vocabulary " + } + }, + "description": "A structure to provide a URL link plus metadata associated with the link." + }, + "Classification": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Classification"], + "default": ["Classification"], + "items": { + "type": "string", + "enum": ["Classification"] + } + }, + "id": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "type": "string", + "format": "uri", + "description": "The globally unique URI representing the specific classifier value" + }, + "code": { + "example": "46410", + "type": "string", + "description": "classification code within the scheme" + }, + "name": { + "example": "Primary cells and primary batteries", + "type": "string", + "description": "Name of the classification represented by the code" + }, + "schemeID": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "type": "string", + "format": "uri", + "description": "Classification scheme ID" + }, + "schemeName": { + "example": "UN Central Product Classification (CPC)", + "type": "string", + "description": "The name of the classification scheme" + } + }, + "description": "A classification scheme and code / name representing a category value for a product, entity, or facility.", + "required": ["id", "name"] + }, + "Dimension": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Dimension"], + "default": ["Dimension"], + "items": { + "type": "string", + "enum": ["Dimension"] + } + }, + "weight": { + "$ref": "#/$defs/Measure", + "description": "the weight of the product. EG {\"value\":10, \"unit\":\"KGM\"}" + }, + "length": { + "$ref": "#/$defs/Measure", + "description": "The length of the product or packaging eg {\"value\":840, \"unit\":\"MMT\"}" + }, + "width": { + "$ref": "#/$defs/Measure", + "description": "The width of the product or packaging. eg {\"value\":150, \"unit\":\"MMT\"}" + }, + "height": { + "$ref": "#/$defs/Measure", + "description": "The height of the product or packaging. eg {\"value\":220, \"unit\":\"MMT\"}" + }, + "volume": { + "$ref": "#/$defs/Measure", + "description": "The displacement volume of the product. eg {\"value\":7.5, \"unit\":\"LTR\"}" + } + }, + "description": "Overall (length, width, height) dimensions and weight/volume of an item." + }, + "Measure": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Measure"], + "default": ["Measure"], + "items": { + "type": "string", + "enum": ["Measure"] + } + }, + "value": { + "example": 10, + "type": "number", + "description": "The numeric value of the measure" + }, + "unit": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "Unit of measure drawn from the UNECE Rec20 measure code list.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "The measure class defines a numeric measured value (eg 10) and a coded unit of measure (eg KG).", + "required": ["value", "unit"] + }, + "Material": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Material"], + "default": ["Material"], + "items": { + "type": "string", + "enum": ["Material"] + } + }, + "name": { + "example": "Lithium Spodumene", + "type": "string", + "description": "Name of this material (eg \"Egyptian Cotton\")" + }, + "originCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "A ISO 3166-1 code representing the country of origin of the component or ingredient.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "materialType": { + "$ref": "#/$defs/Classification", + "description": "The type of this material - as a value drawn from a controlled vocabulary eg from UN Framework Classification for Resources (UNFC)." + }, + "massFraction": { + "example": 0.2, + "type": "number", + "description": "The mass fraction of the product represented by this material. The sum of all mass fraction values for a given passport should be 1." + }, + "massAmount": { + "$ref": "#/$defs/Measure", + "description": "The mass of the material component." + }, + "recycledAmount": { + "example": 0.5, + "type": "number", + "description": "Mass fraction of this material that is recycled (eg 50% recycled Lithium)" + }, + "hazardous": { + "example": "false", + "type": "boolean", + "description": "Indicates whether this material is hazardous. If true then the materialSafetyInformation property must be present" + }, + "symbol": { + "type": "string", + "format": "binary", + "description": "Based 64 encoded binary used to represent a visual symbol for a given material. " + }, + "materialSafetyInformation": { + "$ref": "#/$defs/Link", + "description": "Reference to further information about safe handling of this hazardous material (for example a link to a material safety data sheet)" + } + }, + "description": "The material class encapsulates details about the origin or source of raw materials in a product, including the country of origin and the mass fraction.", + "required": ["name"] + }, + "Claim": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Claim", "Declaration"], + "default": ["Claim", "Declaration"], + "items": { + "type": "string", + "enum": ["Claim", "Declaration"] + } + }, + "assessmentDate": { + "example": "2024-03-15", + "type": "string", + "format": "date", + "description": "The date on which this assessment was made. " + }, + "declaredValue": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "The list of specific values measured as part of this assessment (eg tensile strength)" + }, + "id": { + "example": "https://products.example-company.com/09520123456788/declarations/12345", + "type": "string", + "format": "uri", + "description": "A unique identifier for the declaration. Often this will be an extension of the product.id or attestation.id. But could be a UUID." + }, + "referenceStandard": { + "$ref": "#/$defs/Standard", + "description": "The reference to the standard that defines the specification / criteria" + }, + "referenceRegulation": { + "$ref": "#/$defs/Regulation", + "description": "The reference to the regulation that defines the assessment criteria" + }, + "assessmentCriteria": { + "type": "array", + "items": { + "$ref": "#/$defs/Criterion" + }, + "description": "The specification against which the assessment is made." + }, + "declaredValues": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "The list of specific values measured as part of this assessment (eg tensile strength)" + }, + "conformance": { + "example": "true", + "type": "boolean", + "description": "An indicator of whether or not the claim or assesment conforms to the regulatory or standard criteria." + }, + "conformityTopic": { + "type": "string", + "enum": [ + "environment.energy", + "environment.emissions", + "environment.water", + "environment.waste", + "environment.deforestation", + "environment.biodiversity", + "circularity.content", + "circularity.design", + "social.labour", + "social.rights", + "social.community", + "social.safety", + "governance.ethics", + "governance.compliance", + "governance.transparency" + ], + "example": "environment.energy", + "description": "The conformity topic category for this assessment (eg vocabulary.uncefact.org/sustainability/emissions)" + }, + "conformityEvidence": { + "$ref": "#/$defs/SecureLink", + "description": "A URI pointing to the evidence supporting the claim. SHOULD be a URL to a UNTP Digital Conformity Credential (DCC)" + } + }, + "description": "A declaration of conformance with one or more criteria from a specific standard or regulation. ", + "required": ["id", "conformance", "conformityTopic"] + }, + "Metric": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Metric"], + "default": ["Metric"], + "items": { + "type": "string", + "enum": ["Metric"] + } + }, + "metricName": { + "example": "GHG emissions intensity", + "type": "string", + "description": "A human readable name for this metric (for example \"Tensile strength\")" + }, + "metricValue": { + "$ref": "#/$defs/Measure", + "description": "A numeric value and unit of measure for this metric. Could be a measured value or a specified threshold. Eg {\"value\":400, \"unit\":\"MPA\"} as tensile strength of structural steel" + }, + "score": { + "example": "BB", + "type": "string", + "description": "A score or rank associated with this measured metric." + }, + "accuracy": { + "example": 0.05, + "type": "number", + "description": "A percentage represented as a numeric between 0 and 1 indicating the rage of accuracy of the claimed value (eg 0.05 means that the actual value is within 5% of the claimed value.)" + } + }, + "description": "A specific measure of performance against the criteria that governs the claim. Expressed as an array of metric (ie unit of measure) / value (ie the actual numeric value) pairs. ", + "required": ["metricName", "metricValue"] + }, + "Standard": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Standard"], + "default": ["Standard"], + "items": { + "type": "string", + "enum": ["Standard"] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf", + "type": "string", + "format": "uri", + "description": "A unique identifier for the standard (eg https://www.iso.org/standard/60857.html)." + }, + "name": { + "example": "GBA Battery Passport Greenhouse Gas Rulebook - V.2.0", + "type": "string", + "description": "The name of the standard" + }, + "issuingParty": { + "$ref": "#/$defs/Identifier", + "description": "The party that issued the standard " + }, + "issueDate": { + "example": "2023-12-05", + "type": "string", + "format": "date", + "description": "The date when the standard was issued." + } + }, + "description": "A standard (eg ISO 14000) that specifies the criteria for conformance.", + "required": ["issuingParty"] + }, + "Regulation": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Regulation"], + "default": ["Regulation"], + "items": { + "type": "string", + "enum": ["Regulation"] + } + }, + "id": { + "example": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of this regulation. " + }, + "name": { + "example": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "type": "string", + "description": "The name of the regulation or act." + }, + "jurisdictionCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The legal jurisdiction (country) under which the regulation is issued.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "administeredBy": { + "$ref": "#/$defs/Identifier", + "description": "the issuing body of the regulation. For example Australian Government Department of Climate Change, Energy, the Environment and Water" + }, + "effectiveDate": { + "example": "2024-03-20", + "type": "string", + "format": "date", + "description": "the date at which the regulation came into effect." + } + }, + "description": "A regulation (eg EU deforestation regulation) that defines the criteria for assessment.", + "required": ["administeredBy"] + }, + "Criterion": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Criterion"], + "default": ["Criterion"], + "items": { + "type": "string", + "enum": ["Criterion"] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf#BatteryAssembly", + "type": "string", + "format": "uri", + "description": "A unique identifier for the criterion within the standard or regulation. For example CO2 emissions calculations for liquid fuel combustion." + }, + "name": { + "example": "GBA Battery rule book v2.0 battery assembly guidelines.", + "type": "string", + "description": "A name that describes this criteria." + }, + "thresholdValues": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "A conformity threshold defined by the specification (eg minimum compressive strength) " + } + }, + "description": "A specific rule or criterion within a standard or regulation. eg a carbon intensity calculation rule within an emissions standard.", + "required": ["id", "name"] + }, + "SecureLink": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["SecureLink", "Link"], + "default": ["SecureLink", "Link"], + "items": { + "type": "string", + "enum": ["SecureLink", "Link"] + } + }, + "linkURL": { + "example": "https://files.example-certifier.com/1234567.json", + "type": "string", + "format": "uri", + "description": "The URL of the target resource. " + }, + "linkName": { + "example": "GBA rule book conformity certificate", + "type": "string", + "description": "A display name for the target resource " + }, + "linkType": { + "example": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "type": "string", + "description": "The type of the target resource - drawn from a controlled vocabulary " + }, + "hashDigest": { + "example": "6239119dda5bd4c8a6ffb832fe16feaa5c27b7dba154d24c53d4470a2c69adc2", + "type": "string", + "description": "The hash of the file." + }, + "hashMethod": { + "type": "string", + "enum": ["SHA-256", "SHA-1"], + "example": "SHA-256", + "description": "The hashing algorithm used to create the target hash. SHA-265 is the recommended standard" + }, + "encryptionMethod": { + "type": "string", + "enum": ["none", "AES"], + "example": "none", + "description": "The symmetric encryption algorithm used to encrypt the link target. AES is the recommended standard. Decryption keys are expected to be passed out of bounds." + } + }, + "description": "A binary file that is hashed ()for tamper evidence) and optionally encrypted (for confidentiality)." + }, + "CircularityPerformance": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["CircularityPerformance"], + "default": ["CircularityPerformance"], + "items": { + "type": "string", + "enum": ["CircularityPerformance"] + } + }, + "recyclingInformation": { + "$ref": "#/$defs/Link", + "description": "A URI pointing to recycling information for the product." + }, + "repairInformation": { + "$ref": "#/$defs/Link", + "description": "A URI pointing to repair instructions for this product." + }, + "recyclableContent": { + "example": 0.5, + "type": "number", + "format": "float", + "description": "The fraction of the this product (my mass) that has been designed to be recyclable / re-usable. This will be be the total fraction that can avoid waste / landfill." + }, + "recycledContent": { + "example": 0.3, + "type": "number", + "format": "float", + "description": "The fraction (by mass) of recycled / repurposed, repaired content in this product. This will be the total virgin content fraction." + }, + "utilityFactor": { + "example": 1.2, + "type": "number", + "format": "float", + "description": "An indicator of durability defined as the lifetime (typically measures as usage cycles) for this product divided by the industry average. For example a battery with a 10,000 cycle lifetime where industry average is 5,000 cycles will have a durability factor of 2. If unknown set to 1 or omit. " + }, + "materialCircularityIndicator": { + "example": 0.67, + "type": "number", + "format": "float", + "description": "The overall circularity performance indicator for this product. Calculated as 1 - (V+W)/2D where - V = Virgin material proportion by mass (will be 1- recycled content) - W = Waste leakage proportion by mass (will be 1 - recyclableContent) - D = Utility factor (set to 1 if unknown). " + } + }, + "description": "High level circularity information about this product. Note that this does not substitute for detailed product circularity data sheet (PCDS) criteria which would be represented as a self-issued UNTP Digital Conformity Credential as a set of assessments against individual ISO PCDS criteria." + }, + "EmissionsPerformance": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["EmissionsPerformance"], + "default": ["EmissionsPerformance"], + "items": { + "type": "string", + "enum": ["EmissionsPerformance"] + } + }, + "carbonFootprint": { + "example": 1.8, + "type": "number", + "format": "float", + "description": "The carbon footprint of the product in KgCO2e per declared unit." + }, + "declaredUnit": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "The unit of product (EA, KGM, LTR, etc) that is the basis for carbon footprint.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + }, + "operationalScope": { + "type": "string", + "enum": ["None", "CradleToGate", "CradleToGrave"], + "example": "None", + "description": "The operational scope of the emissions performance. Only scope 1 & 2, or including upstream scope 3 (cradle to gate) or upstream and downstream scope 3 (cradle to grave)." + }, + "primarySourcedRatio": { + "example": 0.3, + "type": "number", + "format": "float", + "description": "The ratio of emissions data from primary sources (ie from supplier / product specific information rather than secondary / industry averages)." + }, + "reportingStandard": { + "$ref": "#/$defs/Standard", + "description": "The reporting standard (eg GHG Protocol, IFRS S2, ESRS, etc) against which this product emissions performance is assessed." + } + }, + "description": "Product specific characteristics. This class is an extension point for industry specific product characteristics or performance information such as clothing size or battery capacity.", + "required": ["carbonFootprint", "declaredUnit", "operationalScope", "primarySourcedRatio"] + }, + "TraceabilityPerformance": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["TraceabilityPerformance"], + "default": ["TraceabilityPerformance"], + "items": { + "type": "string", + "enum": ["TraceabilityPerformance"] + } + }, + "valueChainProcess": { + "example": "Spinning", + "type": "string", + "description": "Human readable name for the industry specific value chain process representing this traceability data set." + }, + "verifiedRatio": { + "example": 0.5, + "type": "number", + "description": "The proportion (0 to 1) of materials in this value chain process that have been traced using verifiable traceability event." + }, + "traceabilityEvent": { + "type": "array", + "items": { + "$ref": "#/$defs/SecureLink" + }, + "description": "A list of secure links to digital traceability events that support this traceability performance statement. May be encrypted for confidentiality purposes. " + } + }, + "description": "An array of secure links to TraceabilityEvent objects detailing EPCIS events related to the traceability of the product batch. Events are grouped by value chain process (eg \"Weaving\" in textiles supply chain)." + } + } +} diff --git a/packages/untp-test-suite/src/schemas/digitalFacilityRecord/v0.4.0/schema.json b/packages/untp-test-suite/src/schemas/digitalFacilityRecord/v0.4.0/schema.json new file mode 100644 index 00000000..71be36c0 --- /dev/null +++ b/packages/untp-test-suite/src/schemas/digitalFacilityRecord/v0.4.0/schema.json @@ -0,0 +1,761 @@ +{ + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["DigitalFacilityRecord", "VerifiableCredential"], + "default": ["DigitalFacilityRecord", "VerifiableCredential"], + "items": { + "type": "string", + "enum": ["DigitalFacilityRecord", "VerifiableCredential"] + } + }, + "@context": { + "example": "https://test.uncefact.org/vocabulary/untp/dpp/dpp-context.jsonld", + "type": "array", + "items": { + "type": "string", + "enum": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dfr/0.4.0/"] + }, + "description": "A list of JSON-LD context URIs that define the seamntic meaning of prperties within the credential. ", + "readOnly": true, + "const": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dfr/0.4.0/"], + "default": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dfr/0.4.0/"] + }, + "id": { + "example": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "type": "string", + "format": "uri", + "description": "A unique identifier (URI) assigned to the product passport. May be a UUID" + }, + "issuer": { + "$ref": "#/$defs/CredentialIssuer", + "description": "The organisation that is the isuer of this VC. Note that the \"id\" property MUST be a W3C DID. Other identifiers such as tax registration numbers can be listed in the \"otherIdentifiers\" property." + }, + "validFrom": { + "example": "2024-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The date and time from which the credential is valid." + }, + "validUntil": { + "example": "2034-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The expiry date (if applicable) of this verifiable credential." + }, + "credentialSubject": { + "$ref": "#/$defs/Facility", + "description": "The subject of a digitial facility record is a Facility " + } + }, + "description": "A digital verifiable credential hodling faiclity performance inofmration.", + "required": ["@context", "id", "issuer"], + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$defs": { + "CredentialIssuer": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["CredentialIssuer"], + "default": ["CredentialIssuer"], + "items": { + "type": "string", + "enum": ["CredentialIssuer"] + } + }, + "id": { + "example": "did:web:identifiers.example-company.com:12345", + "type": "string", + "format": "uri", + "description": "The W3C DID of the issuer - should be a did:web or did:tdw" + }, + "name": { + "example": "Example Company Pty Ltd", + "type": "string", + "description": "The name of the issuer person or organisation" + }, + "otherIdentifiers": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this credential issuer " + } + }, + "description": "The issuer party ()person or orgnaition) of a verifiable credential.", + "required": ["id", "name"] + }, + "Identifier": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Identifier"], + "default": ["Identifier"], + "items": { + "type": "string", + "enum": ["Identifier"] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the entity as a resolvable URL according to ISO 18975. ExamplesProduct - id.gs1.org/01/09520123456788/21/12345 Party - abr.business.gov.au/ABN/View?abn=90664869327. Facility - did:web:facilities.example-company.com:123. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the entity within the identifier scheme. Examplesproduct - EV battery 300Ahparty - Sample Company Pty Ltd. facility - Greenacres battery factory" + }, + "registeredId": { + "example": "90664869327", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme. Exampleproduct - id.gs1.org/01. party - business.gov.au/abn facility - did:web:facilities.acme.com. " + } + }, + "description": "The ID and Name of an identified entity such qs a product, facility, party, standard, etc. If the identifier is a W3C DID then the corresponding DID document SHOULD include a serviceEndpoint of type \"IdentityResolver\". If the identifier is not a W3C DID then the id peroperty SHOULD be an identity resolver URL.", + "required": ["id", "name"] + }, + "IdentifierScheme": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["IdentifierScheme"], + "default": ["IdentifierScheme"], + "items": { + "type": "string", + "enum": ["IdentifierScheme"] + } + }, + "id": { + "example": "https://id.gs1.org/01/", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of the registration scheme. The scheme should be registered and discoverable from vocabulary.uncefact.org/identifierSchemes" + }, + "name": { + "example": "Global Trade Identification Number (GTIN)", + "type": "string", + "description": "The name of the identifier scheme. " + } + }, + "description": "An identifier registration scheme for products, facilities, or organisations. Typically operated by a state, national or gloabl authority." + }, + "Facility": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Facility"], + "default": ["Facility"], + "items": { + "type": "string", + "enum": ["Facility"] + } + }, + "id": { + "example": "https://id.gs1.org/gln/0614141123452", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the facility as URI, ideally as a resolvable URL." + }, + "registeredId": { + "example": "0614141123452", + "type": "string", + "description": "The registration number (alphanumeric) of the facility within the identifir scheme. Unique within the register." + }, + "description": { + "example": "LiFePO4 Battery plant number 7", + "type": "string", + "description": "An optional short description of the facility" + }, + "name": { + "example": "Example facility 7", + "type": "string", + "description": "The registered name of the facility within the identifier scheme. " + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The ID scheme of the facility. eg a GS1 GLN or a National land registry scheme. If self issued then use the prty ID of the facility owner. " + }, + "countryOfOperation": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The country in which this facility is operating.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "processCategories": { + "type": "array", + "items": { + "$ref": "#/$defs/Classification" + }, + "description": "The idustrial or production processes performed by this facility. id:unstats.un.org/isic/1030 code:1030 name:Processing and preserving of fruit and vegetables schemeID:unstats.un.org/unsd/classifications/Econ/isic schemeName:ISIC" + }, + "operatedByParty": { + "$ref": "#/$defs/Identifier", + "description": "The Party entity responsible for operating the facility.An object structure that uniquely identifies the party within a known party identifiaction scheme. " + }, + "otherIdentifiers": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this facility - eg GLNs or other schemes." + }, + "address": { + "$ref": "#/$defs/Address", + "description": "The Postal address of the location." + }, + "locationInformation": { + "$ref": "#/$defs/Location", + "description": "Physical location details" + }, + "conformityClaims": { + "type": "array", + "items": { + "$ref": "#/$defs/Claim" + }, + "description": "A list of conformity declarations agains specific criterai from recognised standards or regulations. " + } + }, + "description": "A facility sustainabiloty performacne record.", + "required": ["id", "name"] + }, + "Classification": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Classification"], + "default": ["Classification"], + "items": { + "type": "string", + "enum": ["Classification"] + } + }, + "id": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "type": "string", + "format": "uri", + "description": "The globally unique URI representing the specific classifier value" + }, + "code": { + "example": "46410", + "type": "string", + "description": "classification code within the scheme" + }, + "name": { + "example": "Primary cells and primary batteries", + "type": "string", + "description": "Name of the classification represented by the code" + }, + "schemeID": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "type": "string", + "format": "uri", + "description": "Classification scheme ID" + }, + "schemeName": { + "example": "UN Central Product Classification (CPC)", + "type": "string", + "description": "The name of the classification scheme" + } + }, + "description": "A classification scheme and code / name representing a category value for a product, entity, or facility.", + "required": ["id", "name"] + }, + "Address": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Address"], + "default": ["Address"], + "items": { + "type": "string", + "enum": ["Address"] + } + }, + "streetAddress": { + "example": "level 11, 15 London Circuit", + "type": "string", + "description": "the street address - eg " + }, + "postalCode": { + "example": "2601", + "type": "string", + "description": "The post code" + }, + "addressLocality": { + "example": "Acton", + "type": "string", + "description": "The city, suburb or township." + }, + "addressRegion": { + "example": "ACT", + "type": "string", + "description": "The state or territory or province" + }, + "addressCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The address country\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + } + }, + "description": "A postal address" + }, + "Location": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Location"], + "default": ["Location"], + "items": { + "type": "string", + "enum": ["Location"] + } + }, + "plusCode": { + "example": "https://plus.codes/8CGRC78W+MM", + "type": "string", + "format": "uri", + "description": "An open location code (https://maps.google.com/pluscodes/) representing this geographic location or region. Open location codes can represent any sized area from a point to a large region and are easily resolved to a visual map location. " + }, + "geoLocation": { + "$ref": "#/$defs/Point", + "description": "The latitude and logditude coordinates that best represent the specified location. Using GeoJSON Point notation." + }, + "geoBoundary": { + "$ref": "#/$defs/Polygon", + "description": "The list of ordered coordinates that define a closed area polygon as a location boundary using GeoJSON polygon notation." + } + }, + "description": "Location information including address and geolocation of points, areas, and boundaries" + }, + "Point": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "string", + "enum": ["Point"], + "example": "Point", + "description": "" + }, + "coordinates": { + "$ref": "#/$defs/Point3D", + "description": "Coordinates property of type Point3D" + } + }, + "description": "Represents a Point geometry", + "required": ["type"] + }, + "Point3D": { + "description": "Point in 3d space", + "oneOf": [ + { + "type": "array", + "readOnly": true, + "const": ["Point3D"], + "default": ["Point3D"], + "items": { + "type": "string", + "enum": ["Point3D"] + } + }, + { + "type": "array", + "items": { + "type": "number", + "format": "float" + }, + "description": "Array of decimal values" + } + ] + }, + "Polygon": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "string", + "enum": ["Polygon"], + "example": "Polygon", + "description": "" + }, + "coordinates": { + "type": "array", + "items": { + "$ref": "#/$defs/Point3DWrapper" + }, + "description": "Array of PolygonCoordinates" + } + }, + "description": "Represents a Polygon geometry", + "required": ["type"] + }, + "Point3DWrapper": { + "description": "", + "oneOf": [ + { + "type": "array", + "readOnly": true, + "const": ["Point3DWrapper"], + "default": ["Point3DWrapper"], + "items": { + "type": "string", + "enum": ["Point3DWrapper"] + } + }, + { + "type": "array", + "items": { + "$ref": "#/$defs/Point3D" + }, + "description": "" + } + ] + }, + "Claim": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Claim", "Declaration"], + "default": ["Claim", "Declaration"], + "items": { + "type": "string", + "enum": ["Claim", "Declaration"] + } + }, + "assessmentDate": { + "example": "2024-03-15", + "type": "string", + "format": "date", + "description": "The date on which this assessment was made. " + }, + "id": { + "example": "https://products.example-company.com/09520123456788/declarations/12345", + "type": "string", + "format": "uri", + "description": "A unique identifier for the delcaration. Often this will be an extension of the product.id or attestation.id. But could be a UUID." + }, + "referenceStandard": { + "$ref": "#/$defs/Standard", + "description": "The reference to the standard that defines the specification / criteria" + }, + "referenceRegulation": { + "$ref": "#/$defs/Regulation", + "description": "The reference to the regulation that defines the assessment criteria" + }, + "assessmentCriteria": { + "type": "array", + "items": { + "$ref": "#/$defs/Criterion" + }, + "description": "The specification against which the assessment is made." + }, + "declaredValues": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "The list of specific values measured as part of this assessment (eg tensile strength)" + }, + "compliance": { + "example": "true", + "type": "boolean", + "description": "An indicator of whether or not the assessment meets the specification." + }, + "conformityTopic": { + "type": "string", + "enum": [ + "environment.energy", + "environment.emissions", + "environment.water", + "environment.waste", + "environment.deforestation", + "environment.biodiversity", + "circularity.content", + "circularity.design", + "social.labour", + "social.rights", + "social.community", + "social.safety", + "governance.ethics", + "governance.compliance", + "governance.transparency" + ], + "example": "environment.energy", + "description": "The conformity topic category for this assessment (eg vocabulary.uncefact.org/sustainability/emissions)" + }, + "conformityEvidence": { + "$ref": "#/$defs/SecureLink", + "description": "A binary file that is hashed ()for tamper evidence) and optionally encrypted (for confidentiality)." + } + }, + "description": "A confomrity claim aboutthe facility against a specific standard or regulation.", + "required": ["id", "compliance", "conformityTopic"] + }, + "Standard": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Standard"], + "default": ["Standard"], + "items": { + "type": "string", + "enum": ["Standard"] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf", + "type": "string", + "format": "uri", + "description": "A unique identifier for the standard (eg https://www.iso.org/standard/60857.html)." + }, + "name": { + "example": "GBA Battery Passport Greenhouse Gas Rulebook - V.2.0", + "type": "string", + "description": "The name of the standard" + }, + "issuingParty": { + "$ref": "#/$defs/Identifier", + "description": "The party that issued the standard " + }, + "issueDate": { + "example": "2023-12-05", + "type": "string", + "format": "date", + "description": "The date when the standard was issued." + } + }, + "description": "A standard (eg ISO 14000) that specifies the criteria for conformance.", + "required": ["issuingParty"] + }, + "Regulation": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Regulation"], + "default": ["Regulation"], + "items": { + "type": "string", + "enum": ["Regulation"] + } + }, + "id": { + "example": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of this regulation. " + }, + "name": { + "example": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "type": "string", + "description": "The name of the regulation or act." + }, + "jurisdictionCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The legal jurisdiction (country) under which the regulation is issued.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "administeredBy": { + "$ref": "#/$defs/Identifier", + "description": "the issuing body of the regulation. For example Australin Goernment Department of Climate Change, Energy, the Environment and Water" + }, + "effectiveDate": { + "example": "2024-03-20", + "type": "string", + "format": "date", + "description": "the date at which the regulation came into effect." + } + }, + "description": "A regulation (eg EU deforestation regulation) that defines the criteria for assessment.", + "required": ["administeredBy"] + }, + "Criterion": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Criterion"], + "default": ["Criterion"], + "items": { + "type": "string", + "enum": ["Criterion"] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf#BatteryAssembly", + "type": "string", + "format": "uri", + "description": "A unique identifier for the criteria within the standard or regulation. For example CO2 emissions calaculations for liquid fule combusion." + }, + "name": { + "example": "GBA Battery rule book v2.0 battery assembly guidelines.", + "type": "string", + "description": "A name that describes this criteria." + }, + "thresholdValues": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "A conformity threshold defined by the specification (eg minimum compressive strength) " + } + }, + "description": "A specific rule or criterion within a standard or regulation. eg a carbon intensity calculation rule within an emissions standard.", + "required": ["id", "name"] + }, + "Metric": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Metric"], + "default": ["Metric"], + "items": { + "type": "string", + "enum": ["Metric"] + } + }, + "metricName": { + "example": "GHG emissions intensity", + "type": "string", + "description": "A human readable name for this metric (for example \"Tensile strength\")" + }, + "metricValue": { + "$ref": "#/$defs/Measure", + "description": "A numeric value and unit of measure for this metric. Could be a measured value or a specified threshold. Eg {\"value\":400, \"unit\":\"MPA\"} as tensile strenght of structural steel" + }, + "score": { + "example": "BB", + "type": "string", + "description": "A score or rank associated with this measured metric." + }, + "accuracy": { + "example": 0.05, + "type": "number", + "description": "A percentage represented as a numeric between 0 and 1 indicating the rage of accuracy of the claimed value (eg 0.05 means that the actual value is within 5% of the claimed value.)" + } + }, + "description": "A specific measure of performance against the criteria that governs the claim. Expressed as an array of metric (ie unit of emasure) / value (ie the actual numeric value) pairs. ", + "required": ["metricName", "metricValue"] + }, + "Measure": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Measure"], + "default": ["Measure"], + "items": { + "type": "string", + "enum": ["Measure"] + } + }, + "value": { + "example": 10, + "type": "number", + "description": "The numeric value of the measure" + }, + "unit": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "Unit of measure drawn from the UNECE rec20 measure code list.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "The measure class defines a numeric measured value (eg 10) and a coded unit of measure (eg KG).", + "required": ["value", "unit"] + }, + "SecureLink": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["SecureLink", "Link"], + "default": ["SecureLink", "Link"], + "items": { + "type": "string", + "enum": ["SecureLink", "Link"] + } + }, + "linkURL": { + "example": "https://files.example-certifier.com/1234567.json", + "type": "string", + "format": "uri", + "description": "The URL of the target resource. " + }, + "linkName": { + "example": "GBA rule book conformity certificate", + "type": "string", + "description": "A display name for the target resource " + }, + "linkType": { + "example": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "type": "string", + "description": "The type of the target resource - drawn from a controlled vocabulary " + }, + "hashDigest": { + "example": "6239119dda5bd4c8a6ffb832fe16feaa5c27b7dba154d24c53d4470a2c69adc2", + "type": "string", + "description": "The hash of the file." + }, + "hashMethod": { + "type": "string", + "enum": ["SHA-256", "SHA-1"], + "example": "SHA-256", + "description": "The hashing algorithm used to create the target hash. SHA-265 is the recommedned standard" + }, + "encryptionMethod": { + "type": "string", + "enum": ["none", "AES"], + "example": "none", + "description": "The symmetric encryption algorithm used to encrypt the link target. AES is the recommended standard. Decryption keys are expected to be passed out of bounds." + } + }, + "description": "A binary file that is hashed ()for tamper evidence) and optionally encrypted (for confidentiality)." + } + } +} diff --git a/packages/untp-test-suite/src/schemas/digitalFacilityRecord/v0.4.1/schema.json b/packages/untp-test-suite/src/schemas/digitalFacilityRecord/v0.4.1/schema.json new file mode 100644 index 00000000..cbaa47fe --- /dev/null +++ b/packages/untp-test-suite/src/schemas/digitalFacilityRecord/v0.4.1/schema.json @@ -0,0 +1,761 @@ +{ + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["DigitalFacilityRecord", "VerifiableCredential"], + "default": ["DigitalFacilityRecord", "VerifiableCredential"], + "items": { + "type": "string", + "enum": ["DigitalFacilityRecord", "VerifiableCredential"] + } + }, + "@context": { + "example": "https://test.uncefact.org/vocabulary/untp/dpp/dpp-context.jsonld", + "type": "array", + "items": { + "type": "string", + "enum": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dfr/0.4.1/"] + }, + "description": "A list of JSON-LD context URIs that define the seamntic meaning of prperties within the credential. ", + "readOnly": true, + "const": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dfr/0.4.1/"], + "default": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dfr/0.4.1/"] + }, + "id": { + "example": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "type": "string", + "format": "uri", + "description": "A unique identifier (URI) assigned to the product passport. May be a UUID" + }, + "issuer": { + "$ref": "#/$defs/CredentialIssuer", + "description": "The organisation that is the isuer of this VC. Note that the \"id\" property MUST be a W3C DID. Other identifiers such as tax registration numbers can be listed in the \"otherIdentifiers\" property." + }, + "validFrom": { + "example": "2024-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The date and time from which the credential is valid." + }, + "validUntil": { + "example": "2034-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The expiry date (if applicable) of this verifiable credential." + }, + "credentialSubject": { + "$ref": "#/$defs/Facility", + "description": "The subject of a digitial facility record is a Facility " + } + }, + "description": "A digital verifiable credential hodling faiclity performance inofmration.", + "required": ["@context", "id", "issuer"], + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$defs": { + "CredentialIssuer": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["CredentialIssuer"], + "default": ["CredentialIssuer"], + "items": { + "type": "string", + "enum": ["CredentialIssuer"] + } + }, + "id": { + "example": "did:web:identifiers.example-company.com:12345", + "type": "string", + "format": "uri", + "description": "The W3C DID of the issuer - should be a did:web or did:tdw" + }, + "name": { + "example": "Example Company Pty Ltd", + "type": "string", + "description": "The name of the issuer person or organisation" + }, + "otherIdentifier": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this credential issuer " + } + }, + "description": "The issuer party ()person or orgnaition) of a verifiable credential.", + "required": ["id", "name"] + }, + "Identifier": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Identifier"], + "default": ["Identifier"], + "items": { + "type": "string", + "enum": ["Identifier"] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the entity as a resolvable URL according to ISO 18975. ExamplesProduct - id.gs1.org/01/09520123456788/21/12345 Party - abr.business.gov.au/ABN/View?abn=90664869327. Facility - did:web:facilities.example-company.com:123. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the entity within the identifier scheme. Examplesproduct - EV battery 300Ahparty - Sample Company Pty Ltd. facility - Greenacres battery factory" + }, + "registeredId": { + "example": "90664869327", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme. Exampleproduct - id.gs1.org/01. party - business.gov.au/abn facility - did:web:facilities.acme.com. " + } + }, + "description": "The ID and Name of an identified entity such qs a product, facility, party, standard, etc. If the identifier is a W3C DID then the corresponding DID document SHOULD include a serviceEndpoint of type \"IdentityResolver\". If the identifier is not a W3C DID then the id peroperty SHOULD be an identity resolver URL.", + "required": ["id", "name"] + }, + "IdentifierScheme": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["IdentifierScheme"], + "default": ["IdentifierScheme"], + "items": { + "type": "string", + "enum": ["IdentifierScheme"] + } + }, + "id": { + "example": "https://id.gs1.org/01/", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of the registration scheme. The scheme should be registered and discoverable from vocabulary.uncefact.org/identifierSchemes" + }, + "name": { + "example": "Global Trade Identification Number (GTIN)", + "type": "string", + "description": "The name of the identifier scheme. " + } + }, + "description": "An identifier registration scheme for products, facilities, or organisations. Typically operated by a state, national or gloabl authority." + }, + "Facility": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Facility"], + "default": ["Facility"], + "items": { + "type": "string", + "enum": ["Facility"] + } + }, + "id": { + "example": "https://id.gs1.org/gln/0614141123452", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the facility as URI, ideally as a resolvable URL." + }, + "registeredId": { + "example": "0614141123452", + "type": "string", + "description": "The registration number (alphanumeric) of the facility within the identifir scheme. Unique within the register." + }, + "description": { + "example": "LiFePO4 Battery plant number 7", + "type": "string", + "description": "An optional short description of the facility" + }, + "name": { + "example": "Example facility 7", + "type": "string", + "description": "The registered name of the facility within the identifier scheme. " + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The ID scheme of the facility. eg a GS1 GLN or a National land registry scheme. If self issued then use the prty ID of the facility owner. " + }, + "countryOfOperation": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The country in which this facility is operating.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "processCategory": { + "type": "array", + "items": { + "$ref": "#/$defs/Classification" + }, + "description": "The idustrial or production processes performed by this facility. id:unstats.un.org/isic/1030 code:1030 name:Processing and preserving of fruit and vegetables schemeID:unstats.un.org/unsd/classifications/Econ/isic schemeName:ISIC" + }, + "operatedByParty": { + "$ref": "#/$defs/Identifier", + "description": "The Party entity responsible for operating the facility.An object structure that uniquely identifies the party within a known party identifiaction scheme. " + }, + "otherIdentifier": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this facility - eg GLNs or other schemes." + }, + "address": { + "$ref": "#/$defs/Address", + "description": "The Postal address of the location." + }, + "locationInformation": { + "$ref": "#/$defs/Location", + "description": "Physical location details" + }, + "conformityClaim": { + "type": "array", + "items": { + "$ref": "#/$defs/Claim" + }, + "description": "A list of conformity declarations agains specific criterai from recognised standards or regulations. " + } + }, + "description": "The physical site (eg farm or factory) where the product or materials was produced. Including the facility sustainability performacne record. ", + "required": ["id", "name"] + }, + "Classification": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Classification"], + "default": ["Classification"], + "items": { + "type": "string", + "enum": ["Classification"] + } + }, + "id": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "type": "string", + "format": "uri", + "description": "The globally unique URI representing the specific classifier value" + }, + "code": { + "example": "46410", + "type": "string", + "description": "classification code within the scheme" + }, + "name": { + "example": "Primary cells and primary batteries", + "type": "string", + "description": "Name of the classification represented by the code" + }, + "schemeID": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "type": "string", + "format": "uri", + "description": "Classification scheme ID" + }, + "schemeName": { + "example": "UN Central Product Classification (CPC)", + "type": "string", + "description": "The name of the classification scheme" + } + }, + "description": "A classification scheme and code / name representing a category value for a product, entity, or facility.", + "required": ["id", "name"] + }, + "Address": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Address"], + "default": ["Address"], + "items": { + "type": "string", + "enum": ["Address"] + } + }, + "streetAddress": { + "example": "level 11, 15 London Circuit", + "type": "string", + "description": "the street address - eg " + }, + "postalCode": { + "example": "2601", + "type": "string", + "description": "The post code" + }, + "addressLocality": { + "example": "Acton", + "type": "string", + "description": "The city, suburb or township." + }, + "addressRegion": { + "example": "ACT", + "type": "string", + "description": "The state or territory or province" + }, + "addressCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The address country\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + } + }, + "description": "A postal address" + }, + "Location": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Location"], + "default": ["Location"], + "items": { + "type": "string", + "enum": ["Location"] + } + }, + "plusCode": { + "example": "https://plus.codes/8CGRC78W+MM", + "type": "string", + "format": "uri", + "description": "An open location code (https://maps.google.com/pluscodes/) representing this geographic location or region. Open location codes can represent any sized area from a point to a large region and are easily resolved to a visual map location. " + }, + "geoLocation": { + "$ref": "#/$defs/Point", + "description": "The latitude and logditude coordinates that best represent the specified location. Using GeoJSON Point notation." + }, + "geoBoundary": { + "$ref": "#/$defs/Polygon", + "description": "The list of ordered coordinates that define a closed area polygon as a location boundary using GeoJSON polygon notation." + } + }, + "description": "Location information including address and geolocation of points, areas, and boundaries" + }, + "Point": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "string", + "enum": ["Point"], + "example": "Point", + "description": "" + }, + "coordinates": { + "$ref": "#/$defs/Point3D", + "description": "Coordinates property of type Point3D" + } + }, + "description": "Represents a Point geometry", + "required": ["type"] + }, + "Point3D": { + "description": "Point in 3d space", + "oneOf": [ + { + "type": "array", + "readOnly": true, + "const": ["Point3D"], + "default": ["Point3D"], + "items": { + "type": "string", + "enum": ["Point3D"] + } + }, + { + "type": "array", + "items": { + "type": "number", + "format": "float" + }, + "description": "Array of decimal values" + } + ] + }, + "Polygon": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "string", + "enum": ["Polygon"], + "example": "Polygon", + "description": "" + }, + "coordinates": { + "type": "array", + "items": { + "$ref": "#/$defs/Point3DWrapper" + }, + "description": "Array of PolygonCoordinates" + } + }, + "description": "Represents a Polygon geometry", + "required": ["type"] + }, + "Point3DWrapper": { + "description": "", + "oneOf": [ + { + "type": "array", + "readOnly": true, + "const": ["Point3DWrapper"], + "default": ["Point3DWrapper"], + "items": { + "type": "string", + "enum": ["Point3DWrapper"] + } + }, + { + "type": "array", + "items": { + "$ref": "#/$defs/Point3D" + }, + "description": "" + } + ] + }, + "Claim": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Claim", "Declaration"], + "default": ["Claim", "Declaration"], + "items": { + "type": "string", + "enum": ["Claim", "Declaration"] + } + }, + "assessmentDate": { + "example": "2024-03-15", + "type": "string", + "format": "date", + "description": "The date on which this assessment was made. " + }, + "id": { + "example": "https://products.example-company.com/09520123456788/declarations/12345", + "type": "string", + "format": "uri", + "description": "A unique identifier for the delcaration. Often this will be an extension of the product.id or attestation.id. But could be a UUID." + }, + "referenceStandard": { + "$ref": "#/$defs/Standard", + "description": "The reference to the standard that defines the specification / criteria" + }, + "referenceRegulation": { + "$ref": "#/$defs/Regulation", + "description": "The reference to the regulation that defines the assessment criteria" + }, + "assessmentCriteria": { + "type": "array", + "items": { + "$ref": "#/$defs/Criterion" + }, + "description": "The specification against which the assessment is made." + }, + "declaredValue": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "The list of specific values measured as part of this assessment (eg tensile strength)" + }, + "compliance": { + "example": "true", + "type": "boolean", + "description": "An indicator of whether or not the assessment meets the specification." + }, + "conformityTopic": { + "type": "string", + "enum": [ + "environment.energy", + "environment.emissions", + "environment.water", + "environment.waste", + "environment.deforestation", + "environment.biodiversity", + "circularity.content", + "circularity.design", + "social.labour", + "social.rights", + "social.community", + "social.safety", + "governance.ethics", + "governance.compliance", + "governance.transparency" + ], + "example": "environment.energy", + "description": "The conformity topic category for this assessment (eg vocabulary.uncefact.org/sustainability/emissions)" + }, + "conformityEvidence": { + "$ref": "#/$defs/SecureLink", + "description": "A binary file that is hashed ()for tamper evidence) and optionally encrypted (for confidentiality)." + } + }, + "description": "A confomrity claim aboutthe facility against a specific standard or regulation.", + "required": ["id", "compliance", "conformityTopic"] + }, + "Standard": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Standard"], + "default": ["Standard"], + "items": { + "type": "string", + "enum": ["Standard"] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf", + "type": "string", + "format": "uri", + "description": "A unique identifier for the standard (eg https://www.iso.org/standard/60857.html)." + }, + "name": { + "example": "GBA Battery Passport Greenhouse Gas Rulebook - V.2.0", + "type": "string", + "description": "The name of the standard" + }, + "issuingParty": { + "$ref": "#/$defs/Identifier", + "description": "The party that issued the standard " + }, + "issueDate": { + "example": "2023-12-05", + "type": "string", + "format": "date", + "description": "The date when the standard was issued." + } + }, + "description": "A standard (eg ISO 14000) that specifies the criteria for conformance.", + "required": ["issuingParty"] + }, + "Regulation": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Regulation"], + "default": ["Regulation"], + "items": { + "type": "string", + "enum": ["Regulation"] + } + }, + "id": { + "example": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of this regulation. " + }, + "name": { + "example": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "type": "string", + "description": "The name of the regulation or act." + }, + "jurisdictionCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The legal jurisdiction (country) under which the regulation is issued.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "administeredBy": { + "$ref": "#/$defs/Identifier", + "description": "the issuing body of the regulation. For example Australin Goernment Department of Climate Change, Energy, the Environment and Water" + }, + "effectiveDate": { + "example": "2024-03-20", + "type": "string", + "format": "date", + "description": "the date at which the regulation came into effect." + } + }, + "description": "A regulation (eg EU deforestation regulation) that defines the criteria for assessment.", + "required": ["administeredBy"] + }, + "Criterion": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Criterion"], + "default": ["Criterion"], + "items": { + "type": "string", + "enum": ["Criterion"] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf#BatteryAssembly", + "type": "string", + "format": "uri", + "description": "A unique identifier for the criteria within the standard or regulation. For example CO2 emissions calaculations for liquid fule combusion." + }, + "name": { + "example": "GBA Battery rule book v2.0 battery assembly guidelines.", + "type": "string", + "description": "A name that describes this criteria." + }, + "thresholdValues": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "A conformity threshold defined by the specification (eg minimum compressive strength) " + } + }, + "description": "A specific rule or criterion within a standard or regulation. eg a carbon intensity calculation rule within an emissions standard.", + "required": ["id", "name"] + }, + "Metric": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Metric"], + "default": ["Metric"], + "items": { + "type": "string", + "enum": ["Metric"] + } + }, + "metricName": { + "example": "GHG emissions intensity", + "type": "string", + "description": "A human readable name for this metric (for example \"Tensile strength\")" + }, + "metricValue": { + "$ref": "#/$defs/Measure", + "description": "A numeric value and unit of measure for this metric. Could be a measured value or a specified threshold. Eg {\"value\":400, \"unit\":\"MPA\"} as tensile strenght of structural steel" + }, + "score": { + "example": "BB", + "type": "string", + "description": "A score or rank associated with this measured metric." + }, + "accuracy": { + "example": 0.05, + "type": "number", + "description": "A percentage represented as a numeric between 0 and 1 indicating the rage of accuracy of the claimed value (eg 0.05 means that the actual value is within 5% of the claimed value.)" + } + }, + "description": "A specific measure of performance against the criteria that governs the claim. Expressed as an array of metric (ie unit of emasure) / value (ie the actual numeric value) pairs. ", + "required": ["metricName", "metricValue"] + }, + "Measure": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Measure"], + "default": ["Measure"], + "items": { + "type": "string", + "enum": ["Measure"] + } + }, + "value": { + "example": 10, + "type": "number", + "description": "The numeric value of the measure" + }, + "unit": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "Unit of measure drawn from the UNECE rec20 measure code list.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "The measure class defines a numeric measured value (eg 10) and a coded unit of measure (eg KG).", + "required": ["value", "unit"] + }, + "SecureLink": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["SecureLink", "Link"], + "default": ["SecureLink", "Link"], + "items": { + "type": "string", + "enum": ["SecureLink", "Link"] + } + }, + "linkURL": { + "example": "https://files.example-certifier.com/1234567.json", + "type": "string", + "format": "uri", + "description": "The URL of the target resource. " + }, + "linkName": { + "example": "GBA rule book conformity certificate", + "type": "string", + "description": "A display name for the target resource " + }, + "linkType": { + "example": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "type": "string", + "description": "The type of the target resource - drawn from a controlled vocabulary " + }, + "hashDigest": { + "example": "6239119dda5bd4c8a6ffb832fe16feaa5c27b7dba154d24c53d4470a2c69adc2", + "type": "string", + "description": "The hash of the file." + }, + "hashMethod": { + "type": "string", + "enum": ["SHA-256", "SHA-1"], + "example": "SHA-256", + "description": "The hashing algorithm used to create the target hash. SHA-265 is the recommedned standard" + }, + "encryptionMethod": { + "type": "string", + "enum": ["none", "AES"], + "example": "none", + "description": "The symmetric encryption algorithm used to encrypt the link target. AES is the recommended standard. Decryption keys are expected to be passed out of bounds." + } + }, + "description": "A binary file that is hashed ()for tamper evidence) and optionally encrypted (for confidentiality)." + } + } +} diff --git a/packages/untp-test-suite/src/schemas/digitalFacilityRecord/v0.4.2/schema.json b/packages/untp-test-suite/src/schemas/digitalFacilityRecord/v0.4.2/schema.json new file mode 100644 index 00000000..bf27b887 --- /dev/null +++ b/packages/untp-test-suite/src/schemas/digitalFacilityRecord/v0.4.2/schema.json @@ -0,0 +1,761 @@ +{ + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["DigitalFacilityRecord", "VerifiableCredential"], + "default": ["DigitalFacilityRecord", "VerifiableCredential"], + "items": { + "type": "string", + "enum": ["DigitalFacilityRecord", "VerifiableCredential"] + } + }, + "@context": { + "example": "https://test.uncefact.org/vocabulary/untp/dpp/dpp-context.jsonld", + "type": "array", + "items": { + "type": "string", + "enum": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dfr/0.4.2/"] + }, + "description": "A list of JSON-LD context URIs that define the semantic meaning of properties within the credential. ", + "readOnly": true, + "const": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dfr/0.4.2/"], + "default": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dfr/0.4.2/"] + }, + "id": { + "example": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "type": "string", + "format": "uri", + "description": "A unique identifier (URI) assigned to the product passport. May be a UUID" + }, + "issuer": { + "$ref": "#/$defs/CredentialIssuer", + "description": "The organisation that is the issuer of this VC. Note that the \"id\" property MUST be a W3C DID. Other identifiers such as tax registration numbers can be listed in the \"otherIdentifiers\" property." + }, + "validFrom": { + "example": "2024-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The date and time from which the credential is valid." + }, + "validUntil": { + "example": "2034-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The expiry date (if applicable) of this verifiable credential." + }, + "credentialSubject": { + "$ref": "#/$defs/Facility", + "description": "The subject of a UNTP Digital Facility Record (DFR) is a Facility " + } + }, + "description": "A digital verifiable credential holding facility performance information.", + "required": ["@context", "id", "issuer"], + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$defs": { + "CredentialIssuer": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["CredentialIssuer"], + "default": ["CredentialIssuer"], + "items": { + "type": "string", + "enum": ["CredentialIssuer"] + } + }, + "id": { + "example": "did:web:identifiers.example-company.com:12345", + "type": "string", + "format": "uri", + "description": "The W3C DID of the issuer - should be a did:web or did:tdw" + }, + "name": { + "example": "Example Company Pty Ltd", + "type": "string", + "description": "The name of the issuer person or organisation" + }, + "otherIdentifier": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this credential issuer " + } + }, + "description": "The issuer party (person or organisation) of a verifiable credential.", + "required": ["id", "name"] + }, + "Identifier": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Identifier"], + "default": ["Identifier"], + "items": { + "type": "string", + "enum": ["Identifier"] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the entity as a resolvable URL according to ISO 18975. ExamplesProduct - id.gs1.org/01/09520123456788/21/12345 Party - abr.business.gov.au/ABN/View?abn=90664869327. Facility - did:web:facilities.example-company.com:123. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the entity within the identifier scheme. Examples: product - EV battery 300Ah, Party - Sample Company Pty Ltd, Facility - Green Acres battery factory" + }, + "registeredId": { + "example": "90664869327", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme. Examples : Product - id.gs1.org/01, Party - business.gov.au/abn, Facility - did:web:facilities.acme.com. " + } + }, + "description": "The ID and Name of an identified entity such as a product, facility, party, standard, etc. If the identifier is a W3C DID then the corresponding DID document SHOULD include a serviceEndpoint of type \"IdentityResolver\". If the identifier is not a W3C DID then the id property SHOULD be an identity resolver URL.", + "required": ["id", "name"] + }, + "IdentifierScheme": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["IdentifierScheme"], + "default": ["IdentifierScheme"], + "items": { + "type": "string", + "enum": ["IdentifierScheme"] + } + }, + "id": { + "example": "https://id.gs1.org/01/", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of the registration scheme. The scheme should be registered and discoverable from vocabulary.uncefact.org/identifierSchemes" + }, + "name": { + "example": "Global Trade Identification Number (GTIN)", + "type": "string", + "description": "The name of the identifier scheme. " + } + }, + "description": "An identifier registration scheme for products, facilities, or organisations. Typically operated by a state, national or global authority." + }, + "Facility": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Facility"], + "default": ["Facility"], + "items": { + "type": "string", + "enum": ["Facility"] + } + }, + "id": { + "example": "https://id.gs1.org/gln/0614141123452", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the facility as URI, ideally as a resolvable URL." + }, + "registeredId": { + "example": "0614141123452", + "type": "string", + "description": "The registration number (alphanumeric) of the facility within the identifier scheme. Unique within the register." + }, + "description": { + "example": "LiFePO4 Battery plant number 7", + "type": "string", + "description": "An optional short description of the facility" + }, + "name": { + "example": "Example facility 7", + "type": "string", + "description": "The registered name of the facility within the identifier scheme. " + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The ID scheme of the facility. eg a GS1 GLN or a National land registry scheme. If self issued then use the party ID of the facility owner. " + }, + "countryOfOperation": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The country in which this facility is operating.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "processCategory": { + "type": "array", + "items": { + "$ref": "#/$defs/Classification" + }, + "description": "The industrial or production processes performed by this facility. Example unstats.un.org/isic/1030." + }, + "operatedByParty": { + "$ref": "#/$defs/Identifier", + "description": "The Party entity responsible for operating the facility.An object structure that uniquely identifies the party within a known party identification scheme. " + }, + "otherIdentifier": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this facility - eg GLNs or other schemes." + }, + "address": { + "$ref": "#/$defs/Address", + "description": "The Postal address of the location." + }, + "locationInformation": { + "$ref": "#/$defs/Location", + "description": "Physical location details" + }, + "conformityClaim": { + "type": "array", + "items": { + "$ref": "#/$defs/Claim" + }, + "description": "A list of conformity declarations against specific criteria from recognised standards or regulations. " + } + }, + "description": "The physical site (eg farm or factory) where the product or materials was produced. Including the facility sustainability performance record. ", + "required": ["id", "name"] + }, + "Classification": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Classification"], + "default": ["Classification"], + "items": { + "type": "string", + "enum": ["Classification"] + } + }, + "id": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "type": "string", + "format": "uri", + "description": "The globally unique URI representing the specific classifier value" + }, + "code": { + "example": "46410", + "type": "string", + "description": "classification code within the scheme" + }, + "name": { + "example": "Primary cells and primary batteries", + "type": "string", + "description": "Name of the classification represented by the code" + }, + "schemeID": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "type": "string", + "format": "uri", + "description": "Classification scheme ID" + }, + "schemeName": { + "example": "UN Central Product Classification (CPC)", + "type": "string", + "description": "The name of the classification scheme" + } + }, + "description": "A classification scheme and code / name representing a category value for a product, entity, or facility.", + "required": ["id", "name"] + }, + "Address": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Address"], + "default": ["Address"], + "items": { + "type": "string", + "enum": ["Address"] + } + }, + "streetAddress": { + "example": "level 11, 15 London Circuit", + "type": "string", + "description": "the street address as an unstructured string." + }, + "postalCode": { + "example": "2601", + "type": "string", + "description": "The postal code or zip code for this address." + }, + "addressLocality": { + "example": "Acton", + "type": "string", + "description": "The city, suburb or township name." + }, + "addressRegion": { + "example": "ACT", + "type": "string", + "description": "The state or territory or province" + }, + "addressCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The address country as an ISO-3166 two letter country code.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + } + }, + "description": "A postal address." + }, + "Location": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Location"], + "default": ["Location"], + "items": { + "type": "string", + "enum": ["Location"] + } + }, + "plusCode": { + "example": "https://plus.codes/8CGRC78W+MM", + "type": "string", + "format": "uri", + "description": "An open location code (https://maps.google.com/pluscodes/) representing this geographic location or region. Open location codes can represent any sized area from a point to a large region and are easily resolved to a visual map location. " + }, + "geoLocation": { + "$ref": "#/$defs/Point", + "description": "The latitude and longditude coordinates that best represent the specified location. Using GeoJSON Point notation." + }, + "geoBoundary": { + "$ref": "#/$defs/Polygon", + "description": "The list of ordered coordinates that define a closed area polygon as a location boundary using GeoJSON polygon notation." + } + }, + "description": "Location information including address and geo-location of points, areas, and boundaries" + }, + "Point": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "string", + "enum": ["Point"], + "example": "Point", + "description": "" + }, + "coordinates": { + "$ref": "#/$defs/Point3D", + "description": "Coordinates property of type Point3D" + } + }, + "description": "Represents a Point geometry", + "required": ["type"] + }, + "Point3D": { + "description": "Point in 3d space", + "oneOf": [ + { + "type": "array", + "readOnly": true, + "const": ["Point3D"], + "default": ["Point3D"], + "items": { + "type": "string", + "enum": ["Point3D"] + } + }, + { + "type": "array", + "items": { + "type": "number", + "format": "float" + }, + "description": "Array of decimal values" + } + ] + }, + "Polygon": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "string", + "enum": ["Polygon"], + "example": "Polygon", + "description": "" + }, + "coordinates": { + "type": "array", + "items": { + "$ref": "#/$defs/Point3DWrapper" + }, + "description": "Array of PolygonCoordinates" + } + }, + "description": "Represents a Polygon geometry", + "required": ["type"] + }, + "Point3DWrapper": { + "description": "", + "oneOf": [ + { + "type": "array", + "readOnly": true, + "const": ["Point3DWrapper"], + "default": ["Point3DWrapper"], + "items": { + "type": "string", + "enum": ["Point3DWrapper"] + } + }, + { + "type": "array", + "items": { + "$ref": "#/$defs/Point3D" + }, + "description": "" + } + ] + }, + "Claim": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Claim", "Declaration"], + "default": ["Claim", "Declaration"], + "items": { + "type": "string", + "enum": ["Claim", "Declaration"] + } + }, + "assessmentDate": { + "example": "2024-03-15", + "type": "string", + "format": "date", + "description": "The date on which this assessment was made. " + }, + "id": { + "example": "https://products.example-company.com/09520123456788/declarations/12345", + "type": "string", + "format": "uri", + "description": "A unique identifier for the declaration. Often this will be an extension of the product.id or attestation.id. But could be a UUID." + }, + "referenceStandard": { + "$ref": "#/$defs/Standard", + "description": "The reference to the standard that defines the specification / criteria" + }, + "referenceRegulation": { + "$ref": "#/$defs/Regulation", + "description": "The reference to the regulation that defines the assessment criteria" + }, + "assessmentCriteria": { + "type": "array", + "items": { + "$ref": "#/$defs/Criterion" + }, + "description": "The specification against which the assessment is made." + }, + "declaredValue": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "The list of specific values measured as part of this assessment (eg tensile strength)" + }, + "compliance": { + "example": "true", + "type": "boolean", + "description": "An indicator of whether or not the assessment meets the specification." + }, + "conformityTopic": { + "type": "string", + "enum": [ + "environment.energy", + "environment.emissions", + "environment.water", + "environment.waste", + "environment.deforestation", + "environment.biodiversity", + "circularity.content", + "circularity.design", + "social.labour", + "social.rights", + "social.community", + "social.safety", + "governance.ethics", + "governance.compliance", + "governance.transparency" + ], + "example": "environment.energy", + "description": "The conformity topic category for this assessment (eg vocabulary.uncefact.org/sustainability/emissions)" + }, + "conformityEvidence": { + "$ref": "#/$defs/SecureLink", + "description": "A binary file that is hashed ()for tamper evidence) and optionally encrypted (for confidentiality)." + } + }, + "description": "A conformity claim about the facility against a specific standard or regulation.", + "required": ["id", "compliance", "conformityTopic"] + }, + "Standard": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Standard"], + "default": ["Standard"], + "items": { + "type": "string", + "enum": ["Standard"] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf", + "type": "string", + "format": "uri", + "description": "A unique identifier for the standard (eg https://www.iso.org/standard/60857.html)." + }, + "name": { + "example": "GBA Battery Passport Greenhouse Gas Rulebook - V.2.0", + "type": "string", + "description": "The name of the standard" + }, + "issuingParty": { + "$ref": "#/$defs/Identifier", + "description": "The party that issued the standard " + }, + "issueDate": { + "example": "2023-12-05", + "type": "string", + "format": "date", + "description": "The date when the standard was issued." + } + }, + "description": "A standard (eg ISO 14000) that specifies the criteria for conformance.", + "required": ["issuingParty"] + }, + "Regulation": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Regulation"], + "default": ["Regulation"], + "items": { + "type": "string", + "enum": ["Regulation"] + } + }, + "id": { + "example": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of this regulation. " + }, + "name": { + "example": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "type": "string", + "description": "The name of the regulation or act." + }, + "jurisdictionCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The legal jurisdiction (country) under which the regulation is issued.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "administeredBy": { + "$ref": "#/$defs/Identifier", + "description": "the issuing body of the regulation. For example Australian Government Department of Climate Change, Energy, the Environment and Water" + }, + "effectiveDate": { + "example": "2024-03-20", + "type": "string", + "format": "date", + "description": "the date at which the regulation came into effect." + } + }, + "description": "A regulation (eg EU deforestation regulation) that defines the criteria for assessment.", + "required": ["administeredBy"] + }, + "Criterion": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Criterion"], + "default": ["Criterion"], + "items": { + "type": "string", + "enum": ["Criterion"] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf#BatteryAssembly", + "type": "string", + "format": "uri", + "description": "A unique identifier for the criterion within the standard or regulation. For example CO2 emissions calculations for liquid fuel combustion." + }, + "name": { + "example": "GBA Battery rule book v2.0 battery assembly guidelines.", + "type": "string", + "description": "A name that describes this criteria." + }, + "thresholdValues": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "A conformity threshold defined by the specification (eg minimum compressive strength) " + } + }, + "description": "A specific rule or criterion within a standard or regulation. eg a carbon intensity calculation rule within an emissions standard.", + "required": ["id", "name"] + }, + "Metric": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Metric"], + "default": ["Metric"], + "items": { + "type": "string", + "enum": ["Metric"] + } + }, + "metricName": { + "example": "GHG emissions intensity", + "type": "string", + "description": "A human readable name for this metric (for example \"Tensile strength\")" + }, + "metricValue": { + "$ref": "#/$defs/Measure", + "description": "A numeric value and unit of measure for this metric. Could be a measured value or a specified threshold. Eg {\"value\":400, \"unit\":\"MPA\"} as tensile strength of structural steel" + }, + "score": { + "example": "BB", + "type": "string", + "description": "A score or rank associated with this measured metric." + }, + "accuracy": { + "example": 0.05, + "type": "number", + "description": "A percentage represented as a numeric between 0 and 1 indicating the rage of accuracy of the claimed value (eg 0.05 means that the actual value is within 5% of the claimed value.)" + } + }, + "description": "A specific measure of performance against the criteria that governs the claim. Expressed as an array of metric (ie unit of measure) / value (ie the actual numeric value) pairs. ", + "required": ["metricName", "metricValue"] + }, + "Measure": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Measure"], + "default": ["Measure"], + "items": { + "type": "string", + "enum": ["Measure"] + } + }, + "value": { + "example": 10, + "type": "number", + "description": "The numeric value of the measure" + }, + "unit": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "Unit of measure drawn from the UNECE Rec20 measure code list.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "The measure class defines a numeric measured value (eg 10) and a coded unit of measure (eg KG).", + "required": ["value", "unit"] + }, + "SecureLink": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["SecureLink", "Link"], + "default": ["SecureLink", "Link"], + "items": { + "type": "string", + "enum": ["SecureLink", "Link"] + } + }, + "linkURL": { + "example": "https://files.example-certifier.com/1234567.json", + "type": "string", + "format": "uri", + "description": "The URL of the target resource. " + }, + "linkName": { + "example": "GBA rule book conformity certificate", + "type": "string", + "description": "A display name for the target resource " + }, + "linkType": { + "example": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "type": "string", + "description": "The type of the target resource - drawn from a controlled vocabulary " + }, + "hashDigest": { + "example": "6239119dda5bd4c8a6ffb832fe16feaa5c27b7dba154d24c53d4470a2c69adc2", + "type": "string", + "description": "The hash of the file." + }, + "hashMethod": { + "type": "string", + "enum": ["SHA-256", "SHA-1"], + "example": "SHA-256", + "description": "The hashing algorithm used to create the target hash. SHA-265 is the recommended standard" + }, + "encryptionMethod": { + "type": "string", + "enum": ["none", "AES"], + "example": "none", + "description": "The symmetric encryption algorithm used to encrypt the link target. AES is the recommended standard. Decryption keys are expected to be passed out of bounds." + } + }, + "description": "A binary file that is hashed ()for tamper evidence) and optionally encrypted (for confidentiality)." + } + } +} diff --git a/packages/untp-test-suite/src/schemas/digitalFacilityRecord/v0.5.0/schema.json b/packages/untp-test-suite/src/schemas/digitalFacilityRecord/v0.5.0/schema.json new file mode 100644 index 00000000..e76a0674 --- /dev/null +++ b/packages/untp-test-suite/src/schemas/digitalFacilityRecord/v0.5.0/schema.json @@ -0,0 +1,928 @@ +{ + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "DigitalFacilityRecord", + "VerifiableCredential" + ], + "default": [ + "DigitalFacilityRecord", + "VerifiableCredential" + ], + "items": { + "type": "string", + "enum": [ + "DigitalFacilityRecord", + "VerifiableCredential" + ] + } + }, + "@context": { + "example": "https://test.uncefact.org/vocabulary/untp/dpp/dpp-context.jsonld", + "type": "array", + "items": { + "type": "string", + "enum": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dfr/0.5.0/" + ] + }, + "description": "A list of JSON-LD context URIs that define the semantic meaning of properties within the credential. ", + "readOnly": true, + "const": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dfr/0.5.0/" + ], + "default": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dfr/0.5.0/" + ] + }, + "id": { + "example": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "type": "string", + "format": "uri", + "description": "A unique identifier (URI) assigned to the product passport. May be a UUID" + }, + "issuer": { + "$ref": "#/$defs/CredentialIssuer", + "description": "The organisation that is the issuer of this VC. Note that the \"id\" property MUST be a W3C DID. Other identifiers such as tax registration numbers can be listed in the \"otherIdentifiers\" property." + }, + "validFrom": { + "example": "2024-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The date and time from which the credential is valid." + }, + "validUntil": { + "example": "2034-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The expiry date (if applicable) of this verifiable credential." + }, + "credentialSubject": { + "$ref": "#/$defs/Facility", + "description": "The subject of a UNTP Digital Facility Record (DFR) is a Facility " + } + }, + "description": "A digital verifiable credential holding facility performance information.", + "required": [ + "@context", + "id", + "issuer" + ], + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$defs": { + "CredentialIssuer": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "CredentialIssuer" + ], + "default": [ + "CredentialIssuer" + ], + "items": { + "type": "string", + "enum": [ + "CredentialIssuer" + ] + } + }, + "id": { + "example": "did:web:identifiers.example-company.com:12345", + "type": "string", + "format": "uri", + "description": "The W3C DID of the issuer - should be a did:web or did:tdw" + }, + "name": { + "example": "Example Company Pty Ltd", + "type": "string", + "description": "The name of the issuer person or organisation" + }, + "otherIdentifier": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this credential issuer " + } + }, + "description": "The issuer party (person or organisation) of a verifiable credential.", + "required": [ + "id", + "name" + ] + }, + "Identifier": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Identifier" + ], + "default": [ + "Identifier" + ], + "items": { + "type": "string", + "enum": [ + "Identifier" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the entity as a resolvable URL according to ISO 18975. ExamplesProduct - id.gs1.org/01/09520123456788/21/12345 Party - abr.business.gov.au/ABN/View?abn=90664869327. Facility - did:web:facilities.example-company.com:123. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the entity within the identifier scheme. Examples: product - EV battery 300Ah, Party - Sample Company Pty Ltd, Facility - Green Acres battery factory" + }, + "registeredId": { + "example": "90664869327", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme. Examples : Product - id.gs1.org/01, Party - business.gov.au/abn, Facility - did:web:facilities.acme.com. " + } + }, + "description": "The ID and Name of an identified entity such as a product, facility, party, standard, etc. If the identifier is a W3C DID then the corresponding DID document SHOULD include a serviceEndpoint of type \"IdentityResolver\". If the identifier is not a W3C DID then the id property SHOULD be an identity resolver URL.", + "required": [ + "id", + "name" + ] + }, + "IdentifierScheme": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "IdentifierScheme" + ], + "default": [ + "IdentifierScheme" + ], + "items": { + "type": "string", + "enum": [ + "IdentifierScheme" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of the registration scheme. The scheme should be registered and discoverable from vocabulary.uncefact.org/identifierSchemes" + }, + "name": { + "example": "Global Trade Identification Number (GTIN)", + "type": "string", + "description": "The name of the identifier scheme. " + } + }, + "description": "An identifier registration scheme for products, facilities, or organisations. Typically operated by a state, national or global authority." + }, + "Facility": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Facility" + ], + "default": [ + "Facility" + ], + "items": { + "type": "string", + "enum": [ + "Facility" + ] + } + }, + "id": { + "example": "https://id.gs1.org/gln/0614141123452", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the facility as URI, ideally as a resolvable URL." + }, + "registeredId": { + "example": "0614141123452", + "type": "string", + "description": "The registration number (alphanumeric) of the facility within the identifier scheme. Unique within the register." + }, + "description": { + "example": "LiFePO4 Battery plant number 7", + "type": "string", + "description": "An optional short description of the facility" + }, + "name": { + "example": "Example facility 7", + "type": "string", + "description": "The registered name of the facility within the identifier scheme. " + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The ID scheme of the facility. eg a GS1 GLN or a National land registry scheme. If self issued then use the party ID of the facility owner. " + }, + "countryOfOperation": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The country in which this facility is operating.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "processCategory": { + "type": "array", + "items": { + "$ref": "#/$defs/Classification" + }, + "description": "The industrial or production processes performed by this facility. Example unstats.un.org/isic/1030." + }, + "operatedByParty": { + "$ref": "#/$defs/Identifier", + "description": "The Party entity responsible for operating the facility.An object structure that uniquely identifies the party within a known party identification scheme. " + }, + "otherIdentifier": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this facility - eg GLNs or other schemes." + }, + "address": { + "$ref": "#/$defs/Address", + "description": "The Postal address of the location." + }, + "locationInformation": { + "$ref": "#/$defs/Location", + "description": "Physical location details" + }, + "conformityClaim": { + "type": "array", + "items": { + "$ref": "#/$defs/Claim" + }, + "description": "A list of conformity declarations against specific criteria from recognised standards or regulations. " + } + }, + "description": "The physical site (eg farm or factory) where the product or materials was produced. Including the facility sustainability performance record.", + "required": [ + "id", + "name" + ] + }, + "Classification": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Classification" + ], + "default": [ + "Classification" + ], + "items": { + "type": "string", + "enum": [ + "Classification" + ] + } + }, + "id": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "type": "string", + "format": "uri", + "description": "The globally unique URI representing the specific classifier value" + }, + "code": { + "example": "46410", + "type": "string", + "description": "classification code within the scheme" + }, + "name": { + "example": "Primary cells and primary batteries", + "type": "string", + "description": "Name of the classification represented by the code" + }, + "schemeID": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "type": "string", + "format": "uri", + "description": "Classification scheme ID" + }, + "schemeName": { + "example": "UN Central Product Classification (CPC)", + "type": "string", + "description": "The name of the classification scheme" + } + }, + "description": "A classification scheme and code / name representing a category value for a product, entity, or facility.", + "required": [ + "id", + "name" + ] + }, + "Address": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Address" + ], + "default": [ + "Address" + ], + "items": { + "type": "string", + "enum": [ + "Address" + ] + } + }, + "streetAddress": { + "example": "level 11, 15 London Circuit", + "type": "string", + "description": "the street address as an unstructured string." + }, + "postalCode": { + "example": "2601", + "type": "string", + "description": "The postal code or zip code for this address." + }, + "addressLocality": { + "example": "Acton", + "type": "string", + "description": "The city, suburb or township name." + }, + "addressRegion": { + "example": "ACT", + "type": "string", + "description": "The state or territory or province" + }, + "addressCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The address country as an ISO-3166 two letter country code.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + } + }, + "description": "A postal address." + }, + "Location": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Location" + ], + "default": [ + "Location" + ], + "items": { + "type": "string", + "enum": [ + "Location" + ] + } + }, + "plusCode": { + "example": "https://plus.codes/8CGRC78W+MM", + "type": "string", + "format": "uri", + "description": "An open location code (https://maps.google.com/pluscodes/) representing this geographic location or region. Open location codes can represent any sized area from a point to a large region and are easily resolved to a visual map location. " + }, + "geoLocation": { + "$ref": "#/$defs/Point", + "description": "The latitude and longitude coordinates that best represent the specified location. Using GeoJSON Point notation." + }, + "geoBoundary": { + "$ref": "#/$defs/Polygon", + "description": "The list of ordered coordinates that define a closed area polygon as a location boundary using GeoJSON polygon notation." + } + }, + "description": "Location information including address and geo-location of points, areas, and boundaries" + }, + "Point": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "string", + "enum": [ + "Point" + ], + "example": "Point", + "description": "" + }, + "coordinates": { + "$ref": "#/$defs/Point3D", + "description": "Coordinates property of type Point3D" + } + }, + "description": "Represents a Point geometry", + "required": [ + "type" + ] + }, + "Point3D": { + "description": "Point in 3d space", + "oneOf": [ + { + "type": "array", + "readOnly": true, + "const": [ + "Point3D" + ], + "default": [ + "Point3D" + ], + "items": { + "type": "string", + "enum": [ + "Point3D" + ] + } + }, + { + "type": "array", + "items": { + "type": "number", + "format": "float" + }, + "description": "Array of decimal values" + } + ] + }, + "Polygon": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "string", + "enum": [ + "Polygon" + ], + "example": "Polygon", + "description": "" + }, + "coordinates": { + "type": "array", + "items": { + "$ref": "#/$defs/Point3DWrapper" + }, + "description": "Array of PolygonCoordinates" + } + }, + "description": "Represents a Polygon geometry", + "required": [ + "type" + ] + }, + "Point3DWrapper": { + "description": "", + "oneOf": [ + { + "type": "array", + "readOnly": true, + "const": [ + "Point3DWrapper" + ], + "default": [ + "Point3DWrapper" + ], + "items": { + "type": "string", + "enum": [ + "Point3DWrapper" + ] + } + }, + { + "type": "array", + "items": { + "$ref": "#/$defs/Point3D" + }, + "description": "" + } + ] + }, + "Claim": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Claim", + "Declaration" + ], + "default": [ + "Claim", + "Declaration" + ], + "items": { + "type": "string", + "enum": [ + "Claim", + "Declaration" + ] + } + }, + "assessmentDate": { + "example": "2024-03-15", + "type": "string", + "format": "date", + "description": "The date on which this assessment was made. " + }, + "id": { + "example": "https://products.example-company.com/09520123456788/declarations/12345", + "type": "string", + "format": "uri", + "description": "A unique identifier for the declaration. Often this will be an extension of the product.id or attestation.id. But could be a UUID." + }, + "referenceStandard": { + "$ref": "#/$defs/Standard", + "description": "The reference to the standard that defines the specification / criteria" + }, + "referenceRegulation": { + "$ref": "#/$defs/Regulation", + "description": "The reference to the regulation that defines the assessment criteria" + }, + "assessmentCriteria": { + "type": "array", + "items": { + "$ref": "#/$defs/Criterion" + }, + "description": "The specification against which the assessment is made." + }, + "declaredValue": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "The list of specific values measured as part of this assessment (eg tensile strength)" + }, + "conformance": { + "example": "true", + "type": "boolean", + "description": "An indicator of whether or not the claim or assesment conforms to the regulatory or standard criteria." + }, + "conformityTopic": { + "type": "string", + "enum": [ + "environment.energy", + "environment.emissions", + "environment.water", + "environment.waste", + "environment.deforestation", + "environment.biodiversity", + "circularity.content", + "circularity.design", + "social.labour", + "social.rights", + "social.community", + "social.safety", + "governance.ethics", + "governance.compliance", + "governance.transparency" + ], + "example": "environment.energy", + "description": "The conformity topic category for this assessment (eg vocabulary.uncefact.org/sustainability/emissions)" + }, + "conformityEvidence": { + "$ref": "#/$defs/SecureLink", + "description": "A binary file that is hashed ()for tamper evidence) and optionally encrypted (for confidentiality)." + } + }, + "description": "A conformity claim about the facility against a specific standard or regulation.", + "required": [ + "id", + "conformance", + "conformityTopic" + ] + }, + "Standard": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Standard" + ], + "default": [ + "Standard" + ], + "items": { + "type": "string", + "enum": [ + "Standard" + ] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf", + "type": "string", + "format": "uri", + "description": "A unique identifier for the standard (eg https://www.iso.org/standard/60857.html)." + }, + "name": { + "example": "GBA Battery Passport Greenhouse Gas Rulebook - V.2.0", + "type": "string", + "description": "The name of the standard" + }, + "issuingParty": { + "$ref": "#/$defs/Identifier", + "description": "The party that issued the standard " + }, + "issueDate": { + "example": "2023-12-05", + "type": "string", + "format": "date", + "description": "The date when the standard was issued." + } + }, + "description": "A standard (eg ISO 14000) that specifies the criteria for conformance.", + "required": [ + "issuingParty" + ] + }, + "Regulation": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Regulation" + ], + "default": [ + "Regulation" + ], + "items": { + "type": "string", + "enum": [ + "Regulation" + ] + } + }, + "id": { + "example": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of this regulation. " + }, + "name": { + "example": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "type": "string", + "description": "The name of the regulation or act." + }, + "jurisdictionCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The legal jurisdiction (country) under which the regulation is issued.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "administeredBy": { + "$ref": "#/$defs/Identifier", + "description": "the issuing body of the regulation. For example Australian Government Department of Climate Change, Energy, the Environment and Water" + }, + "effectiveDate": { + "example": "2024-03-20", + "type": "string", + "format": "date", + "description": "the date at which the regulation came into effect." + } + }, + "description": "A regulation (eg EU deforestation regulation) that defines the criteria for assessment.", + "required": [ + "administeredBy" + ] + }, + "Criterion": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Criterion" + ], + "default": [ + "Criterion" + ], + "items": { + "type": "string", + "enum": [ + "Criterion" + ] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf#BatteryAssembly", + "type": "string", + "format": "uri", + "description": "A unique identifier for the criterion within the standard or regulation. For example CO2 emissions calculations for liquid fuel combustion." + }, + "name": { + "example": "GBA Battery rule book v2.0 battery assembly guidelines.", + "type": "string", + "description": "A name that describes this criteria." + }, + "thresholdValues": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "A conformity threshold defined by the specification (eg minimum compressive strength) " + } + }, + "description": "A specific rule or criterion within a standard or regulation. eg a carbon intensity calculation rule within an emissions standard.", + "required": [ + "id", + "name" + ] + }, + "Metric": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Metric" + ], + "default": [ + "Metric" + ], + "items": { + "type": "string", + "enum": [ + "Metric" + ] + } + }, + "metricName": { + "example": "GHG emissions intensity", + "type": "string", + "description": "A human readable name for this metric (for example \"Tensile strength\")" + }, + "metricValue": { + "$ref": "#/$defs/Measure", + "description": "A numeric value and unit of measure for this metric. Could be a measured value or a specified threshold. Eg {\"value\":400, \"unit\":\"MPA\"} as tensile strength of structural steel" + }, + "score": { + "example": "BB", + "type": "string", + "description": "A score or rank associated with this measured metric." + }, + "accuracy": { + "example": 0.05, + "type": "number", + "description": "A percentage represented as a numeric between 0 and 1 indicating the rage of accuracy of the claimed value (eg 0.05 means that the actual value is within 5% of the claimed value.)" + } + }, + "description": "A specific measure of performance against the criteria that governs the claim. Expressed as an array of metric (ie unit of measure) / value (ie the actual numeric value) pairs. ", + "required": [ + "metricName", + "metricValue" + ] + }, + "Measure": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Measure" + ], + "default": [ + "Measure" + ], + "items": { + "type": "string", + "enum": [ + "Measure" + ] + } + }, + "value": { + "example": 10, + "type": "number", + "description": "The numeric value of the measure" + }, + "unit": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "Unit of measure drawn from the UNECE Rec20 measure code list.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "The measure class defines a numeric measured value (eg 10) and a coded unit of measure (eg KG).", + "required": [ + "value", + "unit" + ] + }, + "SecureLink": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "SecureLink", + "Link" + ], + "default": [ + "SecureLink", + "Link" + ], + "items": { + "type": "string", + "enum": [ + "SecureLink", + "Link" + ] + } + }, + "linkURL": { + "example": "https://files.example-certifier.com/1234567.json", + "type": "string", + "format": "uri", + "description": "The URL of the target resource. " + }, + "linkName": { + "example": "GBA rule book conformity certificate", + "type": "string", + "description": "A display name for the target resource " + }, + "linkType": { + "example": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "type": "string", + "description": "The type of the target resource - drawn from a controlled vocabulary " + }, + "hashDigest": { + "example": "6239119dda5bd4c8a6ffb832fe16feaa5c27b7dba154d24c53d4470a2c69adc2", + "type": "string", + "description": "The hash of the file." + }, + "hashMethod": { + "type": "string", + "enum": [ + "SHA-256", + "SHA-1" + ], + "example": "SHA-256", + "description": "The hashing algorithm used to create the target hash. SHA-265 is the recommended standard" + }, + "encryptionMethod": { + "type": "string", + "enum": [ + "none", + "AES" + ], + "example": "none", + "description": "The symmetric encryption algorithm used to encrypt the link target. AES is the recommended standard. Decryption keys are expected to be passed out of bounds." + } + }, + "description": "A binary file that is hashed ()for tamper evidence) and optionally encrypted (for confidentiality)." + } + } +} \ No newline at end of file diff --git a/packages/untp-test-suite/src/schemas/productPassport/v0.4.0/schema.json b/packages/untp-test-suite/src/schemas/productPassport/v0.4.0/schema.json index 520a5ab4..5c75ab6a 100644 --- a/packages/untp-test-suite/src/schemas/productPassport/v0.4.0/schema.json +++ b/packages/untp-test-suite/src/schemas/productPassport/v0.4.0/schema.json @@ -5,124 +5,170 @@ "type": { "type": "array", "readOnly": true, - "const": ["Product"], - "default": ["Product"], + "const": [ + "DigitalProductPassport", + "VerifiableCredential" + ], + "default": [ + "DigitalProductPassport", + "VerifiableCredential" + ], "items": { "type": "string", - "enum": ["Product"] + "enum": [ + "DigitalProductPassport", + "VerifiableCredential" + ] } }, - "id": { - "example": "https://id.gs1.org/01/09520123456788/21/12345", - "type": "string", - "format": "uri", - "description": "The globally unique ID of the product as a URI. Ideall as a resolvable URL according to ISO 18975. " - }, - "name": { - "example": "EV battery 300Ah.", - "type": "string", - "description": "The registered name of the product within the identifier scheme. " - }, - "registeredId": { - "example": "09520123456788.21.12345", - "type": "string", - "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." - }, - "idScheme": { - "$ref": "#/$defs/IdentifierScheme", - "description": "The identifier scheme for this product. Eg a GS1 GTIn or an AU Livestock NLIS, or similar. If self issued then use the party ID of the issuer. " - }, - "serialNumber": { - "example": "12345678", - "type": "string", - "description": "A number or code representing a specific serialised item of the product. Unique within product class." - }, - "batchNumber": { - "example": "6789", - "type": "string", - "description": "Identifier of the specific production batch of the product. Unique within the product class." - }, - "productImage": { - "$ref": "#/$defs/Link", - "description": "Reference information (location, type, name) of an image of the product." - }, - "description": { - "example": "400Ah 24v LiFePO4 battery", - "type": "string", - "description": "A textual description providing details about the product." - }, - "productCategory": { - "type": "array", - "items": { - "$ref": "#/$defs/Classification" - }, - "description": "A code representing the product's class, typically using the UN CPC (United Nations Central Product Classification) https://unstats.un.org/unsd/classifications/Econ/cpc" - }, - "furtherInformation": { + "@context": { + "example": "https://test.uncefact.org/vocabulary/untp/dpp/dpp-context.jsonld", "type": "array", "items": { - "$ref": "#/$defs/Link" + "type": "string", + "enum": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dpp/0.4.0/" + ] }, - "description": "A URL pointing to further human readable information about the product." - }, - "producedByParty": { - "$ref": "#/$defs/Identifier", - "description": "The Party entity that manufactured the product." + "description": "A list of JSON-LD context URIs that define the seamntic meaning of prperties within the credential. ", + "readOnly": true, + "const": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dpp/0.4.0/" + ], + "default": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dpp/0.4.0/" + ] }, - "producedAtFacility": { - "$ref": "#/$defs/Identifier", - "description": "The Facility where the product batch was produced / manufactured." + "id": { + "example": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "type": "string", + "format": "uri", + "description": "A unique identifier (URI) assigned to the product passport. May be a UUID" }, - "dimensions": { - "$ref": "#/$defs/Dimension", - "description": "The physical dimensions of the product. Not every dimension is relevant to every products. For example bulk materials may have wieght and volume but not length, with, or height.\"weight\":{\"value\":10, \"unit\":\"KGM\"}" + "issuer": { + "$ref": "#/$defs/CredentialIssuer", + "description": "The organisation that is the isuer of this VC. Note that the \"id\" property MUST be a W3C DID. Other identifiers such as tax registration numbers can be listed in the \"otherIdentifiers\" property." }, - "productionDate": { - "example": "2024-04-25", + "validFrom": { + "example": "2024-03-15T12:00:00", "type": "string", - "format": "date", - "description": "The ISO 8601 date on which the product batch was manufactured." + "format": "date-time", + "description": "The date and time from which the credential is valid." }, - "countryOfProduction": { + "validUntil": { + "example": "2034-03-15T12:00:00", "type": "string", - "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", - "description": "The country in which this item was produced / manufactured.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " - }, - "dueDiligenceDeclaration": { - "$ref": "#/$defs/Link", - "description": "The due diligence declaration that conforms with the regulations of the market into which the product is sold." - }, - "materialsProvenance": { - "type": "array", - "items": { - "$ref": "#/$defs/Material" - }, - "description": "An array of Provenance objects providing details on the origin and mass fraction of components or ingredients of the product batch. " - }, - "conformityClaims": { - "type": "array", - "items": { - "$ref": "#/$defs/Claim" - }, - "description": "An array of claim objects representing various product conformity claims about the product / batch. These can be sustainability claims, circularity claims, or any other claim type within the conformity topic list." - }, - "circularityScorecard": { - "$ref": "#/$defs/CircularityPerformance", - "description": "A circularity performance scorecard" + "format": "date-time", + "description": "The expiry date (if applicable) of this verifiable credential." }, - "emissionsScorecard": { - "$ref": "#/$defs/EmissionsPerformance", - "description": "An emissions performacne scorecard" - }, - "traceabilityInformation": { - "$ref": "#/$defs/TraceabilityPerformance", - "description": "An array of secure links to TraceabilityEvent objects detailing EPCIS events related to the traceability of the product batch. SHOULD be provided for any product passport issued at batch or item level. Links should include the hash of the target and may point to encrypted targets." + "credentialSubject": { + "$ref": "#/$defs/Product", + "description": "The subject of a digital product passport credential is the identified product. " } }, - "description": "The ProductInformation class encapsulates detailed information regarding a specific product, including its identification details, manufacturer, and other pertinent details. ", - "required": ["id", "name"], + "description": "The ProductPassport is a comprehensive data structure that encapsulates various details pertaining to a product, including its identification details, who issued it, batch information, provernance information, circularity information and a set of verifable product confomrity & sistainability claims.", + "required": [ + "@context", + "id", + "issuer" + ], "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { + "CredentialIssuer": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "CredentialIssuer" + ], + "default": [ + "CredentialIssuer" + ], + "items": { + "type": "string", + "enum": [ + "CredentialIssuer" + ] + } + }, + "id": { + "example": "did:web:identifiers.example-company.com:12345", + "type": "string", + "format": "uri", + "description": "The W3C DID of the issuer - should be a did:web or did:tdw" + }, + "name": { + "example": "Example Company Pty Ltd", + "type": "string", + "description": "The name of the issuer person or organisation" + }, + "otherIdentifiers": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this credential issuer " + } + }, + "description": "The issuer party ()person or orgnaition) of a verifiable credential.", + "required": [ + "id", + "name" + ] + }, + "Identifier": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Identifier" + ], + "default": [ + "Identifier" + ], + "items": { + "type": "string", + "enum": [ + "Identifier" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the entity as a resolvable URL according to ISO 18975. ExamplesProduct - id.gs1.org/01/09520123456788/21/12345 Party - abr.business.gov.au/ABN/View?abn=90664869327. Facility - did:web:facilities.example-company.com:123. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the entity within the identifier scheme. Examplesproduct - EV battery 300Ahparty - Sample Company Pty Ltd. facility - Greenacres battery factory" + }, + "registeredId": { + "example": "90664869327", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme. Exampleproduct - id.gs1.org/01. party - business.gov.au/abn facility - did:web:facilities.acme.com. " + } + }, + "description": "The ID and Name of an identified entity such qs a product, facility, party, standard, etc. If the identifier is a W3C DID then the corresponding DID document SHOULD include a serviceEndpoint of type \"IdentityResolver\". If the identifier is not a W3C DID then the id peroperty SHOULD be an identity resolver URL.", + "required": [ + "id", + "name" + ] + }, "IdentifierScheme": { "type": "object", "additionalProperties": false, @@ -130,11 +176,17 @@ "type": { "type": "array", "readOnly": true, - "const": ["IdentifierScheme"], - "default": ["IdentifierScheme"], + "const": [ + "IdentifierScheme" + ], + "default": [ + "IdentifierScheme" + ], "items": { "type": "string", - "enum": ["IdentifierScheme"] + "enum": [ + "IdentifierScheme" + ] } }, "id": { @@ -151,6 +203,139 @@ }, "description": "An identifier registration scheme for products, facilities, or organisations. Typically operated by a state, national or gloabl authority." }, + "Product": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Product" + ], + "default": [ + "Product" + ], + "items": { + "type": "string", + "enum": [ + "Product" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the product as a URI. Ideall as a resolvable URL according to ISO 18975. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the product within the identifier scheme. " + }, + "registeredId": { + "example": "09520123456788.21.12345", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme for this product. Eg a GS1 GTIn or an AU Livestock NLIS, or similar. If self issued then use the party ID of the issuer. " + }, + "serialNumber": { + "example": "12345678", + "type": "string", + "description": "A number or code representing a specific serialised item of the product. Unique within product class." + }, + "batchNumber": { + "example": "6789", + "type": "string", + "description": "Identifier of the specific production batch of the product. Unique within the product class." + }, + "productImage": { + "$ref": "#/$defs/Link", + "description": "Reference information (location, type, name) of an image of the product." + }, + "description": { + "example": "400Ah 24v LiFePO4 battery", + "type": "string", + "description": "A textual description providing details about the product." + }, + "productCategory": { + "type": "array", + "items": { + "$ref": "#/$defs/Classification" + }, + "description": "A code representing the product's class, typically using the UN CPC (United Nations Central Product Classification) https://unstats.un.org/unsd/classifications/Econ/cpc" + }, + "furtherInformation": { + "type": "array", + "items": { + "$ref": "#/$defs/Link" + }, + "description": "A URL pointing to further human readable information about the product." + }, + "producedByParty": { + "$ref": "#/$defs/Identifier", + "description": "The Party entity that manufactured the product." + }, + "producedAtFacility": { + "$ref": "#/$defs/Identifier", + "description": "The Facility where the product batch was produced / manufactured." + }, + "dimensions": { + "$ref": "#/$defs/Dimension", + "description": "The physical dimensions of the product. Not every dimension is relevant to every products. For example bulk materials may have wieght and volume but not length, with, or height.\"weight\":{\"value\":10, \"unit\":\"KGM\"}" + }, + "productionDate": { + "example": "2024-04-25", + "type": "string", + "format": "date", + "description": "The ISO 8601 date on which the product batch was manufactured." + }, + "countryOfProduction": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The country in which this item was produced / manufactured.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "dueDiligenceDeclaration": { + "$ref": "#/$defs/Link", + "description": "The due diligence declaration that conforms with the regulations of the market into which the product is sold." + }, + "materialsProvenance": { + "type": "array", + "items": { + "$ref": "#/$defs/Material" + }, + "description": "An array of Provenance objects providing details on the origin and mass fraction of components or ingredients of the product batch. " + }, + "conformityClaims": { + "type": "array", + "items": { + "$ref": "#/$defs/Claim" + }, + "description": "An array of claim objects representing various product conformity claims about the product / batch. These can be sustainability claims, circularity claims, or any other claim type within the conformity topic list." + }, + "circularityScorecard": { + "$ref": "#/$defs/CircularityPerformance", + "description": "A circularity performance scorecard" + }, + "emissionsScorecard": { + "$ref": "#/$defs/EmissionsPerformance", + "description": "An emissions performacne scorecard" + }, + "traceabilityInformation": { + "$ref": "#/$defs/TraceabilityPerformance", + "description": "An array of secure links to TraceabilityEvent objects detailing EPCIS events related to the traceability of the product batch. SHOULD be provided for any product passport issued at batch or item level. Links should include the hash of the target and may point to encrypted targets." + } + }, + "description": "The ProductInformation class encapsulates detailed information regarding a specific product, including its identification details, manufacturer, and other pertinent details. ", + "required": [ + "id", + "name" + ] + }, "Link": { "type": "object", "additionalProperties": false, @@ -158,11 +343,17 @@ "type": { "type": "array", "readOnly": true, - "const": ["Link"], - "default": ["Link"], + "const": [ + "Link" + ], + "default": [ + "Link" + ], "items": { "type": "string", - "enum": ["Link"] + "enum": [ + "Link" + ] } }, "linkURL": { @@ -191,11 +382,17 @@ "type": { "type": "array", "readOnly": true, - "const": ["Classification"], - "default": ["Classification"], + "const": [ + "Classification" + ], + "default": [ + "Classification" + ], "items": { "type": "string", - "enum": ["Classification"] + "enum": [ + "Classification" + ] } }, "id": { @@ -227,45 +424,10 @@ } }, "description": "A classification scheme and code / name representing a category value for a product, entity, or facility.", - "required": ["id", "name"] - }, - "Identifier": { - "type": "object", - "additionalProperties": false, - "properties": { - "type": { - "type": "array", - "readOnly": true, - "const": ["Identifier"], - "default": ["Identifier"], - "items": { - "type": "string", - "enum": ["Identifier"] - } - }, - "id": { - "example": "https://id.gs1.org/01/09520123456788/21/12345", - "type": "string", - "format": "uri", - "description": "The globally unique ID of the entity as a resolvable URL according to ISO 18975. ExamplesProduct - id.gs1.org/01/09520123456788/21/12345 Party - abr.business.gov.au/ABN/View?abn=90664869327. Facility - did:web:facilities.example-company.com:123. " - }, - "name": { - "example": "EV battery 300Ah.", - "type": "string", - "description": "The registered name of the entity within the identifier scheme. Examplesproduct - EV battery 300Ahparty - Sample Company Pty Ltd. facility - Greenacres battery factory" - }, - "registeredId": { - "example": "90664869327", - "type": "string", - "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." - }, - "idScheme": { - "$ref": "#/$defs/IdentifierScheme", - "description": "The identifier scheme. Exampleproduct - id.gs1.org/01. party - business.gov.au/abn facility - did:web:facilities.acme.com. " - } - }, - "description": "The ID and Name of an identified entity such qs a product, facility, party, standard, etc. If the identifier is a W3C DID then the corresponding DID document SHOULD include a serviceEndpoint of type \"IdentityResolver\". If the identifier is not a W3C DID then the id peroperty SHOULD be an identity resolver URL.", - "required": ["id", "name"] + "required": [ + "id", + "name" + ] }, "Dimension": { "type": "object", @@ -274,11 +436,17 @@ "type": { "type": "array", "readOnly": true, - "const": ["Dimension"], - "default": ["Dimension"], + "const": [ + "Dimension" + ], + "default": [ + "Dimension" + ], "items": { "type": "string", - "enum": ["Dimension"] + "enum": [ + "Dimension" + ] } }, "weight": { @@ -311,11 +479,17 @@ "type": { "type": "array", "readOnly": true, - "const": ["Measure"], - "default": ["Measure"], + "const": [ + "Measure" + ], + "default": [ + "Measure" + ], "items": { "type": "string", - "enum": ["Measure"] + "enum": [ + "Measure" + ] } }, "value": { @@ -330,7 +504,10 @@ } }, "description": "The measure class defines a numeric measured value (eg 10) and a coded unit of measure (eg KG).", - "required": ["value", "unit"] + "required": [ + "value", + "unit" + ] }, "Material": { "type": "object", @@ -339,11 +516,17 @@ "type": { "type": "array", "readOnly": true, - "const": ["Material"], - "default": ["Material"], + "const": [ + "Material" + ], + "default": [ + "Material" + ], "items": { "type": "string", - "enum": ["Material"] + "enum": [ + "Material" + ] } }, "name": { @@ -390,7 +573,9 @@ } }, "description": "The material class encapsulates details about the origin or source of raw materials in a product, including the country of origin and the mass fraction.", - "required": ["name"] + "required": [ + "name" + ] }, "Claim": { "type": "object", @@ -399,11 +584,20 @@ "type": { "type": "array", "readOnly": true, - "const": ["Claim", "Declaration"], - "default": ["Claim", "Declaration"], + "const": [ + "Claim", + "Declaration" + ], + "default": [ + "Claim", + "Declaration" + ], "items": { "type": "string", - "enum": ["Claim", "Declaration"] + "enum": [ + "Claim", + "Declaration" + ] } }, "assessmentDate": { @@ -473,7 +667,11 @@ } }, "description": "A declaration of conformance with one or more criteria from a specific standard or regulation. ", - "required": ["id", "compliance", "conformityTopic"] + "required": [ + "id", + "compliance", + "conformityTopic" + ] }, "Standard": { "type": "object", @@ -482,11 +680,17 @@ "type": { "type": "array", "readOnly": true, - "const": ["Standard"], - "default": ["Standard"], + "const": [ + "Standard" + ], + "default": [ + "Standard" + ], "items": { "type": "string", - "enum": ["Standard"] + "enum": [ + "Standard" + ] } }, "id": { @@ -512,7 +716,9 @@ } }, "description": "A standard (eg ISO 14000) that specifies the criteria for conformance.", - "required": ["issuingParty"] + "required": [ + "issuingParty" + ] }, "Regulation": { "type": "object", @@ -521,11 +727,17 @@ "type": { "type": "array", "readOnly": true, - "const": ["Regulation"], - "default": ["Regulation"], + "const": [ + "Regulation" + ], + "default": [ + "Regulation" + ], "items": { "type": "string", - "enum": ["Regulation"] + "enum": [ + "Regulation" + ] } }, "id": { @@ -556,7 +768,9 @@ } }, "description": "A regulation (eg EU deforestation regulation) that defines the criteria for assessment.", - "required": ["administeredBy"] + "required": [ + "administeredBy" + ] }, "Criterion": { "type": "object", @@ -565,11 +779,17 @@ "type": { "type": "array", "readOnly": true, - "const": ["Criterion"], - "default": ["Criterion"], + "const": [ + "Criterion" + ], + "default": [ + "Criterion" + ], "items": { "type": "string", - "enum": ["Criterion"] + "enum": [ + "Criterion" + ] } }, "id": { @@ -592,7 +812,10 @@ } }, "description": "A specific rule or criterion within a standard or regulation. eg a carbon intensity calculation rule within an emissions standard.", - "required": ["id", "name"] + "required": [ + "id", + "name" + ] }, "Metric": { "type": "object", @@ -601,11 +824,17 @@ "type": { "type": "array", "readOnly": true, - "const": ["Metric"], - "default": ["Metric"], + "const": [ + "Metric" + ], + "default": [ + "Metric" + ], "items": { "type": "string", - "enum": ["Metric"] + "enum": [ + "Metric" + ] } }, "metricName": { @@ -629,7 +858,10 @@ } }, "description": "A specific measure of performance against the criteria that governs the claim. Expressed as an array of metric (ie unit of emasure) / value (ie the actual numeric value) pairs. ", - "required": ["metricName", "metricValue"] + "required": [ + "metricName", + "metricValue" + ] }, "SecureLink": { "type": "object", @@ -638,11 +870,20 @@ "type": { "type": "array", "readOnly": true, - "const": ["SecureLink", "Link"], - "default": ["SecureLink", "Link"], + "const": [ + "SecureLink", + "Link" + ], + "default": [ + "SecureLink", + "Link" + ], "items": { "type": "string", - "enum": ["SecureLink", "Link"] + "enum": [ + "SecureLink", + "Link" + ] } }, "linkURL": { @@ -668,13 +909,19 @@ }, "hashMethod": { "type": "string", - "enum": ["SHA-256", "SHA-1"], + "enum": [ + "SHA-256", + "SHA-1" + ], "example": "SHA-256", "description": "The hashing algorithm used to create the target hash. SHA-265 is the recommedned standard" }, "encryptionMethod": { "type": "string", - "enum": ["none", "AES"], + "enum": [ + "none", + "AES" + ], "example": "none", "description": "The symmetric encryption algorithm used to encrypt the link target. AES is the recommended standard. Decryption keys are expected to be passed out of bounds." } @@ -688,11 +935,17 @@ "type": { "type": "array", "readOnly": true, - "const": ["CircularityPerformance"], - "default": ["CircularityPerformance"], + "const": [ + "CircularityPerformance" + ], + "default": [ + "CircularityPerformance" + ], "items": { "type": "string", - "enum": ["CircularityPerformance"] + "enum": [ + "CircularityPerformance" + ] } }, "recyclingInformation": { @@ -737,11 +990,17 @@ "type": { "type": "array", "readOnly": true, - "const": ["EmissionsPerformance"], - "default": ["EmissionsPerformance"], + "const": [ + "EmissionsPerformance" + ], + "default": [ + "EmissionsPerformance" + ], "items": { "type": "string", - "enum": ["EmissionsPerformance"] + "enum": [ + "EmissionsPerformance" + ] } }, "carbonFootprint": { @@ -757,7 +1016,11 @@ }, "operationalScope": { "type": "string", - "enum": ["None", "CradleToGate", "CradleToGrave"], + "enum": [ + "None", + "CradleToGate", + "CradleToGrave" + ], "example": "None", "description": "The operational scope of the emissions performance. Only scope 1 & 2, or inlcuing upstream scope 3 (cradle to gate) or upstream and downstream scope 3 (cradle to grave)." }, @@ -773,7 +1036,12 @@ } }, "description": "Product specific characteristics. This class is an extension point for industry specific product characteristics or performance information such as clothing size or battery capacity.", - "required": ["carbonFootprint", "declaredUnit", "operationalScope", "primarySourcedRatio"] + "required": [ + "carbonFootprint", + "declaredUnit", + "operationalScope", + "primarySourcedRatio" + ] }, "TraceabilityPerformance": { "type": "object", @@ -782,11 +1050,17 @@ "type": { "type": "array", "readOnly": true, - "const": ["TraceabilityPerformance"], - "default": ["TraceabilityPerformance"], + "const": [ + "TraceabilityPerformance" + ], + "default": [ + "TraceabilityPerformance" + ], "items": { "type": "string", - "enum": ["TraceabilityPerformance"] + "enum": [ + "TraceabilityPerformance" + ] } }, "valueChainProcess": { @@ -810,4 +1084,4 @@ "description": "" } } -} +} \ No newline at end of file diff --git a/packages/untp-test-suite/src/schemas/productPassport/v0.4.1/schema.json b/packages/untp-test-suite/src/schemas/productPassport/v0.4.1/schema.json new file mode 100644 index 00000000..6445f93e --- /dev/null +++ b/packages/untp-test-suite/src/schemas/productPassport/v0.4.1/schema.json @@ -0,0 +1,1104 @@ +{ + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "DigitalProductPassport", + "VerifiableCredential" + ], + "default": [ + "DigitalProductPassport", + "VerifiableCredential" + ], + "items": { + "type": "string", + "enum": [ + "DigitalProductPassport", + "VerifiableCredential" + ] + } + }, + "@context": { + "example": "https://test.uncefact.org/vocabulary/untp/dpp/dpp-context.jsonld", + "type": "array", + "items": { + "type": "string", + "enum": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dpp/0.4.1/" + ] + }, + "description": "A list of JSON-LD context URIs that define the seamntic meaning of prperties within the credential. ", + "readOnly": true, + "const": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dpp/0.4.1/" + ], + "default": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dpp/0.4.1/" + ] + }, + "id": { + "example": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "type": "string", + "format": "uri", + "description": "A unique identifier (URI) assigned to the product passport. May be a UUID" + }, + "issuer": { + "$ref": "#/$defs/CredentialIssuer", + "description": "The organisation that is the isuer of this VC. Note that the \"id\" property MUST be a W3C DID. Other identifiers such as tax registration numbers can be listed in the \"otherIdentifiers\" property." + }, + "validFrom": { + "example": "2024-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The date and time from which the credential is valid." + }, + "validUntil": { + "example": "2034-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The expiry date (if applicable) of this verifiable credential." + }, + "credentialSubject": { + "$ref": "#/$defs/Product", + "description": "The subject of a digital product passport credential is the identified product. " + } + }, + "description": "The ProductPassport is a comprehensive data structure that encapsulates various details pertaining to a product, including its identification details, who issued it, batch information, provernance information, circularity information and a set of verifable product confomrity & sistainability claims.", + "required": [ + "@context", + "id", + "issuer" + ], + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$defs": { + "CredentialIssuer": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "CredentialIssuer" + ], + "default": [ + "CredentialIssuer" + ], + "items": { + "type": "string", + "enum": [ + "CredentialIssuer" + ] + } + }, + "id": { + "example": "did:web:identifiers.example-company.com:12345", + "type": "string", + "format": "uri", + "description": "The W3C DID of the issuer - should be a did:web or did:tdw" + }, + "name": { + "example": "Example Company Pty Ltd", + "type": "string", + "description": "The name of the issuer person or organisation" + }, + "otherIdentifier": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this credential issuer " + } + }, + "description": "The issuer party ()person or orgnaition) of a verifiable credential.", + "required": [ + "id", + "name" + ] + }, + "Identifier": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Identifier" + ], + "default": [ + "Identifier" + ], + "items": { + "type": "string", + "enum": [ + "Identifier" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the entity as a resolvable URL according to ISO 18975. ExamplesProduct - id.gs1.org/01/09520123456788/21/12345 Party - abr.business.gov.au/ABN/View?abn=90664869327. Facility - did:web:facilities.example-company.com:123. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the entity within the identifier scheme. Examplesproduct - EV battery 300Ahparty - Sample Company Pty Ltd. facility - Greenacres battery factory" + }, + "registeredId": { + "example": "90664869327", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme. Exampleproduct - id.gs1.org/01. party - business.gov.au/abn facility - did:web:facilities.acme.com. " + } + }, + "description": "The ID and Name of an identified entity such qs a product, facility, party, standard, etc. If the identifier is a W3C DID then the corresponding DID document SHOULD include a serviceEndpoint of type \"IdentityResolver\". If the identifier is not a W3C DID then the id peroperty SHOULD be an identity resolver URL.", + "required": [ + "id", + "name" + ] + }, + "IdentifierScheme": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "IdentifierScheme" + ], + "default": [ + "IdentifierScheme" + ], + "items": { + "type": "string", + "enum": [ + "IdentifierScheme" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of the registration scheme. The scheme should be registered and discoverable from vocabulary.uncefact.org/identifierSchemes" + }, + "name": { + "example": "Global Trade Identification Number (GTIN)", + "type": "string", + "description": "The name of the identifier scheme. " + } + }, + "description": "An identifier registration scheme for products, facilities, or organisations. Typically operated by a state, national or gloabl authority." + }, + "Product": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Product" + ], + "default": [ + "Product" + ], + "items": { + "type": "string", + "enum": [ + "Product" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the product as a URI. Ideall as a resolvable URL according to ISO 18975. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the product within the identifier scheme. " + }, + "registeredId": { + "example": "09520123456788.21.12345", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme for this product. Eg a GS1 GTIn or an AU Livestock NLIS, or similar. If self issued then use the party ID of the issuer. " + }, + "serialNumber": { + "example": "12345678", + "type": "string", + "description": "A number or code representing a specific serialised item of the product. Unique within product class." + }, + "batchNumber": { + "example": "6789", + "type": "string", + "description": "Identifier of the specific production batch of the product. Unique within the product class." + }, + "productImage": { + "$ref": "#/$defs/Link", + "description": "Reference information (location, type, name) of an image of the product." + }, + "description": { + "example": "400Ah 24v LiFePO4 battery", + "type": "string", + "description": "A textual description providing details about the product." + }, + "productCategory": { + "type": "array", + "items": { + "$ref": "#/$defs/Classification" + }, + "description": "A code representing the product's class, typically using the UN CPC (United Nations Central Product Classification) https://unstats.un.org/unsd/classifications/Econ/cpc" + }, + "furtherInformation": { + "type": "array", + "items": { + "$ref": "#/$defs/Link" + }, + "description": "A URL pointing to further human readable information about the product." + }, + "producedByParty": { + "$ref": "#/$defs/Identifier", + "description": "The Party entity that manufactured the product." + }, + "producedAtFacility": { + "$ref": "#/$defs/Identifier", + "description": "The Facility where the product batch was produced / manufactured." + }, + "dimensions": { + "$ref": "#/$defs/Dimension", + "description": "The physical dimensions of the product. Not every dimension is relevant to every products. For example bulk materials may have wieght and volume but not length, with, or height.\"weight\":{\"value\":10, \"unit\":\"KGM\"}" + }, + "productionDate": { + "example": "2024-04-25", + "type": "string", + "format": "date", + "description": "The ISO 8601 date on which the product batch or individual serialised item was manufactured." + }, + "countryOfProduction": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The country in which this item was produced / manufactured.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "granularityLevel": { + "type": "string", + "enum": [ + "item", + "batch", + "model" + ], + "example": "item", + "description": "Code to indicate the granularity of this digital product passport - item level, batch level or product class level." + }, + "dueDiligenceDeclaration": { + "$ref": "#/$defs/Link", + "description": "The due diligence declaration that conforms with the regulations of the market into which the product is sold." + }, + "materialsProvenance": { + "type": "array", + "items": { + "$ref": "#/$defs/Material" + }, + "description": "An array of Provenance objects providing details on the origin and mass fraction of components or ingredients of the product batch. " + }, + "conformityClaim": { + "type": "array", + "items": { + "$ref": "#/$defs/Claim" + }, + "description": "An array of claim objects representing various product conformity claims about the product / batch. These can be sustainability claims, circularity claims, or any other claim type within the conformity topic list." + }, + "circularityScorecard": { + "$ref": "#/$defs/CircularityPerformance", + "description": "A circularity performance scorecard" + }, + "emissionsScorecard": { + "$ref": "#/$defs/EmissionsPerformance", + "description": "An emissions performacne scorecard" + }, + "traceabilityInformation": { + "$ref": "#/$defs/TraceabilityPerformance", + "description": "An array of traceability events grouped by value chain process. Where actual traceability events are unavailable or carry sensitive information, passport publishers may specify the extent to which the traceability information has been independently verified. " + } + }, + "description": "The ProductInformation class encapsulates detailed information regarding a specific product, including its identification details, manufacturer, and other pertinent details. ", + "required": [ + "id", + "name" + ] + }, + "Link": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Link" + ], + "default": [ + "Link" + ], + "items": { + "type": "string", + "enum": [ + "Link" + ] + } + }, + "linkURL": { + "example": "https://files.example-certifier.com/1234567.json", + "type": "string", + "format": "uri", + "description": "The URL of the target resource. " + }, + "linkName": { + "example": "GBA rule book conformity certificate", + "type": "string", + "description": "A display name for the target resource " + }, + "linkType": { + "example": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "type": "string", + "description": "The type of the target resource - drawn from a controlled vocabulary " + } + }, + "description": "A structure to provide a URL link plus metadata associated with the link." + }, + "Classification": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Classification" + ], + "default": [ + "Classification" + ], + "items": { + "type": "string", + "enum": [ + "Classification" + ] + } + }, + "id": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "type": "string", + "format": "uri", + "description": "The globally unique URI representing the specific classifier value" + }, + "code": { + "example": "46410", + "type": "string", + "description": "classification code within the scheme" + }, + "name": { + "example": "Primary cells and primary batteries", + "type": "string", + "description": "Name of the classification represented by the code" + }, + "schemeID": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "type": "string", + "format": "uri", + "description": "Classification scheme ID" + }, + "schemeName": { + "example": "UN Central Product Classification (CPC)", + "type": "string", + "description": "The name of the classification scheme" + } + }, + "description": "A classification scheme and code / name representing a category value for a product, entity, or facility.", + "required": [ + "id", + "name" + ] + }, + "Dimension": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Dimension" + ], + "default": [ + "Dimension" + ], + "items": { + "type": "string", + "enum": [ + "Dimension" + ] + } + }, + "weight": { + "$ref": "#/$defs/Measure", + "description": "the weight of the product. EG {\"value\":10, \"unit\":\"KGM\"}" + }, + "length": { + "$ref": "#/$defs/Measure", + "description": "The length of the product or packaging eg {\"value\":840, \"unit\":\"MMT\"}" + }, + "width": { + "$ref": "#/$defs/Measure", + "description": "The width of the product or packaging. eg {\"value\":150, \"unit\":\"MMT\"}" + }, + "height": { + "$ref": "#/$defs/Measure", + "description": "The height of the product or packaging. eg {\"value\":220, \"unit\":\"MMT\"}" + }, + "volume": { + "$ref": "#/$defs/Measure", + "description": "The displacement volume of the product. eg {\"value\":7.5, \"unit\":\"LTR\"}" + } + }, + "description": "Overall (length, width, height) dimensions and weight/volume of an item." + }, + "Measure": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Measure" + ], + "default": [ + "Measure" + ], + "items": { + "type": "string", + "enum": [ + "Measure" + ] + } + }, + "value": { + "example": 10, + "type": "number", + "description": "The numeric value of the measure" + }, + "unit": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "Unit of measure drawn from the UNECE rec20 measure code list.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "The measure class defines a numeric measured value (eg 10) and a coded unit of measure (eg KG).", + "required": [ + "value", + "unit" + ] + }, + "Material": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Material" + ], + "default": [ + "Material" + ], + "items": { + "type": "string", + "enum": [ + "Material" + ] + } + }, + "name": { + "example": "Lithium Spodumene", + "type": "string", + "description": "Name of this material (eg \"Egyptian Cotton\")" + }, + "originCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "A ISO 3166-1 code representing the country of origin of the component or ingredient.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "materialType": { + "$ref": "#/$defs/Classification", + "description": "The type of this material - as a value drawn from a controlled vocabulary eg from UN Framework Classification for Resources (UNFC)." + }, + "massFraction": { + "example": 0.2, + "type": "number", + "description": "The mass fraction of the product represented by this material. The sum of all mass fraction values for a given passport should be 1." + }, + "massAmount": { + "$ref": "#/$defs/Measure", + "description": "The mass of the material component." + }, + "recycledAmount": { + "example": 0.5, + "type": "number", + "description": "Mass fraction of this material that is recycled (eg 50% recycled Lithium)" + }, + "hazardous": { + "example": "false", + "type": "boolean", + "description": "Indicates whether this material is hazardous. If true then the materialSafetyInformation proerty must be present" + }, + "symbol": { + "type": "string", + "format": "binary", + "description": "Based 64 encoded binary used to represent a visual symbol for a given material. " + }, + "materialSafetyInformation": { + "$ref": "#/$defs/Link", + "description": "Refernece to further information obout safe handling of this hazardous material (for example a link to a material safety data sheet)" + } + }, + "description": "The material class encapsulates details about the origin or source of raw materials in a product, including the country of origin and the mass fraction.", + "required": [ + "name" + ] + }, + "Claim": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Claim", + "Declaration" + ], + "default": [ + "Claim", + "Declaration" + ], + "items": { + "type": "string", + "enum": [ + "Claim", + "Declaration" + ] + } + }, + "assessmentDate": { + "example": "2024-03-15", + "type": "string", + "format": "date", + "description": "The date on which this assessment was made. " + }, + "declaredValue": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "The list of specific values measured as part of this assessment (eg tensile strength)" + }, + "id": { + "example": "https://products.example-company.com/09520123456788/declarations/12345", + "type": "string", + "format": "uri", + "description": "A unique identifier for the delcaration. Often this will be an extension of the product.id or attestation.id. But could be a UUID." + }, + "referenceStandard": { + "$ref": "#/$defs/Standard", + "description": "The reference to the standard that defines the specification / criteria" + }, + "referenceRegulation": { + "$ref": "#/$defs/Regulation", + "description": "The reference to the regulation that defines the assessment criteria" + }, + "assessmentCriteria": { + "type": "array", + "items": { + "$ref": "#/$defs/Criterion" + }, + "description": "The specification against which the assessment is made." + }, + "declaredValues": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "The list of specific values measured as part of this assessment (eg tensile strength)" + }, + "compliance": { + "example": "true", + "type": "boolean", + "description": "An indicator of whether or not the assessment meets the specification." + }, + "conformityTopic": { + "type": "string", + "enum": [ + "environment.energy", + "environment.emissions", + "environment.water", + "environment.waste", + "environment.deforestation", + "environment.biodiversity", + "circularity.content", + "circularity.design", + "social.labour", + "social.rights", + "social.community", + "social.safety", + "governance.ethics", + "governance.compliance", + "governance.transparency" + ], + "example": "environment.energy", + "description": "The conformity topic category for this assessment (eg vocabulary.uncefact.org/sustainability/emissions)" + }, + "conformityEvidence": { + "$ref": "#/$defs/SecureLink", + "description": "A URI pointing to the evidence supporting the claim. SHOULD be a URL to a UNTP Digital COnformity Credential (DCC)" + } + }, + "description": "A declaration of conformance with one or more criteria from a specific standard or regulation. ", + "required": [ + "id", + "compliance", + "conformityTopic" + ] + }, + "Metric": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Metric" + ], + "default": [ + "Metric" + ], + "items": { + "type": "string", + "enum": [ + "Metric" + ] + } + }, + "metricName": { + "example": "GHG emissions intensity", + "type": "string", + "description": "A human readable name for this metric (for example \"Tensile strength\")" + }, + "metricValue": { + "$ref": "#/$defs/Measure", + "description": "A numeric value and unit of measure for this metric. Could be a measured value or a specified threshold. Eg {\"value\":400, \"unit\":\"MPA\"} as tensile strenght of structural steel" + }, + "score": { + "example": "BB", + "type": "string", + "description": "A score or rank associated with this measured metric." + }, + "accuracy": { + "example": 0.05, + "type": "number", + "description": "A percentage represented as a numeric between 0 and 1 indicating the rage of accuracy of the claimed value (eg 0.05 means that the actual value is within 5% of the claimed value.)" + } + }, + "description": "A specific measure of performance against the criteria that governs the claim. Expressed as an array of metric (ie unit of emasure) / value (ie the actual numeric value) pairs. ", + "required": [ + "metricName", + "metricValue" + ] + }, + "Standard": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Standard" + ], + "default": [ + "Standard" + ], + "items": { + "type": "string", + "enum": [ + "Standard" + ] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf", + "type": "string", + "format": "uri", + "description": "A unique identifier for the standard (eg https://www.iso.org/standard/60857.html)." + }, + "name": { + "example": "GBA Battery Passport Greenhouse Gas Rulebook - V.2.0", + "type": "string", + "description": "The name of the standard" + }, + "issuingParty": { + "$ref": "#/$defs/Identifier", + "description": "The party that issued the standard " + }, + "issueDate": { + "example": "2023-12-05", + "type": "string", + "format": "date", + "description": "The date when the standard was issued." + } + }, + "description": "A standard (eg ISO 14000) that specifies the criteria for conformance.", + "required": [ + "issuingParty" + ] + }, + "Regulation": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Regulation" + ], + "default": [ + "Regulation" + ], + "items": { + "type": "string", + "enum": [ + "Regulation" + ] + } + }, + "id": { + "example": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of this regulation. " + }, + "name": { + "example": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "type": "string", + "description": "The name of the regulation or act." + }, + "jurisdictionCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The legal jurisdiction (country) under which the regulation is issued.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "administeredBy": { + "$ref": "#/$defs/Identifier", + "description": "the issuing body of the regulation. For example Australin Goernment Department of Climate Change, Energy, the Environment and Water" + }, + "effectiveDate": { + "example": "2024-03-20", + "type": "string", + "format": "date", + "description": "the date at which the regulation came into effect." + } + }, + "description": "A regulation (eg EU deforestation regulation) that defines the criteria for assessment.", + "required": [ + "administeredBy" + ] + }, + "Criterion": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Criterion" + ], + "default": [ + "Criterion" + ], + "items": { + "type": "string", + "enum": [ + "Criterion" + ] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf#BatteryAssembly", + "type": "string", + "format": "uri", + "description": "A unique identifier for the criteria within the standard or regulation. For example CO2 emissions calaculations for liquid fule combusion." + }, + "name": { + "example": "GBA Battery rule book v2.0 battery assembly guidelines.", + "type": "string", + "description": "A name that describes this criteria." + }, + "thresholdValues": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "A conformity threshold defined by the specification (eg minimum compressive strength) " + } + }, + "description": "A specific rule or criterion within a standard or regulation. eg a carbon intensity calculation rule within an emissions standard.", + "required": [ + "id", + "name" + ] + }, + "SecureLink": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "SecureLink", + "Link" + ], + "default": [ + "SecureLink", + "Link" + ], + "items": { + "type": "string", + "enum": [ + "SecureLink", + "Link" + ] + } + }, + "linkURL": { + "example": "https://files.example-certifier.com/1234567.json", + "type": "string", + "format": "uri", + "description": "The URL of the target resource. " + }, + "linkName": { + "example": "GBA rule book conformity certificate", + "type": "string", + "description": "A display name for the target resource " + }, + "linkType": { + "example": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "type": "string", + "description": "The type of the target resource - drawn from a controlled vocabulary " + }, + "hashDigest": { + "example": "6239119dda5bd4c8a6ffb832fe16feaa5c27b7dba154d24c53d4470a2c69adc2", + "type": "string", + "description": "The hash of the file." + }, + "hashMethod": { + "type": "string", + "enum": [ + "SHA-256", + "SHA-1" + ], + "example": "SHA-256", + "description": "The hashing algorithm used to create the target hash. SHA-265 is the recommedned standard" + }, + "encryptionMethod": { + "type": "string", + "enum": [ + "none", + "AES" + ], + "example": "none", + "description": "The symmetric encryption algorithm used to encrypt the link target. AES is the recommended standard. Decryption keys are expected to be passed out of bounds." + } + }, + "description": "A binary file that is hashed ()for tamper evidence) and optionally encrypted (for confidentiality)." + }, + "CircularityPerformance": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "CircularityPerformance" + ], + "default": [ + "CircularityPerformance" + ], + "items": { + "type": "string", + "enum": [ + "CircularityPerformance" + ] + } + }, + "recyclingInformation": { + "$ref": "#/$defs/Link", + "description": "A URI pointing to recycling information for the product." + }, + "repairInformation": { + "$ref": "#/$defs/Link", + "description": "A URI pointing to repair instructions for this product." + }, + "recyclableContent": { + "example": 0.5, + "type": "number", + "format": "float", + "description": "The fraction of the this product (my mass) that has been designed to be recyclable / re-usable. This will be be the total fraction that can avoid waste / landfill." + }, + "recycledContent": { + "example": 0.3, + "type": "number", + "format": "float", + "description": "The fraction (by mass) of recycled / repurposed, repaired content in this product. This will be the total virgin content fraction." + }, + "utilityFactor": { + "example": 1.2, + "type": "number", + "format": "float", + "description": "An indicator of durability defined as the lifetime (typically measures as usage cycles) for this product divided by the industry average. For example a battery with a 10,000 cycle lifetime where industry average is 5,000 cycles will have a durability factor of 2. If unknown set to 1 or omit. " + }, + "materialCircularityIndicator": { + "example": 0.67, + "type": "number", + "format": "float", + "description": "The overall circularity performance indicator for this product. Calculated as 1 - (V+W)/2D where - V = Virgin material proportion by mass (will be 1- recycled content) - W = Waste leakage proportion by mass (will be 1 - recyclableContent) - D = Utility factor (set to 1 if unknown). " + } + }, + "description": "High level corcularity information about this product. Note that this doens not substitute for detailed product circularity data sheet (PCDS) criteria which would be represented as a set of conformity claims against individual ISO PCDS criteria." + }, + "EmissionsPerformance": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "EmissionsPerformance" + ], + "default": [ + "EmissionsPerformance" + ], + "items": { + "type": "string", + "enum": [ + "EmissionsPerformance" + ] + } + }, + "carbonFootprint": { + "example": 1.8, + "type": "number", + "format": "float", + "description": "The carbon footprint of the product in KgCO2e per declared unit." + }, + "declaredUnit": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "The unit of product (EA, KGM, LTR, etc) that is the basis for carbon footprint.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + }, + "operationalScope": { + "type": "string", + "enum": [ + "None", + "CradleToGate", + "CradleToGrave" + ], + "example": "None", + "description": "The operational scope of the emissions performance. Only scope 1 & 2, or inlcuing upstream scope 3 (cradle to gate) or upstream and downstream scope 3 (cradle to grave)." + }, + "primarySourcedRatio": { + "example": 0.3, + "type": "number", + "format": "float", + "description": "The ratio of emissions data from primary sources (ie from supplier / product specific information rather than secondary / industry averages)." + }, + "reportingStandard": { + "$ref": "#/$defs/Standard", + "description": "The reporting standard (eg GHG Protocol, IFRS S2, ESRS, etc) against which this product emissions performance is assessed." + } + }, + "description": "Product specific characteristics. This class is an extension point for industry specific product characteristics or performance information such as clothing size or battery capacity.", + "required": [ + "carbonFootprint", + "declaredUnit", + "operationalScope", + "primarySourcedRatio" + ] + }, + "TraceabilityPerformance": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "TraceabilityPerformance" + ], + "default": [ + "TraceabilityPerformance" + ], + "items": { + "type": "string", + "enum": [ + "TraceabilityPerformance" + ] + } + }, + "valueChainProcess": { + "example": "Spinning", + "type": "string", + "description": "Hman readable name for the industry specific value chain process representing this traceability data set." + }, + "verifiedRatio": { + "example": 0.5, + "type": "number", + "description": "The proportion (0 to 1) of materials in this value chain process that have been traced using verifiable traceability event." + }, + "traceabilityEvent": { + "type": "array", + "items": { + "$ref": "#/$defs/SecureLink" + }, + "description": "A list of secure links to digital traceability events that support this traceability performance statement. May be encrypted for confidentiality purposes. " + } + }, + "description": "An array of secure links to TraceabilityEvent objects detailing EPCIS events related to the traceability of the product batch. Events are grouped by value chain process (eg \"Weaving\" in textiles supply chain)." + } + } +} \ No newline at end of file diff --git a/packages/untp-test-suite/src/schemas/productPassport/v0.4.2/schema.json b/packages/untp-test-suite/src/schemas/productPassport/v0.4.2/schema.json new file mode 100644 index 00000000..d0b7eec8 --- /dev/null +++ b/packages/untp-test-suite/src/schemas/productPassport/v0.4.2/schema.json @@ -0,0 +1,1104 @@ +{ + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "DigitalProductPassport", + "VerifiableCredential" + ], + "default": [ + "DigitalProductPassport", + "VerifiableCredential" + ], + "items": { + "type": "string", + "enum": [ + "DigitalProductPassport", + "VerifiableCredential" + ] + } + }, + "@context": { + "example": "https://test.uncefact.org/vocabulary/untp/dpp/dpp-context.jsonld", + "type": "array", + "items": { + "type": "string", + "enum": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dpp/0.4.2/" + ] + }, + "description": "A list of JSON-LD context URIs that define the semantic meaning of properties within the credential. ", + "readOnly": true, + "const": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dpp/0.4.2/" + ], + "default": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dpp/0.4.2/" + ] + }, + "id": { + "example": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "type": "string", + "format": "uri", + "description": "A unique identifier (URI) assigned to the product passport. May be a UUID" + }, + "issuer": { + "$ref": "#/$defs/CredentialIssuer", + "description": "The organisation that is the issuer of this VC. Note that the \"id\" property MUST be a W3C DID. Other identifiers such as tax registration numbers can be listed in the \"otherIdentifiers\" property." + }, + "validFrom": { + "example": "2024-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The date and time from which the credential is valid." + }, + "validUntil": { + "example": "2034-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The expiry date (if applicable) of this verifiable credential." + }, + "credentialSubject": { + "$ref": "#/$defs/Product", + "description": "The subject of a digital product passport credential is the identified product. " + } + }, + "description": "The Product Passport is a comprehensive data structure that encapsulates various details pertaining to a product, including its identification details, who issued it, batch information, provenance information, circularity information and a set of verifiable product conformity & sustainability claims.", + "required": [ + "@context", + "id", + "issuer" + ], + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$defs": { + "CredentialIssuer": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "CredentialIssuer" + ], + "default": [ + "CredentialIssuer" + ], + "items": { + "type": "string", + "enum": [ + "CredentialIssuer" + ] + } + }, + "id": { + "example": "did:web:identifiers.example-company.com:12345", + "type": "string", + "format": "uri", + "description": "The W3C DID of the issuer - should be a did:web or did:tdw" + }, + "name": { + "example": "Example Company Pty Ltd", + "type": "string", + "description": "The name of the issuer person or organisation" + }, + "otherIdentifier": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this credential issuer " + } + }, + "description": "The issuer party (person or organisation) of a verifiable credential.", + "required": [ + "id", + "name" + ] + }, + "Identifier": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Identifier" + ], + "default": [ + "Identifier" + ], + "items": { + "type": "string", + "enum": [ + "Identifier" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the entity as a resolvable URL according to ISO 18975. ExamplesProduct - id.gs1.org/01/09520123456788/21/12345 Party - abr.business.gov.au/ABN/View?abn=90664869327. Facility - did:web:facilities.example-company.com:123. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the entity within the identifier scheme. Examples: product - EV battery 300Ah, Party - Sample Company Pty Ltd, Facility - Green Acres battery factory" + }, + "registeredId": { + "example": "90664869327", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme. Examples : Product - id.gs1.org/01, Party - business.gov.au/abn, Facility - did:web:facilities.acme.com. " + } + }, + "description": "The ID and Name of an identified entity such as a product, facility, party, standard, etc. If the identifier is a W3C DID then the corresponding DID document SHOULD include a serviceEndpoint of type \"IdentityResolver\". If the identifier is not a W3C DID then the id property SHOULD be an identity resolver URL.", + "required": [ + "id", + "name" + ] + }, + "IdentifierScheme": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "IdentifierScheme" + ], + "default": [ + "IdentifierScheme" + ], + "items": { + "type": "string", + "enum": [ + "IdentifierScheme" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of the registration scheme. The scheme should be registered and discoverable from vocabulary.uncefact.org/identifierSchemes" + }, + "name": { + "example": "Global Trade Identification Number (GTIN)", + "type": "string", + "description": "The name of the identifier scheme. " + } + }, + "description": "An identifier registration scheme for products, facilities, or organisations. Typically operated by a state, national or global authority." + }, + "Product": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Product" + ], + "default": [ + "Product" + ], + "items": { + "type": "string", + "enum": [ + "Product" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the product as a URI. Ideally as a resolvable URL according to ISO 18975. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the product within the identifier scheme. " + }, + "registeredId": { + "example": "09520123456788.21.12345", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme for this product. Eg a GS1 GTIN or an AU Livestock NLIS, or similar. If self issued then use the party ID of the issuer. " + }, + "serialNumber": { + "example": "12345678", + "type": "string", + "description": "A number or code representing a specific serialised item of the product. Unique within product class." + }, + "batchNumber": { + "example": "6789", + "type": "string", + "description": "Identifier of the specific production batch of the product. Unique within the product class." + }, + "productImage": { + "$ref": "#/$defs/Link", + "description": "Reference information (location, type, name) of an image of the product." + }, + "description": { + "example": "400Ah 24v LiFePO4 battery", + "type": "string", + "description": "A textual description providing details about the product." + }, + "productCategory": { + "type": "array", + "items": { + "$ref": "#/$defs/Classification" + }, + "description": "A code representing the product's class, typically using the UN CPC (United Nations Central Product Classification) https://unstats.un.org/unsd/classifications/Econ/cpc" + }, + "furtherInformation": { + "type": "array", + "items": { + "$ref": "#/$defs/Link" + }, + "description": "A URL pointing to further human readable information about the product." + }, + "producedByParty": { + "$ref": "#/$defs/Identifier", + "description": "The Party entity that manufactured the product." + }, + "producedAtFacility": { + "$ref": "#/$defs/Identifier", + "description": "The Facility where the product batch was produced / manufactured." + }, + "dimensions": { + "$ref": "#/$defs/Dimension", + "description": "The physical dimensions of the product. Not every dimension is relevant to every products. For example bulk materials may have weight and volume but not length, with, or height.\"weight\":{\"value\":10, \"unit\":\"KGM\"}" + }, + "productionDate": { + "example": "2024-04-25", + "type": "string", + "format": "date", + "description": "The ISO 8601 date on which the product batch or individual serialised item was manufactured." + }, + "countryOfProduction": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The country in which this item was produced / manufactured.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "granularityLevel": { + "type": "string", + "enum": [ + "item", + "batch", + "model" + ], + "example": "item", + "description": "Code to indicate the granularity of this digital product passport - item level, batch level or product class level." + }, + "dueDiligenceDeclaration": { + "$ref": "#/$defs/Link", + "description": "The due diligence declaration that conforms with the regulations of the market into which the product is sold." + }, + "materialsProvenance": { + "type": "array", + "items": { + "$ref": "#/$defs/Material" + }, + "description": "An array of Provenance objects providing details on the origin and mass fraction of components or ingredients of the product batch. " + }, + "conformityClaim": { + "type": "array", + "items": { + "$ref": "#/$defs/Claim" + }, + "description": "An array of claim objects representing various product conformity claims about the product / batch. These can be sustainability claims, circularity claims, or any other claim type within the conformity topic list." + }, + "circularityScorecard": { + "$ref": "#/$defs/CircularityPerformance", + "description": "A circularity performance scorecard" + }, + "emissionsScorecard": { + "$ref": "#/$defs/EmissionsPerformance", + "description": "An emissions performance scorecard" + }, + "traceabilityInformation": { + "$ref": "#/$defs/TraceabilityPerformance", + "description": "An array of traceability events grouped by value chain process. Where actual traceability events are unavailable or carry sensitive information, passport publishers may specify the extent to which the traceability information has been independently verified. " + } + }, + "description": "The ProductInformation class encapsulates detailed information regarding a specific product, including its identification details, manufacturer, and other pertinent details. ", + "required": [ + "id", + "name" + ] + }, + "Link": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Link" + ], + "default": [ + "Link" + ], + "items": { + "type": "string", + "enum": [ + "Link" + ] + } + }, + "linkURL": { + "example": "https://files.example-certifier.com/1234567.json", + "type": "string", + "format": "uri", + "description": "The URL of the target resource. " + }, + "linkName": { + "example": "GBA rule book conformity certificate", + "type": "string", + "description": "A display name for the target resource " + }, + "linkType": { + "example": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "type": "string", + "description": "The type of the target resource - drawn from a controlled vocabulary " + } + }, + "description": "A structure to provide a URL link plus metadata associated with the link." + }, + "Classification": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Classification" + ], + "default": [ + "Classification" + ], + "items": { + "type": "string", + "enum": [ + "Classification" + ] + } + }, + "id": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "type": "string", + "format": "uri", + "description": "The globally unique URI representing the specific classifier value" + }, + "code": { + "example": "46410", + "type": "string", + "description": "classification code within the scheme" + }, + "name": { + "example": "Primary cells and primary batteries", + "type": "string", + "description": "Name of the classification represented by the code" + }, + "schemeID": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "type": "string", + "format": "uri", + "description": "Classification scheme ID" + }, + "schemeName": { + "example": "UN Central Product Classification (CPC)", + "type": "string", + "description": "The name of the classification scheme" + } + }, + "description": "A classification scheme and code / name representing a category value for a product, entity, or facility.", + "required": [ + "id", + "name" + ] + }, + "Dimension": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Dimension" + ], + "default": [ + "Dimension" + ], + "items": { + "type": "string", + "enum": [ + "Dimension" + ] + } + }, + "weight": { + "$ref": "#/$defs/Measure", + "description": "the weight of the product. EG {\"value\":10, \"unit\":\"KGM\"}" + }, + "length": { + "$ref": "#/$defs/Measure", + "description": "The length of the product or packaging eg {\"value\":840, \"unit\":\"MMT\"}" + }, + "width": { + "$ref": "#/$defs/Measure", + "description": "The width of the product or packaging. eg {\"value\":150, \"unit\":\"MMT\"}" + }, + "height": { + "$ref": "#/$defs/Measure", + "description": "The height of the product or packaging. eg {\"value\":220, \"unit\":\"MMT\"}" + }, + "volume": { + "$ref": "#/$defs/Measure", + "description": "The displacement volume of the product. eg {\"value\":7.5, \"unit\":\"LTR\"}" + } + }, + "description": "Overall (length, width, height) dimensions and weight/volume of an item." + }, + "Measure": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Measure" + ], + "default": [ + "Measure" + ], + "items": { + "type": "string", + "enum": [ + "Measure" + ] + } + }, + "value": { + "example": 10, + "type": "number", + "description": "The numeric value of the measure" + }, + "unit": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "Unit of measure drawn from the UNECE Rec20 measure code list.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "The measure class defines a numeric measured value (eg 10) and a coded unit of measure (eg KG).", + "required": [ + "value", + "unit" + ] + }, + "Material": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Material" + ], + "default": [ + "Material" + ], + "items": { + "type": "string", + "enum": [ + "Material" + ] + } + }, + "name": { + "example": "Lithium Spodumene", + "type": "string", + "description": "Name of this material (eg \"Egyptian Cotton\")" + }, + "originCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "A ISO 3166-1 code representing the country of origin of the component or ingredient.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "materialType": { + "$ref": "#/$defs/Classification", + "description": "The type of this material - as a value drawn from a controlled vocabulary eg from UN Framework Classification for Resources (UNFC)." + }, + "massFraction": { + "example": 0.2, + "type": "number", + "description": "The mass fraction of the product represented by this material. The sum of all mass fraction values for a given passport should be 1." + }, + "massAmount": { + "$ref": "#/$defs/Measure", + "description": "The mass of the material component." + }, + "recycledAmount": { + "example": 0.5, + "type": "number", + "description": "Mass fraction of this material that is recycled (eg 50% recycled Lithium)" + }, + "hazardous": { + "example": "false", + "type": "boolean", + "description": "Indicates whether this material is hazardous. If true then the materialSafetyInformation property must be present" + }, + "symbol": { + "type": "string", + "format": "binary", + "description": "Based 64 encoded binary used to represent a visual symbol for a given material. " + }, + "materialSafetyInformation": { + "$ref": "#/$defs/Link", + "description": "Reference to further information about safe handling of this hazardous material (for example a link to a material safety data sheet)" + } + }, + "description": "The material class encapsulates details about the origin or source of raw materials in a product, including the country of origin and the mass fraction.", + "required": [ + "name" + ] + }, + "Claim": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Claim", + "Declaration" + ], + "default": [ + "Claim", + "Declaration" + ], + "items": { + "type": "string", + "enum": [ + "Claim", + "Declaration" + ] + } + }, + "assessmentDate": { + "example": "2024-03-15", + "type": "string", + "format": "date", + "description": "The date on which this assessment was made. " + }, + "declaredValue": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "The list of specific values measured as part of this assessment (eg tensile strength)" + }, + "id": { + "example": "https://products.example-company.com/09520123456788/declarations/12345", + "type": "string", + "format": "uri", + "description": "A unique identifier for the declaration. Often this will be an extension of the product.id or attestation.id. But could be a UUID." + }, + "referenceStandard": { + "$ref": "#/$defs/Standard", + "description": "The reference to the standard that defines the specification / criteria" + }, + "referenceRegulation": { + "$ref": "#/$defs/Regulation", + "description": "The reference to the regulation that defines the assessment criteria" + }, + "assessmentCriteria": { + "type": "array", + "items": { + "$ref": "#/$defs/Criterion" + }, + "description": "The specification against which the assessment is made." + }, + "declaredValues": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "The list of specific values measured as part of this assessment (eg tensile strength)" + }, + "compliance": { + "example": "true", + "type": "boolean", + "description": "An indicator of whether or not the assessment meets the specification." + }, + "conformityTopic": { + "type": "string", + "enum": [ + "environment.energy", + "environment.emissions", + "environment.water", + "environment.waste", + "environment.deforestation", + "environment.biodiversity", + "circularity.content", + "circularity.design", + "social.labour", + "social.rights", + "social.community", + "social.safety", + "governance.ethics", + "governance.compliance", + "governance.transparency" + ], + "example": "environment.energy", + "description": "The conformity topic category for this assessment (eg vocabulary.uncefact.org/sustainability/emissions)" + }, + "conformityEvidence": { + "$ref": "#/$defs/SecureLink", + "description": "A URI pointing to the evidence supporting the claim. SHOULD be a URL to a UNTP Digital Conformity Credential (DCC)" + } + }, + "description": "A declaration of conformance with one or more criteria from a specific standard or regulation. ", + "required": [ + "id", + "compliance", + "conformityTopic" + ] + }, + "Metric": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Metric" + ], + "default": [ + "Metric" + ], + "items": { + "type": "string", + "enum": [ + "Metric" + ] + } + }, + "metricName": { + "example": "GHG emissions intensity", + "type": "string", + "description": "A human readable name for this metric (for example \"Tensile strength\")" + }, + "metricValue": { + "$ref": "#/$defs/Measure", + "description": "A numeric value and unit of measure for this metric. Could be a measured value or a specified threshold. Eg {\"value\":400, \"unit\":\"MPA\"} as tensile strength of structural steel" + }, + "score": { + "example": "BB", + "type": "string", + "description": "A score or rank associated with this measured metric." + }, + "accuracy": { + "example": 0.05, + "type": "number", + "description": "A percentage represented as a numeric between 0 and 1 indicating the rage of accuracy of the claimed value (eg 0.05 means that the actual value is within 5% of the claimed value.)" + } + }, + "description": "A specific measure of performance against the criteria that governs the claim. Expressed as an array of metric (ie unit of measure) / value (ie the actual numeric value) pairs. ", + "required": [ + "metricName", + "metricValue" + ] + }, + "Standard": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Standard" + ], + "default": [ + "Standard" + ], + "items": { + "type": "string", + "enum": [ + "Standard" + ] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf", + "type": "string", + "format": "uri", + "description": "A unique identifier for the standard (eg https://www.iso.org/standard/60857.html)." + }, + "name": { + "example": "GBA Battery Passport Greenhouse Gas Rulebook - V.2.0", + "type": "string", + "description": "The name of the standard" + }, + "issuingParty": { + "$ref": "#/$defs/Identifier", + "description": "The party that issued the standard " + }, + "issueDate": { + "example": "2023-12-05", + "type": "string", + "format": "date", + "description": "The date when the standard was issued." + } + }, + "description": "A standard (eg ISO 14000) that specifies the criteria for conformance.", + "required": [ + "issuingParty" + ] + }, + "Regulation": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Regulation" + ], + "default": [ + "Regulation" + ], + "items": { + "type": "string", + "enum": [ + "Regulation" + ] + } + }, + "id": { + "example": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of this regulation. " + }, + "name": { + "example": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "type": "string", + "description": "The name of the regulation or act." + }, + "jurisdictionCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The legal jurisdiction (country) under which the regulation is issued.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "administeredBy": { + "$ref": "#/$defs/Identifier", + "description": "the issuing body of the regulation. For example Australian Government Department of Climate Change, Energy, the Environment and Water" + }, + "effectiveDate": { + "example": "2024-03-20", + "type": "string", + "format": "date", + "description": "the date at which the regulation came into effect." + } + }, + "description": "A regulation (eg EU deforestation regulation) that defines the criteria for assessment.", + "required": [ + "administeredBy" + ] + }, + "Criterion": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Criterion" + ], + "default": [ + "Criterion" + ], + "items": { + "type": "string", + "enum": [ + "Criterion" + ] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf#BatteryAssembly", + "type": "string", + "format": "uri", + "description": "A unique identifier for the criterion within the standard or regulation. For example CO2 emissions calculations for liquid fuel combustion." + }, + "name": { + "example": "GBA Battery rule book v2.0 battery assembly guidelines.", + "type": "string", + "description": "A name that describes this criteria." + }, + "thresholdValues": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "A conformity threshold defined by the specification (eg minimum compressive strength) " + } + }, + "description": "A specific rule or criterion within a standard or regulation. eg a carbon intensity calculation rule within an emissions standard.", + "required": [ + "id", + "name" + ] + }, + "SecureLink": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "SecureLink", + "Link" + ], + "default": [ + "SecureLink", + "Link" + ], + "items": { + "type": "string", + "enum": [ + "SecureLink", + "Link" + ] + } + }, + "linkURL": { + "example": "https://files.example-certifier.com/1234567.json", + "type": "string", + "format": "uri", + "description": "The URL of the target resource. " + }, + "linkName": { + "example": "GBA rule book conformity certificate", + "type": "string", + "description": "A display name for the target resource " + }, + "linkType": { + "example": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "type": "string", + "description": "The type of the target resource - drawn from a controlled vocabulary " + }, + "hashDigest": { + "example": "6239119dda5bd4c8a6ffb832fe16feaa5c27b7dba154d24c53d4470a2c69adc2", + "type": "string", + "description": "The hash of the file." + }, + "hashMethod": { + "type": "string", + "enum": [ + "SHA-256", + "SHA-1" + ], + "example": "SHA-256", + "description": "The hashing algorithm used to create the target hash. SHA-265 is the recommended standard" + }, + "encryptionMethod": { + "type": "string", + "enum": [ + "none", + "AES" + ], + "example": "none", + "description": "The symmetric encryption algorithm used to encrypt the link target. AES is the recommended standard. Decryption keys are expected to be passed out of bounds." + } + }, + "description": "A binary file that is hashed ()for tamper evidence) and optionally encrypted (for confidentiality)." + }, + "CircularityPerformance": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "CircularityPerformance" + ], + "default": [ + "CircularityPerformance" + ], + "items": { + "type": "string", + "enum": [ + "CircularityPerformance" + ] + } + }, + "recyclingInformation": { + "$ref": "#/$defs/Link", + "description": "A URI pointing to recycling information for the product." + }, + "repairInformation": { + "$ref": "#/$defs/Link", + "description": "A URI pointing to repair instructions for this product." + }, + "recyclableContent": { + "example": 0.5, + "type": "number", + "format": "float", + "description": "The fraction of the this product (my mass) that has been designed to be recyclable / re-usable. This will be be the total fraction that can avoid waste / landfill." + }, + "recycledContent": { + "example": 0.3, + "type": "number", + "format": "float", + "description": "The fraction (by mass) of recycled / repurposed, repaired content in this product. This will be the total virgin content fraction." + }, + "utilityFactor": { + "example": 1.2, + "type": "number", + "format": "float", + "description": "An indicator of durability defined as the lifetime (typically measures as usage cycles) for this product divided by the industry average. For example a battery with a 10,000 cycle lifetime where industry average is 5,000 cycles will have a durability factor of 2. If unknown set to 1 or omit. " + }, + "materialCircularityIndicator": { + "example": 0.67, + "type": "number", + "format": "float", + "description": "The overall circularity performance indicator for this product. Calculated as 1 - (V+W)/2D where - V = Virgin material proportion by mass (will be 1- recycled content) - W = Waste leakage proportion by mass (will be 1 - recyclableContent) - D = Utility factor (set to 1 if unknown). " + } + }, + "description": "High level circularity information about this product. Note that this does not substitute for detailed product circularity data sheet (PCDS) criteria which would be represented as a self-issued UNTP Digital Conformity Credential as a set of assessments against individual ISO PCDS criteria." + }, + "EmissionsPerformance": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "EmissionsPerformance" + ], + "default": [ + "EmissionsPerformance" + ], + "items": { + "type": "string", + "enum": [ + "EmissionsPerformance" + ] + } + }, + "carbonFootprint": { + "example": 1.8, + "type": "number", + "format": "float", + "description": "The carbon footprint of the product in KgCO2e per declared unit." + }, + "declaredUnit": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "The unit of product (EA, KGM, LTR, etc) that is the basis for carbon footprint.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + }, + "operationalScope": { + "type": "string", + "enum": [ + "None", + "CradleToGate", + "CradleToGrave" + ], + "example": "None", + "description": "The operational scope of the emissions performance. Only scope 1 & 2, or including upstream scope 3 (cradle to gate) or upstream and downstream scope 3 (cradle to grave)." + }, + "primarySourcedRatio": { + "example": 0.3, + "type": "number", + "format": "float", + "description": "The ratio of emissions data from primary sources (ie from supplier / product specific information rather than secondary / industry averages)." + }, + "reportingStandard": { + "$ref": "#/$defs/Standard", + "description": "The reporting standard (eg GHG Protocol, IFRS S2, ESRS, etc) against which this product emissions performance is assessed." + } + }, + "description": "Product specific characteristics. This class is an extension point for industry specific product characteristics or performance information such as clothing size or battery capacity.", + "required": [ + "carbonFootprint", + "declaredUnit", + "operationalScope", + "primarySourcedRatio" + ] + }, + "TraceabilityPerformance": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "TraceabilityPerformance" + ], + "default": [ + "TraceabilityPerformance" + ], + "items": { + "type": "string", + "enum": [ + "TraceabilityPerformance" + ] + } + }, + "valueChainProcess": { + "example": "Spinning", + "type": "string", + "description": "Human readable name for the industry specific value chain process representing this traceability data set." + }, + "verifiedRatio": { + "example": 0.5, + "type": "number", + "description": "The proportion (0 to 1) of materials in this value chain process that have been traced using verifiable traceability event." + }, + "traceabilityEvent": { + "type": "array", + "items": { + "$ref": "#/$defs/SecureLink" + }, + "description": "A list of secure links to digital traceability events that support this traceability performance statement. May be encrypted for confidentiality purposes. " + } + }, + "description": "An array of secure links to TraceabilityEvent objects detailing EPCIS events related to the traceability of the product batch. Events are grouped by value chain process (eg \"Weaving\" in textiles supply chain)." + } + } +} \ No newline at end of file diff --git a/packages/untp-test-suite/src/schemas/productPassport/v0.5.0/schema.json b/packages/untp-test-suite/src/schemas/productPassport/v0.5.0/schema.json new file mode 100644 index 00000000..ad31363b --- /dev/null +++ b/packages/untp-test-suite/src/schemas/productPassport/v0.5.0/schema.json @@ -0,0 +1,1104 @@ +{ + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "DigitalProductPassport", + "VerifiableCredential" + ], + "default": [ + "DigitalProductPassport", + "VerifiableCredential" + ], + "items": { + "type": "string", + "enum": [ + "DigitalProductPassport", + "VerifiableCredential" + ] + } + }, + "@context": { + "example": "https://test.uncefact.org/vocabulary/untp/dpp/dpp-context.jsonld", + "type": "array", + "items": { + "type": "string", + "enum": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dpp/0.5.0/" + ] + }, + "description": "A list of JSON-LD context URIs that define the semantic meaning of properties within the credential. ", + "readOnly": true, + "const": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dpp/0.5.0/" + ], + "default": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dpp/0.5.0/" + ] + }, + "id": { + "example": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "type": "string", + "format": "uri", + "description": "A unique identifier (URI) assigned to the product passport. May be a UUID" + }, + "issuer": { + "$ref": "#/$defs/CredentialIssuer", + "description": "The organisation that is the issuer of this VC. Note that the \"id\" property MUST be a W3C DID. Other identifiers such as tax registration numbers can be listed in the \"otherIdentifiers\" property." + }, + "validFrom": { + "example": "2024-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The date and time from which the credential is valid." + }, + "validUntil": { + "example": "2034-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The expiry date (if applicable) of this verifiable credential." + }, + "credentialSubject": { + "$ref": "#/$defs/Product", + "description": "The subject of a digital product passport credential is the identified product. " + } + }, + "description": "The Product Passport is a comprehensive data structure that encapsulates various details pertaining to a product, including its identification details, who issued it, batch information, provenance information, circularity information and a set of verifiable product conformity & sustainability claims. ", + "required": [ + "@context", + "id", + "issuer" + ], + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$defs": { + "CredentialIssuer": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "CredentialIssuer" + ], + "default": [ + "CredentialIssuer" + ], + "items": { + "type": "string", + "enum": [ + "CredentialIssuer" + ] + } + }, + "id": { + "example": "did:web:identifiers.example-company.com:12345", + "type": "string", + "format": "uri", + "description": "The W3C DID of the issuer - should be a did:web or did:tdw" + }, + "name": { + "example": "Example Company Pty Ltd", + "type": "string", + "description": "The name of the issuer person or organisation" + }, + "otherIdentifier": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this credential issuer " + } + }, + "description": "The issuer party (person or organisation) of a verifiable credential.", + "required": [ + "id", + "name" + ] + }, + "Identifier": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Identifier" + ], + "default": [ + "Identifier" + ], + "items": { + "type": "string", + "enum": [ + "Identifier" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the entity as a resolvable URL according to ISO 18975. ExamplesProduct - id.gs1.org/01/09520123456788/21/12345 Party - abr.business.gov.au/ABN/View?abn=90664869327. Facility - did:web:facilities.example-company.com:123. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the entity within the identifier scheme. Examples: product - EV battery 300Ah, Party - Sample Company Pty Ltd, Facility - Green Acres battery factory" + }, + "registeredId": { + "example": "90664869327", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme. Examples : Product - id.gs1.org/01, Party - business.gov.au/abn, Facility - did:web:facilities.acme.com. " + } + }, + "description": "The ID and Name of an identified entity such as a product, facility, party, standard, etc. If the identifier is a W3C DID then the corresponding DID document SHOULD include a serviceEndpoint of type \"IdentityResolver\". If the identifier is not a W3C DID then the id property SHOULD be an identity resolver URL.", + "required": [ + "id", + "name" + ] + }, + "IdentifierScheme": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "IdentifierScheme" + ], + "default": [ + "IdentifierScheme" + ], + "items": { + "type": "string", + "enum": [ + "IdentifierScheme" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of the registration scheme. The scheme should be registered and discoverable from vocabulary.uncefact.org/identifierSchemes" + }, + "name": { + "example": "Global Trade Identification Number (GTIN)", + "type": "string", + "description": "The name of the identifier scheme. " + } + }, + "description": "An identifier registration scheme for products, facilities, or organisations. Typically operated by a state, national or global authority." + }, + "Product": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Product" + ], + "default": [ + "Product" + ], + "items": { + "type": "string", + "enum": [ + "Product" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the product as a URI. Ideally as a resolvable URL according to ISO 18975. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the product within the identifier scheme. " + }, + "registeredId": { + "example": "09520123456788.21.12345", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme for this product. Eg a GS1 GTIN or an AU Livestock NLIS, or similar. If self issued then use the party ID of the issuer. " + }, + "serialNumber": { + "example": "12345678", + "type": "string", + "description": "A number or code representing a specific serialised item of the product. Unique within product class." + }, + "batchNumber": { + "example": "6789", + "type": "string", + "description": "Identifier of the specific production batch of the product. Unique within the product class." + }, + "productImage": { + "$ref": "#/$defs/Link", + "description": "Reference information (location, type, name) of an image of the product." + }, + "description": { + "example": "400Ah 24v LiFePO4 battery", + "type": "string", + "description": "A textual description providing details about the product." + }, + "productCategory": { + "type": "array", + "items": { + "$ref": "#/$defs/Classification" + }, + "description": "A code representing the product's class, typically using the UN CPC (United Nations Central Product Classification) https://unstats.un.org/unsd/classifications/Econ/cpc" + }, + "furtherInformation": { + "type": "array", + "items": { + "$ref": "#/$defs/Link" + }, + "description": "A URL pointing to further human readable information about the product." + }, + "producedByParty": { + "$ref": "#/$defs/Identifier", + "description": "The Party entity that manufactured the product." + }, + "producedAtFacility": { + "$ref": "#/$defs/Identifier", + "description": "The Facility where the product batch was produced / manufactured." + }, + "dimensions": { + "$ref": "#/$defs/Dimension", + "description": "The physical dimensions of the product. Not every dimension is relevant to every products. For example bulk materials may have weight and volume but not length, with, or height.\"weight\":{\"value\":10, \"unit\":\"KGM\"}" + }, + "productionDate": { + "example": "2024-04-25", + "type": "string", + "format": "date", + "description": "The ISO 8601 date on which the product batch or individual serialised item was manufactured." + }, + "countryOfProduction": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The country in which this item was produced / manufactured.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "granularityLevel": { + "type": "string", + "enum": [ + "item", + "batch", + "model" + ], + "example": "item", + "description": "Code to indicate the granularity of this digital product passport - item level, batch level or product class level." + }, + "dueDiligenceDeclaration": { + "$ref": "#/$defs/Link", + "description": "The due diligence declaration that conforms with the regulations of the market into which the product is sold." + }, + "materialsProvenance": { + "type": "array", + "items": { + "$ref": "#/$defs/Material" + }, + "description": "An array of Provenance objects providing details on the origin and mass fraction of components or ingredients of the product batch. " + }, + "conformityClaim": { + "type": "array", + "items": { + "$ref": "#/$defs/Claim" + }, + "description": "An array of claim objects representing various product conformity claims about the product / batch. These can be sustainability claims, circularity claims, or any other claim type within the conformity topic list." + }, + "circularityScorecard": { + "$ref": "#/$defs/CircularityPerformance", + "description": "A circularity performance scorecard" + }, + "emissionsScorecard": { + "$ref": "#/$defs/EmissionsPerformance", + "description": "An emissions performance scorecard" + }, + "traceabilityInformation": { + "$ref": "#/$defs/TraceabilityPerformance", + "description": "An array of traceability events grouped by value chain process. Where actual traceability events are unavailable or carry sensitive information, passport publishers may specify the extent to which the traceability information has been independently verified. " + } + }, + "description": "The ProductInformation class encapsulates detailed information regarding a specific product, including its identification details, manufacturer, and other pertinent details. ", + "required": [ + "id", + "name" + ] + }, + "Link": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Link" + ], + "default": [ + "Link" + ], + "items": { + "type": "string", + "enum": [ + "Link" + ] + } + }, + "linkURL": { + "example": "https://files.example-certifier.com/1234567.json", + "type": "string", + "format": "uri", + "description": "The URL of the target resource. " + }, + "linkName": { + "example": "GBA rule book conformity certificate", + "type": "string", + "description": "A display name for the target resource " + }, + "linkType": { + "example": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "type": "string", + "description": "The type of the target resource - drawn from a controlled vocabulary " + } + }, + "description": "A structure to provide a URL link plus metadata associated with the link." + }, + "Classification": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Classification" + ], + "default": [ + "Classification" + ], + "items": { + "type": "string", + "enum": [ + "Classification" + ] + } + }, + "id": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/46410", + "type": "string", + "format": "uri", + "description": "The globally unique URI representing the specific classifier value" + }, + "code": { + "example": "46410", + "type": "string", + "description": "classification code within the scheme" + }, + "name": { + "example": "Primary cells and primary batteries", + "type": "string", + "description": "Name of the classification represented by the code" + }, + "schemeID": { + "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/", + "type": "string", + "format": "uri", + "description": "Classification scheme ID" + }, + "schemeName": { + "example": "UN Central Product Classification (CPC)", + "type": "string", + "description": "The name of the classification scheme" + } + }, + "description": "A classification scheme and code / name representing a category value for a product, entity, or facility.", + "required": [ + "id", + "name" + ] + }, + "Dimension": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Dimension" + ], + "default": [ + "Dimension" + ], + "items": { + "type": "string", + "enum": [ + "Dimension" + ] + } + }, + "weight": { + "$ref": "#/$defs/Measure", + "description": "the weight of the product. EG {\"value\":10, \"unit\":\"KGM\"}" + }, + "length": { + "$ref": "#/$defs/Measure", + "description": "The length of the product or packaging eg {\"value\":840, \"unit\":\"MMT\"}" + }, + "width": { + "$ref": "#/$defs/Measure", + "description": "The width of the product or packaging. eg {\"value\":150, \"unit\":\"MMT\"}" + }, + "height": { + "$ref": "#/$defs/Measure", + "description": "The height of the product or packaging. eg {\"value\":220, \"unit\":\"MMT\"}" + }, + "volume": { + "$ref": "#/$defs/Measure", + "description": "The displacement volume of the product. eg {\"value\":7.5, \"unit\":\"LTR\"}" + } + }, + "description": "Overall (length, width, height) dimensions and weight/volume of an item." + }, + "Measure": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Measure" + ], + "default": [ + "Measure" + ], + "items": { + "type": "string", + "enum": [ + "Measure" + ] + } + }, + "value": { + "example": 10, + "type": "number", + "description": "The numeric value of the measure" + }, + "unit": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "Unit of measure drawn from the UNECE Rec20 measure code list.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "The measure class defines a numeric measured value (eg 10) and a coded unit of measure (eg KG).", + "required": [ + "value", + "unit" + ] + }, + "Material": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Material" + ], + "default": [ + "Material" + ], + "items": { + "type": "string", + "enum": [ + "Material" + ] + } + }, + "name": { + "example": "Lithium Spodumene", + "type": "string", + "description": "Name of this material (eg \"Egyptian Cotton\")" + }, + "originCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "A ISO 3166-1 code representing the country of origin of the component or ingredient.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "materialType": { + "$ref": "#/$defs/Classification", + "description": "The type of this material - as a value drawn from a controlled vocabulary eg from UN Framework Classification for Resources (UNFC)." + }, + "massFraction": { + "example": 0.2, + "type": "number", + "description": "The mass fraction of the product represented by this material. The sum of all mass fraction values for a given passport should be 1." + }, + "massAmount": { + "$ref": "#/$defs/Measure", + "description": "The mass of the material component." + }, + "recycledAmount": { + "example": 0.5, + "type": "number", + "description": "Mass fraction of this material that is recycled (eg 50% recycled Lithium)" + }, + "hazardous": { + "example": "false", + "type": "boolean", + "description": "Indicates whether this material is hazardous. If true then the materialSafetyInformation property must be present" + }, + "symbol": { + "type": "string", + "format": "binary", + "description": "Based 64 encoded binary used to represent a visual symbol for a given material. " + }, + "materialSafetyInformation": { + "$ref": "#/$defs/Link", + "description": "Reference to further information about safe handling of this hazardous material (for example a link to a material safety data sheet)" + } + }, + "description": "The material class encapsulates details about the origin or source of raw materials in a product, including the country of origin and the mass fraction.", + "required": [ + "name" + ] + }, + "Claim": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Claim", + "Declaration" + ], + "default": [ + "Claim", + "Declaration" + ], + "items": { + "type": "string", + "enum": [ + "Claim", + "Declaration" + ] + } + }, + "assessmentDate": { + "example": "2024-03-15", + "type": "string", + "format": "date", + "description": "The date on which this assessment was made. " + }, + "declaredValue": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "The list of specific values measured as part of this assessment (eg tensile strength)" + }, + "id": { + "example": "https://products.example-company.com/09520123456788/declarations/12345", + "type": "string", + "format": "uri", + "description": "A unique identifier for the declaration. Often this will be an extension of the product.id or attestation.id. But could be a UUID." + }, + "referenceStandard": { + "$ref": "#/$defs/Standard", + "description": "The reference to the standard that defines the specification / criteria" + }, + "referenceRegulation": { + "$ref": "#/$defs/Regulation", + "description": "The reference to the regulation that defines the assessment criteria" + }, + "assessmentCriteria": { + "type": "array", + "items": { + "$ref": "#/$defs/Criterion" + }, + "description": "The specification against which the assessment is made." + }, + "declaredValues": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "The list of specific values measured as part of this assessment (eg tensile strength)" + }, + "conformance": { + "example": "true", + "type": "boolean", + "description": "An indicator of whether or not the claim or assesment conforms to the regulatory or standard criteria." + }, + "conformityTopic": { + "type": "string", + "enum": [ + "environment.energy", + "environment.emissions", + "environment.water", + "environment.waste", + "environment.deforestation", + "environment.biodiversity", + "circularity.content", + "circularity.design", + "social.labour", + "social.rights", + "social.community", + "social.safety", + "governance.ethics", + "governance.compliance", + "governance.transparency" + ], + "example": "environment.energy", + "description": "The conformity topic category for this assessment (eg vocabulary.uncefact.org/sustainability/emissions)" + }, + "conformityEvidence": { + "$ref": "#/$defs/SecureLink", + "description": "A URI pointing to the evidence supporting the claim. SHOULD be a URL to a UNTP Digital Conformity Credential (DCC)" + } + }, + "description": "A declaration of conformance with one or more criteria from a specific standard or regulation. ", + "required": [ + "id", + "conformance", + "conformityTopic" + ] + }, + "Metric": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Metric" + ], + "default": [ + "Metric" + ], + "items": { + "type": "string", + "enum": [ + "Metric" + ] + } + }, + "metricName": { + "example": "GHG emissions intensity", + "type": "string", + "description": "A human readable name for this metric (for example \"Tensile strength\")" + }, + "metricValue": { + "$ref": "#/$defs/Measure", + "description": "A numeric value and unit of measure for this metric. Could be a measured value or a specified threshold. Eg {\"value\":400, \"unit\":\"MPA\"} as tensile strength of structural steel" + }, + "score": { + "example": "BB", + "type": "string", + "description": "A score or rank associated with this measured metric." + }, + "accuracy": { + "example": 0.05, + "type": "number", + "description": "A percentage represented as a numeric between 0 and 1 indicating the rage of accuracy of the claimed value (eg 0.05 means that the actual value is within 5% of the claimed value.)" + } + }, + "description": "A specific measure of performance against the criteria that governs the claim. Expressed as an array of metric (ie unit of measure) / value (ie the actual numeric value) pairs. ", + "required": [ + "metricName", + "metricValue" + ] + }, + "Standard": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Standard" + ], + "default": [ + "Standard" + ], + "items": { + "type": "string", + "enum": [ + "Standard" + ] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf", + "type": "string", + "format": "uri", + "description": "A unique identifier for the standard (eg https://www.iso.org/standard/60857.html)." + }, + "name": { + "example": "GBA Battery Passport Greenhouse Gas Rulebook - V.2.0", + "type": "string", + "description": "The name of the standard" + }, + "issuingParty": { + "$ref": "#/$defs/Identifier", + "description": "The party that issued the standard " + }, + "issueDate": { + "example": "2023-12-05", + "type": "string", + "format": "date", + "description": "The date when the standard was issued." + } + }, + "description": "A standard (eg ISO 14000) that specifies the criteria for conformance.", + "required": [ + "issuingParty" + ] + }, + "Regulation": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Regulation" + ], + "default": [ + "Regulation" + ], + "items": { + "type": "string", + "enum": [ + "Regulation" + ] + } + }, + "id": { + "example": "https://www.legislation.gov.au/F2008L02309/latest/versions", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of this regulation. " + }, + "name": { + "example": "NNational Greenhouse and Energy Reporting (Measurement) Determination", + "type": "string", + "description": "The name of the regulation or act." + }, + "jurisdictionCountry": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId", + "description": "The legal jurisdiction (country) under which the regulation is issued.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n " + }, + "administeredBy": { + "$ref": "#/$defs/Identifier", + "description": "the issuing body of the regulation. For example Australian Government Department of Climate Change, Energy, the Environment and Water" + }, + "effectiveDate": { + "example": "2024-03-20", + "type": "string", + "format": "date", + "description": "the date at which the regulation came into effect." + } + }, + "description": "A regulation (eg EU deforestation regulation) that defines the criteria for assessment.", + "required": [ + "administeredBy" + ] + }, + "Criterion": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Criterion" + ], + "default": [ + "Criterion" + ], + "items": { + "type": "string", + "enum": [ + "Criterion" + ] + } + }, + "id": { + "example": "https://www.globalbattery.org/media/publications/gba-rulebook-v2.0-master.pdf#BatteryAssembly", + "type": "string", + "format": "uri", + "description": "A unique identifier for the criterion within the standard or regulation. For example CO2 emissions calculations for liquid fuel combustion." + }, + "name": { + "example": "GBA Battery rule book v2.0 battery assembly guidelines.", + "type": "string", + "description": "A name that describes this criteria." + }, + "thresholdValues": { + "type": "array", + "items": { + "$ref": "#/$defs/Metric" + }, + "description": "A conformity threshold defined by the specification (eg minimum compressive strength) " + } + }, + "description": "A specific rule or criterion within a standard or regulation. eg a carbon intensity calculation rule within an emissions standard.", + "required": [ + "id", + "name" + ] + }, + "SecureLink": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "SecureLink", + "Link" + ], + "default": [ + "SecureLink", + "Link" + ], + "items": { + "type": "string", + "enum": [ + "SecureLink", + "Link" + ] + } + }, + "linkURL": { + "example": "https://files.example-certifier.com/1234567.json", + "type": "string", + "format": "uri", + "description": "The URL of the target resource. " + }, + "linkName": { + "example": "GBA rule book conformity certificate", + "type": "string", + "description": "A display name for the target resource " + }, + "linkType": { + "example": "https://test.uncefact.org/vocabulary/linkTypes/dcc", + "type": "string", + "description": "The type of the target resource - drawn from a controlled vocabulary " + }, + "hashDigest": { + "example": "6239119dda5bd4c8a6ffb832fe16feaa5c27b7dba154d24c53d4470a2c69adc2", + "type": "string", + "description": "The hash of the file." + }, + "hashMethod": { + "type": "string", + "enum": [ + "SHA-256", + "SHA-1" + ], + "example": "SHA-256", + "description": "The hashing algorithm used to create the target hash. SHA-265 is the recommended standard" + }, + "encryptionMethod": { + "type": "string", + "enum": [ + "none", + "AES" + ], + "example": "none", + "description": "The symmetric encryption algorithm used to encrypt the link target. AES is the recommended standard. Decryption keys are expected to be passed out of bounds." + } + }, + "description": "A binary file that is hashed ()for tamper evidence) and optionally encrypted (for confidentiality)." + }, + "CircularityPerformance": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "CircularityPerformance" + ], + "default": [ + "CircularityPerformance" + ], + "items": { + "type": "string", + "enum": [ + "CircularityPerformance" + ] + } + }, + "recyclingInformation": { + "$ref": "#/$defs/Link", + "description": "A URI pointing to recycling information for the product." + }, + "repairInformation": { + "$ref": "#/$defs/Link", + "description": "A URI pointing to repair instructions for this product." + }, + "recyclableContent": { + "example": 0.5, + "type": "number", + "format": "float", + "description": "The fraction of the this product (my mass) that has been designed to be recyclable / re-usable. This will be be the total fraction that can avoid waste / landfill." + }, + "recycledContent": { + "example": 0.3, + "type": "number", + "format": "float", + "description": "The fraction (by mass) of recycled / repurposed, repaired content in this product. This will be the total virgin content fraction." + }, + "utilityFactor": { + "example": 1.2, + "type": "number", + "format": "float", + "description": "An indicator of durability defined as the lifetime (typically measures as usage cycles) for this product divided by the industry average. For example a battery with a 10,000 cycle lifetime where industry average is 5,000 cycles will have a durability factor of 2. If unknown set to 1 or omit. " + }, + "materialCircularityIndicator": { + "example": 0.67, + "type": "number", + "format": "float", + "description": "The overall circularity performance indicator for this product. Calculated as 1 - (V+W)/2D where - V = Virgin material proportion by mass (will be 1- recycled content) - W = Waste leakage proportion by mass (will be 1 - recyclableContent) - D = Utility factor (set to 1 if unknown). " + } + }, + "description": "High level circularity information about this product. Note that this does not substitute for detailed product circularity data sheet (PCDS) criteria which would be represented as a self-issued UNTP Digital Conformity Credential as a set of assessments against individual ISO PCDS criteria." + }, + "EmissionsPerformance": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "EmissionsPerformance" + ], + "default": [ + "EmissionsPerformance" + ], + "items": { + "type": "string", + "enum": [ + "EmissionsPerformance" + ] + } + }, + "carbonFootprint": { + "example": 1.8, + "type": "number", + "format": "float", + "description": "The carbon footprint of the product in KgCO2e per declared unit." + }, + "declaredUnit": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "The unit of product (EA, KGM, LTR, etc) that is the basis for carbon footprint.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + }, + "operationalScope": { + "type": "string", + "enum": [ + "None", + "CradleToGate", + "CradleToGrave" + ], + "example": "None", + "description": "The operational scope of the emissions performance. Only scope 1 & 2, or including upstream scope 3 (cradle to gate) or upstream and downstream scope 3 (cradle to grave)." + }, + "primarySourcedRatio": { + "example": 0.3, + "type": "number", + "format": "float", + "description": "The ratio of emissions data from primary sources (ie from supplier / product specific information rather than secondary / industry averages)." + }, + "reportingStandard": { + "$ref": "#/$defs/Standard", + "description": "The reporting standard (eg GHG Protocol, IFRS S2, ESRS, etc) against which this product emissions performance is assessed." + } + }, + "description": "Product specific characteristics. This class is an extension point for industry specific product characteristics or performance information such as clothing size or battery capacity.", + "required": [ + "carbonFootprint", + "declaredUnit", + "operationalScope", + "primarySourcedRatio" + ] + }, + "TraceabilityPerformance": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "TraceabilityPerformance" + ], + "default": [ + "TraceabilityPerformance" + ], + "items": { + "type": "string", + "enum": [ + "TraceabilityPerformance" + ] + } + }, + "valueChainProcess": { + "example": "Spinning", + "type": "string", + "description": "Human readable name for the industry specific value chain process representing this traceability data set." + }, + "verifiedRatio": { + "example": 0.5, + "type": "number", + "description": "The proportion (0 to 1) of materials in this value chain process that have been traced using verifiable traceability event." + }, + "traceabilityEvent": { + "type": "array", + "items": { + "$ref": "#/$defs/SecureLink" + }, + "description": "A list of secure links to digital traceability events that support this traceability performance statement. May be encrypted for confidentiality purposes. " + } + }, + "description": "An array of secure links to TraceabilityEvent objects detailing EPCIS events related to the traceability of the product batch. Events are grouped by value chain process (eg \"Weaving\" in textiles supply chain)." + } + } +} \ No newline at end of file diff --git a/packages/untp-test-suite/src/schemas/traceabilityEvents/v0.4.0/schema.json b/packages/untp-test-suite/src/schemas/traceabilityEvents/v0.4.0/schema.json new file mode 100644 index 00000000..cbfdf09c --- /dev/null +++ b/packages/untp-test-suite/src/schemas/traceabilityEvents/v0.4.0/schema.json @@ -0,0 +1,872 @@ +{ + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "DigitalTraceabilityEvent", + "VerifiableCredential" + ], + "default": [ + "DigitalTraceabilityEvent", + "VerifiableCredential" + ], + "items": { + "type": "string", + "enum": [ + "DigitalTraceabilityEvent", + "VerifiableCredential" + ] + } + }, + "id": { + "example": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "type": "string", + "format": "uri", + "description": "A unique identifier (URI) assigned to the product passport. May be a UUID" + }, + "@context": { + "example": "https://test.uncefact.org/vocabulary/untp/dcc/dcc-context.jsonld", + "type": "array", + "items": { + "type": "string", + "enum": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dte/0.4.0/" + ] + }, + "description": "A list of JSON-LD context URIs that define the seamntic meaning of prperties within the credential. ", + "readOnly": true, + "const": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dte/0.4.0/" + ], + "default": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dte/0.4.0/" + ] + }, + "issuer": { + "$ref": "#/$defs/CredentialIssuer", + "description": "The organisation that is the isuer of this VC. Note that the \"id\" property MUST be a W3C DID. Other identifiers such as tax registration numbers can be listed in the \"otherIdentifiers\" property." + }, + "validFrom": { + "example": "2024-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The date and time from which the credential is valid." + }, + "credentialSubject": { + "type": "array", + "items": { + "$ref": "#/$defs/Event" + }, + "description": "VC subject is the transaction event structure" + } + }, + "description": "Traceability Event as a VC", + "required": [ + "id", + "@context", + "issuer" + ], + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$defs": { + "CredentialIssuer": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "CredentialIssuer" + ], + "default": [ + "CredentialIssuer" + ], + "items": { + "type": "string", + "enum": [ + "CredentialIssuer" + ] + } + }, + "id": { + "example": "did:web:identifiers.example-company.com:12345", + "type": "string", + "format": "uri", + "description": "The W3C DID of the issuer - should be a did:web or did:tdw" + }, + "name": { + "example": "Example Company Pty Ltd", + "type": "string", + "description": "The name of the issuer person or organisation" + }, + "otherIdentifiers": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this credential issuer " + } + }, + "description": "The issuer party ()person or orgnaition) of a verifiable credential.", + "required": [ + "id", + "name" + ] + }, + "Identifier": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Identifier" + ], + "default": [ + "Identifier" + ], + "items": { + "type": "string", + "enum": [ + "Identifier" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the entity as a resolvable URL according to ISO 18975. ExamplesProduct - id.gs1.org/01/09520123456788/21/12345 Party - abr.business.gov.au/ABN/View?abn=90664869327. Facility - did:web:facilities.example-company.com:123. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the entity within the identifier scheme. Examplesproduct - EV battery 300Ahparty - Sample Company Pty Ltd. facility - Greenacres battery factory" + }, + "registeredId": { + "example": "90664869327", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme. Exampleproduct - id.gs1.org/01. party - business.gov.au/abn facility - did:web:facilities.acme.com. " + } + }, + "description": "The ID and Name of an identified entity such qs a product, facility, party, standard, etc. If the identifier is a W3C DID then the corresponding DID document SHOULD include a serviceEndpoint of type \"IdentityResolver\". If the identifier is not a W3C DID then the id peroperty SHOULD be an identity resolver URL.", + "required": [ + "id", + "name" + ] + }, + "IdentifierScheme": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "IdentifierScheme" + ], + "default": [ + "IdentifierScheme" + ], + "items": { + "type": "string", + "enum": [ + "IdentifierScheme" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of the registration scheme. The scheme should be registered and discoverable from vocabulary.uncefact.org/identifierSchemes" + }, + "name": { + "example": "Global Trade Identification Number (GTIN)", + "type": "string", + "description": "The name of the identifier scheme. " + } + }, + "description": "An identifier registration scheme for products, facilities, or organisations. Typically operated by a state, national or gloabl authority." + }, + "TransformationEvent": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "string", + "enum": [ + "n/a" + ], + "example": "n/a", + "description": "The event type." + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process representerd by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": [ + "observe", + "add", + "delete" + ], + "example": "observe", + "description": "Code describing how an event relates to the lifecycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an EPCIS event until it is reported to be at a different Business Location by a subsequent EPCIS event. The bizLocation must be a resolvable URI that links to facility information and geolocation data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "outputEPCList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of uniquely identified items that are the output of this transformation event - for example a list of individually identified bolts of cloth that are the output of a weaving process." + }, + "inputEPCList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of uniquely identified items that are the input of this transformation event - for example a list of individually identified bobbins of yarn that are the input of a weaving process." + }, + "inputQuantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "The quantified list of product classes that are the input of this transformation event - used when each item does not have a unique identity. for example the weight of raw cotton that is the input to a ginning process." + }, + "outputQuantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "The quantified list of product classes that are the output of this transformation event - used when each item does not have a unique identity. for example a count of the bales of cleaned cotton that are the output of a ginning process." + } + }, + "description": "Transformation represents an event in which input objects are fully or partially consumed and output objects are produced, such that any of the input objects may have contributed to all of the output objects - for example consuming bales of cotton to produce yarn." + }, + "SensorElement": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "SensorElement" + ], + "default": [ + "SensorElement" + ], + "items": { + "type": "string", + "enum": [ + "SensorElement" + ] + } + }, + "sensorMetadata": { + "$ref": "#/$defs/Sensor", + "description": "Data that describes the physical sensor that recorded the sensor data set." + }, + "sensorReport": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorData" + }, + "description": "A list of sensor readings from the given sensor relevant to the traceability event context." + }, + "sensorIntegrityProof": { + "type": "string", + "format": "uri", + "description": "An optional reference to a verifiable credential signed by the sensor device or device manufacturer that contains the digitally signed raw data associated with this sensor report." + } + }, + "description": "A SensorElement is used to carry data related to an event that is captured one sensor such as an IoT device. Include one sensor property and an array of sensor data values." + }, + "Sensor": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Sensor" + ], + "default": [ + "Sensor" + ], + "items": { + "type": "string", + "enum": [ + "Sensor" + ] + } + }, + "device": { + "$ref": "#/$defs/Item", + "description": "The device Identifier for the sensor as a URI (typically an EPC)" + }, + "dataProcessingMethod": { + "example": "https://standards.org/sensorMethod#1234", + "type": "string", + "format": "uri", + "description": "The data processing method used by the sensor - should reference a documented standard criteria as a URI" + } + }, + "description": "A physical sensor that records a sensor data set." + }, + "Item": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Item" + ], + "default": [ + "Item" + ], + "items": { + "type": "string", + "enum": [ + "Item" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the product as a URI. Ideall as a resolvable URL according to ISO 18975. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The name of the product class to which the product item belongs. " + } + }, + "description": "A specific serilaised trade item which is a type of a more generic product. ", + "required": [ + "id", + "name" + ] + }, + "SensorData": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "SensorData" + ], + "default": [ + "SensorData" + ], + "items": { + "type": "string", + "enum": [ + "SensorData" + ] + } + }, + "time": { + "example": "2024-07-24T12:00:00", + "type": "string", + "format": "date-time", + "description": "the timestamp at which the sensor reading was made." + }, + "sensorType": { + "example": "https://samplesensors.com/model1234", + "type": "string", + "format": "uri", + "description": "the measurement type of the sensor reading, as a URI reference to a measurement method specification." + }, + "value": { + "example": 25, + "type": "number", + "description": "the sensor reading" + }, + "uom": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "the unit of measure for the sensor reading, drawn from UNECE rec20 code list.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "A data point read by a sensor." + }, + "QuantityElement": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "QuantityElement" + ], + "default": [ + "QuantityElement" + ], + "items": { + "type": "string", + "enum": [ + "QuantityElement" + ] + } + }, + "productId": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "THe identifier of a product class (as opposed to a product instance) such as a GTIN code for a manufactured product." + }, + "productName": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the product within the identifier scheme. " + }, + "quantity": { + "example": 20, + "type": "number", + "description": "The numeric quantity of the product class (eg 100 kg of cotton)" + }, + "uom": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "The unit of measure for the quantity value (eg Kg or meters etc) using the UNECE Rec 20 unit of measure codelist.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "The quantity element is used to define the quantity (eg 100 kg of a product class. Used when serialised items are not applicable.", + "required": [ + "productId", + "productName", + "quantity" + ] + }, + "ObjectEvent": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "string", + "enum": [ + "n/a" + ], + "example": "n/a", + "description": "The event type." + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process representerd by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": [ + "observe", + "add", + "delete" + ], + "example": "observe", + "description": "Code describing how an event relates to the lifecycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an EPCIS event until it is reported to be at a different Business Location by a subsequent EPCIS event. The bizLocation must be a resolvable URI that links to facility information and geolocation data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "epcList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "A list of uniquely identified items (eg specific items serial numbers or tagged shipments / packages) that are the focus of this object event. " + }, + "quantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "A quantified list of product classes (eg GS1 GTINs) that are the focus of this object event" + } + }, + "description": "Object represents an event that happened to one or more physical or digital objects - such as an inspection or certification of a product or shipment. The physical objects may be identified either as specific items (eg a unique consignment number) or as a quantified amount of a product class (eg 100Kg of cotton yarn)" + }, + "AggregationEvent": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "string", + "enum": [ + "n/a" + ], + "example": "n/a", + "description": "The event type." + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process representerd by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": [ + "observe", + "add", + "delete" + ], + "example": "observe", + "description": "Code describing how an event relates to the lifecycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an EPCIS event until it is reported to be at a different Business Location by a subsequent EPCIS event. The bizLocation must be a resolvable URI that links to facility information and geolocation data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "parentEPC": { + "$ref": "#/$defs/Item", + "description": "The unique item identifier that is the result of this aggregation. Typically a packaging ID used in shipments that represents a box/ pallet / container of contained items." + }, + "childEPCs": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of child items that have been aggregated into the parent (or dis-aggregated from the parent). Maybe a list of package references (eg boxes on a pallet) or may be individual items (eg products in a box)." + }, + "childQuantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "List of quantified product classes that have been aggregated into the parent. Used whwn the child items do not have unique identifiers (eg 100 Kg of cotton bales)" + } + }, + "description": "Aggregation represents an event that happened to one or more objects that are physically aggregated together (physically constrained to be in the same place at the same time, as when cases are aggregated to a pallet). This event is also used to represent de-aggregation (eg unpacking) when businessStepCode is unpacking." + }, + "TransactionEvent": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "string", + "enum": [ + "n/a" + ], + "example": "n/a", + "description": "The event type." + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process representerd by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": [ + "observe", + "add", + "delete" + ], + "example": "observe", + "description": "Code describing how an event relates to the lifecycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an EPCIS event until it is reported to be at a different Business Location by a subsequent EPCIS event. The bizLocation must be a resolvable URI that links to facility information and geolocation data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "sourcePartyId": { + "example": "https://abr.business.gov.au/ABN/View?abn=90664869327", + "type": "string", + "format": "uri", + "description": "The source party for this supply chain transaction - typically the seller party" + }, + "destinationPartyId": { + "example": "https://abr.business.gov.au/ABN/View?abn=90664869327", + "type": "string", + "format": "uri", + "description": "The destination party for this supply chain transaction - typically the buyer party." + }, + "bizTransaction": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BTT", + "description": "The document type representing the trade transaction drawn from the business transaction type vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BTT\n " + }, + "epcList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of uniquely identified trade items included in this supply chain transaction." + }, + "quantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "List of quantified product classes that are included in this transaction. Used when the trade items do not have unique identifiers (eg 100 reels of yarn)" + } + }, + "description": "Transaction represents an event in which one or more objects become associated or disassociated with one or more identified business transactions - such as the purchase / shipment of goods between buyer and seller.", + "required": [ + "sourcePartyId", + "destinationPartyId" + ] + }, + "AssociationEvent": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "string", + "enum": [ + "n/a" + ], + "example": "n/a", + "description": "The event type." + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process representerd by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": [ + "observe", + "add", + "delete" + ], + "example": "observe", + "description": "Code describing how an event relates to the lifecycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an EPCIS event until it is reported to be at a different Business Location by a subsequent EPCIS event. The bizLocation must be a resolvable URI that links to facility information and geolocation data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "parentEPC": { + "$ref": "#/$defs/Item", + "description": "The unique item identifier that is the parent of this association. Typically an assembled product ID such as a desktop computer that is built from the associated child components." + }, + "childEPCs": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of child items that have been assembled to create the parent - for example the power supply or hard drive components of a desktop computer." + }, + "childQuantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "List of quantified product classes that have been assembled into the parent. Used when the child items do not have unique identifiers (eg brackets and screws used in the assembly of a desktop computer)" + } + }, + "description": "The association event represents the assembly of child sub-components to create a parent assembled item. For example a desktop computer assembled from power supply, hard drive, and motherboard. The association event is very similar in structure to the aggregation event but is used for physical assembly. An association event may represent a bill of materials used to assemble a product whilst an aggregation event may represent a packing list or items for transport. " + }, + "Event": { + "type": "object", + "oneOf": [ + { + "$ref": "#/$defs/TransformationEvent" + }, + { + "$ref": "#/$defs/ObjectEvent" + }, + { + "$ref": "#/$defs/AggregationEvent" + }, + { + "$ref": "#/$defs/TransactionEvent" + }, + { + "$ref": "#/$defs/AssociationEvent" + } + ], + "description": "This abstract event structure provides a common language to describe supply chain events such as shipments, inspections, manufacturing processes, etc. There are four types of EPCIS event but this is an abstract class representing all common properties of an EPCIS event. " + } + } +} \ No newline at end of file diff --git a/packages/untp-test-suite/src/schemas/traceabilityEvents/v0.4.1/schema.json b/packages/untp-test-suite/src/schemas/traceabilityEvents/v0.4.1/schema.json new file mode 100644 index 00000000..6ee2eeb1 --- /dev/null +++ b/packages/untp-test-suite/src/schemas/traceabilityEvents/v0.4.1/schema.json @@ -0,0 +1,777 @@ +{ + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["DigitalTraceabilityEvent", "VerifiableCredential"], + "default": ["DigitalTraceabilityEvent", "VerifiableCredential"], + "items": { + "type": "string", + "enum": ["DigitalTraceabilityEvent", "VerifiableCredential"] + } + }, + "id": { + "example": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "type": "string", + "format": "uri", + "description": "A unique identifier (URI) assigned to the product passport. May be a UUID" + }, + "@context": { + "example": "https://test.uncefact.org/vocabulary/untp/dcc/dcc-context.jsonld", + "type": "array", + "items": { + "type": "string", + "enum": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dte/0.4.1/"] + }, + "description": "A list of JSON-LD context URIs that define the seamntic meaning of prperties within the credential. ", + "readOnly": true, + "const": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dte/0.4.1/"], + "default": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dte/0.4.1/"] + }, + "issuer": { + "$ref": "#/$defs/CredentialIssuer", + "description": "The organisation that is the isuer of this VC. Note that the \"id\" property MUST be a W3C DID. Other identifiers such as tax registration numbers can be listed in the \"otherIdentifiers\" property." + }, + "validFrom": { + "example": "2024-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The date and time from which the credential is valid." + }, + "credentialSubject": { + "type": "array", + "items": { + "$ref": "#/$defs/Event" + }, + "description": "VC subject is the transaction event structure" + } + }, + "description": "An array of Traceability Events as a VC", + "required": ["id", "@context", "issuer"], + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$defs": { + "CredentialIssuer": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["CredentialIssuer"], + "default": ["CredentialIssuer"], + "items": { + "type": "string", + "enum": ["CredentialIssuer"] + } + }, + "id": { + "example": "did:web:identifiers.example-company.com:12345", + "type": "string", + "format": "uri", + "description": "The W3C DID of the issuer - should be a did:web or did:tdw" + }, + "name": { + "example": "Example Company Pty Ltd", + "type": "string", + "description": "The name of the issuer person or organisation" + }, + "otherIdentifier": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this credential issuer " + } + }, + "description": "The issuer party ()person or orgnaition) of a verifiable credential.", + "required": ["id", "name"] + }, + "Identifier": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Identifier"], + "default": ["Identifier"], + "items": { + "type": "string", + "enum": ["Identifier"] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the entity as a resolvable URL according to ISO 18975. ExamplesProduct - id.gs1.org/01/09520123456788/21/12345 Party - abr.business.gov.au/ABN/View?abn=90664869327. Facility - did:web:facilities.example-company.com:123. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the entity within the identifier scheme. Examplesproduct - EV battery 300Ahparty - Sample Company Pty Ltd. facility - Greenacres battery factory" + }, + "registeredId": { + "example": "90664869327", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme. Exampleproduct - id.gs1.org/01. party - business.gov.au/abn facility - did:web:facilities.acme.com. " + } + }, + "description": "The ID and Name of an identified entity such qs a product, facility, party, standard, etc. If the identifier is a W3C DID then the corresponding DID document SHOULD include a serviceEndpoint of type \"IdentityResolver\". If the identifier is not a W3C DID then the id peroperty SHOULD be an identity resolver URL.", + "required": ["id", "name"] + }, + "IdentifierScheme": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["IdentifierScheme"], + "default": ["IdentifierScheme"], + "items": { + "type": "string", + "enum": ["IdentifierScheme"] + } + }, + "id": { + "example": "https://id.gs1.org/01/", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of the registration scheme. The scheme should be registered and discoverable from vocabulary.uncefact.org/identifierSchemes" + }, + "name": { + "example": "Global Trade Identification Number (GTIN)", + "type": "string", + "description": "The name of the identifier scheme. " + } + }, + "description": "An identifier registration scheme for products, facilities, or organisations. Typically operated by a state, national or gloabl authority." + }, + "TransformationEvent": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["TransformationEvent", "Event"], + "default": ["TransformationEvent", "Event"], + "items": { + "type": "string", + "enum": ["TransformationEvent", "Event"] + } + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process representerd by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": ["observe", "add", "delete"], + "example": "observe", + "description": "Code describing how an event relates to the lifecycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an EPCIS event until it is reported to be at a different Business Location by a subsequent EPCIS event. The bizLocation must be a resolvable URI that links to facility information and geolocation data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "outputEPCList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of uniquely identified items that are the output of this transformation event - for example a list of individually identified bolts of cloth that are the output of a weaving process." + }, + "inputEPCList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of uniquely identified items that are the input of this transformation event - for example a list of individually identified bobbins of yarn that are the input of a weaving process." + }, + "inputQuantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "The quantified list of product classes that are the input of this transformation event - used when each item does not have a unique identity. for example the weight of raw cotton that is the input to a ginning process." + }, + "outputQuantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "The quantified list of product classes that are the output of this transformation event - used when each item does not have a unique identity. for example a count of the bales of cleaned cotton that are the output of a ginning process." + } + }, + "description": "Transformation represents an event in which input objects are fully or partially consumed and output objects are produced, such that any of the input objects may have contributed to all of the output objects - for example consuming bales of cotton to produce yarn." + }, + "SensorElement": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["SensorElement"], + "default": ["SensorElement"], + "items": { + "type": "string", + "enum": ["SensorElement"] + } + }, + "sensorMetadata": { + "$ref": "#/$defs/Sensor", + "description": "Data that describes the physical sensor that recorded the sensor data set." + }, + "sensorReport": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorData" + }, + "description": "A list of sensor readings from the given sensor relevant to the traceability event context." + }, + "sensorIntegrityProof": { + "type": "string", + "format": "uri", + "description": "An optional reference to a verifiable credential signed by the sensor device or device manufacturer that contains the digitally signed raw data associated with this sensor report." + } + }, + "description": "A SensorElement is used to carry data related to an event that is captured one sensor such as an IoT device. Include one sensor property and an array of sensor data values." + }, + "Sensor": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Sensor"], + "default": ["Sensor"], + "items": { + "type": "string", + "enum": ["Sensor"] + } + }, + "device": { + "$ref": "#/$defs/Item", + "description": "The device Identifier for the sensor as a URI (typically an EPC)" + }, + "dataProcessingMethod": { + "example": "https://standards.org/sensorMethod#1234", + "type": "string", + "format": "uri", + "description": "The data processing method used by the sensor - should reference a documented standard criteria as a URI" + } + }, + "description": "A physical sensor that records a sensor data set." + }, + "Item": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Item"], + "default": ["Item"], + "items": { + "type": "string", + "enum": ["Item"] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the product as a URI. Ideall as a resolvable URL according to ISO 18975. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The name of the product class to which the product item belongs. " + } + }, + "description": "A specific serilaised trade item which is a type of a more generic product. ", + "required": ["id", "name"] + }, + "SensorData": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["SensorData"], + "default": ["SensorData"], + "items": { + "type": "string", + "enum": ["SensorData"] + } + }, + "time": { + "example": "2024-07-24T12:00:00", + "type": "string", + "format": "date-time", + "description": "the timestamp at which the sensor reading was made." + }, + "sensorType": { + "example": "https://samplesensors.com/model1234", + "type": "string", + "format": "uri", + "description": "the measurement type of the sensor reading, as a URI reference to a measurement method specification." + }, + "value": { + "example": 25, + "type": "number", + "description": "the sensor reading" + }, + "uom": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "the unit of measure for the sensor reading, drawn from UNECE rec20 code list.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "A data point read by a sensor." + }, + "QuantityElement": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["QuantityElement"], + "default": ["QuantityElement"], + "items": { + "type": "string", + "enum": ["QuantityElement"] + } + }, + "productId": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "THe identifier of a product class (as opposed to a product instance) such as a GTIN code for a manufactured product." + }, + "productName": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the product within the identifier scheme. " + }, + "quantity": { + "example": 20, + "type": "number", + "description": "The numeric quantity of the product class (eg 100 kg of cotton)" + }, + "uom": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "The unit of measure for the quantity value (eg Kg or meters etc) using the UNECE Rec 20 unit of measure codelist.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "The quantity element is used to define the quantity (eg 100 kg of a product class. Used when serialised items are not applicable.", + "required": ["productId", "productName", "quantity"] + }, + "ObjectEvent": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["ObjectEvent", "Event"], + "default": ["ObjectEvent", "Event"], + "items": { + "type": "string", + "enum": ["ObjectEvent", "Event"] + } + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process representerd by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": ["observe", "add", "delete"], + "example": "observe", + "description": "Code describing how an event relates to the lifecycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an EPCIS event until it is reported to be at a different Business Location by a subsequent EPCIS event. The bizLocation must be a resolvable URI that links to facility information and geolocation data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "epcList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "A list of uniquely identified items (eg specific items serial numbers or tagged shipments / packages) that are the focus of this object event. " + }, + "quantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "A quantified list of product classes (eg GS1 GTINs) that are the focus of this object event" + } + }, + "description": "Object represents an event that happened to one or more physical or digital objects - such as an inspection or certification of a product or shipment. The physical objects may be identified either as specific items (eg a unique consignment number) or as a quantified amount of a product class (eg 100Kg of cotton yarn)" + }, + "AggregationEvent": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["AggregationEvent", "Event"], + "default": ["AggregationEvent", "Event"], + "items": { + "type": "string", + "enum": ["AggregationEvent", "Event"] + } + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process representerd by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": ["observe", "add", "delete"], + "example": "observe", + "description": "Code describing how an event relates to the lifecycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an EPCIS event until it is reported to be at a different Business Location by a subsequent EPCIS event. The bizLocation must be a resolvable URI that links to facility information and geolocation data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "parentEPC": { + "$ref": "#/$defs/Item", + "description": "The unique item identifier that is the result of this aggregation. Typically a packaging ID used in shipments that represents a box/ pallet / container of contained items." + }, + "childEPCList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of child items that have been aggregated into the parent (or dis-aggregated from the parent). Maybe a list of package references (eg boxes on a pallet) or may be individual items (eg products in a box)." + }, + "childQuantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "List of quantified product classes that have been aggregated into the parent. Used whwn the child items do not have unique identifiers (eg 100 Kg of cotton bales)" + } + }, + "description": "Aggregation represents an event that happened to one or more objects that are physically aggregated together (physically constrained to be in the same place at the same time, as when cases are aggregated to a pallet). This event is also used to represent de-aggregation (eg unpacking) when businessStepCode is unpacking." + }, + "TransactionEvent": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["TransactionEvent", "Event"], + "default": ["TransactionEvent", "Event"], + "items": { + "type": "string", + "enum": ["TransactionEvent", "Event"] + } + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process representerd by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": ["observe", "add", "delete"], + "example": "observe", + "description": "Code describing how an event relates to the lifecycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an EPCIS event until it is reported to be at a different Business Location by a subsequent EPCIS event. The bizLocation must be a resolvable URI that links to facility information and geolocation data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "sourcePartyId": { + "example": "https://abr.business.gov.au/ABN/View?abn=90664869327", + "type": "string", + "format": "uri", + "description": "The source party for this supply chain transaction - typically the seller party" + }, + "destinationPartyId": { + "example": "https://abr.business.gov.au/ABN/View?abn=90664869327", + "type": "string", + "format": "uri", + "description": "The destination party for this supply chain transaction - typically the buyer party." + }, + "bizTransaction": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BTT", + "description": "The document type representing the trade transaction drawn from the business transaction type vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BTT\n " + }, + "epcList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of uniquely identified trade items included in this supply chain transaction." + }, + "quantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "List of quantified product classes that are included in this transaction. Used when the trade items do not have unique identifiers (eg 100 reels of yarn)" + } + }, + "description": "Transaction represents an event in which one or more objects become associated or disassociated with one or more identified business transactions - such as the purchase / shipment of goods between buyer and seller.", + "required": ["sourcePartyId", "destinationPartyId"] + }, + "AssociationEvent": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["AssociationEvent", "Event"], + "default": ["AssociationEvent", "Event"], + "items": { + "type": "string", + "enum": ["AssociationEvent", "Event"] + } + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process representerd by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": ["observe", "add", "delete"], + "example": "observe", + "description": "Code describing how an event relates to the lifecycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an EPCIS event until it is reported to be at a different Business Location by a subsequent EPCIS event. The bizLocation must be a resolvable URI that links to facility information and geolocation data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "parentEPC": { + "$ref": "#/$defs/Item", + "description": "The unique item identifier that is the parent of this association. Typically an assembled product ID such as a desktop computer that is built from the associated child components." + }, + "childEPCList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of child items that have been assembled to create the parent - for example the power supply or hard drive components of a desktop computer." + }, + "childQuantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "List of quantified product classes that have been assembled into the parent. Used when the child items do not have unique identifiers (eg brackets and screws used in the assembly of a desktop computer)" + } + }, + "description": "The association event represents the assembly of child sub-components to create a parent assembled item. For example a desktop computer assembled from power supply, hard drive, and motherboard. The association event is very similar in structure to the aggregation event but is used for physical assembly. An association event may represent a bill of materials used to assemble a product whilst an aggregation event may represent a packing list or items for transport. " + }, + "Event": { + "type": "object", + "oneOf": [ + { + "$ref": "#/$defs/TransformationEvent" + }, + { + "$ref": "#/$defs/ObjectEvent" + }, + { + "$ref": "#/$defs/AggregationEvent" + }, + { + "$ref": "#/$defs/TransactionEvent" + }, + { + "$ref": "#/$defs/AssociationEvent" + } + ], + "description": "This abstract event structure provides a common language to describe supply chain events such as shipments, inspections, manufacturing processes, etc. There are four types of EPCIS event but this is an abstract class representing all common properties of an EPCIS event.", + "additionalProperties": true + } + } +} diff --git a/packages/untp-test-suite/src/schemas/traceabilityEvents/v0.4.2/schema.json b/packages/untp-test-suite/src/schemas/traceabilityEvents/v0.4.2/schema.json new file mode 100644 index 00000000..62ae37ad --- /dev/null +++ b/packages/untp-test-suite/src/schemas/traceabilityEvents/v0.4.2/schema.json @@ -0,0 +1,777 @@ +{ + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["DigitalTraceabilityEvent", "VerifiableCredential"], + "default": ["DigitalTraceabilityEvent", "VerifiableCredential"], + "items": { + "type": "string", + "enum": ["DigitalTraceabilityEvent", "VerifiableCredential"] + } + }, + "id": { + "example": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "type": "string", + "format": "uri", + "description": "A unique identifier (URI) assigned to the product passport. May be a UUID" + }, + "@context": { + "example": "https://test.uncefact.org/vocabulary/untp/dcc/dcc-context.jsonld", + "type": "array", + "items": { + "type": "string", + "enum": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dte/0.4.2/"] + }, + "description": "A list of JSON-LD context URIs that define the semantic meaning of properties within the credential. ", + "readOnly": true, + "const": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dte/0.4.2/"], + "default": ["https://www.w3.org/ns/credentials/v2", "https://vocabulary.uncefact.org/untp/dte/0.4.2/"] + }, + "issuer": { + "$ref": "#/$defs/CredentialIssuer", + "description": "The organisation that is the issuer of this VC. Note that the \"id\" property MUST be a W3C DID. Other identifiers such as tax registration numbers can be listed in the \"otherIdentifiers\" property." + }, + "validFrom": { + "example": "2024-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The date and time from which the credential is valid." + }, + "credentialSubject": { + "type": "array", + "items": { + "$ref": "#/$defs/Event" + }, + "description": "VC subject is the transaction event structure" + } + }, + "description": "An array of Traceability Events as a VC", + "required": ["id", "@context", "issuer"], + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$defs": { + "CredentialIssuer": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["CredentialIssuer"], + "default": ["CredentialIssuer"], + "items": { + "type": "string", + "enum": ["CredentialIssuer"] + } + }, + "id": { + "example": "did:web:identifiers.example-company.com:12345", + "type": "string", + "format": "uri", + "description": "The W3C DID of the issuer - should be a did:web or did:tdw" + }, + "name": { + "example": "Example Company Pty Ltd", + "type": "string", + "description": "The name of the issuer person or organisation" + }, + "otherIdentifier": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this credential issuer " + } + }, + "description": "The issuer party (person or organisation) of a verifiable credential.", + "required": ["id", "name"] + }, + "Identifier": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Identifier"], + "default": ["Identifier"], + "items": { + "type": "string", + "enum": ["Identifier"] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the entity as a resolvable URL according to ISO 18975. ExamplesProduct - id.gs1.org/01/09520123456788/21/12345 Party - abr.business.gov.au/ABN/View?abn=90664869327. Facility - did:web:facilities.example-company.com:123. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the entity within the identifier scheme. Examples: product - EV battery 300Ah, Party - Sample Company Pty Ltd, Facility - Green Acres battery factory" + }, + "registeredId": { + "example": "90664869327", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme. Examples : Product - id.gs1.org/01, Party - business.gov.au/abn, Facility - did:web:facilities.acme.com. " + } + }, + "description": "The ID and Name of an identified entity such as a product, facility, party, standard, etc. If the identifier is a W3C DID then the corresponding DID document SHOULD include a serviceEndpoint of type \"IdentityResolver\". If the identifier is not a W3C DID then the id property SHOULD be an identity resolver URL.", + "required": ["id", "name"] + }, + "IdentifierScheme": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["IdentifierScheme"], + "default": ["IdentifierScheme"], + "items": { + "type": "string", + "enum": ["IdentifierScheme"] + } + }, + "id": { + "example": "https://id.gs1.org/01/", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of the registration scheme. The scheme should be registered and discoverable from vocabulary.uncefact.org/identifierSchemes" + }, + "name": { + "example": "Global Trade Identification Number (GTIN)", + "type": "string", + "description": "The name of the identifier scheme. " + } + }, + "description": "An identifier registration scheme for products, facilities, or organisations. Typically operated by a state, national or global authority." + }, + "TransformationEvent": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["TransformationEvent", "Event"], + "default": ["TransformationEvent", "Event"], + "items": { + "type": "string", + "enum": ["TransformationEvent", "Event"] + } + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process represented by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": ["observe", "add", "delete"], + "example": "observe", + "description": "Code describing how an event relates to the life-cycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an event until it is reported to be at a different Business Location by a subsequent event. The bizLocation must be a resolvable URI that links to facility information and geo-location data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "outputEPCList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of uniquely identified items that are the output of this transformation event - for example a list of individually identified bolts of cloth that are the output of a weaving process." + }, + "inputEPCList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of uniquely identified items that are the input of this transformation event - for example a list of individually identified bobbins of yarn that are the input of a weaving process." + }, + "inputQuantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "The quantified list of product classes that are the input of this transformation event - used when each item does not have a unique identity. for example the weight of raw cotton that is the input to a ginning process." + }, + "outputQuantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "The quantified list of product classes that are the output of this transformation event - used when each item does not have a unique identity. for example a count of the bales of cleaned cotton that are the output of a ginning process." + } + }, + "description": "Transformation represents an event in which input objects are fully or partially consumed and output objects are produced, such that any of the input objects may have contributed to all of the output objects - for example consuming bales of cotton to produce yarn." + }, + "SensorElement": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["SensorElement"], + "default": ["SensorElement"], + "items": { + "type": "string", + "enum": ["SensorElement"] + } + }, + "sensorMetadata": { + "$ref": "#/$defs/Sensor", + "description": "Data that describes the physical sensor that recorded the sensor data set." + }, + "sensorReport": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorData" + }, + "description": "A list of sensor readings from the given sensor relevant to the traceability event context." + }, + "sensorIntegrityProof": { + "type": "string", + "format": "uri", + "description": "An optional reference to a verifiable credential signed by the sensor device or device manufacturer that contains the digitally signed raw data associated with this sensor report." + } + }, + "description": "A SensorElement is used to carry data related to an event that is captured one sensor such as an IoT device. Include one sensor property and an array of sensor data values." + }, + "Sensor": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Sensor"], + "default": ["Sensor"], + "items": { + "type": "string", + "enum": ["Sensor"] + } + }, + "device": { + "$ref": "#/$defs/Item", + "description": "The device Identifier for the sensor as a URI (typically an EPC)" + }, + "dataProcessingMethod": { + "example": "https://standards.org/sensorMethod#1234", + "type": "string", + "format": "uri", + "description": "The data processing method used by the sensor - should reference a documented standard criteria as a URI" + } + }, + "description": "A physical sensor that records a sensor data set." + }, + "Item": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["Item"], + "default": ["Item"], + "items": { + "type": "string", + "enum": ["Item"] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the product as a URI. Ideally as a resolvable URL according to ISO 18975. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The name of the product class to which the product item belongs. " + } + }, + "description": "A specific serialised trade item which is an instance of a more generic product. ", + "required": ["id", "name"] + }, + "SensorData": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["SensorData"], + "default": ["SensorData"], + "items": { + "type": "string", + "enum": ["SensorData"] + } + }, + "time": { + "example": "2024-07-24T12:00:00", + "type": "string", + "format": "date-time", + "description": "the timestamp at which the sensor reading was made." + }, + "sensorType": { + "example": "https://samplesensors.com/model1234", + "type": "string", + "format": "uri", + "description": "the measurement type of the sensor reading, as a URI reference to a measurement method specification." + }, + "value": { + "example": 25, + "type": "number", + "description": "the sensor reading" + }, + "uom": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "the unit of measure for the sensor reading, drawn from UNECE rec20 code list.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "A data point read by a sensor." + }, + "QuantityElement": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["QuantityElement"], + "default": ["QuantityElement"], + "items": { + "type": "string", + "enum": ["QuantityElement"] + } + }, + "productId": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "THe identifier of a product class (as opposed to a product instance) such as a GTIN code for a manufactured product." + }, + "productName": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the product within the identifier scheme. " + }, + "quantity": { + "example": 20, + "type": "number", + "description": "The numeric quantity of the product class (eg 100 kg of cotton)" + }, + "uom": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "The unit of measure for the quantity value (eg Kg or meters etc) using the UNECE Rec 20 unit of measure codelist.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "The quantity element is used to define the quantity (eg 100 kg of a product class. Used when serialised items are not applicable.", + "required": ["productId", "productName", "quantity"] + }, + "ObjectEvent": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["ObjectEvent", "Event"], + "default": ["ObjectEvent", "Event"], + "items": { + "type": "string", + "enum": ["ObjectEvent", "Event"] + } + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process represented by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": ["observe", "add", "delete"], + "example": "observe", + "description": "Code describing how an event relates to the life-cycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an event until it is reported to be at a different Business Location by a subsequent event. The bizLocation must be a resolvable URI that links to facility information and geo-location data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "epcList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "A list of uniquely identified items (eg specific items serial numbers or tagged shipments / packages) that are the focus of this object event. " + }, + "quantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "A quantified list of product classes (eg GS1 GTINs) that are the focus of this object event" + } + }, + "description": "Object represents an event that happened to one or more physical or digital objects - such as an inspection or certification of a product or shipment. The physical objects may be identified either as specific items (eg a unique consignment number) or as a quantified amount of a product class (eg 100Kg of cotton yarn)" + }, + "AggregationEvent": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["AggregationEvent", "Event"], + "default": ["AggregationEvent", "Event"], + "items": { + "type": "string", + "enum": ["AggregationEvent", "Event"] + } + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process represented by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": ["observe", "add", "delete"], + "example": "observe", + "description": "Code describing how an event relates to the life-cycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an event until it is reported to be at a different Business Location by a subsequent event. The bizLocation must be a resolvable URI that links to facility information and geo-location data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "parentEPC": { + "$ref": "#/$defs/Item", + "description": "The unique item identifier that is the result of this aggregation. Typically a packaging ID used in shipments that represents a box/ pallet / container of contained items." + }, + "childEPCList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of child items that have been aggregated into the parent (or dis-aggregated from the parent). Maybe a list of package references (eg boxes on a pallet) or may be individual items (eg products in a box)." + }, + "childQuantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "List of quantified product classes that have been aggregated into the parent. Used when the child items do not have unique identifiers (eg 100 Kg of cotton bales)" + } + }, + "description": "Aggregation represents an event that happened to one or more objects that are physically aggregated together (physically constrained to be in the same place at the same time, as when cases are aggregated to a pallet). This event is also used to represent de-aggregation (eg unpacking) when businessStepCode is unpacking." + }, + "TransactionEvent": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["TransactionEvent", "Event"], + "default": ["TransactionEvent", "Event"], + "items": { + "type": "string", + "enum": ["TransactionEvent", "Event"] + } + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process represented by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": ["observe", "add", "delete"], + "example": "observe", + "description": "Code describing how an event relates to the life-cycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an event until it is reported to be at a different Business Location by a subsequent event. The bizLocation must be a resolvable URI that links to facility information and geo-location data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "sourcePartyId": { + "example": "https://abr.business.gov.au/ABN/View?abn=90664869327", + "type": "string", + "format": "uri", + "description": "The source party for this supply chain transaction - typically the seller party" + }, + "destinationPartyId": { + "example": "https://abr.business.gov.au/ABN/View?abn=90664869327", + "type": "string", + "format": "uri", + "description": "The destination party for this supply chain transaction - typically the buyer party." + }, + "bizTransaction": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BTT", + "description": "The document type representing the trade transaction drawn from the business transaction type vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BTT\n " + }, + "epcList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of uniquely identified trade items included in this supply chain transaction." + }, + "quantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "List of quantified product classes that are included in this transaction. Used when the trade items do not have unique identifiers (eg 100 reels of yarn)" + } + }, + "description": "Transaction represents an event in which one or more objects become associated or disassociated with one or more identified business transactions - such as the purchase / shipment of goods between buyer and seller.", + "required": ["sourcePartyId", "destinationPartyId"] + }, + "AssociationEvent": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": ["AssociationEvent", "Event"], + "default": ["AssociationEvent", "Event"], + "items": { + "type": "string", + "enum": ["AssociationEvent", "Event"] + } + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process represented by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": ["observe", "add", "delete"], + "example": "observe", + "description": "Code describing how an event relates to the life-cycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an event until it is reported to be at a different Business Location by a subsequent event. The bizLocation must be a resolvable URI that links to facility information and geo-location data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "parentEPC": { + "$ref": "#/$defs/Item", + "description": "The unique item identifier that is the parent of this association. Typically an assembled product ID such as a desktop computer that is built from the associated child components." + }, + "childEPCList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of child items that have been assembled to create the parent - for example the power supply or hard drive components of a desktop computer." + }, + "childQuantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "List of quantified product classes that have been assembled into the parent. Used when the child items do not have unique identifiers (eg brackets and screws used in the assembly of a desktop computer)" + } + }, + "description": "The association event represents the assembly of child sub-components to create a parent assembled item. For example a desktop computer assembled from power supply, hard drive, and motherboard. The association event is very similar in structure to the aggregation event but is used for physical assembly. An association event may represent a bill of materials used to assemble a product whilst an aggregation event may represent a packing list or items for transport. " + }, + "Event": { + "type": "object", + "oneOf": [ + { + "$ref": "#/$defs/TransformationEvent" + }, + { + "$ref": "#/$defs/ObjectEvent" + }, + { + "$ref": "#/$defs/AggregationEvent" + }, + { + "$ref": "#/$defs/TransactionEvent" + }, + { + "$ref": "#/$defs/AssociationEvent" + } + ], + "description": "This abstract event structure provides a common language to describe supply chain events such as shipments, inspections, manufacturing processes, etc. There are four types of EPCIS event but this is an abstract class representing all common properties of an EPCIS event.", + "additionalProperties": true + } + } +} diff --git a/packages/untp-test-suite/src/schemas/traceabilityEvents/v0.5.0/schema.json b/packages/untp-test-suite/src/schemas/traceabilityEvents/v0.5.0/schema.json new file mode 100644 index 00000000..591bb7f7 --- /dev/null +++ b/packages/untp-test-suite/src/schemas/traceabilityEvents/v0.5.0/schema.json @@ -0,0 +1,928 @@ +{ + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "DigitalTraceabilityEvent", + "VerifiableCredential" + ], + "default": [ + "DigitalTraceabilityEvent", + "VerifiableCredential" + ], + "items": { + "type": "string", + "enum": [ + "DigitalTraceabilityEvent", + "VerifiableCredential" + ] + } + }, + "id": { + "example": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0", + "type": "string", + "format": "uri", + "description": "A unique identifier (URI) assigned to the product passport. May be a UUID" + }, + "@context": { + "example": "https://test.uncefact.org/vocabulary/untp/dcc/dcc-context.jsonld", + "type": "array", + "items": { + "type": "string", + "enum": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dte/0.5.0/" + ] + }, + "description": "A list of JSON-LD context URIs that define the semantic meaning of properties within the credential. ", + "readOnly": true, + "const": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dte/0.5.0/" + ], + "default": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dte/0.5.0/" + ] + }, + "issuer": { + "$ref": "#/$defs/CredentialIssuer", + "description": "The organisation that is the issuer of this VC. Note that the \"id\" property MUST be a W3C DID. Other identifiers such as tax registration numbers can be listed in the \"otherIdentifiers\" property." + }, + "validFrom": { + "example": "2024-03-15T12:00:00", + "type": "string", + "format": "date-time", + "description": "The date and time from which the credential is valid." + }, + "credentialSubject": { + "type": "array", + "items": { + "$ref": "#/$defs/Event" + }, + "description": "VC subject is the transaction event structure" + } + }, + "description": "An array of Traceability Events as a VC", + "required": [ + "id", + "@context", + "issuer" + ], + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$defs": { + "CredentialIssuer": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "CredentialIssuer" + ], + "default": [ + "CredentialIssuer" + ], + "items": { + "type": "string", + "enum": [ + "CredentialIssuer" + ] + } + }, + "id": { + "example": "did:web:identifiers.example-company.com:12345", + "type": "string", + "format": "uri", + "description": "The W3C DID of the issuer - should be a did:web or did:tdw" + }, + "name": { + "example": "Example Company Pty Ltd", + "type": "string", + "description": "The name of the issuer person or organisation" + }, + "otherIdentifier": { + "type": "array", + "items": { + "$ref": "#/$defs/Identifier" + }, + "description": "An optional list of other registered identifiers for this credential issuer " + } + }, + "description": "The issuer party (person or organisation) of a verifiable credential.", + "required": [ + "id", + "name" + ] + }, + "Identifier": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Identifier" + ], + "default": [ + "Identifier" + ], + "items": { + "type": "string", + "enum": [ + "Identifier" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the entity as a resolvable URL according to ISO 18975. ExamplesProduct - id.gs1.org/01/09520123456788/21/12345 Party - abr.business.gov.au/ABN/View?abn=90664869327. Facility - did:web:facilities.example-company.com:123. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the entity within the identifier scheme. Examples: product - EV battery 300Ah, Party - Sample Company Pty Ltd, Facility - Green Acres battery factory" + }, + "registeredId": { + "example": "90664869327", + "type": "string", + "description": "The registration number (alphanumeric) of the entity within the register. Unique within the register." + }, + "idScheme": { + "$ref": "#/$defs/IdentifierScheme", + "description": "The identifier scheme. Examples : Product - id.gs1.org/01, Party - business.gov.au/abn, Facility - did:web:facilities.acme.com. " + } + }, + "description": "The ID and Name of an identified entity such as a product, facility, party, standard, etc. If the identifier is a W3C DID then the corresponding DID document SHOULD include a serviceEndpoint of type \"IdentityResolver\". If the identifier is not a W3C DID then the id property SHOULD be an identity resolver URL.", + "required": [ + "id", + "name" + ] + }, + "IdentifierScheme": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "IdentifierScheme" + ], + "default": [ + "IdentifierScheme" + ], + "items": { + "type": "string", + "enum": [ + "IdentifierScheme" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/", + "type": "string", + "format": "uri", + "description": "The globally unique identifier of the registration scheme. The scheme should be registered and discoverable from vocabulary.uncefact.org/identifierSchemes" + }, + "name": { + "example": "Global Trade Identification Number (GTIN)", + "type": "string", + "description": "The name of the identifier scheme. " + } + }, + "description": "An identifier registration scheme for products, facilities, or organisations. Typically operated by a state, national or global authority." + }, + "TransformationEvent": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "TransformationEvent", + "Event" + ], + "default": [ + "TransformationEvent", + "Event" + ], + "items": { + "type": "string", + "enum": [ + "TransformationEvent", + "Event" + ] + } + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process represented by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": [ + "observe", + "add", + "delete" + ], + "example": "observe", + "description": "Code describing how an event relates to the life-cycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an event until it is reported to be at a different Business Location by a subsequent event. The bizLocation must be a resolvable URI that links to facility information and geo-location data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "outputEPCList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of uniquely identified items that are the output of this transformation event - for example a list of individually identified bolts of cloth that are the output of a weaving process." + }, + "inputEPCList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of uniquely identified items that are the input of this transformation event - for example a list of individually identified bobbins of yarn that are the input of a weaving process." + }, + "inputQuantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "The quantified list of product classes that are the input of this transformation event - used when each item does not have a unique identity. for example the weight of raw cotton that is the input to a ginning process." + }, + "outputQuantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "The quantified list of product classes that are the output of this transformation event - used when each item does not have a unique identity. for example a count of the bales of cleaned cotton that are the output of a ginning process." + } + }, + "description": "Transformation represents an event in which input objects are fully or partially consumed and output objects are produced, such that any of the input objects may have contributed to all of the output objects - for example consuming bales of cotton to produce yarn." + }, + "SensorElement": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "SensorElement" + ], + "default": [ + "SensorElement" + ], + "items": { + "type": "string", + "enum": [ + "SensorElement" + ] + } + }, + "sensorMetadata": { + "$ref": "#/$defs/Sensor", + "description": "Data that describes the physical sensor that recorded the sensor data set." + }, + "sensorReport": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorData" + }, + "description": "A list of sensor readings from the given sensor relevant to the traceability event context." + }, + "sensorIntegrityProof": { + "type": "string", + "format": "uri", + "description": "An optional reference to a verifiable credential signed by the sensor device or device manufacturer that contains the digitally signed raw data associated with this sensor report." + } + }, + "description": "A SensorElement is used to carry data related to an event that is captured one sensor such as an IoT device. Include one sensor property and an array of sensor data values." + }, + "Sensor": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Sensor" + ], + "default": [ + "Sensor" + ], + "items": { + "type": "string", + "enum": [ + "Sensor" + ] + } + }, + "device": { + "$ref": "#/$defs/Item", + "description": "The device Identifier for the sensor as a URI (typically an EPC)" + }, + "dataProcessingMethod": { + "example": "https://standards.org/sensorMethod#1234", + "type": "string", + "format": "uri", + "description": "The data processing method used by the sensor - should reference a documented standard criteria as a URI" + } + }, + "description": "A physical sensor that records a sensor data set." + }, + "Item": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "Item" + ], + "default": [ + "Item" + ], + "items": { + "type": "string", + "enum": [ + "Item" + ] + } + }, + "id": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "The globally unique ID of the product as a URI. Ideally as a resolvable URL according to ISO 18975. " + }, + "name": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The name of the product class to which the product item belongs. " + } + }, + "description": "A specific serialised trade item which is an instance of a more generic product. ", + "required": [ + "id", + "name" + ] + }, + "SensorData": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "SensorData" + ], + "default": [ + "SensorData" + ], + "items": { + "type": "string", + "enum": [ + "SensorData" + ] + } + }, + "time": { + "example": "2024-07-24T12:00:00", + "type": "string", + "format": "date-time", + "description": "the timestamp at which the sensor reading was made." + }, + "sensorType": { + "example": "https://samplesensors.com/model1234", + "type": "string", + "format": "uri", + "description": "the measurement type of the sensor reading, as a URI reference to a measurement method specification." + }, + "value": { + "example": 25, + "type": "number", + "description": "the sensor reading" + }, + "uom": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "the unit of measure for the sensor reading, drawn from UNECE rec20 code list.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "A data point read by a sensor." + }, + "QuantityElement": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "QuantityElement" + ], + "default": [ + "QuantityElement" + ], + "items": { + "type": "string", + "enum": [ + "QuantityElement" + ] + } + }, + "productId": { + "example": "https://id.gs1.org/01/09520123456788/21/12345", + "type": "string", + "format": "uri", + "description": "THe identifier of a product class (as opposed to a product instance) such as a GTIN code for a manufactured product." + }, + "productName": { + "example": "EV battery 300Ah.", + "type": "string", + "description": "The registered name of the product within the identifier scheme. " + }, + "quantity": { + "example": 20, + "type": "number", + "description": "The numeric quantity of the product class (eg 100 kg of cotton)" + }, + "uom": { + "type": "string", + "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode", + "description": "The unit of measure for the quantity value (eg Kg or meters etc) using the UNECE Rec 20 unit of measure codelist.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n " + } + }, + "description": "The quantity element is used to define the quantity (eg 100 kg of a product class. Used when serialised items are not applicable.", + "required": [ + "productId", + "productName", + "quantity" + ] + }, + "ObjectEvent": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "ObjectEvent", + "Event" + ], + "default": [ + "ObjectEvent", + "Event" + ], + "items": { + "type": "string", + "enum": [ + "ObjectEvent", + "Event" + ] + } + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process represented by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": [ + "observe", + "add", + "delete" + ], + "example": "observe", + "description": "Code describing how an event relates to the life-cycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an event until it is reported to be at a different Business Location by a subsequent event. The bizLocation must be a resolvable URI that links to facility information and geo-location data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "epcList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "A list of uniquely identified items (eg specific items serial numbers or tagged shipments / packages) that are the focus of this object event. " + }, + "quantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "A quantified list of product classes (eg GS1 GTINs) that are the focus of this object event" + } + }, + "description": "Object represents an event that happened to one or more physical or digital objects - such as an inspection or certification of a product or shipment. The physical objects may be identified either as specific items (eg a unique consignment number) or as a quantified amount of a product class (eg 100Kg of cotton yarn)" + }, + "AggregationEvent": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "AggregationEvent", + "Event" + ], + "default": [ + "AggregationEvent", + "Event" + ], + "items": { + "type": "string", + "enum": [ + "AggregationEvent", + "Event" + ] + } + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process represented by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": [ + "observe", + "add", + "delete" + ], + "example": "observe", + "description": "Code describing how an event relates to the life-cycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an event until it is reported to be at a different Business Location by a subsequent event. The bizLocation must be a resolvable URI that links to facility information and geo-location data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "parentEPC": { + "$ref": "#/$defs/Item", + "description": "The unique item identifier that is the result of this aggregation. Typically a packaging ID used in shipments that represents a box/ pallet / container of contained items." + }, + "childEPCList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of child items that have been aggregated into the parent (or dis-aggregated from the parent). Maybe a list of package references (eg boxes on a pallet) or may be individual items (eg products in a box)." + }, + "childQuantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "List of quantified product classes that have been aggregated into the parent. Used when the child items do not have unique identifiers (eg 100 Kg of cotton bales)" + } + }, + "description": "Aggregation represents an event that happened to one or more objects that are physically aggregated together (physically constrained to be in the same place at the same time, as when cases are aggregated to a pallet). This event is also used to represent de-aggregation (eg unpacking) when businessStepCode is unpacking." + }, + "TransactionEvent": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "TransactionEvent", + "Event" + ], + "default": [ + "TransactionEvent", + "Event" + ], + "items": { + "type": "string", + "enum": [ + "TransactionEvent", + "Event" + ] + } + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process represented by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": [ + "observe", + "add", + "delete" + ], + "example": "observe", + "description": "Code describing how an event relates to the life-cycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an event until it is reported to be at a different Business Location by a subsequent event. The bizLocation must be a resolvable URI that links to facility information and geo-location data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "sourcePartyId": { + "example": "https://abr.business.gov.au/ABN/View?abn=90664869327", + "type": "string", + "format": "uri", + "description": "The source party for this supply chain transaction - typically the seller party" + }, + "destinationPartyId": { + "example": "https://abr.business.gov.au/ABN/View?abn=90664869327", + "type": "string", + "format": "uri", + "description": "The destination party for this supply chain transaction - typically the buyer party." + }, + "bizTransaction": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BTT", + "description": "The document type representing the trade transaction drawn from the business transaction type vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BTT\n " + }, + "epcList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of uniquely identified trade items included in this supply chain transaction." + }, + "quantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "List of quantified product classes that are included in this transaction. Used when the trade items do not have unique identifiers (eg 100 reels of yarn)" + } + }, + "description": "Transaction represents an event in which one or more objects become associated or disassociated with one or more identified business transactions - such as the purchase / shipment of goods between buyer and seller.", + "required": [ + "sourcePartyId", + "destinationPartyId" + ] + }, + "AssociationEvent": { + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "array", + "readOnly": true, + "const": [ + "AssociationEvent", + "Event" + ], + "default": [ + "AssociationEvent", + "Event" + ], + "items": { + "type": "string", + "enum": [ + "AssociationEvent", + "Event" + ] + } + }, + "id": { + "readOnly": true, + "example": "https://events.sample.com/b681df10-c682-454a-b11b-d0b9374c01bd", + "type": "string", + "format": "uri", + "description": "The unique identifier of this event - SHOULD be a UUID" + }, + "processType": { + "example": "Weaving", + "type": "string", + "description": "A human readable name for industry specific process represented by this event." + }, + "eventTime": { + "example": "2024-09-01T12:00:00", + "type": "string", + "format": "date-time", + "description": "The ISO-8601 date time when the event occurred." + }, + "action": { + "type": "string", + "enum": [ + "observe", + "add", + "delete" + ], + "example": "observe", + "description": "Code describing how an event relates to the life-cycle of the entity impacted by the event." + }, + "disposition": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/Disp", + "description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n " + }, + "bizStep": { + "type": "string", + "x-external-enumeration": "https://ref.gs1.org/cbv/BizStep", + "description": "A business step code drawn from a controlled vocabulary.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n " + }, + "bizLocation": { + "example": "https://id.gs1.org/414/9520123456788", + "type": "string", + "format": "uri", + "description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an event until it is reported to be at a different Business Location by a subsequent event. The bizLocation must be a resolvable URI that links to facility information and geo-location data." + }, + "sensorElementList": { + "type": "array", + "items": { + "$ref": "#/$defs/SensorElement" + }, + "description": "An array (one for each sensor) of sensor device data sets associated with the event. " + }, + "parentEPC": { + "$ref": "#/$defs/Item", + "description": "The unique item identifier that is the parent of this association. Typically an assembled product ID such as a desktop computer that is built from the associated child components." + }, + "childEPCList": { + "type": "array", + "items": { + "$ref": "#/$defs/Item" + }, + "description": "The list of child items that have been assembled to create the parent - for example the power supply or hard drive components of a desktop computer." + }, + "childQuantityList": { + "type": "array", + "items": { + "$ref": "#/$defs/QuantityElement" + }, + "description": "List of quantified product classes that have been assembled into the parent. Used when the child items do not have unique identifiers (eg brackets and screws used in the assembly of a desktop computer)" + } + }, + "description": "The association event represents the assembly of child sub-components to create a parent assembled item. For example a desktop computer assembled from power supply, hard drive, and motherboard. The association event is very similar in structure to the aggregation event but is used for physical assembly. An association event may represent a bill of materials used to assemble a product whilst an aggregation event may represent a packing list or items for transport. " + }, + "Event": { + "type": "object", + "oneOf": [ + { + "$ref": "#/$defs/TransformationEvent" + }, + { + "$ref": "#/$defs/ObjectEvent" + }, + { + "$ref": "#/$defs/AggregationEvent" + }, + { + "$ref": "#/$defs/TransactionEvent" + }, + { + "$ref": "#/$defs/AssociationEvent" + } + ], + "description": "This abstract event structure provides a common language to describe supply chain events such as shipments, inspections, manufacturing processes, etc. There are four types of EPCIS event but this is an abstract class representing all common properties of an EPCIS event.", + "additionalProperties": true + } + } +} \ No newline at end of file