The ITMO Schema defines a standardized structure for Internationally Transferred Mitigation Outcomes (ITMOs) as W3C Verifiable Credentials. It combines established standards with domain-specific extensions to ensure interoperability and compliance with Article 6.2 requirements.
Key Components
Standards Compliance Built on W3C Verifiable Credentials and JSON-LD
Semantic Clarity Unambiguous term definitions via JSON-LD context
Cryptographic Proofs Ed25519-2018 suite for tamper-evident credentials
Data Provenance W3C PROV vocabulary for traceability
Core Structure
Basic Structure
Python Implementation
{
"@context" : [
"https://www.w3.org/2018/credentials/v1" ,
"https://w3id.org/security/suites/ed25519-2018/v1" ,
{
"itmo" : "https://w3id.org/article6/itmo-context.jsonld" ,
"prov" : "http://www.w3.org/ns/prov#"
}
],
"type" : [
"VerifiableCredential" ,
"ITMOCredential"
],
"id" : "urn:uuid:<uuid>" ,
"issuer" : "did:ixo:entity:<issuer-id>" ,
"issuanceDate" : "<ISO-8601-date>" ,
"expirationDate" : "<ISO-8601-date>"
}
JSON-LD Context
The JSON-LD context provides semantic meaning to ITMO data, enabling unambiguous interpretation across different systems while maintaining data integrity and provenance tracking.
{
"@context" : {
"@version" : 1.1 ,
"id" : "@id" ,
"type" : "@type" ,
"itmo" : {
"@id" : "https://w3id.org/article6/vocab#" ,
"@prefix" : true
},
"prov" : "http://www.w3.org/ns/prov#"
}
}
Key Namespaces:
@version: JSON-LD version
itmo: Carbon market vocabulary
prov: W3C provenance terms
{
"@context" : {
"authorizationInfo" : {
"@id" : "itmo:authorizationInfo" ,
"@type" : "@id"
},
"ndcQuantification" : {
"@id" : "itmo:ndcQuantification" ,
"@type" : "@id"
},
"correspondingAdjustments" : {
"@id" : "itmo:correspondingAdjustments" ,
"@type" : "@id"
}
}
}
Domain Terms:
Authorization details
NDC metrics
Adjustment records
{
"@context" : {
"wasGeneratedBy" : {
"@id" : "prov:wasGeneratedBy" ,
"@type" : "@id"
},
"wasAttributedTo" : {
"@id" : "prov:wasAttributedTo" ,
"@type" : "@id"
},
"startedAtTime" : {
"@id" : "prov:startedAtTime" ,
"@type" : "xsd:dateTime"
}
}
}
Tracking Terms:
Generation activities
Attribution entities
Temporal metadata
Credential Attributes
{
"credentialSubject" : {
"itmo:authorizationInfo" : {
"itmo:authorizationReference" : "AUTH-2024-001" ,
"itmo:cooperativeApproachDuration" : "2024-01-01T00:00:00Z/2024-12-31T23:59:59Z" ,
"itmo:expectedMitigationOutcomes" : {
"2024" : 5000
},
"itmo:participatingParties" : [ "ZMB" , "CHE" ],
"itmo:authorizedEntities" : [
"did:ixo:entity:project123" ,
"did:ixo:entity:verifier456"
]
}
}
}
NDC Quantification
{
"credentialSubject" : {
"itmo:ndcQuantification" : {
"itmo:sectors" : [ "Residential" , "Energy" ],
"itmo:sources" : [ "BiomassFuelCombustion" ],
"itmo:ghgs" : [ "CO2" , "CH4" , "N2O" ],
"itmo:referenceLevel" : 1000 ,
"itmo:targetLevel" : 800 ,
"itmo:quantificationTonnesCO2e" : 200
}
}
}
Corresponding Adjustments
{
"credentialSubject" : {
"itmo:correspondingAdjustments" : {
"itmo:singleYearTarget" : true ,
"itmo:multiYearTarget" : false ,
"itmo:emissionsTrajectory" : [ 1000 , 950 , 900 , 850 , 800 ],
"itmo:annualAdjustments" : [ 40 , 40 , 40 , 40 , 40 ],
"itmo:cumulativeAdjustment" : 200
}
}
}
Validation & Proofs
from emerging import SchemaValidator
# Validate against JSON Schema
validator = SchemaValidator( "itmo-vc-schema.json" )
validation_result = validator.validate(credential)
if not validation_result.is_valid:
print ( f "Validation errors: { validation_result.errors } " )
from emerging import ProofGenerator
# Generate Ed25519 proof
proof = ProofGenerator.create_proof(
credential,
key_pair = issuer_key_pair,
proof_type = "Ed25519Signature2018" ,
verification_method = "did:ixo:entity:123#key-1"
)
# Add proof to credential
credential.add_proof(proof)
Developer Best Practices
Interoperability
Use standard JSON-LD contexts
Implement full vocabulary
Support multiple proof types
Enable cross-registry exchange
Data Validation
Validate schema compliance
Check proof signatures
Verify credential status
Validate semantic constraints
Extension Points
Custom context terms
Additional proof methods
Enhanced provenance tracking
Registry-specific metadata
Implementation Guide
Create Credential
Initialize context and type
Add credential metadata
Populate subject data
Generate and attach proof
Verify Credential
Validate JSON-LD structure
Check schema compliance
Verify cryptographic proof
Validate business rules
Process Credential
Parse semantic data
Extract relevant claims
Process adjustments
Update registries
Next Steps
ITMO Credentials Implement credential workflows
Registry Integration Connect with carbon registries
dMRV Guide Digital MRV implementation
API Reference API documentation