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
The main DPP schema covering product identification (GTIN, manufacturer, category), compliance data, supply chain structure, sustainability metrics, evidence references, and temporal metadata.
ESPR
EU Battery Regulation
EUDR
REACH / RoHS
/api/v2/public/schema/nrpf-v1Per-regulation evaluation result produced by the compliance orchestration engine. Captures status, numeric score, and individual rule violations with severity levels.
Regulation status
Violation details
Remediation hints
/api/v2/public/schema/nrpf-compliance-resultA 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 hierarchy
Material composition
Carbon footprint
/api/v2/public/schema/nrpf-supply-chain-nodeReference to a compliance evidence artefact (certificate, test report, audit document, or image) with SHA-256 content hashing for tamper detection.
Certificate references
SHA-256 integrity
Content hash
/api/v2/public/schema/nrpf-evidenceUsing the Schemas
Fetch via API
# Schema catalogue curl https://www.norruva.com/api/v2/public/schema # Individual schema curl https://www.norruva.com/api/v2/public/schema/nrpf-v1
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/api/v2/public/schema/nrpf-v1' ).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/api/v2/public/schema/nrpf-v1 \ --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"
}