Skip to main content

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.

JSON Schema 2020-12 spec

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

    Download nrpf-v1.schema.json
  • Compliance 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

    Download nrpf-compliance-result.schema.json
  • Supply 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

    Download nrpf-supply-chain-node.schema.json
  • Evidence 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

    Download nrpf-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"
}

NRPF schemas are published under the Apache 2.0 License. Schema identifiers and $id URIs are stable for a given major version. Breaking changes will increment the major version (e.g. nrpf-v2).

More in the developer docs.