Developer Docs
Sandbox · API v2PlaygroundGet API keys

Designed to align with EN 18222:2026 · Digital Product Passport, Application Programming Interfaces (APIs). EN 18222:2026 is OJEU-cited by Commission Implementing Decision (EU) 2026/1736; no conformity assessment against it has been performed here, and this catalogue makes no presumption-of-conformity claim for this platform or for Norruva.

EN 18222:2026 Clause 4.1 defines a five-tier responsibility model: for each lifecycle method, which parties, the DPP creator, its main service provider, and/or a back-up DPP service provider, are obligated to make it available. The table below labels every method by what this deployment actually offers today.

Tier 1 · SHALL · creator or main service provider, and back-up service provider

SHALL

MethodEndpointResponsible partyBack-up service providerThis deploymentTry it
ReadDPPByIdGET /api/v1/dpps/{dppId}Creator or main service providerBack-up service provider
Not offered by this deployment
Route available
Route available, but no data source: the bi-temporal projection it reads is not populated yet. Expect 404 for every real passport until the projector write path is ratified.
Try it
ReadDPPByProductIdGET /api/v1/dppsByProductId/{productId}Creator or main service providerBack-up service provider
Not offered by this deployment
Route availableTry it
ReadDPPIdsByProductIdsPOST /api/v1/dppsByProductIdsCreator or main service providerBack-up service provider
Not offered by this deployment
Route available

Tier 2 · SHOULD · creator or main service provider, and back-up service provider

SHOULD

MethodEndpointResponsible partyBack-up service providerThis deploymentTry it
ReadDataElementGET /api/v1/dpps/{dppId}/elements/{elementIdPath}Creator or main service providerBack-up service provider
Not offered by this deployment
Route available
Route available, but no data source: the bi-temporal projection it reads is not populated yet. Expect 404 for every real passport until the projector write path is ratified.
Try it

Tier 3 · SHOULD · main service provider only, and back-up service provider (creator not listed)

SHOULD

MethodEndpointResponsible partyBack-up service providerThis deploymentTry it
CreateDPPPOST /api/v1/dppsMain service provider onlyBack-up service provider
Not offered by this deployment
Route available
DeleteDPPByIdDELETE /api/v1/dpps/{dppId}Main service provider onlyBack-up service provider
Not offered by this deployment
Route available
ReadDPPVersionByIdAndDateGET /api/v1/dppsByIdAndDate/{dppId}Main service provider onlyBack-up service provider
Not offered by this deployment
Route available
Route available, but no data source: the bi-temporal projection it reads is not populated yet. Expect 404 for every real passport until the projector write path is ratified.
Try it

Tier 4 · conditional SHALL · creator or main service provider only

SHALL · an authorized third party holds update rights over part of the DPP

MethodEndpointResponsible partyBack-up service providerThis deploymentTry it
UpdateDPPById
Condition: an authorized third party holds update rights over part of the DPP
PATCH /api/v1/dpps/{dppId}Creator or main service providerNot named by the standard for this tier
Not offered by this deployment
Route available

Tier 5 · conditional SHOULD · creator or main service provider only

SHOULD · an authorized third party holds update rights over part of the DPP

MethodEndpointResponsible partyBack-up service providerThis deploymentTry it
UpdateDataElement
Condition: an authorized third party holds update rights over part of the DPP
PATCH /api/v1/dpps/{dppId}/elements/{elementIdPath}Creator or main service providerNot named by the standard for this tier
Not offered by this deployment
Route available: declines write (501 ServerNotImplemented)
Route exists and is reachable but returns 501 ServerNotImplemented. The write is not yet performed.

No back-up DPP service provider deployment topology exists in this codebase today. That is an infrastructure/commercial decision outside this repository's scope, not a build gap. Every method above records that honestly rather than leaving the column blank.

Searchability surface (Clause 4.1, informative note)

EN 18222:2026 Clause 4.1 names exactly three methods as the surface a client may use to build search functionality. This group renders those three methods and nothing else. No other route on this platform, however search-shaped, belongs to this normative surface.

  • ReadDPPByProductId · GET /api/v1/dppsByProductId/{productId} (Clause 4.3)Try it
  • ReadDPPIdsByProductIds · POST /api/v1/dppsByProductIds (Clause 4.5)
  • ReadDPPVersionByIdAndDate · GET /api/v1/dppsByIdAndDate/{dppId} (Clause 4.4)Try it

Registry API (Clause 5)

The registration method is a Clause 5 DPP Registry API call. It sits outside the Clause 4.1 five-tier lifecycle responsibility model above.

RegisterProductDPP

POST /api/v1/registerDPP · Table 17

Clause 5 registry method, outside the Clause 4.1 five-tier lifecycle responsibility model.

Table 15: response status codes

Status codeHTTPMeaningHas Result object
Success200SuccessNo
SuccessCreated201New resource createdNo
SuccessAccepted202Request received successfullyNo
SuccessNoContent204Success, no content in payloadNo
ClientErrorBadRequest400Bad / malformed requestYes
ClientNotAuthorized401Wrong / missing credentialsYes
ClientForbidden403Authorization refusedYes
ClientErrorResourceNotFound404Resource not foundYes
ClientMethodNotAllowed405Method request not allowedYes
ClientResourceConflict409Resource already existsYes
ServerInternalError500Unexpected errorYes
ServerNotImplemented501Functionality not supportedNo
ServerErrorBadGateway502Bad gatewayYes