Open standard · JSON Schema 2020-12
Norruva Regulatory Passport Format
NRPF is an open JSON Schema specification for interoperable EU Digital Product Passports. Use these schemas to validate DPP data, generate typed clients, or build integrations with the Norruva platform.
Available schemas
NRPF Digital Product Passport v1
The main DPP schema covering product identification (GTIN, manufacturer, category), compliance data, supply chain structure, sustainability metrics, evidence references, and temporal metadata.
ESPREU Battery RegulationEUDRREACH / RoHS
Downloadnrpf-v1.schema.jsonCompliance Result
Per-regulation evaluation result produced by the compliance orchestration engine. Captures status, numeric score, and individual rule violations with severity levels.
Regulation statusViolation detailsRemediation hints
Downloadnrpf-compliance-result.schema.jsonSupply Chain Node
A single Bill of Materials node, such as a product, sub-assembly, component, raw material, or packaging element, with material composition, recycled content, and carbon footprint data.
BOM hierarchyMaterial compositionCarbon footprint
Downloadnrpf-supply-chain-node.schema.jsonEvidence Reference
Reference to a compliance evidence artefact (certificate, test report, audit document, or image) with SHA-256 content hashing for tamper detection.
Certificate referencesSHA-256 integrityContent hash
Downloadnrpf-evidence.schema.json
Using the schemas
Download
curl -O https://www.norruva.com/schemas/nrpf-v1.schema.json
Validate with AJV (JavaScript)
import Ajv from 'ajv/dist/2020'; import addFormats from 'ajv-formats'; const ajv = new Ajv(); addFormats(ajv); const schema = await fetch( 'https://www.norruva.com/schemas/nrpf-v1.schema.json' ).then((r) => r.json()); const validate = ajv.compile(schema); const valid = validate(myPassportDocument);
Generate TypeScript types
npx json-schema-to-typescript \ https://www.norruva.com/schemas/nrpf-v1.schema.json \ --out nrpf.d.ts
Example document
A conforming NRPF v1 document for a battery product. All required fields are populated; optional fields are omitted or shown where illustrative.
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"schemaVersion": "nrpf-v1",
"name": "EcoBattery Pro 100Ah",
"gtin": "5901234123457",
"category": "battery",
"status": "active",
"companyId": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"manufacturer": {
"name": "GreenCell GmbH",
"countryCode": "DE",
"eoriNumber": "DE123456789"
},
"compliance": {
"overallStatus": "compliant",
"passportReady": true,
"lastAssessmentDate": "2026-04-01",
"targetZone": "EU"
},
"complianceResults": [
{
"regulation": "BATTERY_REG",
"status": "passed",
"reason": "All mandatory battery passport fields are present and valid.",
"score": 94,
"evaluatedAt": "2026-04-01T10:00:00Z"
}
],
"sustainability": {
"carbonFootprintKgCO2": 85.4,
"recyclabilityPercentage": 92,
"recycledContentPercentage": 18,
"sustainabilityScore": 88,
"circularityScore": 76
},
"supplyChain": {
"bomNodes": [
{
"id": "b1c2d3e4-0000-0000-0000-000000000001",
"parentId": null,
"name": "Battery Cell Assembly",
"nodeType": "ASSEMBLY",
"quantity": 1,
"unitOfMeasure": "pcs",
"totalWeightKg": 28.5,
"recycledContentPercent": 18,
"carbonFootprintKg": 62.1,
"countryOfOrigin": "DE",
"level": 0,
"sortOrder": 0,
"childCount": 3,
"materials": [
{
"materialName": "Lithium Iron Phosphate",
"materialClass": "metal",
"weightKg": 12.3,
"weightPercent": 43.2,
"recycledContentPercent": 0,
"hazardClass": "none"
}
]
}
]
},
"evidence": [
{
"id": "e1f2a3b4-0000-0000-0000-000000000001",
"category": "certificate",
"fileName": "IEC62619-certificate.pdf",
"fileSize": 204800,
"mimeType": "application/pdf",
"publicUrl": "https://www.norruva.com/evidence/cert-iec62619.pdf",
"validationStatus": "verified",
"uploadedBy": "user-uuid-here",
"contentHash": "a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4",
"hashAlgorithm": "SHA-256",
"createdAt": "2026-03-15T08:30:00Z",
"updatedAt": "2026-03-15T08:30:00Z"
}
],
"version": "1.0.0",
"versionNumber": 1,
"isLatestVersion": true,
"granularityType": "model",
"applicableRegulationCodes": ["BATTERY_REG", "REACH"],
"effectiveFrom": "2026-04-01T00:00:00Z",
"effectiveTo": null,
"evaluatedAt": "2026-04-01T10:00:00Z",
"createdAt": "2026-03-01T09:00:00Z",
"updatedAt": "2026-04-01T10:05:00Z"
}