Skip to content
Developers · version 2026-09

API reference

REST API for Digital Product Passports: products, passports, evidence documents, suppliers, data carriers and store integrations. Generated from the live API source.

Download OpenAPI 3.1 468 operations in 35 groups · import the file into Postman, Insomnia or a code generator · integration test evidence

Getting started

Base URL
https://api.dppshield.com/api/v1
Authentication
Create an API key in the console under Settings → API keys and send it as x-api-key: dpk_… or Authorization: Bearer dpk_…. A key belongs to one organization.
Scopes
Each operation needs <resource>:read (GET) or <resource>:write (other methods), where the resource is the first path segment, for example products:write. <resource>:* and * cover both.
Public endpoints
Operations in Public passport access need no key: they serve published passports to anyone who scans a code.
Errors
400 invalid input · 401 missing or invalid key · 403 scope, role or plan limit · 404 not found · 409 conflict (for example a duplicate SKU) · 429 rate limit (hourly limits depend on the plan).
Versioning
Every response carries x-api-version. Breaking changes ship under a new version date.
Pagination
Search endpoints take page and pageSize (max 200) and return { items, total, page, pageSize }.
curl "https://api.dppshield.com/api/v1/products/search?q=chair&pageSize=20" \
  -H "x-api-key: dpk_your_key"

Try it without a key

The public sample passport (demonstration data) answers the public endpoints, so you can see real responses before creating a key: open the sample passport.

curl "https://api.dppshield.com/api/v1/public/dpp/d1000000-0000-4000-8000-000000000001"
curl "https://api.dppshield.com/api/v1/public/dpp/d1000000-0000-4000-8000-000000000001/documents"
curl "https://api.dppshield.com/api/v1/credentials/public/d1000000-0000-4000-8000-000000000001"

Products

Product identities (name, SKU, GTIN, category, manufacturer and economic operators) that every passport version refers to. Includes search, CSV import with a dry run, and deletion of products that never had a published passport.

GET/productsList products

The catalogue, newest first: at most LIST_MAX rows per request; page with `limit` and `offset`.

API key scope `products:read` (or `products:*`, `*`).

ParameterInTypeRequired
limitquerystringno
offsetquerystringno

Returns 200 Product[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/productsCreate a product

API key scope `products:write` (or `products:*`, `*`).

Request body (JSON)
FieldTypeRequired
namestringyes
skustringyes
gtinstring | any | nullno
category"battery" | "textile" | "electronics" | "furniture" | "construction" | "chemicals" | "food-contact" | "packaging" | "automotive" | "cosmetics" | "medical-devices" | "agriculture" | "tyres" | "metals" | "toys" | "appliances" | "footwear"yes
brandstring | nullno
descriptionstring | any | nullno
manufacturerNamestring | nullno
manufacturerCountrystring | any | nullno
metadataobjectno
workspaceIdstring (uuid) | any | nullno

Returns 201 Product2

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/products/{id}Get a product

API key scope `products:read` (or `products:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 Product

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PATCH/products/{id}Update a product

API key scope `products:write` (or `products:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
namestringno
skustringno
gtinstring | any | nullno
category"battery" | "textile" | "electronics" | "furniture" | "construction" | "chemicals" | "food-contact" | "packaging" | "automotive" | "cosmetics" | "medical-devices" | "agriculture" | "tyres" | "metals" | "toys" | "appliances" | "footwear"no
brandstring | nullno
descriptionstring | any | nullno
manufacturerNamestring | nullno
manufacturerCountrystring | any | nullno
metadataobjectno
workspaceIdstring (uuid) | any | nullno

Returns 200 Product

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/products/{id}Delete a product

Delete a product. Allowed only while none of its passports was ever published; its draft passports are deleted with it.

API key scope `products:write` (or `products:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
deletedbooleanyes
idstringyes
draftPassportsDeletednumberyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/products/bulkCreate product bulk

Update shared fields on, or delete, up to 200 products; every product is reported separately.

API key scope `products:write` (or `products:*`, `*`).

Request body (JSON)
FieldTypeRequired
idsstring[]no
action"update" | "delete"no
fieldsmap of anyno
Response body (JSON, 201)
FieldTypeRequired
actionstringyes
succeededstring[]yes
failedobject[]yes
succeededCountnumberyes
failedCountnumberyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/products/categoriesList product categories

API key scope `products:read` (or `products:*`, `*`).

Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
keystringyes
labelstringyes
enabledbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/products/check-duplicatesCheck duplicates products

API key scope `products:write` (or `products:*`, `*`).

Request body (JSON)
FieldTypeRequired
namestringno
skustringno
gtinstring | nullno
modelNumberstring | nullno
excludeIdstringno
Response body (JSON, 201)
FieldTypeRequired
duplicatesobject[]yes
similarobject[]yes
hasBlockingDuplicatebooleanyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/products/import/csvCreate product import csv

Import products from mapped CSV rows. With `dryRun: true` it reports the outcome of every row and the plan-limit check without writing anything.

API key scope `products:write` (or `products:*`, `*`).

Request body (JSON)

CsvImportRequest

Response body (JSON, 201)
FieldTypeRequired
dryRunbooleanyes
summaryobjectyes
planPlanCheckyes
rowsRowOutcome[]yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Passports

Digital Product Passports: create and edit versioned passport data, validate it against the category's regulation pack, publish, recall, archive, and read history, diffs, supply chain and per-passport records.

GET/authoring-drafts/{kind}/{id}Get a authoring draft

Private recovery state for the current user; expires after thirty days. Never a release.

API key scope `authoring-drafts:read` (or `authoring-drafts:*`, `*`).

ParameterInTypeRequired
kindpathstringyes
idpathstringyes

Returns 200 WorkingDraft | any | null

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/authoring-drafts/{kind}/{id}Post a authoring draft

API key scope `authoring-drafts:write` (or `authoring-drafts:*`, `*`).

ParameterInTypeRequired
kindpathstringyes
idpathstringyes
Request body (JSON)
FieldTypeRequired
baseVersionintegeryes
schemaVersionstringyes
datamap of anyyes
expectedRevisionintegeryes
Response body (JSON, 201)
FieldTypeRequired
revisionnumberyes
updatedAtstring (date-time)yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/authoring-drafts/{kind}/{id}Delete a authoring draft

API key scope `authoring-drafts:write` (or `authoring-drafts:*`, `*`).

ParameterInTypeRequired
kindpathstringyes
idpathstringyes
revisionquerystringyes
Response body (JSON, 200)
FieldTypeRequired
discardedbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dppList passports

Passports, most recently changed first: at most LIST_MAX rows per request; page with `limit` and `offset`.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
gtinquerystringno
limitquerystringno
offsetquerystringno

Returns 200 object | object[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dppCreate a passport

API key scope `dpp:write` (or `dpp:*`, `*`).

Request body (JSON)
FieldTypeRequired
productIdstring (uuid)yes
schemaIdstringyes
schemaVersionstringyes
datamap of anyyes

Returns 201 object | object

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}Get a passport

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
productProductyes
versionDppVersionyes
idstringyes
organizationIdstringyes
productIdstringyes
schemaIdstringyes
statusstringyes
lifecycleStatestringyes
currentVersionnumberyes
publishedVersionnumber | nullyes
publishedAtstring (date-time) | nullyes
publishedMarketsstring[] | any | nullyes
publicRedactionsanyyes
publicDisclosuresanyyes
pendingPublicRedactionsanyyes
pendingPublicDisclosuresanyyes
derivedFromIdstring | nullyes
derivationstring | nullyes
derivationMetaanyyes
sourceLocalestring | nullyes
carbonBaselineanyyes
correctionOpenedAtstring (date-time) | nullyes
suspendedAtstring (date-time) | nullyes
suspensionReasonstring | nullyes
suspendedFromLifecycleStatestring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PUT/dpp/{id}Replace a passport

API key scope `dpp:write` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
expectedVersionintegerno
schemaVersionstringno
datamap of anyyes
Response body (JSON, 200)
FieldTypeRequired
productProductyes
versionDppVersionyes
idstringyes
organizationIdstringyes
productIdstringyes
schemaIdstringyes
statusstringyes
lifecycleStatestringyes
currentVersionnumberyes
publishedVersionnumber | nullyes
publishedAtstring (date-time) | nullyes
publishedMarketsstring[] | any | nullyes
publicRedactionsanyyes
publicDisclosuresanyyes
pendingPublicRedactionsanyyes
pendingPublicDisclosuresanyyes
derivedFromIdstring | nullyes
derivationstring | nullyes
derivationMetaanyyes
sourceLocalestring | nullyes
carbonBaselineanyyes
correctionOpenedAtstring (date-time) | nullyes
suspendedAtstring (date-time) | nullyes
suspensionReasonstring | nullyes
suspendedFromLifecycleStatestring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/dpp/{id}Delete a passport

Archive one passport. Editors may archive or recall a single passport (as the role guide states); portfolio-wide publication, archive and recall through bulk-action are reserved to owners and admins.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
registryobjectyes
idstringyes
organizationIdstringyes
productIdstringyes
schemaIdstringyes
statusstringyes
lifecycleStatestringyes
currentVersionnumberyes
publishedVersionnumber | nullyes
publishedAtstring (date-time) | nullyes
publishedMarketsstring[] | any | nullyes
publicRedactionsanyyes
publicDisclosuresanyyes
pendingPublicRedactionsanyyes
pendingPublicDisclosuresanyyes
derivedFromIdstring | nullyes
derivationstring | nullyes
derivationMetaanyyes
sourceLocalestring | nullyes
carbonBaselineanyyes
correctionOpenedAtstring (date-time) | nullyes
suspendedAtstring (date-time) | nullyes
suspensionReasonstring | nullyes
suspendedFromLifecycleStatestring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/aas.jsonGet passport aas.json

Asset Administration Shell (metamodel V3 JSON) of a passport version - published by default - with Nameplate, full passport data and product structure.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
versionquerystringno
Response body (JSON, 200)
FieldTypeRequired
assetAdministrationShellsobject[]yes
submodelsobject | object[]yes
conceptDescriptionsany[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/bimGet passport bim

BIM parameters (IFC property sets / Revit shared parameters) and the object links.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
declaredbooleanyes
parametersobjectyes
linksobjectyes
lodstring | nullyes
classificationstring | nullyes
gapsstring[]yes
caveatstringyes
dppIdstringyes
productobjectyes
versionnumberyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/carbon-baselineAdd passport carbon baseline

Sets the reference footprint (and optional target) a reduction claim is measured against.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
footprintKgCo2enumberno
useDeclaredbooleanno
reductionTargetPercentnumberno
notestringno

Returns 201 CarbonBaseline

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/dpp/{id}/carbon-baselineDelete passport carbon baseline

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
baselineany | nullyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/carbon-estimateAdd passport carbon estimate

Estimates a bill of materials (or the text layer of a stored document). dryRun records nothing.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)

CarbonEstimateInput

Returns 201 object | object

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/carbon-estimatesGet passport carbon estimates

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
itemsobject[]yes
countnumberyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/carbon-reportGet passport carbon report

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
generatedAtstringyes
productobjectyes
versionnumberyes
statusstringyes
footprintobjectyes
baselineobject | objectyes
previousVersionobject | any | nullyes
dataQualityobjectyes
hotspotsobjectyes
conflictsFinding[]yes
warningsFinding[]yes
missingInputsstring[]yes
methodologyobjectyes
referencestring | nullyes
disclaimerstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/carbon-reportAdd passport carbon report

Issues a snapshot (reference like PCF-SKU-v1) of the current footprint.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 201)
FieldTypeRequired
reportobjectyes
idstringyes
organizationIdstringyes
statusstringyes
dppIdstringyes
payloadanyyes
referencestringyes
versionNumbernumberyes
issuedBystring | nullyes
issuedAtstring (date-time)yes
revokedAtstring (date-time) | nullyes
revokedReasonstring | nullyes
totalKgCo2estring | nullyes
declaredKgCo2estring | nullyes
methodologyVersionstringyes
boundarystringyes
upstreamKgCo2estring | nullyes
baselineKgCo2estring | nullyes
reductionPercentstring | nullyes
dataQualityanyyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/carbon-report.csvGet passport carbon report.csv

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/carbon-reportsGet passport carbon reports

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
idstringyes
referencestringyes
versionNumbernumberyes
statusstringyes
methodologyVersionstringyes
totalKgCo2estring | nullyes
declaredKgCo2estring | nullyes
upstreamKgCo2estring | nullyes
baselineKgCo2estring | nullyes
reductionPercentstring | nullyes
dataQualityanyyes
issuedAtstring (date-time)yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/classificationGet passport classification

Live CLP classification and derived label of one mixture.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
marketsquerystringno
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
statusstringyes
methodstringyes
clpSubsetVersionstringyes
productobjectyes
versionnumberyes
labelLabelyes
labelComparisonLabelComparisonyes
obligationsChemicalObligation[]yes
ufiobjectyes
missingInputsstring[]yes
disclaimerstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/complianceGet passport compliance

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
latestValidationRunyes
runsValidationRun[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/componentsGet passport components

The assembly below a passport (depth 8, 500 lines), each component's passport status and validation, and what needs attention.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
componentsobject[]yes
rollupobjectyes
truncatedbooleanyes
limitsobjectyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/componentsAdd passport components

Adds a component: a passport of this organization, an external component passport (https / GS1 Digital Link) or a structure-only part.

API key scope `dpp:write` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
namestringyes
rolestring | any | nullno
childDppIdstring (uuid) | any | nullno
externalReferencestring | any | nullno
quantitynumberno
massKgnumber | any | nullno
supplierIdstring (uuid) | any | nullno
visibility"public" | "restricted"no
positionintegerno

Returns 201 PassportComponent

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PATCH/dpp/{id}/components/{componentId}Update passport components

Changes a component line; a link that would make a passport its own component is refused.

API key scope `dpp:write` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
componentIdpathstringyes
Request body (JSON)
FieldTypeRequired
namestringno
rolestring | any | nullno
childDppIdstring (uuid) | any | nullno
externalReferencestring | any | nullno
quantitynumberno
massKgnumber | any | nullno
supplierIdstring (uuid) | any | nullno
visibility"public" | "restricted"no
positionintegerno

Returns 200 PassportComponent2

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/dpp/{id}/components/{componentId}Delete passport components

Removes a component line; the component's own passport is not changed.

API key scope `dpp:write` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
componentIdpathstringyes
Response body (JSON, 200)
FieldTypeRequired
removedbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/conflictsGet passport conflicts

The conflicts of one passport, with their remediation hint.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
conflictsobject[]yes
countsobjectyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/consistency-reportAdd passport consistency report

Issue the immutable consistency report (scans first, so the artifact reflects reality now).

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
notestringno
Response body (JSON, 201)
FieldTypeRequired
scanSummaryCrosscheckSummaryyes
referenceanyyes
versionNumberanyyes
statusanyyes
verdictanyyes
crosscheckVersionanyyes
dppVersionanyyes
countsobjectyes
documentsobjectyes
conflictingPathsanyyes
gapsanyyes
outOfScopeanyyes
headlineanyyes
noteanyyes
supersededByanyyes
issuedAtanyyes
revokedAtanyyes
revokeReasonanyyes
caveatstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/consistency-reportsGet passport consistency reports

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
referenceanyyes
versionNumberanyyes
statusanyyes
verdictanyyes
crosscheckVersionanyyes
dppVersionanyyes
countsobjectyes
documentsobjectyes
conflictingPathsanyyes
gapsanyyes
outOfScopeanyyes
headlineanyyes
noteanyyes
supersededByanyyes
issuedAtanyyes
revokedAtanyyes
revokeReasonanyyes
caveatstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/constructionGet passport construction

Everything the construction tier knows about one passport.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
productobjectyes
versionnumberyes
statusstringyes
methodVersionstringyes
standardstringyes
dopDopReadinessyes
epdEpdReadinessyes
productStageGwpnumber | nullyes
taxonomyTaxonomyResultyes
bimobjectyes
declaredPathsstring[]yes
disclaimerstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/credentialsGet passport credentials

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
idstringyes
dppIdstringyes
jtistringyes
kidstringyes
versionnumberyes
statusstringyes
issuedAtstring (date-time)yes
expiresAtstring (date-time)yes
revokedAtstring (date-time) | nullyes
revokedReasonstring | nullyes
subjectHashstringyes
claimsanyyes
tokenstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/credentialsAdd passport credentials

Signs the passport's current published version.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
validDaysnumberno
localestringno
Response body (JSON, 201)
FieldTypeRequired
jtistringyes
kidstringyes
tokenstringyes
claimsVerifiableCredentialClaimsyes
expiresAtstring (date-time)yes
verificationUrlstringyes
summarystringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/crosscheckGet passport crosscheck

Read-only state from the last scan (never re-reads documents, never spends a model call).

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
productobjectyes
versionnumberyes
crosscheckVersionstringyes
persistedStatebooleanyes
verdictstringyes
countsobjectyes
conflictsobject[]yes
documentsobject[]yes
factsobject[]yes
declaredobject[]yes
outOfScopeNotestringyes
notestringyes
caveatstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/crosscheckAdd passport crosscheck

Run a scan. Reads the passport's declared values, every attached document and the stored facts, compares what is comparable, persists the disagreements, and clears the ones that no longer reproduce. `persist: false` analyses without writing.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
documentIdsstring[]no
persistbooleanno
Response body (JSON, 201)
FieldTypeRequired
dppIdstringyes
referencestringyes
productobjectyes
versionnumberyes
crosscheckVersionstringyes
persistedbooleanyes
verdict"consistent" | "review" | "conflicting" | "unassessed"yes
summaryCrosscheckSummaryyes
scopeobjectyes
headlinestringyes
documentsany[]yes
groupsobject[]yes
conflictsobject[]yes
singleSourcePathsstring[]yes
outOfScopeobject[]yes
singleSourceNotestring | nullyes
caveatstringyes
scopeNotestringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/custodyGet passport custody

The custody statement of a passport: its allocations, by account and model.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
statementsobject[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/diffGet passport diff

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
fromquerystringno
toquerystringno
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
fromnumberyes
tonumberyes
changeCountnumberyes
changesobject[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PUT/dpp/{id}/disclosureUpdate passport disclosure

Configure dot-paths published at full precision, overriding the default public projection.

API key scope `dpp:write` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
pathsstring[]yes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
disclosedPathsstring[]yes
stagedbooleanyes
releaseVersionnumberyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/dopGet passport dop

CPR readiness: harmonised standard, AVCP system, notified body, essential characteristics.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
manufacturerstring | nullyes
numberstring | nullyes
harmonisedStandardstring | nullyes
avcpobject | any | nullyes
notifiedBodystring | nullyes
ceMarkingDatestring | nullyes
intendedUsestring | nullyes
plantstring | nullyes
characteristicsDopCharacteristic[]yes
dangerousSubstancesobjectyes
serviceLifeYearsnumber | nullyes
maintenanceIntervalMonthsnumber | nullyes
deconstructionReusePercentnumber | nullyes
recycledContentPercentnumber | nullyes
bioBasedContentPercentnumber | nullyes
fireClassstring | nullyes
readybooleanyes
blockingstring[]yes
gapsConstructionGap[]yes
caveatstringyes
dppIdstringyes
productobjectyes
versionnumberyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/dopAdd passport dop

Records the DoP — refused while a blocking element is missing, because a DoP is a legal document.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
notestringno
Response body (JSON, 201)
FieldTypeRequired
dppVersionnumberyes
gapsConstructionGap[]yes
nextStepstringyes
idstringyes
organizationIdstringyes
statusstringyes
dppIdstringyes
payloadanyyes
referencestringyes
versionNumbernumberyes
blockinganyyes
issuedBystring | nullyes
issuedAtstring (date-time)yes
supersededAtstring (date-time) | nullyes
revokedAtstring (date-time) | nullyes
revokedReasonstring | nullyes
gapCountnumberyes
dopNumberstring | nullyes
harmonisedStandardstring | nullyes
avcpSystemstring | nullyes
notifiedBodystring | nullyes
fireClassstring | nullyes
serviceLifeYearsstring | nullyes
characteristicCountnumberyes
readybooleanyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/dop-recordsGet passport dop records

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
dppVersionnumber | nullyes
currentDppVersionnumber | nullyes
outOfDateboolean | nullyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/dop.csvGet passport dop.csv

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
referencequerystringno

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/dop.jsonGet passport dop.json

Downloads a saved DoP whose reference belongs to this passport.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
referencequerystringyes

Returns 200 with a file (application/octet-stream).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/dop/revokeRevoke dop of a passport

Revokes a document belonging to this passport; the reference is carried in the body.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
referencestringyes
reasonstringno

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/dpp/{id}/draftDelete passport draft

Delete a never-published draft outright (frees its plan slot); published passports are archived instead.

API key scope `dpp:write` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
deletedbooleanyes
idstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/epcisGet passport epcis

GS1 EPCIS 2.0 capture document for the passport's lifecycle events.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
@contextstring | map of string[]yes
typestringyes
schemaVersionstringyes
creationDatestringyes
epcisBodyobjectyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/epcis/importImport epcis of a passport

Ingest a partner EPCIS 2.0 capture document (idempotent per eventID).

API key scope `dpp:write` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)

object

Response body (JSON, 201)
FieldTypeRequired
dppIdstringyes
importedCountnumberyes
skippedCountnumberyes
importedobject[]yes
skippedobject[]yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/epdGet passport epd

EN 15804+A2 readiness: modules, indicator matrix, GWP decomposition, biogenic storage, gaps.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
status"partial" | "declared" | "insufficient"yes
standardstringyes
methodVersionstringyes
declaredUnitstring | nullyes
functionalUnitstring | nullyes
systemBoundarystringyes
modulesEpdModuleValues[]yes
indicatorsobject[]yes
coreIndicatorCoveragePercentnumberyes
carbonStorageobjectyes
verificationConstructionVerificationyes
gapsConstructionGap[]yes
errorGapsnumberyes
warningGapsnumberyes
caveatstringyes
disclaimerstringyes
dppIdstringyes
productobjectyes
versionnumberyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/epdAdd passport epd

Issues the EPD data package with a reference containing the complete passport ID. Partial packages are issuable and say so.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
notestringno
languagestringno
Response body (JSON, 201)
FieldTypeRequired
dppVersionnumberyes
gapsConstructionGap[]yes
nextStepstringyes
idstringyes
organizationIdstringyes
statusstringyes
dppIdstringyes
payloadanyyes
referencestringyes
versionNumbernumberyes
issuedBystring | nullyes
issuedAtstring (date-time)yes
supersededAtstring (date-time) | nullyes
revokedAtstring (date-time) | nullyes
revokedReasonstring | nullyes
standardstringyes
methodVersionstringyes
declaredUnitstring | nullyes
functionalUnitstring | nullyes
systemBoundarystring | nullyes
modulesanyyes
indicatorsanyyes
moduleCountnumberyes
coreIndicatorCoveragePercentnumberyes
carbonStorageKgCo2estring | nullyes
carbonStorageBasisstring | nullyes
programmeOperatorstring | nullyes
registrationstring | nullyes
validUntilstring | nullyes
thirdPartyVerifiedboolean | nullyes
gapCountnumberyes
errorGapCountnumberyes
packageStatusstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/epd-recordsGet passport epd records

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
dppVersionnumber | nullyes
currentDppVersionnumber | nullyes
outOfDateboolean | nullyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/epd.csvGet passport epd.csv

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
referencequerystringno

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/epd.jsonGet passport epd.json

Downloads a saved EPD whose reference belongs to this passport.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
referencequerystringyes

Returns 200 with a file (application/octet-stream).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/epd/revokeRevoke epd of a passport

Revokes a document belonging to this passport; the reference is carried in the body.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
referencestringyes
reasonstringno

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/eventsGet passport events

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 DppEvent[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/eventsAdd passport events

Record a lifecycle event (repaired, transferred, recycled, inspected…).

API key scope `dpp:write` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)

DppEventInput

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/factsGet passport facts

Statements read from documents (or attested by a person), each with its quote.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
factsobject[]yes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/factsAdd passport facts

Attach a statement to a field: the document, the value and the quote are all required.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)

FactInput

Response body (JSON, 201)
FieldTypeRequired
idstringyes
documentIdstring | nullyes
pathstringyes
rawstringyes
kindstringyes
unitstring | nullyes
qualifierstringyes
canonicalstring | nullyes
evidencestringyes
methodstringyes
codestringyes
notestring | nullyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/historyGet passport history

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 DppVersion[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/item-jobsGet passport item jobs

Generation jobs of this passport with progress.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 ItemGenerationJob[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/itemsGet passport items

Items of a passport (100 per page, filter by status or serial) with counts by lifecycle status.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
statusquerystringno
qquerystringno
pagequerystringno
Response body (JSON, 200)
FieldTypeRequired
gtinstring | nullyes
itemsItemIdentity[]yes
totalnumberyes
totalCappedbooleanyes
pagenumberyes
pageSizenumberyes
byStatusmap of numberyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PATCH/dpp/{id}/items/{itemId}Update passport items

Changes one item's status or attributes (e.g. manufacturing date, state of health).

API key scope `dpp:write` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
itemIdpathstringyes
Request body (JSON)
FieldTypeRequired
status"active" | "sold" | "in_use" | "returned" | "refurbished" | "recycled" | "destroyed" | "recalled"no
attributesmap of string | number | boolean | any | nullno

Returns 200 ItemIdentity

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/items/export.csvGet passport items export.csv

Print / encode export in pages of 100,000: GS1 Digital Link URI (QR, NFC) and element string (DataMatrix, RFID) per item.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
pagequerystringyes

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/items/generateAdd passport items generate

Queues generation of up to 1,000,000 serials (prefix + zero-padded running number); existing serials are skipped.

API key scope `dpp:write` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
countintegeryes
prefixstringno
startintegerno
widthintegerno
batchstring | any | nullno

Returns 201 ItemGenerationJob2

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/items/importImport items of a passport

Registers up to 10,000 existing serials; duplicates are reported, never overwritten.

API key scope `dpp:write` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
itemsobject[]yes
Response body (JSON, 201)
FieldTypeRequired
creatednumberyes
duplicatesstring[]yes
duplicateCountnumberyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/items/statusAdd passport items status

Sets the lifecycle status of up to 10,000 serials (sold, returned, recycled…).

API key scope `dpp:write` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
serialsstring[]yes
status"active" | "sold" | "in_use" | "returned" | "refurbished" | "recycled" | "destroyed" | "recalled"yes
Response body (JSON, 201)
FieldTypeRequired
requestednumberyes
updatednumberyes
notFoundnumberyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/leasesGet passport leases

Leasing / servitization contracts attached to this passport.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 LeaseContract[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/leasesAdd passport leases

API key scope `dpp:write` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)

LeaseInput

Returns 201 LeaseContract2

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/lineageGet passport lineage

Remanufacturing lineage: ancestors and derived passports of this record.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
derivationstring | nullyes
derivedFromIdstring | nullyes
ancestryobject[]yes
descendantsobject[]yes
depthnumberyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/materialsGet passport materials

Live assessment: repairability, recycled content, CRM inventory, gaps, evidence status.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
labelBasisquerystringno
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
statusstringyes
methodVersionstringyes
labelBasisstringyes
productobjectyes
versionnumberyes
repairabilityobjectyes
recycledContentRecycledContentResultyes
criticalRawMaterialsobject[]yes
materialsobject[]yes
gapsGap[]yes
danglingEvidenceobject[]yes
missingInputsstring[]yes
crmListVersionstringyes
disclaimerstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/materials-declarationGet passport materials declaration

Issued declaration preview (what would be declared, and what is still missing).

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
labelBasisquerystringno
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
versionnumberyes
statusstringyes
labelBasisstringyes
repairabilityScorenumber | nullyes
repairabilityClassstring | nullyes
repairabilityCoveragePercentnumberyes
recycledContentPercentnumber | nullyes
criticalMaterialsnumberyes
errorsnumberyes
warningsnumberyes
missingInputsstring[]yes
dossierMaterialsDossieryes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/materials-declarationAdd passport materials declaration

Issues an immutable declaration with a reference containing the complete passport ID.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
labelBasisstringno
Response body (JSON, 201)
FieldTypeRequired
dppVersionnumberyes
statusstringyes
idstringyes
organizationIdstringyes
dppIdstringyes
payloadanyyes
recycledContentPercentstring | nullyes
repairabilityClassstring | nullyes
repairabilityScorestring | nullyes
referencestringyes
versionNumbernumberyes
issuedBystring | nullyes
issuedAtstring (date-time)yes
supersededAtstring (date-time) | nullyes
revokedAtstring (date-time) | nullyes
revokedReasonstring | nullyes
gapCountnumberyes
labelBasisstringyes
criticalMaterialsnumberyes
repairabilityCoveragePercentnumber | nullyes
recycledWeightBasisKgstring | nullyes
crmListVersionstringyes
unsubstantiatedClaimsnumberyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/materials-declaration.csvGet passport materials declaration.csv

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/materials-declaration.jsonGet passport materials declaration.json

Downloads a saved materials declaration whose reference belongs to this passport.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
referencequerystringyes

Returns 200 with a file (application/octet-stream).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/materials-declaration/revokeRevoke materials declaration of a passport

Revokes a document belonging to this passport; the reference is carried in the body.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
referencestringyes
reasonstringno

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/materials-declarationsGet passport materials declarations

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
dppVersionnumber | nullyes
currentDppVersionnumber | nullyes
outOfDateboolean | nullyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/obligationsGet passport obligations

Upcoming and overdue regulatory obligations for this passport under the approved pack versions.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
noticestringno
dppIdstringyes
categorystringyes
generatedAtstringyes
basisobject | any | nullyes
countsobjectyes
obligationsPassportObligation[]yes
futureVersionsFuturePackReadiness[]yes
calendarobject[]yes
calendarCaveatstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/ownershipGet passport ownership

Custody chain (circular economy: resale, leasing, recycler handover).

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
chainDppOwnership[]yes
currentDppOwnership | any | nullyes
transfersnumberyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/previewPreview a passport

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
langquerystringno
accept-languageheaderstringno
draftsquerystringno
Response body (JSON, 200)
FieldTypeRequired
regulatoryobjectyes
disclosedPathsstring[]no
redactedPathsstring[]no
defaultRedactedPathsstring[]no
translatedPathsstring[]yes
translationReleasedAtstring (date-time)no
productobjectyes
dataanyyes
versionnumber | nullyes
ownerobject | any | nullyes
issuerIdentityobjectyes
productModelobject | any | nullyes
localestringyes
interfaceLocalestringyes
sourceLocalestringyes
languagesLocaleInfo[]yes
availableLocalesstring[]yes
translationStatusstring | nullyes
suspensionobjectno
retirementobjectno
withdrawalobjectno
idstringyes
statusstringyes
lifecycleStatestringyes
publishedMarketsstring[] | any | nullyes
publishedAtstring (date-time) | nullyes
availabilityobjectyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/provenanceGet passport provenance

Field-level lineage of one passport version: source, evidence, claims, issuer, reviewer, rules, introducing version.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
versionquerystringno
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
productobjectyes
versionnumberyes
currentVersionnumberyes
publishedVersionnumber | nullyes
validationobject | any | nullyes
rulePackPackRef | any | nullyes
summaryobjectyes
fieldsobject[]yes
historyLimitedbooleanyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/publication-approvalsGet passport publication approvals

API key scope `dpp:read` (or `dpp:*`, `*`). Console users need the owner / admin / member / viewer role.

ParameterInTypeRequired
idpathstringyes

Returns 200 object | object[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/publication-approvalsAdd passport publication approvals

Request a version- and market-bound exception to the normal publication gate.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
marketsstring[]no
reasonstringno

Returns 201 DppPublicationApproval

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/publication-approvals/{approvalId}/decisionAdd passport publication approvals decision

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
approvalIdpathstringyes
Request body (JSON)
FieldTypeRequired
approvedbooleanno

Returns 201 DppPublicationApproval2

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/publishPublish a passport

Publish a passport release. Blocking findings or a readiness-only pack require an approved, unused `approvalId` for this exact passport version and market set.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
marketsstring[]no
approvalIdstringno
Response body (JSON, 201)
FieldTypeRequired
credentialobject | any | nullyes
complianceobjectyes
registryobjectyes
idstringyes
organizationIdstringyes
productIdstringyes
schemaIdstringyes
statusstringyes
lifecycleStatestringyes
currentVersionnumberyes
publishedVersionnumber | nullyes
publishedAtstring (date-time) | nullyes
publishedMarketsstring[] | any | nullyes
publicRedactionsanyyes
publicDisclosuresanyyes
pendingPublicRedactionsanyyes
pendingPublicDisclosuresanyyes
derivedFromIdstring | nullyes
derivationstring | nullyes
derivationMetaanyyes
sourceLocalestring | nullyes
carbonBaselineanyyes
correctionOpenedAtstring (date-time) | nullyes
suspendedAtstring (date-time) | nullyes
suspensionReasonstring | nullyes
suspendedFromLifecycleStatestring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/qrGet passport qr

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
formatquerystringno
Response body (JSON, 200)
FieldTypeRequired
urlstringyes
formatstringyes
dataUrlstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/recallRecall a passport

Withdraw the product. The passport stays public and states the recall.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
reasonstringno
Response body (JSON, 201)
FieldTypeRequired
registryobjectyes
idstringyes
organizationIdstringyes
productIdstringyes
schemaIdstringyes
statusstringyes
lifecycleStatestringyes
currentVersionnumberyes
publishedVersionnumber | nullyes
publishedAtstring (date-time) | nullyes
publishedMarketsstring[] | any | nullyes
publicRedactionsanyyes
publicDisclosuresanyyes
pendingPublicRedactionsanyyes
pendingPublicDisclosuresanyyes
derivedFromIdstring | nullyes
derivationstring | nullyes
derivationMetaanyyes
sourceLocalestring | nullyes
carbonBaselineanyyes
correctionOpenedAtstring (date-time) | nullyes
suspendedAtstring (date-time) | nullyes
suspensionReasonstring | nullyes
suspendedFromLifecycleStatestring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PUT/dpp/{id}/redactionUpdate passport redaction

Configure dot-paths hidden from public/recycler views.

API key scope `dpp:write` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
pathsstring[]yes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
redactedPathsstring[]yes
stagedbooleanyes
releaseVersionnumberyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/registryGet passport registry

API key scope `dpp:read` (or `dpp:*`, `*`). Console users need the owner / admin / member / viewer role.

ParameterInTypeRequired
idpathstringyes

Returns 200 DppRegistryRecord2[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/registry/outcomeAdd passport registry outcome

Record what the EU DPP Registry answered for a registration made in its own interface (online form or file upload): the correlation ID, then PROCESSING, SUCCESS with the registration URI, or FAILURE with the Registry's error. The record is kept with the published release.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
correlationIdstringyes
outcome"processing" | "success" | "failure"yes
registrationUristringno
errorstringno

Returns 201 DppRegistryRecord

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/registry/preparationGet passport registry preparation

API key scope `dpp:read` (or `dpp:*`, `*`). Console users need the owner / admin / member / viewer role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
versionnumberyes
publishedVersionnumber | nullyes
requiredbooleanyes
configuredbooleanyes
submission"api" | "registry-interface"yes
identifiersobjectyes
registrationRegistrationEntry | any | nullyes
readybooleanyes
issuesstring[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/registry/registerRegister registry of a passport

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes

Returns 201 DppRegistryRecord

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/reinstateReinstate a passport

Return a recalled or archived passport to draft so the record can be corrected.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
reasonstringno

Returns 201 Dpp

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/remanufactureAdd passport remanufacture

Issue a NEW passport derived from this one (remanufactured / refurbished item).

API key scope `dpp:write` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
datamap of anyyes
productIdstringno
schemaIdstringno
schemaVersionstringno
derivationstringno
notestringno
publishbooleanno
Response body (JSON, 201)
FieldTypeRequired
productProductyes
versionDppVersionyes
idstringyes
organizationIdstringyes
productIdstringyes
schemaIdstringyes
statusstringyes
lifecycleStatestringyes
currentVersionnumberyes
publishedVersionnumber | nullyes
publishedAtstring (date-time) | nullyes
publishedMarketsstring[] | any | nullyes
publicRedactionsanyyes
publicDisclosuresanyyes
pendingPublicRedactionsanyyes
pendingPublicDisclosuresanyyes
derivedFromIdstring | nullyes
derivationstring | nullyes
derivationMetaanyyes
sourceLocalestring | nullyes
carbonBaselineanyyes
correctionOpenedAtstring (date-time) | nullyes
suspendedAtstring (date-time) | nullyes
suspensionReasonstring | nullyes
suspendedFromLifecycleStatestring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/resumeAdd passport resume

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 201)
FieldTypeRequired
credentialobject | any | nullyes
registryobjectyes
idstringyes
organizationIdstringyes
productIdstringyes
schemaIdstringyes
statusstringyes
lifecycleStatestringyes
currentVersionnumberyes
publishedVersionnumber | nullyes
publishedAtstring (date-time) | nullyes
publishedMarketsstring[] | any | nullyes
publicRedactionsanyyes
publicDisclosuresanyyes
pendingPublicRedactionsanyyes
pendingPublicDisclosuresanyyes
derivedFromIdstring | nullyes
derivationstring | nullyes
derivationMetaanyyes
sourceLocalestring | nullyes
carbonBaselineanyyes
correctionOpenedAtstring (date-time) | nullyes
suspendedAtstring (date-time) | nullyes
suspensionReasonstring | nullyes
suspendedFromLifecycleStatestring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/scipGet passport scip

SCIP-aligned dossier preview (what would be submitted, and what is still missing).

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
versionnumber | nullyes
status"no-declaration" | "svhc-present" | "svhc-below-threshold" | "restricted-substance" | "no-svhc"yes
productType"unknown" | "article" | "mixture"yes
scipRequiredbooleanyes
containsSvhcbooleanyes
thresholdHitsnumberyes
outstandingstring[]yes
missingInputsstring[]yes
warningsstring[]yes
dossierScipDossieryes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/scipAdd passport scip

Issues a snapshot of the current screening with a reference containing the complete passport ID.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 201)
FieldTypeRequired
dppVersionnumber | nullyes
statusstringyes
idstringyes
organizationIdstringyes
dppIdstringyes
payloadanyyes
scipNumberstring | nullyes
referencestringyes
versionNumbernumberyes
issuedBystring | nullyes
issuedAtstring (date-time)yes
supersededAtstring (date-time) | nullyes
revokedAtstring (date-time) | nullyes
revokedReasonstring | nullyes
productTypestringyes
candidateListVersionstringyes
containsSvhcbooleanyes
substanceCountnumberyes
thresholdHitsnumberyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/scip-dossiersGet passport scip dossiers

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
dppVersionnumber | nullyes
currentDppVersionnumber | nullyes
outOfDateboolean | nullyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/scip.csvGet passport scip.csv

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/scip.jsonGet passport scip.json

Downloads a saved SCIP dossier whose reference belongs to this passport.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
referencequerystringyes

Returns 200 with a file (application/octet-stream).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/scip/revokeRevoke scip of a passport

Revokes a document belonging to this passport; the reference is carried in the body.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
referencestringyes
reasonstringno

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/sdsGet passport sds

Structured SDS data package (what would be issued, and what a competent person must author).

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
languagequerystringno
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
versionnumberyes
statusstringyes
revisionstringyes
languagestringyes
classifiedbooleanyes
signalWord"DANGER" | "WARNING" | nullyes
pictogramsnumberyes
hazardStatementsnumberyes
rulesToVerifynumberyes
unresolvedComponentsnumberyes
filledSectionsnumberyes
requiresAuthoringnumberyes
nextReviewAtstringyes
obligationsChemicalObligation[]yes
missingInputsstring[]yes
labelComparisonLabelComparisonyes
packageSdsPackageyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/sdsAdd passport sds

Issues an SDS revision with a reference containing the complete passport ID.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
languagestringno
revisionNotestringno

Returns 201 SdsRecord

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/sds-recordsGet passport sds records

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
reviewDuebooleanyes
dppVersionnumber | nullyes
currentDppVersionnumber | nullyes
outOfDateboolean | nullyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/sds.csvGet passport sds.csv

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/sds.jsonGet passport sds.json

Downloads a saved SDS revision whose reference belongs to this passport.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
referencequerystringyes

Returns 200 with a file (application/octet-stream).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/sds/revokeRevoke sds of a passport

Revokes a document belonging to this passport; the reference is carried in the body.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
referencestringyes
reasonstringno

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PUT/dpp/{id}/source-localeUpdate passport source locale

The language this passport is authored in (default English).

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
localestringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
sourceLocalestringyes
changedbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/sourcingGet passport sourcing

Persisted state for one passport: the last assessment and every alternative with its decision.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
currentDppVersionnumberyes
persistedStatebooleanyes
lastAssessmentobject | any | nullyes
alternativesobject[]yes
countsobjectyes
notestringyes
caveatstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/sourcing-assessmentAdd passport sourcing assessment

Issue the immutable assessment artifact (analyses first, so it reflects reality now).

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
notestringno
Response body (JSON, 201)
FieldTypeRequired
payloadobjectyes
referenceanyyes
versionNumberanyyes
dppVersionanyyes
statusanyyes
bandanyyes
resilienceIndexanyyes
materialsanyyes
suppliersanyyes
singleSourceCountanyyes
criticalExposureCountanyyes
unattributedCountanyyes
candidatesanyyes
eligibleCandidatesanyyes
blockedCandidatesanyyes
openDecisionsanyyes
adoptedanyyes
headlineanyyes
deductionsanyyes
exposuresanyyes
concentrationanyyes
noteanyyes
supersededByanyyes
issuedAtanyyes
revokedAtanyyes
revokeReasonanyyes
caveatstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/sourcing-assessment.csvGet passport sourcing assessment.csv

Exports the saved assessment for this passport.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
referencequerystringyes

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/sourcing-assessment.jsonGet passport sourcing assessment.json

Downloads a saved assessment whose reference belongs to this passport.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
referencequerystringyes

Returns 200 with a file (application/octet-stream).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/sourcing-assessment/revokeRevoke sourcing assessment of a passport

Revokes a document belonging to this passport; the reference is carried in the body.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
referencestringyes
reasonstringno
Response body (JSON, 201)
FieldTypeRequired
referenceanyyes
versionNumberanyyes
dppVersionanyyes
statusanyyes
bandanyyes
resilienceIndexanyyes
materialsanyyes
suppliersanyyes
singleSourceCountanyyes
criticalExposureCountanyyes
unattributedCountanyyes
candidatesanyyes
eligibleCandidatesanyyes
blockedCandidatesanyyes
openDecisionsanyyes
adoptedanyyes
headlineanyyes
deductionsanyyes
exposuresanyyes
concentrationanyyes
noteanyyes
supersededByanyyes
issuedAtanyyes
revokedAtanyyes
revokeReasonanyyes
caveatstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/sourcing-assessmentsGet passport sourcing assessments

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
referenceanyyes
versionNumberanyyes
dppVersionanyyes
statusanyyes
bandanyyes
resilienceIndexanyyes
materialsanyyes
suppliersanyyes
singleSourceCountanyyes
criticalExposureCountanyyes
unattributedCountanyyes
candidatesanyyes
eligibleCandidatesanyyes
blockedCandidatesanyyes
openDecisionsanyyes
adoptedanyyes
headlineanyyes
deductionsanyyes
exposuresanyyes
concentrationanyyes
noteanyyes
supersededByanyyes
issuedAtanyyes
revokedAtanyyes
revokeReasonanyyes
caveatstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/sourcing/analyseAdd passport sourcing analyse

Run the analysis: exposure, concentration, candidates and the resilience index (persists alternatives).

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
dryRunbooleanno
Response body (JSON, 201)
FieldTypeRequired
dppIdstringyes
productobjectyes
versionnumberyes
sourcingVersionstringyes
persistedbooleanyes
resilienceobjectyes
headlinestringyes
materialsnumberyes
suppliersnumberyes
linksnumberyes
unattributedSuppliersstring[]yes
unlinkedMaterialsstring[]yes
unattributedNotestring | nullyes
underEvaluationobject[]yes
underEvaluationNotestring | nullyes
exposuresExposure[]yes
concentrationobject[]yes
candidatesobject[]yes
countsobjectyes
alternativesobject[]yes
clearedAlternativesnumberyes
decisionGuardsobject[]yes
caveatstringyes
scopeNotestringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/splitSplit a passport

Serialization: split one passport into a batch of serialized items. Each item is a real passport (validated, custodied, audited) linked back to the source through lineage.

API key scope `dpp:write` (or `dpp:*`, `*`). Draft creation follows tenant write permissions; publish=true needs the owner / admin role and publication step-up.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)

SplitInput

Response body (JSON, 201)
FieldTypeRequired
sourceIdstringyes
productIdstringyes
batchstringyes
serialFieldstringyes
requestednumberyes
createdCountnumberyes
failedCountnumberyes
createdobject[]yes
failedobject[]yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/substancesGet passport substances

Live screening of the passport's declared composition.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
productTypequerystringno
marketsquerystringno
Response body (JSON, 200)
FieldTypeRequired
status"no-declaration" | "svhc-present" | "svhc-below-threshold" | "restricted-substance" | "no-svhc"yes
productType"unknown" | "article" | "mixture"yes
thresholdPercentnumberyes
declaredCountnumberyes
hitsSubstanceHit[]yes
belowThresholdSubstanceHit[]yes
unresolvedScreeningUnresolved[]yes
watchedSubstanceHit[]yes
obligationsScreeningObligation[]yes
scipobjectyes
marketsstring[]yes
warningsstring[]yes
missingInputsstring[]yes
declarationPathsstring[]yes
dppIdstringyes
productobjectyes
versionnumberyes
methodVersionstringyes
candidateListobjectyes
declarationobject[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/substances/rollupGet passport substances rollup

Screening plus the declared supply chain: propagation gaps and contradictions included.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
productTypequerystringno
marketsquerystringno
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
productobjectyes
versionnumberyes
methodVersionstringyes
productType"unknown" | "article" | "mixture"yes
screeningScreeningyes
supplyChainobjectyes
substancesobject[]yes
propagationGapsPropagationGap[]yes
overThresholdnumberyes
nodesWithSvhcnumberyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/supply-chainGet passport supply chain

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
tiersmap of any[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/supply-chain/rollupGet passport supply chain rollup

Upward rollup: declared carbon per tier, materials coverage, conflicts and completeness.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
generatedAtstringyes
coverageobjectyes
carbonobjectyes
materialsobject[]yes
conflictsFinding[]yes
warningsFinding[]yes
completenessobjectyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/supply-chain/treeGet passport supply chain tree

Recursive multi-tier tree (tier-1 suppliers + declared upstream, depth-capped).

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
productIdstringyes
generatedAtstringyes
maxDepthnumberyes
countsobjectyes
rootsChainNode[]yes
findingsFinding[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/suspendAdd passport suspend

Keep the published page visible while temporarily revoking its authenticity credential.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
reasonstringno
Response body (JSON, 201)
FieldTypeRequired
registryobjectyes
idstringyes
organizationIdstringyes
productIdstringyes
schemaIdstringyes
statusstringyes
lifecycleStatestringyes
currentVersionnumberyes
publishedVersionnumber | nullyes
publishedAtstring (date-time) | nullyes
publishedMarketsstring[] | any | nullyes
publicRedactionsanyyes
publicDisclosuresanyyes
pendingPublicRedactionsanyyes
pendingPublicDisclosuresanyyes
derivedFromIdstring | nullyes
derivationstring | nullyes
derivationMetaanyyes
sourceLocalestring | nullyes
carbonBaselineanyyes
correctionOpenedAtstring (date-time) | nullyes
suspendedAtstring (date-time) | nullyes
suspensionReasonstring | nullyes
suspendedFromLifecycleStatestring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/taxonomyGet passport taxonomy

EU Taxonomy screening: the technical criterion plus the DNSH assessments, counted over assessed criteria.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
referenceobjectyes
substantialContributionobjectyes
dnshobject[]yes
minimumSafeguardsobjectyes
countsobjectyes
verdict"aligned" | "not-aligned" | "not-assessed" | "partially-assessed"yes
caveatstringyes
dppIdstringyes
productobjectyes
versionnumberyes
productStageGwpnumber | nullyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/transferTransfer a passport

Transfer custody to the next owner and record the matching EPCIS transfer event.

API key scope `dpp:write` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)

TransferInput

Response body (JSON, 201)
FieldTypeRequired
dppIdstringyes
previousDppOwnership3 | any | nullyes
currentDppOwnership2yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/translateAdd passport translate

Draft one or more languages for a passport. `dryRun` plans the run (languages, segments, rejected locales) without calling the provider or writing anything; `overwrite` refreshes an existing draft — a reviewed or approved translation is never replaced unless it is passed explicitly.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)

TranslateInput

Returns 201 object | object

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/translationsGet passport translations

Every stored locale for a passport, with coverage, outdated fields and what is live.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
marketsquerystringno
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
versionanyyes
publishedVersionanyyes
statusanyyes
sourceLocalestringyes
productobjectyes
localizablestring[]yes
localizableCountnumberyes
valuesmap of stringyes
sourceHashstringyes
localesobject[]yes
publishedLocalesstring[]yes
approversnumberyes
coverageobjectyes
marketsobject[]yes
requirementsAdvisorybooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PUT/dpp/{id}/translations/{locale}Update passport translations

Write the working copy of one language (patch semantics; `replace` overwrites; `confirm` lists outdated fields whose translation still fits the new source). Status `draft` or `reviewed` — editing an approved translation returns it to draft while the released text stays live.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
localepathstringyes
Request body (JSON)

UpsertInput

Response body (JSON, 200)
FieldTypeRequired
localestringyes
localeNamestringyes
nativeNamestringyes
statusstringyes
translatednumberyes
totalnumberyes
percentnumberyes
missingstring[]yes
fieldsmap of anyyes
machineAssistedbooleanyes
sourcestringyes
providerstring | nullyes
modelstring | nullyes
glossaryVersionstring | nullyes
qualityVerdictstring | nullyes
qualityobject | nullyes
generatedAtstring (date-time) | nullyes
outdatedobject[]yes
stalebooleanyes
translatedBystring | nullyes
reviewedBystring | nullyes
reviewedAtstring (date-time) | nullyes
updatedAtstring (date-time)yes
needsOtherApproverbooleanyes
liveobject | any | nullyes
dppIdstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/dpp/{id}/translations/{locale}Delete passport translations

Delete a language: the working copy and, if live, its public release.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
localepathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
localestringyes
deletedbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/translations/{locale}/approveApprove translations of a passport

Approve the working copy and release it on the public passport.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
localepathstringyes
Request body (JSON)
FieldTypeRequired
acknowledgeSuspectbooleanno
Response body (JSON, 201)
FieldTypeRequired
releasedbooleanyes
notestringyes
localestringyes
localeNamestringyes
nativeNamestringyes
statusstringyes
translatednumberyes
totalnumberyes
percentnumberyes
missingstring[]yes
fieldsmap of anyyes
machineAssistedbooleanyes
sourcestringyes
providerstring | nullyes
modelstring | nullyes
glossaryVersionstring | nullyes
qualityVerdictstring | nullyes
qualityobject | nullyes
generatedAtstring (date-time) | nullyes
outdatedobject[]yes
stalebooleanyes
translatedBystring | nullyes
reviewedBystring | nullyes
reviewedAtstring (date-time) | nullyes
updatedAtstring (date-time)yes
needsOtherApproverbooleanyes
liveobject | any | nullyes
dppIdstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/translations/{locale}/exportExport translations of a passport

Translator file for one passport and language.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
localepathstringyes
formatquerystringno
missingOnlyquerystringno
Response body (JSON, 200)
FieldTypeRequired
filenamestringyes
contentTypestringyes
passportsnumberyes
unitsnumberyes
contentstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/translations/{locale}/importImport translations of a passport

Import a translator file for one passport and language, as drafts.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
localepathstringyes
Request body (JSON)
FieldTypeRequired
formatstringno
contentstringyes
statusstringno
Response body (JSON, 201)
FieldTypeRequired
localestringyes
statusstringyes
passportsnumberyes
appliednumberyes
skippednumberyes
resultsobject[]yes
notestringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/translations/{locale}/previewPreview translations of a passport

What the public passport would show in one language after the next publication: the working copy through the real public projection (redactions and defaults applied), with approved translations — or this language's unapproved draft with `drafts=1`.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
localepathstringyes
draftsquerystringno
Response body (JSON, 200)
FieldTypeRequired
regulatoryobjectyes
disclosedPathsstring[]no
redactedPathsstring[]no
defaultRedactedPathsstring[]no
translatedPathsstring[]yes
translationReleasedAtstring (date-time)no
productobjectyes
dataanyyes
versionnumber | nullyes
ownerobject | any | nullyes
issuerIdentityobjectyes
productModelobject | any | nullyes
localestringyes
interfaceLocalestringyes
sourceLocalestringyes
languagesLocaleInfo[]yes
availableLocalesstring[]yes
translationStatusstring | nullyes
suspensionobjectno
retirementobjectno
withdrawalobjectno
idstringyes
statusstringyes
lifecycleStatestringyes
publishedMarketsstring[] | any | nullyes
publishedAtstring (date-time) | nullyes
availabilityobjectyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/translations/{locale}/suggestionsGet passport translations suggestions

Exact-match translation memory from other passports' approved translations.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
localepathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
localestringyes
suggestionsobject[]yes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/translations/{locale}/withdrawAdd passport translations withdraw

Take a language off the public passport; the working copy is kept for review.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
localepathstringyes
Response body (JSON, 201)
FieldTypeRequired
dppIdstringyes
localestringyes
withdrawnbooleanyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/used-inGet passport used in

Passports that list this passport as a component.

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 any[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/{id}/validateValidate a passport

Validate against one or more markets: POST /dpp/:id/validate?markets=EU,UK

API key scope `dpp:write` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes
marketsquerystringno
Response body (JSON, 201)
FieldTypeRequired
runIdstringyes
rulesPassedbooleanyes
blockingIssuesnumberyes
legallyAssessedbooleanyes
assessmentStatus"readiness_only" | "legally_assessed"yes
compliantbooleanyes
readinessScorenumberyes
readinessGradestring | nullyes
scorenumberyes
averageScorenumberyes
gradestring | nullyes
coveragePackCoverageyes
issuesobject[]yes
rulesEvaluatednumberyes
marketsmap of MarketVerdictyes
requestedMarketsstring[]yes
extensionIssuesExtensionIssue[]yes
derivedFactsDerivedFact[]yes
packmap of anyno
packCodestringyes
packVersionstringyes
packStatusstringyes
organizationRulesnumberyes
nextActionstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/dpp/{id}/versionsGet passport versions

API key scope `dpp:read` (or `dpp:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 DppVersion[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/bulkCreate passport bulk

API key scope `dpp:write` (or `dpp:*`, `*`).

Request body (JSON)
FieldTypeRequired
itemsany[]yes
Response body (JSON, 201)
FieldTypeRequired
jobIdstringno
statusstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/bulk-actionCreate passport bulk action

Portfolio operation across many passports (plan batch cap applies). Restricted to the roles that may publish: without a role requirement an editor could publish through this route although the single-item `publish` route refuses them.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin role.

Request body (JSON)
FieldTypeRequired
action"publish" | "archive" | "recall" | "reinstate"yes
idsstring[]yes
marketsstring[]no
reasonstringno
Response body (JSON, 201)
FieldTypeRequired
action"publish" | "archive" | "recall" | "reinstate"yes
requestednumberyes
succeededCountnumberyes
failedCountnumberyes
succeededobject[]yes
failedobject[]yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/importImport passports

CSV import (master spec §5 Module 1): header-driven import of products and their first passport version. Product columns are followed by optional, flat passport columns; `data_json` is retained only as an advanced extension mechanism.

API key scope `dpp:write` (or `dpp:*`, `*`).

Request body (JSON)
FieldTypeRequired
csvstringyes
Response body (JSON, 201)
FieldTypeRequired
createdCountnumberyes
skippedCountnumberyes
createdobject[]yes
skippedstring[]yes
errorsobject[]yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/labelsCreate passport labels

Print-ready labels (GTIN, serial, Digital Link, QR and/or DataMatrix) for passports and their items.

API key scope `dpp:write` (or `dpp:*`, `*`).

Request body (JSON)
FieldTypeRequired
idsstring[]yes
includeChildrenbooleanno
limitnumberno
symbol"qr" | "datamatrix" | "both"no
Response body (JSON, 201)
FieldTypeRequired
countnumberyes
truncatedbooleanyes
availablenumberyes
symbol"qr" | "datamatrix" | "both"yes
unpublishednumberyes
labelsLabel2[]yes
notestringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/mergeMerge passports

Consolidated record built from several passports of the same product.

API key scope `dpp:write` (or `dpp:*`, `*`). Draft creation follows tenant write permissions; publish=true needs the owner / admin role and publication step-up.

Request body (JSON)

MergeInput

Returns 201 object | object

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dpp/registry/registration-dataCreate passport registry registration data

The EU DPP Registry registrations for up to 100 published passports, checked against the Registry's published rules (https UPI of at most 2,000 characters, product group and granularity, unique UPIs in one file), to enter in the Registry's online form or its JSON/XML upload template.

API key scope `dpp:write` (or `dpp:*`, `*`). Console users need the owner / admin / member role.

Request body (JSON)
FieldTypeRequired
dppIdsanyno
Response body (JSON, 200)
FieldTypeRequired
guidestringyes
maxEntriesnumberyes
productGroupstring | nullyes
entriesobject[]yes
issuesstring[]yes
readybooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/item-jobs/{jobId}Get a item job

One generation job with progress.

API key scope `item-jobs:read` (or `item-jobs:*`, `*`).

ParameterInTypeRequired
jobIdpathstringyes
Response body (JSON, 200)
FieldTypeRequired
percentnumberyes
idstringyes
organizationIdstringyes
dppIdstringyes
gtinstringyes
batchstring | nullyes
prefixstringyes
widthnumberyes
startNumbernumberyes
countnumberyes
nextOffsetnumberyes
createdCountnumberyes
skippedCountnumberyes
statusstringyes
errorstring | nullyes
heartbeatAtstring (date-time) | nullyes
createdBystring | nullyes
createdAtstring (date-time)yes
finishedAtstring (date-time) | nullyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/item-jobs/{jobId}/cancelCancel a item job

Stops a queued or running job; items already created stay.

API key scope `item-jobs:write` (or `item-jobs:*`, `*`).

ParameterInTypeRequired
jobIdpathstringyes

Returns 201 ItemGenerationJob

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Documents

Evidence documents (certificates, test reports, declarations) attached to passports. Uploads are type-checked and virus-scanned; access levels control what becomes public.

GET/documentsList documents

API key scope `documents:read` (or `documents:*`, `*`).

Returns 200 Document[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/documentsCreate a document

API key scope `documents:write` (or `documents:*`, `*`).

Request body (JSON)
FieldTypeRequired
dppIdstringno
typestringyes
titlestringyes
storageKeystringyes
sha256stringno
accessLevelstringno
supersedesIdstringno
ocrLanguagesanyno

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/documents/{id}Get a document

API key scope `documents:read` (or `documents:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 Document

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/documents/{id}Delete a document

API key scope `documents:write` (or `documents:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
deletedbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/documents/{id}/correction-requestAdd document correction request

Creates an idempotent follow-up request; the organization sends its invitation separately.

API key scope `documents:write` (or `documents:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 201)
FieldTypeRequired
requestIdstringyes
supplierIdstringyes
reusedbooleanyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/documents/{id}/credentialAdd document credential

Attaches a credential to an evidence document and records its verification, including whether it names the file's hash.

API key scope `documents:write` (or `documents:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
credentialstring | map of anyyes

Returns 201 CredentialVerification

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/documents/{id}/credential/recheckAdd document credential recheck

Verifies the attached credential again: status lists change and keys rotate.

API key scope `documents:write` (or `documents:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes

Returns 201 CredentialVerification

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/documents/{id}/fileGet document file

API key scope `documents:read` (or `documents:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 with a file (application/octet-stream).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/documents/{id}/read-textGet document read text

API key scope `documents:read` (or `documents:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 with a file (application/octet-stream).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/documents/{id}/read-textAdd document read text

API key scope `documents:write` (or `documents:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
ocrLanguagesanyno
forcebooleanno
Response body (JSON, 201)
FieldTypeRequired
documentIdanyyes
jobanyyes
readinganyyes
characterCountanyyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/documents/{id}/reviewAdd document review

Human review of evidence with revision conflict protection; never modifies file bytes.

API key scope `documents:write` (or `documents:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
expectedRevisionintegeryes
status"under_review" | "accepted" | "rejected"yes
reasonstringyes
issuedAtstring | any | nullyes
expiresAtstring | any | nullyes
issuerNamestring | any | nullno
issuerIdentifierstring | any | nullno

Returns 201 Document

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/documents/{id}/signed-urlAdd document signed url

Issue a short-lived signed download URL for a stored document.

API key scope `documents:write` (or `documents:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
expiresInnumberno
disposition"inline" | "attachment"no

Returns 201 SignedUrl

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/documents/{id}/verifyVerify a document

API key scope `documents:write` (or `documents:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 201)
FieldTypeRequired
validbooleanyes
sha256stringyes
storedstring | nullyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/documents/{id}/versionsGet document versions

Document version chain (supersession history) for a document.

API key scope `documents:read` (or `documents:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
documentIdstringyes
versionsany[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/documents/by-key/{key}/fileGet document by key file

Download a stored document file (used when object storage hands out no direct link).

API key scope `documents:read` (or `documents:*`, `*`).

ParameterInTypeRequired
keypathstringyes

Returns 200 with a file (application/octet-stream).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/documents/expiringList document expiring

API key scope `documents:read` (or `documents:*`, `*`).

Returns 200 Document[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/documents/uploadCreate document upload

API key scope `documents:write` (or `documents:*`, `*`).

Request body (JSON)
FieldTypeRequired
filenamestringyes
contentTypestringno
dppIdstringno
typestringyes
titlestringyes
accessLevelstringno
datastringyes
supersedesIdstringno
ocrLanguagesanyno

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/documents/upload-multipartCreate document upload multipart

API key scope `documents:write` (or `documents:*`, `*`).

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Suppliers

Supplier records, data requests sent to suppliers, and supplier risk assessments.

GET/risk-assessmentsList risk assessments

API key scope `risk-assessments:read` (or `risk-assessments:*`, `*`).

ParameterInTypeRequired
limitquerystringno
Response body (JSON, 200)
FieldTypeRequired
suppliersAssessednumberyes
assessmentsnumberyes
verdictsmap of numberyes
degradedRunsnumberyes
averageCombinedIndexnumber | nullyes
averageDeterministicScorenumber | nullyes
highRiskSuppliersnumberyes
categoriesobject[]yes
unassessableSignalsobject[]yes
recentobject[]yes
catalogueVersionstringyes
notestringyes
disclaimerstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/risk-assessments/{reference}Get a risk assessment

API key scope `risk-assessments:read` (or `risk-assessments:*`, `*`).

ParameterInTypeRequired
referencepathstringyes

Returns 200 SupplierRiskAssessment

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/risk-assessments/{reference}.csvGet a risk assessment

API key scope `risk-assessments:read` (or `risk-assessments:*`, `*`).

ParameterInTypeRequired
referencepathstringyes

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/risk-assessments/{reference}/revokeRevoke a risk assessment

API key scope `risk-assessments:write` (or `risk-assessments:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
referencepathstringyes
Request body (JSON)
FieldTypeRequired
reasonstringno

Returns 201 SupplierRiskAssessment

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/supplier-risk/catalogueList supplier risk catalogue

The catalogue and the formula: what a signal is, where it can come from and what it is worth.

API key scope `supplier-risk:read` (or `supplier-risk:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
riskVersionstringyes
catalogueVersionstringyes
categoriesobject[]yes
signalsobject[]yes
unassessableobject[]yes
maxPenaltynumberyes
formulastringyes
rulesstring[]yes
disclaimerstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/suppliersList suppliers

API key scope `suppliers:read` (or `suppliers:*`, `*`).

Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
idstringyes
organizationIdstringyes
namestringyes
createdAtstring (date-time)yes
metadataanyyes
countrystring | nullyes
emailstring | nullyes
trustScorenumber | nullyes
tiernumberyes
viaSupplierIdstring | nullyes
identityWithheldbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/suppliersCreate a supplier

API key scope `suppliers:write` (or `suppliers:*`, `*`).

Request body (JSON)
FieldTypeRequired
namestringyes
countrystring | nullno
emailstring | nullno

Returns 201 Supplier

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/suppliers/{id}Get a supplier

API key scope `suppliers:read` (or `suppliers:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
idstringyes
organizationIdstringyes
namestringyes
createdAtstring (date-time)yes
metadataanyyes
countrystring | nullyes
emailstring | nullyes
trustScorenumber | nullyes
tiernumberyes
viaSupplierIdstring | nullyes
identityWithheldbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PATCH/suppliers/{id}Update a supplier

API key scope `suppliers:write` (or `suppliers:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
namestringno
countrystring | nullno
emailstring | nullno
Response body (JSON, 200)
FieldTypeRequired
idstringyes
organizationIdstringyes
namestringyes
createdAtstring (date-time)yes
metadataanyyes
countrystring | nullyes
emailstring | nullyes
trustScorenumber | nullyes
tiernumberyes
viaSupplierIdstring | nullyes
identityWithheldbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/suppliers/{id}/capabilitiesGet supplier capabilities

What a supplier is recorded as able to make (the input the analysis depends on).

API key scope `suppliers:read` (or `suppliers:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
supplierIdstringyes
namestringyes
countrystring | nullyes
materialsstring[]yes
normalisedstring[]yes
criticalMaterialsobject[]yes
certificationsobject[]yes
leadTimeDaysnumber | nullyes
recordedbooleanyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PUT/suppliers/{id}/capabilitiesUpdate supplier capabilities

Record capabilities: materials, certifications with validity, lead time.

API key scope `suppliers:write` (or `suppliers:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
materialsstring[]no
certificationsobject[]no
leadTimeDaysnumber | nullno
notesstring | nullno
replacebooleanno
Response body (JSON, 200)
FieldTypeRequired
updatedAtanyyes
supplierIdstringyes
namestringyes
countrystring | nullyes
materialsstring[]yes
normalisedstring[]yes
criticalMaterialsobject[]yes
certificationsobject[]yes
leadTimeDaysnumber | nullyes
recordedbooleanyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/suppliers/{id}/requestAdd supplier request

API key scope `suppliers:write` (or `suppliers:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
dppIdstringno
requestedFieldsstring[]no
requestItemsanyno
requestedDocumentsanyno
messagestringno

Returns 201 SupplierRequest2

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/suppliers/{id}/requestsGet supplier requests

API key scope `suppliers:read` (or `suppliers:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 SupplierRequest[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/suppliers/{id}/requestsAdd supplier requests

API key scope `suppliers:write` (or `suppliers:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)

An array of objects with these fields:

FieldTypeRequired
namestringyes
instructionsstringno

Returns 201 SupplierRequest2

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/suppliers/{id}/requests/{requestId}/inviteAdd supplier requests invite

API key scope `suppliers:write` (or `suppliers:*`, `*`).

ParameterInTypeRequired
idpathstringyes
requestIdpathstringyes
Response body (JSON, 201)
FieldTypeRequired
inviteSentbooleanyes
driverstringyes
inviteUrlstringno

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/suppliers/{id}/requests/{requestId}/invite/resendAdd supplier requests invite resend

API key scope `suppliers:write` (or `suppliers:*`, `*`).

ParameterInTypeRequired
idpathstringyes
requestIdpathstringyes
Response body (JSON, 201)
FieldTypeRequired
inviteSentbooleanyes
driverstringyes
inviteUrlstringno

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/suppliers/{id}/requests/{requestId}/respondRespond requests of a supplier

Record a response the supplier gave outside the portal (email, call, a signed form). It goes through the same bounds as a portal answer, and the audit entry names who recorded it and keeps any answer it replaces.

API key scope `suppliers:write` (or `suppliers:*`, `*`).

ParameterInTypeRequired
idpathstringyes
requestIdpathstringyes
Request body (JSON)
FieldTypeRequired
datamap of anyyes
notestringno

Returns 201 SupplierRequest

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/suppliers/{id}/riskGet supplier risk

Deterministic supplier risk heuristic (master spec §6.2, local signals only): trust score, request response rate, country risk tier and data recency. External registries (sanctions, OpenCorporates, EcoVadis) remain adapters. The arithmetic lives in `@dpp/shared` (`supplierRiskSignals` / `supplierRiskScore`), because the sourcing resilience analysis and the AI-assisted assessment must produce the same number: this endpoint used to carry a second copy of the formula, and the two had drifted apart.

API key scope `suppliers:read` (or `suppliers:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
supplierIdstringyes
scorenumberyes
level"low" | "medium" | "high"yes
factorsobjectyes
latestAssessmentobjectyes
disclaimerstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/suppliers/{id}/risk-assessmentAdd supplier risk assessment

Assesses a supplier from its declaration responses and attributed documents. dryRun records nothing.

API key scope `suppliers:write` (or `suppliers:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)

RiskAssessmentInput

Returns 201 object | object

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/suppliers/{id}/risk-assessmentsGet supplier risk assessments

API key scope `suppliers:read` (or `suppliers:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
supplierIdstringyes
itemsobject[]yes
countnumberyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PUT/suppliers/{id}/screeningUpdate supplier screening

Records the sanctions screening result on the supplier record. This is what closes the platform-side gap - without it every assessment reports the absence of a check.

API key scope `suppliers:write` (or `suppliers:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
sourcestringno
referencestringno
datestringno
outcomestringno
notestringno
Response body (JSON, 200)
FieldTypeRequired
supplierIdstringyes
screeningobjectyes
effectstringyes
caveatstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/suppliers/requestsList supplier requests

API key scope `suppliers:read` (or `suppliers:*`, `*`).

Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
requestSupplierRequestyes
supplierNamestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Public passport access

Read-only endpoints behind QR codes and GS1 Digital Links: published passport data, its public documents and labels. No API key needed.

GET/.well-known/jwks.jsonList resolver document jwks.jsonpublic

Public: no API key needed.

Response body (JSON, 200)
FieldTypeRequired
keysobject[]yes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

POST/public/carriers/{id}/scanAdd public carrier scanpublic

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
countrystringno
devicestringno

Returns 201 ScanEvent

201 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/document-links/{token}Get a public document linkpublic

A share link issued by POST /documents/{id}/signed-url: anyone holding the link can download the file until it expires. The link names the document's hash, so a replaced file stops resolving.

Public: no API key needed.

ParameterInTypeRequired
tokenpathstringyes

Returns 200 with a file (application/octet-stream).

200 File400 Invalid input404 Not found429 Rate limit exceeded

GET/public/documents/{id}/fileGet public document filepublic

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes

Returns 200 with a file (application/octet-stream).

200 File400 Invalid input404 Not found429 Rate limit exceeded

GET/public/dpp/{id}Get a public passportpublic

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
langquerystringno
accept-languageheaderstringno
Response body (JSON, 200)
FieldTypeRequired
regulatoryobjectyes
disclosedPathsstring[]no
redactedPathsstring[]no
defaultRedactedPathsstring[]no
translatedPathsstring[]yes
translationReleasedAtstring (date-time)no
productobjectyes
dataanyyes
versionnumber | nullyes
ownerobject | any | nullyes
issuerIdentityobjectyes
productModelobject | any | nullyes
localestringyes
interfaceLocalestringyes
sourceLocalestringyes
languagesLocaleInfo[]yes
availableLocalesstring[]yes
translationStatusstring | nullyes
suspensionobjectno
retirementobjectno
withdrawalobjectno
idstringyes
statusstringyes
lifecycleStatestringyes
publishedMarketsstring[] | any | nullyes
publishedAtstring (date-time) | nullyes
availabilityobjectyes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/dpp/{id}/aas.jsonGet public passport aas.jsonpublic

Asset Administration Shell of a published passport, carrying exactly what the public passport shows.

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
assetAdministrationShellsobject[]yes
submodelsobject | object[]yes
conceptDescriptionsany[]yes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/dpp/{id}/componentsGet public passport componentspublic

Public components of a published passport, linked to their own published passports; masses and suppliers are not published.

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
componentsobject[]yes
undisclosedComponentsnumberyes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/dpp/{id}/custodyGet public passport custodypublic

A published passport's custody claims: model, its wording, scheme and claimed share.

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
statementsobject[]yes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/dpp/{id}/displayGet public passport displaypublic

The published passport as labelled groups, the carbon declaration and the withheld fields.

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
langquerystringno
accept-languageheaderstringno
Response body (JSON, 200)
FieldTypeRequired
idstringyes
versionanyyes
categorystringyes
localeanyyes
groupsDisplayGroup[]yes
carbonCarbonStatement | any | nullyes
withheldWithheldField[]yes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/dpp/{id}/documentsGet public passport documentspublic

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
langquerystringno
accept-languageheaderstringno
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
localestringyes
documentsobject | object[]yes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/dpp/{id}/durabilityGet public passport durabilitypublic

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
productobjectyes
repairabilityobject | any | nullyes
recycledContentobject | any | nullyes
criticalRawMaterialsobject[]yes
caveatstringyes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/dpp/{id}/epd-summaryGet public passport epd summarypublic

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
productobjectyes
headlineobjectyes
indicatorsobject[]yes
verificationConstructionVerificationyes
endOfLifeobjectyes
status"partial" | "declared" | "insufficient"yes
caveatstringyes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/dpp/{id}/items/{serial}Get public passport itemspublic

Public state of one item of a published passport: serial, batch and lifecycle status only.

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
serialpathstringyes
Response body (JSON, 200)
FieldTypeRequired
status"active" | "recalled" | "recycled" | "returned" | "refurbished" | "destroyed" | "sold" | "in_use"yes
serialstringyes
batchstring | nullyes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/dpp/{id}/labelGet public passport labelpublic

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
productobjectyes
classifiedbooleanyes
labelComparisonLabelComparisonyes
signalWord"DANGER" | "WARNING" | nullyes
pictogramsobject[]yes
hazardStatementsobject[]yes
precautionaryStatementsobject[]yes
ufistring | nullyes
unresolvedComponentsnumberyes
methodstringyes
disclaimerstringyes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/dpp/{id}/leaseLease a public passportpublic

Public lease status (asset is on lease, type and end date only).

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes

Returns 200 object | object

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/dpp/{id}/lineageGet public passport lineagepublic

Public remanufacturing lineage: structure and dates, never payloads.

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
derivationstring | nullyes
ancestryobject[]yes
descendantsobject[]yes
depthnumberyes
unpublishedRelativesnumberyes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/dpp/{id}/material-passportGet public passport material passportpublic

Recycler / dismantler material passport for a published DPP.

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
productobjectyes
materialsmap of any[] | any | nullyes
totalDeclaredMassKgnumber | nullyes
totalDeclaredMassBandstring | nullyes
massBasis"none" | "declared-mass" | "declared-share"yes
repairabilityanyyes
endOfLifeanyyes
environmentalanyyes
documentsobject[]yes
notestringyes
withdrawalobject | nullno
dppIdstringyes
statusstringyes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/dpp/{id}/ownershipGet public passport ownershippublic

Privacy-preserving custody chain (owner categories + dates, no personal data).

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
transfersnumberyes
currentOwnerTypestring | nullyes
chainobject[]yes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/dpp/{id}/qr.pngGet public passport qr.pngpublic

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
sizequerystringno

Returns 200 with a file (image/png).

200 File400 Invalid input404 Not found429 Rate limit exceeded

GET/public/dpp/{id}/substancesGet public passport substancespublic

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdstringyes
productobjectyes
containsSvhcbooleanyes
candidateListVersionstringyes
candidateListAgeSvhcListAgeyes
thresholdPercentnumberyes
substancesobject[]yes
scipNumberstring | nullyes
safeUsestring[]yes
requestedUnderstringyes
responseTimeDaysnumberyes
warningsstring[]yes
disclaimerstringyes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/dpp/{id}/widgetGet public passport widgetpublic

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes

Returns 200 WidgetPayload

200 Success400 Invalid input404 Not found429 Rate limit exceeded

POST/public/integrations/{id}/pushAdd public integration pushpublic

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
dryRunquerystringno
Request body (JSON)

object

Response body (JSON, 201)
FieldTypeRequired
runIdstringyes
dryRunbooleanyes
summaryobjectyes
outcomesOutcome[]yes

201 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/organizations/{id}/did.jsonGet public organization did.jsonpublic

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
idstringyes
verificationMethodVerificationMethod[]no
assertionMethodstring | VerificationMethod[]no
alsoKnownAsstring[]no

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/organizations/{id}/identityGet public organization identitypublic

Public: no API key needed.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
organizationstringyes
didstringyes
verifiedobject[]yes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/sitemap/passportsList public sitemap passportspublic

Published passports of issuers that opted in to search listing.

Public: no API key needed.

Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
idstringyes
updatedAtstringyes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/public/supplier-requests/{token}Get a public supplier requestpublic

Public: no API key needed.

ParameterInTypeRequired
tokenpathstringyes
Response body (JSON, 200)
FieldTypeRequired
idstringyes
organizationNamestringyes
supplierNamestringyes
supplierCountrystring | nullyes
requestedFieldsstring[]yes
linkedPassportobject | any | nullyes
requestItemsSupplierRequestItem[]yes
requestedDocumentsSupplierPortalDocument[]yes
fieldsobject[]yes
messagestring | nullyes
statusstringyes
respondedAtstring (date-time) | nullyes
createdAtstring (date-time)yes
tiernumberyes
canDelegatebooleanyes
delegationsobject[]yes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

POST/public/supplier-requests/{token}/delegateAdd public supplier request delegatepublic

Forwards part of this request to the supplier's own supplier (multi-tier cascading). Only fields and documents of this request can be forwarded; with discloseIdentity false the requesting organization sees a neutral label instead of the upstream name and address. At most 10 per request, up to tier 5.

Public: no API key needed.

ParameterInTypeRequired
tokenpathstringyes
Request body (JSON)
FieldTypeRequired
namestringyes
emailstring (email)yes
countryany | any | nullno
fieldsstring[]yes
documentsstring[]yes
messagestringno
discloseIdentitybooleanyes
Response body (JSON, 201)
FieldTypeRequired
requestIdstringyes
tiernumberyes
identityWithheldbooleanyes
inviteSentbooleanyes

201 Success400 Invalid input404 Not found429 Rate limit exceeded

POST/public/supplier-requests/{token}/documents/{documentSlotId}Add public supplier request documentspublic

Upload one requested document using the unexpired invitation token. Send multipart/form-data with exactly one file field named file and no other fields. Accepts PDF, PNG, JPEG, GIF, WebP, or TIFF up to 10 MiB. Successful uploads permanently consume the requested slot; no replacement or public download is available. Production uploads require malware scanning.

Public: no API key needed.

ParameterInTypeRequired
tokenpathstringyes
documentSlotIdpathstringyes

Returns 201 SupplierPortalDocument

201 Success400 Invalid input404 Not found429 Rate limit exceeded

POST/public/supplier-requests/{token}/respondRespond a public supplier requestpublic

Public: no API key needed.

ParameterInTypeRequired
tokenpathstringyes
Request body (JSON)
FieldTypeRequired
datamap of anyyes
Response body (JSON, 201)
FieldTypeRequired
statusstringyes

201 Success400 Invalid input404 Not found429 Rate limit exceeded

Service

Service health and the public status summary.

GET/healthList service healthpublic

Public: no API key needed.

Response body (JSON, 200)
FieldTypeRequired
okbooleanyes
servicestringyes
timestringyes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/health/readyList service health readypublic

Readiness probe: PostgreSQL and Redis connectivity, and a database migrated to this build's schema.

Public: no API key needed.

Response body (JSON, 200)
FieldTypeRequired
okbooleanyes
checksmap of "failed" | "ok"yes
timestringyes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/statusList statuspublic

Public: no API key needed.

Response body (JSON, 200)
FieldTypeRequired
overall"unknown" | "operational" | "degraded" | "down"yes
updatedAtstringyes
sampleIntervalMinutesnumberyes
measuredSincestring | nullyes
componentsobject[]yes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

Store sync (Shopify / WooCommerce)

Connect a Shopify or WooCommerce store, import its products into the catalogue, export catalogue products as draft listings, and opt in to a daily sync of linked products.

GET/commerce/connectionsList commerce connections

API key scope `commerce:read` (or `commerce:*`, `*`).

Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
idstringyes
providerstringyes
providerLabelstringyes
storeUrlstringyes
storeNamestring | nullyes
credentialHintstringyes
lastImportAtstring (date-time) | nullyes
lastExportAtstring (date-time) | nullyes
lastErrorstring | nullyes
autoSyncstringyes
lastAutoSyncAtstring (date-time) | nullyes
instantSyncboolean | nullyes
linkedProductsnumberyes
createdAtstring (date-time)yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/commerce/connectionsCreate commerce connections

API key scope `commerce:write` (or `commerce:*`, `*`). Console users need the owner / admin role.

Request body (JSON)

ConnectInput

Response body (JSON, 201)
FieldTypeRequired
idstringyes
providerstringyes
providerLabelstringyes
storeUrlstringyes
storeNamestring | nullyes
credentialHintstringyes
lastImportAtstring (date-time) | nullyes
lastExportAtstring (date-time) | nullyes
lastErrorstring | nullyes
autoSyncstringyes
lastAutoSyncAtstring (date-time) | nullyes
instantSyncboolean | nullyes
linkedProductsnumberyes
createdAtstring (date-time)yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PATCH/commerce/connections/{id}Update commerce connections

Opt in to a daily sync of linked products: { autoSync: "off" | "import" | "export" }.

API key scope `commerce:write` (or `commerce:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
autoSyncstringno
Response body (JSON, 200)
FieldTypeRequired
idstringyes
providerstringyes
providerLabelstringyes
storeUrlstringyes
storeNamestring | nullyes
credentialHintstringyes
lastImportAtstring (date-time) | nullyes
lastExportAtstring (date-time) | nullyes
lastErrorstring | nullyes
autoSyncstringyes
lastAutoSyncAtstring (date-time) | nullyes
instantSyncboolean | nullyes
linkedProductsnumberyes
createdAtstring (date-time)yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/commerce/connections/{id}Delete commerce connections

API key scope `commerce:write` (or `commerce:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
deletedbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/commerce/connections/{id}/exportExport connections of a commerce

API key scope `commerce:write` (or `commerce:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
productIdsstring[]no
Response body (JSON, 201)
FieldTypeRequired
summarymap of numberyes
resultsobject[]yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/commerce/connections/{id}/importImport connections of a commerce

API key scope `commerce:write` (or `commerce:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)

ImportInput

Response body (JSON, 201)
FieldTypeRequired
summarymap of numberyes
planPlanCheckyes
resultsobject[]yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/commerce/connections/{id}/instantAdd commerce connections instant

WooCommerce: register product webhooks so store changes reach DPP Shield within seconds.

API key scope `commerce:write` (or `commerce:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 201)
FieldTypeRequired
idstringyes
providerstringyes
providerLabelstringyes
storeUrlstringyes
storeNamestring | nullyes
credentialHintstringyes
lastImportAtstring (date-time) | nullyes
lastExportAtstring (date-time) | nullyes
lastErrorstring | nullyes
autoSyncstringyes
lastAutoSyncAtstring (date-time) | nullyes
instantSyncboolean | nullyes
linkedProductsnumberyes
createdAtstring (date-time)yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/commerce/connections/{id}/productsGet commerce connections products

API key scope `commerce:read` (or `commerce:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
connectionobjectyes
truncatedbooleanyes
planPlanCheckyes
productsobject[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/commerce/shopify/claimCreate commerce shopify claim

Attach a shop that installed the DPP Shield Shopify app to this organization.

API key scope `commerce:write` (or `commerce:*`, `*`). Console users need the owner / admin role.

Request body (JSON)
FieldTypeRequired
tokenstringno
Response body (JSON, 201)
FieldTypeRequired
connectionIdstringyes
shopstringyes
storeNamestringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/commerce/woocommerce/authorizeCreate commerce woocommerce authorize

Start the one-click WooCommerce connection; the browser is sent to the returned URL.

API key scope `commerce:write` (or `commerce:*`, `*`). Console users need the owner / admin role.

Request body (JSON)
FieldTypeRequired
storeUrlstringno
Response body (JSON, 201)
FieldTypeRequired
urlstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Marketplace channels

Marketplace and storefront feeds (for example Amazon, Zalando, Shopify): per-channel readiness, generated feeds and recorded submissions.

GET/channelsList channels

The channel catalogue: attribute sets, where they come from and what they require.

API key scope `channels:read` (or `channels:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
profileVersionstringyes
generatedAtstringyes
channelsobject[]yes
caveatstringyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/channels/{channel}Get a channel

One channel's attribute set in full.

API key scope `channels:read` (or `channels:*`, `*`).

ParameterInTypeRequired
channelpathstringyes
Response body (JSON, 200)
FieldTypeRequired
caveatstringyes
idstringyes
labelstringyes
kind"marketplace" | "storefront"yes
marketstringyes
specReferencestringyes
categoriesmap of stringyes
requiresPublishedbooleanyes
formats"json" | "csv"[]yes
delivery"feed" | "metafields"yes
attributesChannelAttribute[]yes
profileVersionstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/channels/{channel}/endpointAdd channel endpoint

API key scope `channels:write` (or `channels:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
channelpathstringyes
Request body (JSON)
FieldTypeRequired
mode"push" | "manual"no
urlstringno
secretstringno
enabledbooleanno
externalAccountstringno
notesstringno

Returns 201 ChannelEndpoint | object

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/channels/{channel}/feedGet channel feed

The generated upload payload (JSON, or CSV with `?format=csv`).

API key scope `channels:read` (or `channels:*`, `*`).

ParameterInTypeRequired
channelpathstringyes
limitquerystringno
dppIdsquerystringno
includeOptionalquerystringno
formatquerystringno

Returns 200 ChannelFeed | object

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/channels/{channel}/feed.csvGet channel feed.csv

API key scope `channels:read` (or `channels:*`, `*`).

ParameterInTypeRequired
channelpathstringyes
limitquerystringno
dppIdsquerystringno
includeOptionalquerystringno

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/channels/{channel}/readinessGet channel readiness

Per-passport readiness: what is filled, what a mandatory attribute is missing.

API key scope `channels:read` (or `channels:*`, `*`).

ParameterInTypeRequired
channelpathstringyes
limitquerystringno
dppIdsquerystringno
Response body (JSON, 200)
FieldTypeRequired
channelstringyes
channelLabelstringyes
profileVersionstringyes
generatedAtstringyes
requiredAttributesnumberyes
conditionalAttributesnumberyes
countsobjectyes
commonBlockersobject[]yes
rowsChannelRow[]yes
caveatstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/channels/{channel}/syncSync a channel

Builds the payload, records the sync and — when an endpoint is configured — dispatches it.

API key scope `channels:write` (or `channels:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
channelpathstringyes
Request body (JSON)
FieldTypeRequired
dppIdsstring[]no
limitnumberno
includeOptionalbooleanno
format"json" | "csv"no
dryRunbooleanno
notestringno

Returns 201 object | object

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/channels/endpointsList channel endpoints

Where each channel's feed goes.

API key scope `channels:read` (or `channels:*`, `*`). Console users need the owner / admin role.

Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
channelstringyes
labelstringyes
configuredbooleanyes
modestringyes
enabledbooleanyes
externalAccountstring | nullyes
lastSyncAtstring (date-time) | nullyes
webhookIdstring | nullyes
notesstring | nullyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/channels/submissionsList channel submissions

API key scope `channels:read` (or `channels:*`, `*`).

ParameterInTypeRequired
channelquerystringno
limitquerystringno
Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
referencestringyes
versionNumbernumberyes
channelstringyes
statusstringyes
formatstringyes
productsnumberyes
readyProductsnumberyes
skippedProductsnumberyes
attributesFillednumberyes
attributesMissingnumberyes
requiredMissingnumberyes
payloadHashstringyes
dispatchedbooleanyes
externalIdstring | nullyes
createdAtstring (date-time)yes
acknowledgedAtstring (date-time) | nullyes
cancelledAtstring (date-time) | nullyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/channels/submissions/{reference}Get channel submissions

API key scope `channels:read` (or `channels:*`, `*`).

ParameterInTypeRequired
referencepathstringyes

Returns 200 ChannelSubmission

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/channels/submissions/{reference}/acknowledgeAcknowledge submissions of a channel

Records the channel's own identifier — the difference between "sent" and "done".

API key scope `channels:write` (or `channels:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
referencepathstringyes
Request body (JSON)
FieldTypeRequired
externalIdstringno
notestringno

Returns 201 ChannelSubmission

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/channels/submissions/{reference}/cancelCancel submissions of a channel

API key scope `channels:write` (or `channels:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
referencepathstringyes
Request body (JSON)
FieldTypeRequired
reasonstringno

Returns 201 ChannelSubmission

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/channels/widget/snippetList channel widget snippet

The embed snippet for a passport, plus a preview URL.

API key scope `channels:read` (or `channels:*`, `*`).

ParameterInTypeRequired
dppIdquerystringyes
channelquerystringno
targetIdquerystringno
themequerystringno
Response body (JSON, 200)
FieldTypeRequired
previewUrlstringyes
notestringyes
htmlstringyes
targetIdstringyes
scriptUrlstringyes
dppIdstringyes
channelstring | nullyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Webhooks

Subscribe an HTTPS endpoint to platform events. Deliveries are signed (x-dpp-signature), retried, and can be replayed.

GET/webhooksList webhooks

API key scope `webhooks:read` (or `webhooks:*`, `*`). Console users need the owner / admin role.

Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
hasSecretbooleanyes
secretHintstring | nullyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/webhooksCreate a webhook

API key scope `webhooks:write` (or `webhooks:*`, `*`). Console users need the owner / admin role.

Request body (JSON)
FieldTypeRequired
urlstringyes
secretstringno
eventsstring[]no
Response body (JSON, 201)
FieldTypeRequired
secretstringyes
hasSecretbooleanyes
secretHintstringyes
activebooleanyes
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
urlstringyes
eventsanyyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/webhooks/{id}Delete a webhook

API key scope `webhooks:write` (or `webhooks:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
deletedbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/webhooks/{id}/deliveriesGet webhook deliveries

Delivery attempts (status codes, failures, timestamps).

API key scope `webhooks:read` (or `webhooks:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes

Returns 200 WebhookDelivery[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/webhooks/{id}/deliveries/{deliveryId}/replayReplay deliveries of a webhook

Re-queues a recorded delivery (requires a stored payload).

API key scope `webhooks:write` (or `webhooks:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
deliveryIdpathstringyes
Response body (JSON, 201)
FieldTypeRequired
replayedbooleanyes
deliveryIdstringyes
eventstringyes
targetstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/webhooks/eventsList webhook events

Supported webhook event catalogue (master spec §9.2).

API key scope `webhooks:read` (or `webhooks:*`, `*`). Console users need the owner / admin role.

Response body (JSON, 200)
FieldTypeRequired
eventsobject[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

EPCIS traceability

GS1 EPCIS 2.0 events for supply-chain traceability, with query and subscription support.

GET/epcis/eventsList EPCIS event events

API key scope `epcis:read` (or `epcis:*`, `*`).

ParameterInTypeRequired
bizStepquerystringno
typequerystringno
gtinquerystringno
fromquerystringno
toquerystringno
limitquerystringno
offsetquerystringno
Response body (JSON, 200)
FieldTypeRequired
@contextstring | map of string[]yes
typestringyes
schemaVersionstringyes
creationDatestringyes
countnumberyes
filtersobjectyes
epcisBodyobjectyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/epcis/subscriptionsList EPCIS event subscriptions

API key scope `epcis:read` (or `epcis:*`, `*`).

Returns 200 EpcisSubscription[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/epcis/subscriptionsCreate EPCIS event subscriptions

API key scope `epcis:write` (or `epcis:*`, `*`). Console users need the owner / admin role.

Request body (JSON)

SubscriptionInput

Response body (JSON, 201)
FieldTypeRequired
querystringyes
signingSecretstringyes
activebooleanyes
idstringyes
organizationIdstringyes
namestringyes
createdAtstring (date-time)yes
createdBystring | nullyes
updatedAtstring (date-time)yes
webhookIdstringyes
destinationUrlstringyes
filtersanyyes
notifiedCountnumberyes
backfilledCountnumberyes
lastNotifiedAtstring (date-time) | nullyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/epcis/subscriptions/{id}Get EPCIS event subscriptions

API key scope `epcis:read` (or `epcis:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
querystringyes
idstringyes
organizationIdstringyes
namestringyes
webhookIdstringyes
destinationUrlstringyes
filtersanyyes
activebooleanyes
createdBystring | nullyes
notifiedCountnumberyes
backfilledCountnumberyes
lastNotifiedAtstring (date-time) | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PATCH/epcis/subscriptions/{id}Update EPCIS event subscriptions

API key scope `epcis:write` (or `epcis:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
namestringno
urlstringno
secretstring | nullno
filtersanyno
activebooleanno
Response body (JSON, 200)
FieldTypeRequired
querystringyes
idstringyes
organizationIdstringyes
namestringyes
webhookIdstringyes
destinationUrlstringyes
filtersanyyes
activebooleanyes
createdBystring | nullyes
notifiedCountnumberyes
backfilledCountnumberyes
lastNotifiedAtstring (date-time) | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/epcis/subscriptions/{id}Delete EPCIS event subscriptions

API key scope `epcis:write` (or `epcis:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
deletedbooleanyes
idstringyes
webhookIdstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/epcis/subscriptions/{id}/backfillAdd EPCIS event subscriptions backfill

Catch-up: pushes matching historical events (bounded) to a new subscriber.

API key scope `epcis:write` (or `epcis:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
fromstringno
tostringno
limitnumberno
Response body (JSON, 201)
FieldTypeRequired
subscriptionIdstringyes
scannednumberyes
queuednumberyes
limitnumberyes
backfilledTotalnumberyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/epcis/subscriptions/{id}/deliveriesGet EPCIS event subscriptions deliveries

API key scope `epcis:read` (or `epcis:*`, `*`).

ParameterInTypeRequired
idpathstringyes
limitquerystringno

Returns 200 WebhookDelivery[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/epcis/subscriptions/{id}/deliveries/{deliveryId}/replayReplay subscriptions deliveries of a EPCIS event

Re-drives a failed push (e.g. the subscriber was down).

API key scope `epcis:write` (or `epcis:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
deliveryIdpathstringyes
Response body (JSON, 201)
FieldTypeRequired
replayedbooleanyes
deliveryIdstringyes
eventstringyes
targetstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/epcis/subscriptions/{id}/testTest subscriptions of a EPCIS event

Sends a sample capture document so the subscriber can verify endpoint + signature.

API key scope `epcis:write` (or `epcis:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 201)
FieldTypeRequired
queuedbooleanyes
samplebooleanyes
destinationstringyes
eventIdstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/epcis/subscriptions/presetsList EPCIS event subscriptions presets

Filter vocabulary + ready-made templates for the console.

API key scope `epcis:read` (or `epcis:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
presetsobject | object | object | object[]yes
semanticsstringyes
filterKeysstring[]yes
bizStepsobject[]yes
dispositionsobject[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Data carriers (QR / GS1)

QR codes, GS1 Digital Link URIs, company prefixes and other data carriers that point to passports.

GET/carriers/{id}/analyticsGet carrier analytics

API key scope `carriers:read` (or `carriers:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
carrierobjectyes
scanCountnumberyes
byCountryobject[]yes
byDeviceobject[]yes
byDayobject[]yes
recentobject[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/carriers/datamatrixCreate carrier datamatrix

GS1 DataMatrix carrier: the symbol regulated products actually carry (small enough for a cell or a device label). `encoding=element-string` encodes AIs with FNC1, `digital-link` encodes the resolvable URI.

API key scope `carriers:write` (or `carriers:*`, `*`).

Request body (JSON)
FieldTypeRequired
dppIdstringyes
encoding"digital-link" | "element-string"no
serialstringno
batchstringno
scalenumberno
Response body (JSON, 201)
FieldTypeRequired
symbolobjectyes
typestringyes
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
dppIdstringyes
payloadstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/carriers/nfcCreate carrier nfc

API key scope `carriers:write` (or `carriers:*`, `*`).

Request body (JSON)
FieldTypeRequired
dppIdstringyes

Returns 201 Carrier

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/carriers/qrCreate carrier qr

API key scope `carriers:write` (or `carriers:*`, `*`).

Request body (JSON)
FieldTypeRequired
dppIdstringyes
format"url" | "gs1"no

Returns 201 Carrier

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/carriers/rfidCreate carrier rfid

API key scope `carriers:write` (or `carriers:*`, `*`).

Request body (JSON)
FieldTypeRequired
dppIdstringyes
filterValuenumberno
serialstringno

Returns 201 Carrier

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/carriers/symbolCreate carrier symbol

Renders a symbol without persisting it (label design, pre-flight checks).

API key scope `carriers:write` (or `carriers:*`, `*`).

Request body (JSON)
FieldTypeRequired
gtinstringno
serialstringno
batchstringno
encoding"digital-link" | "element-string"no
scalenumberno

Returns 201 RenderedSymbol

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/gs1/dpp/{id}/element-stringGet GS1 setting dpp element string

Builds the element string for a passport, using a carrier serial when present.

API key scope `gs1:read` (or `gs1:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
carrierIdstring | nullyes
gtin14stringyes
elementStringstringyes
rawstringyes
fixedstring[]yes
variablestring[]yes
issuesstring[]yes
validbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/gs1/parseCreate GS1 setting parse

Parses a scanned element string (parenthesised or raw with FNC1 separators).

API key scope `gs1:write` (or `gs1:*`, `*`).

Request body (JSON)
FieldTypeRequired
elementStringstringno

Returns 201 ParseResult

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/gs1/prefixesList GS1 setting prefixes

API key scope `gs1:read` (or `gs1:*`, `*`).

Returns 200 Gs1CompanyPrefixe2[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/gs1/prefixesCreate GS1 setting prefixes

API key scope `gs1:write` (or `gs1:*`, `*`). Console users need the owner / admin role.

Request body (JSON)
FieldTypeRequired
prefixstringno
evidencestringno

Returns 201 Gs1CompanyPrefixe

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/gs1/prefixes/{id}Delete GS1 setting prefixes

API key scope `gs1:write` (or `gs1:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
removedbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/gs1/prefixes/policyList GS1 setting prefixes policy

API key scope `gs1:read` (or `gs1:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
enforcement"off" | "warn" | "strict"yes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Verifiable credentials

W3C verifiable credentials issued for published passports, their revocation, and public verification.

GET/credentialsList credentials

Issuance history, optionally scoped to one passport.

API key scope `credentials:read` (or `credentials:*`, `*`).

ParameterInTypeRequired
dppIdquerystringno
Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
idstringyes
dppIdstringyes
jtistringyes
kidstringyes
versionnumberyes
statusstringyes
issuedAtstring (date-time)yes
expiresAtstring (date-time)yes
revokedAtstring (date-time) | nullyes
revokedReasonstring | nullyes
subjectHashstringyes
claimsanyyes
tokenstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/credentials/{jti}/revokeRevoke a credential

Revocation is permanent and visible to every verifier.

API key scope `credentials:write` (or `credentials:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
jtipathstringyes
Request body (JSON)
FieldTypeRequired
reasonstringno
Response body (JSON, 201)
FieldTypeRequired
jtistringyes
statusstringyes
revokedAtstring (date-time) | nullyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/credentials/keysList credential keys

API key scope `credentials:read` (or `credentials:*`, `*`).

Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
idstringyes
kidstringyes
algstringyes
curvenamestringyes
statusstringyes
createdAtstring (date-time)yes
retiredAtstring (date-time) | nullyes
publicJwkanyyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/credentials/keys/rotateRotate keys of credentials

Creates a new Ed25519 keypair; the previous key stays published for verification.

API key scope `credentials:write` (or `credentials:*`, `*`). Console users need the owner / admin role.

Response body (JSON, 201)
FieldTypeRequired
idstringyes
kidstringyes
publicJwkmap of anyyes
privateJwkmap of anyyes
privateJwkEncryptedstring | nullyes
statusstringyes
createdAtstring (date-time)yes
organizationIdstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/credentials/public/{dppId}Get credential publicpublic

The newest valid credential for a published passport.

Public: no API key needed.

ParameterInTypeRequired
dppIdpathstringyes
Response body (JSON, 200)
FieldTypeRequired
jtistringyes
kidstringyes
tokenstringyes
claimsanyyes
expiresAtstring (date-time)yes

200 Success400 Invalid input404 Not found429 Rate limit exceeded

GET/credentials/public/{dppId}/fileGet credential public filepublic

Download the signed JWT for independent verification or an evidence handoff.

Public: no API key needed.

ParameterInTypeRequired
dppIdpathstringyes

Returns 200 with a file (application/octet-stream).

200 File400 Invalid input404 Not found429 Rate limit exceeded

POST/credentials/verifyVerify credentialspublic

Verifies a credential token: signature, validity window, revocation, payload freshness.

Public: no API key needed.

Request body (JSON)
FieldTypeRequired
tokenstringno
credentialstringno

Returns 201 object | object | object

201 Success400 Invalid input404 Not found429 Rate limit exceeded

Exports

Exports of passports and related data in CSV and JSON formats.

GET/exports/audit-logs.csvList export audit logs.csv

Immutable audit trail export (admin/owner only) with date filtering.

API key scope `exports:read` (or `exports:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
fromquerystringno
toquerystringno
limitquerystringyes

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/exports/csrd.csvList export csrd.csv

CSRD-style portfolio sustainability summary (master §12 Milestone 3.2): per-category product/passport counts, compliance results and declared carbon footprint totals (values come from `environmental.carbon_footprint`). Counted by the database: the current version's footprint and the newest run of each passport.

API key scope `exports:read` (or `exports:*`, `*`). Console users need the owner / admin role.

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/exports/dpps.csvList export dpps.csv

API key scope `exports:read` (or `exports:*`, `*`).

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/exports/products.csvList export products.csv

API key scope `exports:read` (or `exports:*`, `*`).

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/exports/regulator/documents.csvList export regulator documents.csv

Evidence register with expiry status (auditor / regulator evidence trail).

API key scope `exports:read` (or `exports:*`, `*`).

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/exports/regulator/dpps.csvList export regulator dpps.csv

Regulator-facing passport summary (master spec §5 Module 7 — CSV per regulator template): identity, market status, latest compliance result and the environmental values present in the current immutable version. Each batch reads only the current version's environmental values and the newest run of each passport; every version (with its full data) and every run used to be loaded for the whole tenant.

API key scope `exports:read` (or `exports:*`, `*`).

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Bulk jobs

Asynchronous bulk operations (CSV import, bulk create, revalidation) and their status.

GET/jobs/{id}Get a job

API key scope `jobs:read` (or `jobs:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
idstringno
namestringyes
state"active" | "unknown" | "failed" | "completed" | "delayed" | "prioritized" | "waiting" | "waiting-children"yes
progressanyyes
resultanyyes
failedReasonstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/jobs/bulkCreate job bulk

API key scope `jobs:write` (or `jobs:*`, `*`).

Request body (JSON)
FieldTypeRequired
itemsany[]yes
Response body (JSON, 201)
FieldTypeRequired
jobIdstringno
statusstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/jobs/dpp/{id}/revalidateRevalidate dpp of a job

API key scope `jobs:write` (or `jobs:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 201)
FieldTypeRequired
jobIdstringno
statusstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/jobs/importImport jobs

API key scope `jobs:write` (or `jobs:*`, `*`).

Request body (JSON)
FieldTypeRequired
csvstringyes
Response body (JSON, 201)
FieldTypeRequired
jobIdstringno
statusstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Workspaces

Workspaces for separating brands or business units inside one organization.

GET/workspacesList workspaces

API key scope `workspaces:read` (or `workspaces:*`, `*`).

Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
productCountnumberyes
idstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/workspacesCreate a workspace

API key scope `workspaces:write` (or `workspaces:*`, `*`). Console users need the owner / admin role.

Request body (JSON)
FieldTypeRequired
namestringyes
brandstringno

Returns 201 Workspace

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/workspaces/{id}Get a workspace

API key scope `workspaces:read` (or `workspaces:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 Workspace

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PATCH/workspaces/{id}Update a workspace

API key scope `workspaces:write` (or `workspaces:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
namestringno
brandstringno

Returns 200 Workspace

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/workspaces/{id}Delete a workspace

API key scope `workspaces:write` (or `workspaces:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
deletedbooleanyes
idstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Custom fields

Organization-specific passport fields added on top of a category's regulation schema.

GET/schema-extensionsList schema extensions

API key scope `schema-extensions:read` (or `schema-extensions:*`, `*`).

ParameterInTypeRequired
categoryquerystringno

Returns 200 SchemaExtension[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/schema-extensionsCreate a schema extension

API key scope `schema-extensions:write` (or `schema-extensions:*`, `*`). Console users need the owner / admin role.

Request body (JSON)

ExtensionInput

Returns 201 SchemaExtension2

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/schema-extensions/{id}Get a schema extension

API key scope `schema-extensions:read` (or `schema-extensions:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 SchemaExtension

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PATCH/schema-extensions/{id}Update a schema extension

API key scope `schema-extensions:write` (or `schema-extensions:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
keystringno
labelstringno
categorystring | nullno
descriptionstring | nullno
type"string" | "number" | "boolean" | "date" | "integer" | "enum"no
requiredbooleanno
enumValuesstring[] | any | nullno
patternstring | nullno
minValuenumber | nullno
maxValuenumber | nullno
unitstring | nullno
activebooleanno

Returns 200 SchemaExtension

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/schema-extensions/{id}Delete a schema extension

API key scope `schema-extensions:write` (or `schema-extensions:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
deletedbooleanyes
idstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/schema-extensions/resolveResolve schema extensions

Merged view used by the no-code form renderer: definitions + JSON Schema fragment + UI hints.

API key scope `schema-extensions:read` (or `schema-extensions:*`, `*`).

ParameterInTypeRequired
categoryquerystringyes
Response body (JSON, 200)
FieldTypeRequired
propertiesmap of anyyes
requiredstring[]yes
uimap of anyyes
countnumberyes
categorystringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Translations

Translated passport content for the EU languages, with draft and approval steps.

GET/localization/coverageList translation coverage

Portfolio localization readiness per language and market.

API key scope `localization:read` (or `localization:*`, `*`).

ParameterInTypeRequired
marketsquerystringno
Response body (JSON, 200)
FieldTypeRequired
publishedPassportsnumberyes
localesAuthorednumberyes
localesobject[]yes
machineDraftednumberyes
awaitingReviewnumberyes
machineDraftedLocalesstring[]yes
marketsobject[]yes
advisorybooleanyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/localization/exportExport translations

Translator file for one language across the portfolio (`format=xliff|csv`, `missingOnly=true`).

API key scope `localization:read` (or `localization:*`, `*`).

ParameterInTypeRequired
localequerystringyes
formatquerystringno
missingOnlyquerystringno
Response body (JSON, 200)
FieldTypeRequired
filenamestringyes
contentTypestringyes
passportsnumberyes
unitsnumberyes
contentstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/localization/glossaryList translation glossary

The reviewed glossary, the mask rules, the review checklist and the language notes.

API key scope `localization:read` (or `localization:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
versionstringyes
methodVersionstringyes
termsGlossaryEntry[]yes
patternsobject[]yes
reviewChecklistobject[]yes
caveatstringyes
notestringyes
updateNotestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/localization/importImport translations

Import a translator file (XLIFF 1.2/2.x or the exported CSV) as drafts. Never approves.

API key scope `localization:write` (or `localization:*`, `*`). Console users need the owner / admin / member role.

Request body (JSON)
FieldTypeRequired
localestringyes
formatstringno
contentstringyes
statusstringno
Response body (JSON, 201)
FieldTypeRequired
localestringyes
statusstringyes
passportsnumberyes
appliednumberyes
skippednumberyes
resultsobject[]yes
notestringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/localization/localesList translation locales

EU-24 language catalogue and the status vocabulary of the workflow.

API key scope `localization:read` (or `localization:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
localesLocaleInfo[]yes
statusesany[]yes
productKeysany[]yes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/localization/providerList translation provider

Is machine drafting available, on which model, and what does that mean for translations.

API key scope `localization:read` (or `localization:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
languagesnumberyes
machineDraftingbooleanyes
notestringyes
configuredbooleanyes
providerstringyes
baseUrlHoststring | nullyes
modelstring | nullyes
timeoutMsnumberyes
hasApiKeybooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/localization/queueList translation queue

Drafts, translations ready for approval, and live translations whose source has changed.

API key scope `localization:read` (or `localization:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
itemsany[]yes
countsobjectyes
byLocaleobject[]yes
checklistobject[]yes
caveatstringyes
notestringyes
reviewNotestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/localization/requirementsList translation requirements

Advisory market → language expectations (`?markets=EU,DE`).

API key scope `localization:read` (or `localization:*`, `*`).

ParameterInTypeRequired
marketsquerystringno
Response body (JSON, 200)
FieldTypeRequired
marketsstring[]yes
requirementsobject[]yes
advisorybooleanyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/localization/runsList translation runs

Run history (`?dppId=` to scope it to one passport).

API key scope `localization:read` (or `localization:*`, `*`).

ParameterInTypeRequired
dppIdquerystringno
Response body (JSON, 200)
FieldTypeRequired
runsobject[]yes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/localization/runs/{reference}Get translation runs

API key scope `localization:read` (or `localization:*`, `*`).

ParameterInTypeRequired
referencepathstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/localization/translate-missingCreate translation translate missing

Portfolio drafting: draft the given languages for every passport (or the listed ones) that has no translation in them yet. Runs in the background; never touches an existing translation.

API key scope `localization:write` (or `localization:*`, `*`). Console users need the owner / admin / member role.

Request body (JSON)
FieldTypeRequired
localesstring[]no
dppIdsstring[]no
notestringno
Response body (JSON, 201)
FieldTypeRequired
batchstringyes
queuedbooleanyes
passportsnumberyes
languagesnumberyes
deferrednumberyes
alreadyTranslatednumberyes
notestringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/localization/translation-capabilityList translation translation capability

What drafting means per language: script, review focus.

API key scope `localization:read` (or `localization:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
methodVersionstringyes
glossaryVersionstringyes
languagesobject[]yes
supportedScripts"latin" | "greek" | "cyrillic"[]yes
caveatstringyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Notifications

In-app notifications and digest preferences.

GET/notifications/digest/previewPreview digest of notifications

Renders what the next digest would contain (no email is sent).

API key scope `notifications:read` (or `notifications:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
recipientsstring | null[]yes
subjectstringyes
textstringyes
htmlstringyes
countsobjectyes
allClearbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/notifications/digest/sendCreate notification digest send

API key scope `notifications:write` (or `notifications:*`, `*`). Console users need the owner / admin role.

Response body (JSON, 201)
FieldTypeRequired
sentbooleanyes
recipientsstring[]yes
driverstringyes
deliveredbooleanyes
countsobjectyes
allClearbooleanyes
subjectstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/notifications/settingsList notification settings

API key scope `notifications:read` (or `notifications:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
notifyEmailstring | nullyes
lastDigestAtstring (date-time) | nullyes
frequency"off" | "daily" | "weekly"yes
recipientsstring[]yes
expiryDaysnumberyes
includeSuppliersbooleanyes
includeLeasesbooleanyes
supportedFrequenciesany[]yes
mailDriverstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PATCH/notifications/settingsUpdate settings

API key scope `notifications:write` (or `notifications:*`, `*`). Console users need the owner / admin role.

Request body (JSON)

DigestSettingsInput

Response body (JSON, 200)
FieldTypeRequired
notifyEmailstring | nullyes
lastDigestAtstring (date-time) | nullyes
frequency"off" | "daily" | "weekly"yes
recipientsstring[]yes
expiryDaysnumberyes
includeSuppliersbooleanyes
includeLeasesbooleanyes
supportedFrequenciesany[]yes
mailDriverstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Analytics

Portfolio metrics: passport counts by status, validation scores, coverage and evidence expiry.

GET/analytics/benchmarksList analytics report benchmarks

Anonymized fleet-wide category benchmarks (no tenant identifiers).

API key scope `analytics:read` (or `analytics:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
generatedAtstringyes
privacystringyes
participatingOrganizationsnumberyes
categoriesobject[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/analytics/carbonList analytics report carbon

Portfolio footprint: coverage, totals, baselines in motion and where the emissions sit.

API key scope `analytics:read` (or `analytics:*`, `*`).

ParameterInTypeRequired
limitquerystringno
Response body (JSON, 200)
FieldTypeRequired
generatedAtstringyes
passportsnumberyes
scannedLimitnumberyes
coverageobjectyes
totalsobjectyes
baselinesobjectyes
byCategoryobject[]yes
topContributorsobject[]yes
issuedReportsobject[]yes
methodologyVersionstringyes
disclaimerstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/analytics/chemicalsList analytics report chemicals

Portfolio classification position: hazards, obligations, unresolved components, reviews due.

API key scope `analytics:read` (or `analytics:*`, `*`).

ParameterInTypeRequired
limitquerystringno
Response body (JSON, 200)
FieldTypeRequired
generatedAtstringyes
passportsnumberyes
scannedLimitnumberyes
coverageobjectyes
classificationobjectyes
obligationsobjectyes
topHazardsobject[]yes
byCategoryobject[]yes
revisionsDuenumberyes
clpSubsetVersionstringyes
methodstringyes
disclaimerstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/analytics/constructionList analytics report construction

Construction portfolio: EPD coverage, module depth, declared GWP and the most common gaps.

API key scope `analytics:read` (or `analytics:*`, `*`).

ParameterInTypeRequired
limitquerystringno
categoryquerystringno
Response body (JSON, 200)
FieldTypeRequired
generatedAtstringyes
methodVersionstringyes
standardstringyes
passportsnumberyes
scannedLimitnumberyes
coverageobjectyes
coreIndicatorCoveragePercentnumberyes
gwpobjectyes
modulesobject[]yes
indicatorsobject[]yes
taxonomyVerdictsmap of numberyes
gapSummaryobject[]yes
byCategoryobject[]yes
caveatsobjectyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/analytics/crosscheckList analytics report crosscheck

Portfolio view: unresolved disagreements, documents that could not be read, published verdicts.

API key scope `analytics:read` (or `analytics:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
crosscheckVersionstringyes
passportsnumberyes
openConflictsnumberyes
criticalPassportsnumberyes
conflictsPerPassportobject[]yes
topPathsobject[]yes
documentsobjectyes
reportsobjectyes
caveatstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/analytics/materialsList analytics report materials

Portfolio durability: coverage, repairability classes, recycled content, unsubstantiated claims.

API key scope `analytics:read` (or `analytics:*`, `*`).

ParameterInTypeRequired
limitquerystringno
Response body (JSON, 200)
FieldTypeRequired
generatedAtstringyes
passportsnumberyes
scannedLimitnumberyes
coverageobjectyes
repairabilityobjectyes
recycledContentobjectyes
claimsobjectyes
byCategoryobject[]yes
topMaterialsobject[]yes
gapSummaryobject[]yes
crmListVersionstringyes
methodVersionstringyes
disclaimerstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/analytics/portfolioList analytics report portfolio

API key scope `analytics:read` (or `analytics:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
generatedAtstringyes
productsobjectyes
passportsobjectyes
complianceobjectyes
documentsobjectyes
scansobjectyes
suppliersobjectyes
workspacesobjectyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/analytics/sourcingList analytics report sourcing

Portfolio view: fragile passports, concentrated materials, open decisions.

API key scope `analytics:read` (or `analytics:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
sourcingVersionstringyes
passportsWithAlternativesnumberyes
openDecisionsnumberyes
shortlistednumberyes
adoptednumberyes
blockedCandidatesnumberyes
assessmentsnumberyes
bandsmap of numberyes
weakestobject[]yes
topMaterialsobject[]yes
byPassportobject[]yes
caveatstringyes
emptyNotestring | nullyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/analytics/substancesList analytics report substances

Portfolio substance exposure: where SVHCs are, and where the obligations are unmet.

API key scope `analytics:read` (or `analytics:*`, `*`).

ParameterInTypeRequired
limitquerystringno
Response body (JSON, 200)
FieldTypeRequired
generatedAtstringyes
passportsnumberyes
scannedLimitnumberyes
coverageobjectyes
findingsobjectyes
bySubstanceobject[]yes
byCategoryobject[]yes
propagationGapsobject[]yes
candidateListVersionstringyes
candidateListAgeSvhcListAgeyes
methodVersionstringyes
disclaimerstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Audit log

The organization's tamper-evident audit trail of changes, its NDJSON export with sequence numbers and chain hashes, and streams that push it to a SIEM (signed HTTPS, Splunk HEC or Datadog).

GET/audit-logsList audit log

API key scope `audit-logs:read` (or `audit-logs:*`, `*`). Console users need the admin / owner role.

ParameterInTypeRequired
entityTypequerystringno
entityIdquerystringno
actionquerystringno
fromquerystringno
toquerystringno
limitquerystringyes
offsetquerystringyes

Returns 200 AuditLog[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/audit-logs/export.ndjsonList audit log entry export.ndjson

The audit chain as newline-delimited JSON for a SIEM or an archive: one entry per line in chain order, with its sequence number and hashes so the copy can be verified on its own. Page through a long history with `afterSeq` (the last `seq` received); at most 50,000 entries per request.

API key scope `audit-logs:read` (or `audit-logs:*`, `*`). Console users need the admin / owner role.

ParameterInTypeRequired
afterSeqquerystringyes
fromquerystringno
toquerystringno
limitquerystringyes

Returns 200 with a file (application/x-ndjson).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/audit-logs/verifyVerify audit log

Recompute the organization's audit hash chain (migration 0052) and report the first break. A break is a row whose content no longer matches its hash, a row that does not point at its predecessor's hash, or a gap in the sequence - an edited, reordered or deleted entry.

API key scope `audit-logs:read` (or `audit-logs:*`, `*`). Console users need the admin / owner role.

ParameterInTypeRequired
anchorSeqquerystringno
anchorHashquerystringno
Response body (JSON, 200)
FieldTypeRequired
okbooleanyes
anchorobject | any | nullyes
entriesnumberyes
unchainednumberyes
headSeqnumber | nullyes
headHashobject | nullyes
firstBreakobject | nullyes
checkedAtstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/audit-streamsList audit streams

Streams with their cursor, the chain head and how far each one lags. Secrets are never returned.

API key scope `audit-streams:read` (or `audit-streams:*`, `*`). Console users need the owner / admin role.

Response body (JSON, 200)
FieldTypeRequired
headSeqnumberyes
streamsany[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/audit-streamsCreate a audit stream

Creates a stream starting from now or from the beginning of the chain.

API key scope `audit-streams:write` (or `audit-streams:*`, `*`). Console users need the owner / admin role.

Request body (JSON)
FieldTypeRequired
namestringyes
kind"https" | "splunk-hec" | "datadog"yes
endpointstring (uri)yes
secretstringyes
startFrom"now" | "beginning"yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/audit-streams/{id}Get a audit stream

API key scope `audit-streams:read` (or `audit-streams:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PATCH/audit-streams/{id}Update a audit stream

Renames, re-points, re-keys, pauses or resumes a stream. A new host needs the secret again.

API key scope `audit-streams:write` (or `audit-streams:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
namestringno
endpointstring (uri)no
secretstringno
status"active" | "paused"no

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/audit-streams/{id}Delete a audit stream

API key scope `audit-streams:write` (or `audit-streams:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
deletedbooleanyes
idstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/audit-streams/{id}/testTest a audit stream

Sends one synthetic test event; the cursor does not move.

API key scope `audit-streams:write` (or `audit-streams:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 201)
FieldTypeRequired
deliveredbooleanyes
statusnumber | nullyes
errorstring | nullyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Action inbox

Derived open work across supplier, evidence, validation, publication and translation workflows, with organization-scoped ownership and scheduling.

GET/action-inboxList action inbox

API key scope `action-inbox:read` (or `action-inbox:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
itemsActionItem[]yes
ownersobject[]yes
limitedbooleanyes
generatedAtstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/action-inbox/{key}/assignmentAdd action inbox assignment

Assign ownership, deadline and priority without dismissing the source workflow.

API key scope `action-inbox:write` (or `action-inbox:*`, `*`).

ParameterInTypeRequired
keypathstringyes
Request body (JSON)
FieldTypeRequired
ownerIdstring (uuid) | any | nullyes
dueDatestring | any | nullyes
priority"normal" | "high" | "urgent"yes
notestringyes
expectedRevisionintegeryes

Returns 201 ActionAssignment

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Regulations & compliance

Regulation packs, category schemas, compliance rules and deadlines, and consistency reports that check passports against them.

GET/compliance-rulesList compliance rules

API key scope `compliance-rules:read` (or `compliance-rules:*`, `*`).

ParameterInTypeRequired
categoryquerystringno

Returns 200 OrganizationRule[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/compliance-rulesCreate a compliance rule

API key scope `compliance-rules:write` (or `compliance-rules:*`, `*`). Console users need the owner / admin role.

Request body (JSON)

OrgRuleInput

Returns 201 OrganizationRule2

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/compliance-rules/{id}Get a compliance rule

API key scope `compliance-rules:read` (or `compliance-rules:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 OrganizationRule

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PATCH/compliance-rules/{id}Update a compliance rule

API key scope `compliance-rules:write` (or `compliance-rules:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
codestringno
categorystring | nullno
severity"error" | "info" | "warning"no
definitionmap of anyno
notestring | nullno
activebooleanno
effectiveFromstring | nullno
effectiveTostring | nullno

Returns 200 OrganizationRule

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/compliance-rules/{id}Delete a compliance rule

API key scope `compliance-rules:write` (or `compliance-rules:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
deletedbooleanyes
idstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/compliance/deadlinesList compliance deadlines

Upcoming regulatory rule effective dates for the portfolio's categories.

API key scope `compliance:read` (or `compliance:*`, `*`).

ParameterInTypeRequired
horizonDaysquerystringno
Response body (JSON, 200)
FieldTypeRequired
calendarVersionstringyes
caveatstringyes
categoriesWithoutRulePackstring[]no
horizonDaysnumberyes
lookbackDaysnumberyes
categoriesstring[]yes
upcomingItem[]yes
overduenumberyes
needsLegalConfirmationItem[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/consistency-reportsList consistency reports

API key scope `consistency-reports:read` (or `consistency-reports:*`, `*`).

Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
referenceanyyes
versionNumberanyyes
statusanyyes
verdictanyyes
crosscheckVersionanyyes
dppVersionanyyes
countsobjectyes
documentsobjectyes
conflictingPathsanyyes
gapsanyyes
outOfScopeanyyes
headlineanyyes
noteanyyes
supersededByanyyes
issuedAtanyyes
revokedAtanyyes
revokeReasonanyyes
caveatstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/consistency-reports/{reference}Get a consistency report

API key scope `consistency-reports:read` (or `consistency-reports:*`, `*`).

ParameterInTypeRequired
referencepathstringyes
Response body (JSON, 200)
FieldTypeRequired
payloadanyyes
referenceanyyes
versionNumberanyyes
statusanyyes
verdictanyyes
crosscheckVersionanyyes
dppVersionanyyes
countsobjectyes
documentsobjectyes
conflictingPathsanyyes
gapsanyyes
outOfScopeanyyes
headlineanyyes
noteanyyes
supersededByanyyes
issuedAtanyyes
revokedAtanyyes
revokeReasonanyyes
caveatstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/consistency-reports/{reference}/consistency.csvGet consistency report consistency.csv

API key scope `consistency-reports:read` (or `consistency-reports:*`, `*`).

ParameterInTypeRequired
referencepathstringyes

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/consistency-reports/{reference}/revokeRevoke a consistency report

API key scope `consistency-reports:write` (or `consistency-reports:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
referencepathstringyes
Request body (JSON)
FieldTypeRequired
reasonstringno
Response body (JSON, 201)
FieldTypeRequired
referenceanyyes
versionNumberanyyes
statusanyyes
verdictanyyes
crosscheckVersionanyyes
dppVersionanyyes
countsobjectyes
documentsobjectyes
conflictingPathsanyyes
gapsanyyes
outOfScopeanyyes
headlineanyyes
noteanyyes
supersededByanyyes
issuedAtanyyes
revokedAtanyyes
revokeReasonanyyes
caveatstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/regulationsList regulations

API key scope `regulations:read` (or `regulations:*`, `*`).

Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
rulesnumberyes
categorystringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/regulations/{category}Get a regulation

API key scope `regulations:read` (or `regulations:*`, `*`).

ParameterInTypeRequired
categorypathstringyes

Returns 200 RegulationPack

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/regulations/{category}/schemaGet regulation schema

The category's passport schema, with every field labelled and marked with what the effective EU rules demand (`x-required`, `x-requiredIf`) so a form can show it before the first validation.

API key scope `regulations:read` (or `regulations:*`, `*`).

ParameterInTypeRequired
categorypathstringyes
marketquerystringyes
Response body (JSON, 200)
FieldTypeRequired
categorystringyes
manifestanyyes
schemamap of anyyes
uiUiField[]yes
sourcestringyes
fieldsany[]yes
obligationsany[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/regulations/effectiveList regulation effective

API key scope `regulations:read` (or `regulations:*`, `*`).

ParameterInTypeRequired
marketquerystringyes
Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
categorystringyes
codestringno
marketstringno
versionstringno
statusstringno
legalSourcestring | nullno
effectiveFromstring (date-time) | nullno
effectiveTostring (date-time) | nullno
notestring | nullno
source"operator" | "bundled"yes
rulesnumberyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/regulations/effective/{category}Get regulation effective

API key scope `regulations:read` (or `regulations:*`, `*`).

ParameterInTypeRequired
categorypathstringyes
marketquerystringyes

Returns 200 object | object

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/regulatory/analytics/regulatoryList regulatory analytics regulatory

Portfolio readiness: what is coming and how much of the portfolio it touches.

API key scope `regulatory:read` (or `regulatory:*`, `*`).

ParameterInTypeRequired
horizonDaysquerystringno
Response body (JSON, 200)
FieldTypeRequired
versionstringyes
generatedAtstringyes
horizonDaysnumberyes
leadTimeDaysnumberyes
calendarCountsobjectyes
watchedPacksnumberyes
upcomingobject[]yes
changesobject[]yes
reportsIssuednumberyes
lastReportmap of anyyes
byCategoryobject[]yes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/regulatory/reportsList regulatory reports

API key scope `regulatory:read` (or `regulatory:*`, `*`).

ParameterInTypeRequired
codequerystringno

Returns 200 map of any[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/regulatory/reports/{reference}Get regulatory reports

API key scope `regulatory:read` (or `regulatory:*`, `*`).

ParameterInTypeRequired
referencepathstringyes

Returns 200 RegulatoryImpactReport

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/regulatory/reports/{reference}/revokeRevoke reports of a regulatory

API key scope `regulatory:write` (or `regulatory:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
referencepathstringyes
Request body (JSON)
FieldTypeRequired
reasonstringno

Returns 201 RegulatoryImpactReport

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/regulatory/watch/calendarList regulatory watch calendar

Upcoming effective dates with the preparation horizon and the passports in scope.

API key scope `regulatory:read` (or `regulatory:*`, `*`).

ParameterInTypeRequired
horizonDaysquerystringno
leadTimeDaysquerystringno
Response body (JSON, 200)
FieldTypeRequired
versionstringyes
leadTimeDaysnumberyes
horizonDaysnumberyes
generatedAtstringyes
countsobjectyes
entriesobject[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/regulatory/watch/changesList regulatory watch changes

Rule-level change feed, most breaking first.

API key scope `regulatory:read` (or `regulatory:*`, `*`).

ParameterInTypeRequired
codequerystringno
Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
codestringyes
categorystringyes
fromVersionstring | nullyes
toVersionstringyes
diffRuleSetDiffyes
metadataChangesstring[]yes
requiredFieldsAddedstring[]yes
requiredFieldsRemovedstring[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/regulatory/watch/impactList regulatory watch impact

Impact assessment: both rule sets evaluated over the same passport versions.

API key scope `regulatory:read` (or `regulatory:*`, `*`).

ParameterInTypeRequired
codequerystringyes
fromVersionquerystringno
toVersionquerystringno
limitquerystringno

Returns 200 object | object

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/regulatory/watch/impactCreate regulatory watch impact

Issues the assessment as an immutable change-management artifact (reference like IMP-EU-BATTERY-V1).

API key scope `regulatory:write` (or `regulatory:*`, `*`). Console users need the owner / admin / member role.

Request body (JSON)
FieldTypeRequired
codestringyes
fromVersionstringno
toVersionstringno
limitnumberno
leadTimeDaysnumberno
notestringno

Returns 201 RegulatoryImpactReport2

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/regulatory/watch/impact.csvList regulatory watch impact.csv

API key scope `regulatory:read` (or `regulatory:*`, `*`).

ParameterInTypeRequired
codequerystringno
referencequerystringno
fromVersionquerystringno
toVersionquerystringno

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/regulatory/watch/packs/{code}/rulesGet regulatory watch packs rules

The rules a pack version carries (from the latest snapshot, or the bundled pack).

API key scope `regulatory:read` (or `regulatory:*`, `*`).

ParameterInTypeRequired
codepathstringyes
versionquerystringno
Response body (JSON, 200)
FieldTypeRequired
codestringyes
versionstring | nullyes
sourcestringyes
rulesRule[]yes
requiredFieldsstring[]yes
snapshotbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/regulatory/watch/snapshotsList regulatory watch snapshots

Latest captured state per pack, with the change counts behind it.

API key scope `regulatory:read` (or `regulatory:*`, `*`).

ParameterInTypeRequired
codequerystringno
categoryquerystringno
Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
codestringyes
categorystringyes
marketstringyes
sourcestringyes
currentobjectyes
previousobject | any | nullyes
changedbooleanyes
changesobject | any | nullyes
headlinestring | nullyes
historynumberyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/regulatory/watch/syncSync watch of regulatory

Captures the current pack versions (idempotent) and reports what changed since the last capture.

API key scope `regulatory:write` (or `regulatory:*`, `*`). Console users need the owner / admin / member role.

Response body (JSON, 201)
FieldTypeRequired
versionstringyes
watchednumberyes
capturednumberyes
unchangednumberyes
changesobject[]yes
packsobject[]yes
notestringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Substances & materials

Substances of concern, material composition, chemical safety data (CLP/GHS, SDS) and SCIP notifications.

GET/chemicals/catalogueList chemical catalogue

The classification basis: H/P statements with their mixture rules, labelled substances, sections.

API key scope `chemicals:read` (or `chemicals:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
clpSubsetVersionstringyes
methodstringyes
hazardStatementsHazardStatement[]yes
precautionaryStatementsobject[]yes
classifiedSubstancesClassifiedSubstance[]yes
countsobjectyes
rulesMarkedForVerificationobject[]yes
sdsSectionsobject[]yes
disclaimerstringyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/chemicals/reviews-dueList chemical reviews due

SDS revisions whose review date has passed (the Art. 31 "keep it current" duty).

API key scope `chemicals:read` (or `chemicals:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
duenumberyes
revisionsmap of any[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/materials-declarations/{reference}/revokeRevoke a materials declaration

API key scope `materials-declarations:write` (or `materials-declarations:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
referencepathstringyes
Request body (JSON)
FieldTypeRequired
reasonstringno

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/materials/catalogueList material catalogue

The frameworks the assessment uses: weights, class bands, CRM list, recycled-content targets.

API key scope `materials:read` (or `materials:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
methodVersionstringyes
criteriaany[]yes
classesany[]yes
classCaveatstringyes
crmobjectyes
recycledContentobjectyes
evidencestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/scip-dossiers/{reference}/revokeRevoke a scip dossier

API key scope `scip-dossiers:write` (or `scip-dossiers:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
referencepathstringyes
Request body (JSON)
FieldTypeRequired
reasonstringno

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/sds-records/{reference}/revokeRevoke a sds record

API key scope `sds-records:write` (or `sds-records:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
referencepathstringyes
Request body (JSON)
FieldTypeRequired
reasonstringno

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/substances/candidate-listList substance candidate list

The bundled candidate-list subset — so an operator can see what we screen against.

API key scope `substances:read` (or `substances:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
versionstringyes
listAgeSvhcListAgeyes
sourcestringyes
methodVersionstringyes
thresholdPercentnumberyes
entriesnumberyes
authorisationListednumberyes
restrictionsnumberyes
groupsobject[]yes
substancesCandidateEntry[]yes
restrictedSubstancesRestriction[]yes
disclaimerstringyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/substances/lookupList substance lookup

Single-substance lookup (candidate list, authorisation, restriction).

API key scope `substances:read` (or `substances:*`, `*`).

ParameterInTypeRequired
casquerystringno
namequerystringno

Returns 200 object | object

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/substances/watchlistList substance watchlist

API key scope `substances:read` (or `substances:*`, `*`).

Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
candidatebooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/substances/watchlistCreate substance watchlist

API key scope `substances:write` (or `substances:*`, `*`). Console users need the owner / admin / member role.

Request body (JSON)
FieldTypeRequired
casstringno
namestringno
reasonstringno
Response body (JSON, 201)

An array of objects with these fields:

FieldTypeRequired
candidatebooleanyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/substances/watchlist/{cas}Delete substance watchlist

API key scope `substances:write` (or `substances:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
caspathstringyes
Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
candidatebooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Carbon & LCA

Carbon footprint estimates from bills of materials, carbon reports and life-cycle assessment results.

GET/carbon-estimatesList carbon estimates

Portfolio view: coverage, verdict mix and the materials that keep blocking a figure.

API key scope `carbon-estimates:read` (or `carbon-estimates:*`, `*`).

ParameterInTypeRequired
limitquerystringno
Response body (JSON, 200)
FieldTypeRequired
passportsEstimatednumberyes
estimatesnumberyes
verdictCountsmap of numberyes
degradedRunsnumberyes
averageMassCoveragePercentnumber | nullyes
totalKgCo2enumberyes
blockedMaterialsobject[]yes
recentobject[]yes
factorTableVersionstringyes
notestringyes
disclaimerstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/carbon-estimates/{reference}Get a carbon estimate

API key scope `carbon-estimates:read` (or `carbon-estimates:*`, `*`).

ParameterInTypeRequired
referencepathstringyes

Returns 200 CarbonEstimate

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/carbon-estimates/{reference}.csvGet a carbon estimate

API key scope `carbon-estimates:read` (or `carbon-estimates:*`, `*`).

ParameterInTypeRequired
referencepathstringyes

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/carbon-estimates/{reference}/revokeRevoke a carbon estimate

A superseded run stays readable; revoking marks it as not usable for a decision.

API key scope `carbon-estimates:write` (or `carbon-estimates:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
referencepathstringyes
Request body (JSON)
FieldTypeRequired
reasonstringno

Returns 201 CarbonEstimate

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/carbon-estimates/catalogueList carbon estimate catalogue

Declared before `:reference` so "catalogue" is not read as a reference.

API key scope `carbon-estimates:read` (or `carbon-estimates:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
estimateVersionstringyes
factorTableVersionstringyes
methodologyobjectyes
caveatstringyes
disclaimerstringyes
rulesstring[]yes
unitsstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/carbon-reports/{reference}/revokeRevoke a carbon report

API key scope `carbon-reports:write` (or `carbon-reports:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
referencepathstringyes
Request body (JSON)
FieldTypeRequired
reasonstringno
Response body (JSON, 201)
FieldTypeRequired
referencestringyes
statusstringyes
revokedAtstring (date-time) | nullyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/lca/estimateEstimate LCA results

API key scope `lca:write` (or `lca:*`, `*`).

Request body (JSON)

LcaEstimateInput

Response body (JSON, 201)
FieldTypeRequired
methodstringyes
methodologystringyes
functionalUnitstringyes
totalKgCo2enumberyes
uncertaintyPctnumberyes
confidencestringyes
stagesobject[]yes
hotspotsobject[]yes
unresolvedInputsstring[]yes
recommendationsstring[]yes
disclaimerstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/lca/factorsList LCA result factors

API key scope `lca:read` (or `lca:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
materialsmap of numberyes
gridsmap of numberyes
transportmap of numberyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Construction products

Construction product records: declarations of performance (DoP) and environmental product declarations (EPD).

GET/construction/catalogueList construction catalogue

Reference data: modules, indicators, AVCP systems, Taxonomy screening, and the caveats.

API key scope `construction:read` (or `construction:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
methodVersionstringyes
standardstringyes
generatedAtstringyes
modulesEpdModule[]yes
indicatorsEpdIndicator[]yes
countsobjectyes
avcpSystemsobject[]yes
taxonomyobjectyes
caveatsobjectyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/dop-records/{reference}/revokeRevoke a dop record

API key scope `dop-records:write` (or `dop-records:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
referencepathstringyes
Request body (JSON)
FieldTypeRequired
reasonstringno

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/epd-declarations/{reference}/revokeRevoke a epd declaration

API key scope `epd-declarations:write` (or `epd-declarations:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
referencepathstringyes
Request body (JSON)
FieldTypeRequired
reasonstringno

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Cross-checks

Cross-checks that find conflicting values across a passport's evidence documents.

GET/crosscheck/catalogueList crosscheck catalogue

What is compared, what is out of scope, and what each outcome means.

API key scope `crosscheck:read` (or `crosscheck:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
versionstringyes
outcomesobject[]yes
severitiesobject[]yes
tolerancesobjectyes
remediationHintsmap of stringyes
statusesstring[]yes
caveatstringyes
scopeNotestringyes
methodsobjectyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/crosscheck/conflictsList crosscheck conflicts

Conflicts across the tenant (or one passport with `?dppId=`).

API key scope `crosscheck:read` (or `crosscheck:*`, `*`).

ParameterInTypeRequired
dppIdquerystringno
statusquerystringno
includeClearedquerystringno
Response body (JSON, 200)
FieldTypeRequired
conflictsobject[]yes
countsobjectyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/crosscheck/conflicts/{conflictId}/dismissAdd crosscheck conflicts dismiss

Dismiss a conflict as expected (never allowed for a critical one).

API key scope `crosscheck:write` (or `crosscheck:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
conflictIdpathstringyes
Request body (JSON)
FieldTypeRequired
reasonstringno
Response body (JSON, 201)
FieldTypeRequired
idanyyes
pathanyyes
outcomeanyyes
severityanyyes
statusanyyes
occurrencesanyyes
valuesanyyes
hintanyyes
clearedanyyes
clearedAtanyyes
detectedAtanyyes
lastSeenAtanyyes
resolvedValueanyyes
resolutionNoteanyyes
resolvedAtanyyes
remediationstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/crosscheck/conflicts/{conflictId}/resolveResolve conflicts of a crosscheck

Resolve a conflict by stating which value was accepted, and why.

API key scope `crosscheck:write` (or `crosscheck:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
conflictIdpathstringyes
Request body (JSON)
FieldTypeRequired
valuestringno
notestringno
Response body (JSON, 201)
FieldTypeRequired
idanyyes
pathanyyes
outcomeanyyes
severityanyyes
statusanyyes
occurrencesanyyes
valuesanyyes
hintanyyes
clearedanyyes
clearedAtanyyes
detectedAtanyyes
lastSeenAtanyyes
resolvedValueanyyes
resolutionNoteanyyes
resolvedAtanyyes
remediationstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/crosscheck/facts/{factId}Delete crosscheck facts

API key scope `crosscheck:write` (or `crosscheck:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
factIdpathstringyes
Response body (JSON, 200)
FieldTypeRequired
idstringyes
deletedbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Responsible sourcing

Sourcing assessments and supplier substitution analysis.

GET/sourcing-assessmentsList sourcing assessments

API key scope `sourcing-assessments:read` (or `sourcing-assessments:*`, `*`).

Response body (JSON, 200)

An array of objects with these fields:

FieldTypeRequired
referenceanyyes
versionNumberanyyes
dppVersionanyyes
statusanyyes
bandanyyes
resilienceIndexanyyes
materialsanyyes
suppliersanyyes
singleSourceCountanyyes
criticalExposureCountanyyes
unattributedCountanyyes
candidatesanyyes
eligibleCandidatesanyyes
blockedCandidatesanyyes
openDecisionsanyyes
adoptedanyyes
headlineanyyes
deductionsanyyes
exposuresanyyes
concentrationanyyes
noteanyyes
supersededByanyyes
issuedAtanyyes
revokedAtanyyes
revokeReasonanyyes
caveatstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/sourcing-assessments/{reference}Get a sourcing assessment

API key scope `sourcing-assessments:read` (or `sourcing-assessments:*`, `*`).

ParameterInTypeRequired
referencepathstringyes
Response body (JSON, 200)
FieldTypeRequired
dppIdanyyes
payloadanyyes
referenceanyyes
versionNumberanyyes
dppVersionanyyes
statusanyyes
bandanyyes
resilienceIndexanyyes
materialsanyyes
suppliersanyyes
singleSourceCountanyyes
criticalExposureCountanyyes
unattributedCountanyyes
candidatesanyyes
eligibleCandidatesanyyes
blockedCandidatesanyyes
openDecisionsanyyes
adoptedanyyes
headlineanyyes
deductionsanyyes
exposuresanyyes
concentrationanyyes
noteanyyes
supersededByanyyes
issuedAtanyyes
revokedAtanyyes
revokeReasonanyyes
caveatstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/sourcing-assessments/{reference}/revokeRevoke a sourcing assessment

API key scope `sourcing-assessments:write` (or `sourcing-assessments:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
referencepathstringyes
Request body (JSON)
FieldTypeRequired
reasonstringno
Response body (JSON, 201)
FieldTypeRequired
referenceanyyes
versionNumberanyyes
dppVersionanyyes
statusanyyes
bandanyyes
resilienceIndexanyyes
materialsanyyes
suppliersanyyes
singleSourceCountanyyes
criticalExposureCountanyyes
unattributedCountanyyes
candidatesanyyes
eligibleCandidatesanyyes
blockedCandidatesanyyes
openDecisionsanyyes
adoptedanyyes
headlineanyyes
deductionsanyyes
exposuresanyyes
concentrationanyyes
noteanyyes
supersededByanyyes
issuedAtanyyes
revokedAtanyyes
revokeReasonanyyes
caveatstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/sourcing-assessments/{reference}/sourcing.csvGet sourcing assessment sourcing.csv

API key scope `sourcing-assessments:read` (or `sourcing-assessments:*`, `*`).

ParameterInTypeRequired
referencepathstringyes

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/sourcing/alternativesList sourcing alternatives

The decision queue (optionally one passport, one status).

API key scope `sourcing:read` (or `sourcing:*`, `*`).

ParameterInTypeRequired
dppIdquerystringno
statusquerystringno
includeClearedquerystringno
Response body (JSON, 200)
FieldTypeRequired
alternativesobject[]yes
countsobjectyes
actionsobject[]yes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/sourcing/alternatives/{alternativeId}/decisionAdd sourcing alternatives decision

Shortlist, reject or adopt an alternative (a rejection and an adoption need a reason).

API key scope `sourcing:write` (or `sourcing:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
alternativeIdpathstringyes
Request body (JSON)
FieldTypeRequired
actionstringyes
reasonstringno
openRequestbooleanno
requestedFieldsstring[]no
Response body (JSON, 201)
FieldTypeRequired
materialstringyes
requestOpenedobject | any | nullyes
nextStepstring | nullyes
caveatstringyes
idanyyes
dppIdanyyes
fromSupplierIdanyyes
toSupplierIdanyyes
statusanyyes
eligibilityanyyes
scoreanyyes
criticalityanyyes
exposureScoreanyyes
blockersanyyes
conditionsanyyes
improvementsanyyes
whatDoesNotImproveanyyes
reasonsanyyes
requestIdanyyes
decisionReasonanyyes
decidedAtanyyes
occurrencesanyyes
clearedanyyes
lastSeenAtanyyes
firstSeenAtanyyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/sourcing/catalogueList sourcing catalogue

Criteria reference: the resilience dimensions, the criticality list and what each decision means.

API key scope `sourcing:read` (or `sourcing:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
versionstringyes
dimensionsobject[]yes
criticalMaterialsobject[]yes
actionsobject[]yes
eligibilityobject[]yes
caveatstringyes
scopeNotestringyes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/sourcing/critical-materialsList sourcing critical materials

The reviewed criticality list on its own.

API key scope `sourcing:read` (or `sourcing:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
materialsobject[]yes
notestringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/sourcing/materialList sourcing material

Explain one material name without running an analysis (normalisation + criticality).

API key scope `sourcing:read` (or `sourcing:*`, `*`).

ParameterInTypeRequired
namequerystringno
Response body (JSON, 200)
FieldTypeRequired
materialstringyes
normalisedstringyes
criticalityobjectyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Ownership & leases

Ownership transfers, leases and custody of individual product items.

GET/leasesList leases

API key scope `leases:read` (or `leases:*`, `*`).

ParameterInTypeRequired
statusquerystringno
expiringInDaysquerystringno

Returns 200 any[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/leases/{id}/endAdd lease end

API key scope `leases:write` (or `leases:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
status"cancelled" | "ended"no
endDatestringno
notesstringno
returnCustodybooleanno

Returns 201 LeaseContract

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Claims & evidence graph

Reusable claims backed by reviewed, hash-pinned evidence; which passport fields rely on them; which passports lose support when a document expires. Field-level provenance is under Passports.

GET/claimsList claims

Claims with derived support status and the number of passports relying on each (newest 1,000; filter by status or search text).

API key scope `claims:read` (or `claims:*`, `*`).

ParameterInTypeRequired
statusquerystringno
qquerystringno
Response body (JSON, 200)
FieldTypeRequired
claimsany[]yes
limitedbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/claimsCreate a claim

Records a claim: one subject, attribute and value, optionally attributed to a supplier.

API key scope `claims:write` (or `claims:*`, `*`).

Request body (JSON)
FieldTypeRequired
subjectKind"product" | "component" | "material" | "batch" | "supplier" | "organization"yes
subjectstringyes
attributestringyes
valuestring | number | booleanyes
unitstring | any | nullno
supplierIdstring (uuid) | any | nullno
notestring | any | nullno

Returns 201 Claim

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/claims/{id}Get a claim

One claim with its evidence (health, issuer, reviewer) and every passport field relying on it, with consistency.

API key scope `claims:read` (or `claims:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
supplierobjectyes
supportobjectno
evidenceany[]yes
applicationsany[]yes
idstringyes
organizationIdstringyes
subjectKindstringyes
subjectstringyes
attributestringyes
valueanyyes
unitstring | nullyes
supplierIdstring | nullyes
statusstringyes
notestring | nullyes
revisionnumberyes
createdBystring | nullyes
updatedBystring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PATCH/claims/{id}Update a claim

Value changes and withdrawal affect every passport relying on the claim, so they are reserved to administrators.

API key scope `claims:write` (or `claims:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
expectedRevisionintegeryes
valuestring | number | booleanno
unitstring | any | nullno
notestring | any | nullno
status"active" | "withdrawn"no
reasonstringyes

Returns 200 Claim2

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/claims/{id}/applicationsAdd claim applications

Records that a passport field relies on the claim; the working revision must already state the claimed value.

API key scope `claims:write` (or `claims:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
dppIdstring (uuid)yes
fieldPathstringyes

Returns 201 ClaimApplication

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/claims/{id}/applications/{applicationId}Delete claim applications

Stops tracing a passport field to the claim; the passport value is not changed.

API key scope `claims:write` (or `claims:*`, `*`).

ParameterInTypeRequired
idpathstringyes
applicationIdpathstringyes
Response body (JSON, 200)
FieldTypeRequired
removedbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/claims/{id}/evidenceAdd claim evidence

Attaches an accepted, current, unexpired document as support; its SHA-256 is pinned.

API key scope `claims:write` (or `claims:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
documentIdstring (uuid)yes
pageintegerno
quotestringyes

Returns 201 ClaimEvidence

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/claims/{id}/evidence/{evidenceId}Delete claim evidence

Detaches a document from the claim (administrators); the audit log keeps the reference.

API key scope `claims:write` (or `claims:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
evidenceIdpathstringyes
Response body (JSON, 200)
FieldTypeRequired
removedbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/claims/from-factCreate claim from fact

Promotes an extracted document fact to a claim (the human approval step); attaches its accepted document and records reliance when the passport agrees.

API key scope `claims:write` (or `claims:*`, `*`).

Request body (JSON)
FieldTypeRequired
factIdstring (uuid)yes
subjectKind"product" | "component" | "material" | "batch" | "supplier" | "organization"no
subjectstringno
Response body (JSON, 201)
FieldTypeRequired
claimClaimyes
evidence"attached" | "document_not_accepted" | "no_document"yes
reliance"applied" | "value_differs" | "field_empty"yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/evidence-graph/documents/{id}/dependentsGet evidence graph documents dependents

Claims and passports that depend on one document, and which of them lose support with it.

API key scope `evidence-graph:read` (or `evidence-graph:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
documentobjectyes
claimsobject[]yes
passportsany[]yes
passportCountnumberyes
passportsAtRisknumberyes
limitedbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/evidence-graph/expiringList evidence graph expiring

Evidence expiring within `days` (1-365, default 90), ranked by passports left without support.

API key scope `evidence-graph:read` (or `evidence-graph:*`, `*`).

ParameterInTypeRequired
daysquerystringno
Response body (JSON, 200)
FieldTypeRequired
horizonDaysnumberyes
documentsobject[]yes
unreliednumberyes
limitedbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Remediation campaigns

Work through an issued regulatory impact report: one item per passport failing the new rule set, supplier evidence requests, deterministic re-checks, waivers with reasons and a CSV audit report.

GET/remediation-campaignsList remediation campaigns

Campaigns (newest 200) with progress counts.

API key scope `remediation-campaigns:read` (or `remediation-campaigns:*`, `*`).

Returns 200 any[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/remediation-campaignsCreate a remediation campaign

Creates a campaign from an issued impact report: every passport in the category failing the new rule set becomes an item.

API key scope `remediation-campaigns:write` (or `remediation-campaigns:*`, `*`). Console users need the owner / admin role.

Request body (JSON)
FieldTypeRequired
impactReferencestringyes
titlestringno
dueDatestring | any | nullno
ownerIdstring (uuid) | any | nullno
Response body (JSON, 201)
FieldTypeRequired
passportsInScopenumberyes
itemsnumberyes
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
statusstringyes
createdBystring | nullyes
categorystringyes
referencestringyes
codestringyes
titlestringyes
fromVersionstring | nullyes
toVersionstringyes
impactReferencestringyes
dueDatestring | nullyes
ownerIdstring | nullyes
lastCheckedAtstring (date-time) | nullyes
closedAtstring (date-time) | nullyes
closedBystring | nullyes
closeNotestring | nullyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/remediation-campaigns/{id}Get a remediation campaign

One campaign with every item, its findings and whether the passport changed since the last check.

API key scope `remediation-campaigns:read` (or `remediation-campaigns:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
progressobjectyes
itemsany[]yes
idstringyes
organizationIdstringyes
referencestringyes
titlestringyes
impactReferencestringyes
codestringyes
categorystringyes
fromVersionstring | nullyes
toVersionstringyes
statusstringyes
dueDatestring | nullyes
ownerIdstring | nullyes
lastCheckedAtstring (date-time) | nullyes
createdBystring | nullyes
createdAtstring (date-time)yes
closedAtstring (date-time) | nullyes
closedBystring | nullyes
closeNotestring | nullyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/remediation-campaigns/{id}/closeAdd remediation campaign close

Closes the campaign with a note; passports still failing are recorded as accepted at closing.

API key scope `remediation-campaigns:write` (or `remediation-campaigns:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
notestringyes

Returns 201 RemediationCampaign | object

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PATCH/remediation-campaigns/{id}/items/{itemId}Update remediation campaign items

Waives an item with a recorded reason, or reopens a waived one (administrators).

API key scope `remediation-campaigns:write` (or `remediation-campaigns:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
itemIdpathstringyes
Request body (JSON)
FieldTypeRequired
expectedRevisionintegeryes
status"open" | "waived"yes
notestringyes

Returns 200 RemediationItem

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/remediation-campaigns/{id}/items/{itemId}/evidence-requestAdd remediation campaign items evidence request

Creates a supplier request for the fields this passport's findings name, plus one evidence document slot.

API key scope `remediation-campaigns:write` (or `remediation-campaigns:*`, `*`).

ParameterInTypeRequired
idpathstringyes
itemIdpathstringyes
Request body (JSON)
FieldTypeRequired
supplierIdstring (uuid)yes
messagestringno
Response body (JSON, 201)
FieldTypeRequired
requestIdstringyes
supplierIdstringyes
requestedFieldsstring[]yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/remediation-campaigns/{id}/recheckAdd remediation campaign recheck

Deterministic re-check under the target rule set; the only way an item becomes resolved.

API key scope `remediation-campaigns:write` (or `remediation-campaigns:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 201)
FieldTypeRequired
checkednumberyes
resolvednumberyes
reopenednumberyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/remediation-campaigns/{id}/report.csvGet remediation campaign report.csv

Flat per-passport audit report; cells are neutralized against formula injection by the CSV hook.

API key scope `remediation-campaigns:read` (or `remediation-campaigns:*`, `*`).

ParameterInTypeRequired
idpathstringyes

Returns 200 with a file (text/csv).

200 File400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Integration hub

Reusable mappings from ERP / PIM / PLM exports and HTTPS feeds to product fields and passport data, with transforms, dry-run diffs, daily feeds and a recorded history of every run.

GET/data-mappingsList data mappings

Mappings of this organization; feed tokens are never returned, only whether one is set.

API key scope `data-mappings:read` (or `data-mappings:*`, `*`).

Returns 200 any[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/data-mappingsCreate a data mapping

Creates a mapping: key field, rules (source -> product field or passport data path, with transforms) and an optional daily HTTPS feed.

API key scope `data-mappings:write` (or `data-mappings:*`, `*`). Console users need the owner / admin role.

Request body (JSON)
FieldTypeRequired
namestringyes
kind"records" | "bom"no
sourceFormat"csv" | "json" | "xml"yes
recordsPathstring | any | nullno
keyField"sku" | "gtin"yes
keySourcestringyes
rulesobject[]yes
feedUrlstring | any | nullno
feedTokenstring | any | nullno
feedAuth"none" | "bearer" | "basic" | "header" | "oauth2" | "sftp-password" | "sftp-key"no
feedAuthHeaderstring | any | nullno
feedOAuthobject | any | nullno
feedMethod"GET" | "POST"no
feedBodystring | any | nullno
feedHostKeystring | any | nullno
feedSchedule"manual" | "hourly" | "daily"no
createMissingobject | any | nullno

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/data-mappings/{id}Get a data mapping

One mapping with its 50 most recent runs.

API key scope `data-mappings:read` (or `data-mappings:*`, `*`).

ParameterInTypeRequired
idpathstringyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PATCH/data-mappings/{id}Update a data mapping

Changes a mapping (revision-checked). An empty feedToken clears the stored token.

API key scope `data-mappings:write` (or `data-mappings:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
namestringno
kind"records" | "bom"no
sourceFormat"csv" | "json" | "xml"no
recordsPathstring | any | nullno
keyField"sku" | "gtin"no
keySourcestringno
rulesobject[]no
feedUrlstring | any | nullno
feedTokenstring | any | nullno
feedAuth"none" | "bearer" | "basic" | "header" | "oauth2" | "sftp-password" | "sftp-key"no
feedAuthHeaderstring | any | nullno
feedOAuthobject | any | nullno
feedMethod"GET" | "POST"no
feedBodystring | any | nullno
feedHostKeystring | any | nullno
feedSchedule"manual" | "hourly" | "daily"no
createMissingobject | any | nullno
expectedRevisionintegeryes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/data-mappings/{id}Delete a data mapping

API key scope `data-mappings:write` (or `data-mappings:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
removedbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/data-mappings/{id}/push-tokenAdd data mapping push token

Issues or replaces the token the source system uses to push records to this mapping; shown once.

API key scope `data-mappings:write` (or `data-mappings:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 201)
FieldTypeRequired
tokenstringyes
prefixstringyes
endpointstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/data-mappings/{id}/push-tokenDelete data mapping push token

API key scope `data-mappings:write` (or `data-mappings:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
revokedbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/data-mappings/{id}/runsAdd data mapping runs

Runs the mapping over uploaded file content or its feed. A dry run returns the per-record diff without writing.

API key scope `data-mappings:write` (or `data-mappings:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
dryRunbooleanyes
contentstringno
feedbooleanno
Response body (JSON, 201)
FieldTypeRequired
runIdstringyes
dryRunbooleanyes
summaryobjectyes
outcomesOutcome[]yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/data-mappings/{id}/runs/{runId}Get data mapping runs

One recorded run with its per-record outcomes (first 1,000).

API key scope `data-mappings:read` (or `data-mappings:*`, `*`).

ParameterInTypeRequired
idpathstringyes
runIdpathstringyes

Returns 200 DataMappingRun

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/data-mappings/{id}/test-feedAdd data mapping test feed

Reads the feed without writing: whether it answers, its record count and fields, and (SFTP) the host key presented.

API key scope `data-mappings:write` (or `data-mappings:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes

Returns 201 object | object

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/data-mappings/templatesList data mapping templates

Starting points for SAP, Dynamics 365, NetSuite, Odoo, Akeneo, Pimcore, Salsify, Plytix and PLM BOM exports.

API key scope `data-mappings:read` (or `data-mappings:*`, `*`).

Returns 200 MappingTemplate[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Lifecycle reports

Repairs, inspections, recycling and returns reported by credentialed partners (POST /regulator/passports/{id}/reports with an approved grant token), and the issuer's accept / reject decisions.

GET/lifecycle-reportsList lifecycle reports

Reports from credentialed third parties (pending, accepted or rejected).

API key scope `lifecycle-reports:read` (or `lifecycle-reports:*`, `*`).

ParameterInTypeRequired
statusquerystringno

Returns 200 any[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/lifecycle-reports/{id}/decisionAdd lifecycle report decision

Accepts (records the lifecycle event and moves the item status) or rejects a report with a reason. Administrators only, since a recycled battery closes its passport.

API key scope `lifecycle-reports:write` (or `lifecycle-reports:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
decision"accept" | "reject"yes
reasonstringyes

Returns 201 LifecycleReport

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Chain of custody

Custody ledgers per material and ISO 22095 model (identity preserved, segregated, controlled blending, mass balance, book and claim): inputs, allocations to passports, adjustments and reversals, refused when the ledger cannot cover them; a passport's custody statement.

GET/custody/accountsList custody accounts

Accounts with their credit and quantity balances.

API key scope `custody:read` (or `custody:*`, `*`).

Returns 200 any[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/custody/accountsCreate custody accounts

Opens an account: one material under one custody model (identity preserved, segregated, controlled blending, mass balance, book and claim).

API key scope `custody:write` (or `custody:*`, `*`). Console users need the owner / admin / member role.

Request body (JSON)
FieldTypeRequired
namestringyes
materialstringyes
model"identity_preserved" | "segregated" | "controlled_blending" | "mass_balance" | "book_and_claim"yes
claim"recycled" | "bio_based" | "certified_sustainable" | "responsibly_sourced"no
schemestring | any | nullno
certificateDocumentIdstring (uuid) | any | nullno
sitestring | any | nullno
unit"kg" | "t" | "l" | "m3" | "unit"no
creditValidityDaysinteger | any | nullno

Returns 201 CustodyAccount

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/custody/accounts/{id}Get custody accounts

One account with its full ledger, lots and balances as of today.

API key scope `custody:read` (or `custody:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
modelInfoobjectyes
stateLedgerStateyes
entriesany[]yes
idstringyes
organizationIdstringyes
namestringyes
materialstringyes
modelstringyes
claimstringyes
schemestring | nullyes
certificateDocumentIdstring | nullyes
sitestring | nullyes
unitstringyes
creditValidityDaysnumber | nullyes
statusstringyes
createdBystring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PATCH/custody/accounts/{id}Update custody accounts

API key scope `custody:write` (or `custody:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
namestringno
schemestring | any | nullno
certificateDocumentIdstring (uuid) | any | nullno
sitestring | any | nullno
creditValidityDaysinteger | any | nullno
status"active" | "closed"no

Returns 200 CustodyAccount2

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/custody/accounts/{id}/entriesAdd custody accounts entries

Records an input, an allocation (to a passport or batch) or an adjustment; refused when the ledger cannot cover it.

API key scope `custody:write` (or `custody:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)

object | object | object

Returns 201 CustodyEntry2

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/custody/entries/{id}/reverseAdd custody entries reverse

Corrects an entry by recording its reversal; the entry itself is never changed.

API key scope `custody:write` (or `custody:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
notestringyes

Returns 201 CustodyEntry

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Product models

Models (styles, families) and their variants: matrix generation of variant products and passports, shared passport data propagated as new versions, linking existing products.

GET/product-modelsList product models

Models with how many variants each has.

API key scope `product-models:read` (or `product-models:*`, `*`).

Returns 200 any[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/product-modelsCreate a product model

Creates a model: category, brand, the axes its variants differ by, and the passport data they share.

API key scope `product-models:write` (or `product-models:*`, `*`). Console users need the owner / admin / member role.

Request body (JSON)
FieldTypeRequired
codestringyes
namestringyes
categorystringyes
brandstring | any | nullno
workspaceIdstring (uuid) | any | nullno
variantAxesstring[]yes
sharedDatamap of anyyes

Returns 201 ProductModel2

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/product-models/{id}Get a product model

The model with its variants, their passports and serialized item counts.

API key scope `product-models:read` (or `product-models:*`, `*`).

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
variantsobject[]yes
idstringyes
organizationIdstringyes
codestringyes
namestringyes
categorystringyes
brandstring | nullyes
workspaceIdstring | nullyes
variantAxesanyyes
sharedDataanyyes
createdBystring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

PATCH/product-models/{id}Update a product model

API key scope `product-models:write` (or `product-models:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
namestringno
brandstring | any | nullno
workspaceIdstring (uuid) | any | nullno
sharedDatamap of anyno

Returns 200 ProductModel

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/product-models/{id}Delete a product model

Deletes the model; its variants stay as ungrouped products and passports.

API key scope `product-models:write` (or `product-models:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
deletedbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/product-models/{id}/propagateAdd product model propagate

Writes the shared data into every variant passport where it differs, as new versions (dryRun previews).

API key scope `product-models:write` (or `product-models:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)

object

Response body (JSON, 201)
FieldTypeRequired
dryRunbooleanyes
summarymap of numberyes
outcomesobject[]yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/product-models/{id}/variantsAdd product model variants

Creates the missing variants of a value matrix (colour x size ...), each with its product and passport.

API key scope `product-models:write` (or `product-models:*`, `*`). Console users need the owner / admin / member role.

ParameterInTypeRequired
idpathstringyes
Request body (JSON)
FieldTypeRequired
valuesmap of string[]yes
skuPatternstringyes
namePatternstringno
gtinsstring[]no
createPassportsbooleanyes
Response body (JSON, 201)
FieldTypeRequired
summaryobjectyes
resultsobject[]yes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Organization identity

LEI, VAT and domain checked against GLEIF, VIES and DNS for the organization and its suppliers; verification of verifiable credentials (VC-JWT, eddsa-jcs-2022) with did:web, did:key and did:jwk issuers and status lists.

GET/identityList identity

The organization's DID, its DID document URL and its identifiers with their last registry answer.

API key scope `identity:read` (or `identity:*`, `*`).

Response body (JSON, 200)
FieldTypeRequired
didstringyes
didDocumentUrlstringyes
verificationsany[]yes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/identity/credentials/verifyVerify credentials of identity

Verifies a credential (VC-JWT or eddsa-jcs-2022 Data Integrity) without storing it.

API key scope `identity:write` (or `identity:*`, `*`).

Request body (JSON)
FieldTypeRequired
credentialstring | map of anyyes

Returns 201 CredentialVerification

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

GET/identity/suppliers/{supplierId}Get identity suppliers

A supplier's identifiers and their registry answers.

API key scope `identity:read` (or `identity:*`, `*`).

ParameterInTypeRequired
supplierIdpathstringyes

Returns 200 any[]

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/identity/verificationsCreate identity verifications

Adds an LEI, VAT number or domain of the organization (or of a supplier, with supplierId) and checks it.

API key scope `identity:write` (or `identity:*`, `*`). Console users need the owner / admin role.

Request body (JSON)
FieldTypeRequired
scheme"lei" | "vat" | "domain"yes
valuestringyes
supplierIdstring (uuid) | any | nullno

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

DELETE/identity/verifications/{id}Delete identity verifications

API key scope `identity:write` (or `identity:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes
Response body (JSON, 200)
FieldTypeRequired
removedbooleanyes

200 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/identity/verifications/{id}/checkAdd identity verifications check

Asks the registry again (for a domain: looks for the TXT record).

API key scope `identity:write` (or `identity:*`, `*`). Console users need the owner / admin role.

ParameterInTypeRequired
idpathstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

POST/identity/verifications/{id}/confirmAdd identity verifications confirm

An owner confirms a registry record whose legal name differs from the organization's (a trading name, a group entity).

API key scope `identity:write` (or `identity:*`, `*`). Console users need the owner role.

ParameterInTypeRequired
idpathstringyes

201 Success400 Invalid input401 Missing or invalid API key403 Scope, role or plan limit does not allow this404 Not found429 Rate limit exceeded

Schemas

Models returned or accepted by more than one operation, described from the API source. The complete JSON Schemas are in the OpenAPI file.

ActionAssignment9 fields
FieldTypeRequired
organizationIdstringyes
sourceKeystringyes
ownerIdstring | nullyes
dueDatestring | nullyes
priority"high" | "normal" | "urgent"yes
notestringyes
revisionnumberyes
updatedBystringyes
updatedAtstring (date-time)yes
ActionItem10 fields
FieldTypeRequired
keystringyes
kind"component" | "evidence_review" | "evidence_expiry" | "supplier_response" | "publication" | "translation" | "validation" | "evidence_link" | "claim_support" | "claim_mismatch" | "remediation" | "lifecycle_report"yes
titlestringyes
hrefstringyes
createdAtstringyes
dueDatestring | nullyes
priority"high" | "normal" | "urgent"yes
ownerIdstring | nullyes
notestringyes
revisionnumberyes
AssemblyNode7 fields
FieldTypeRequired
idstringyes
namestringyes
quantitynumberyes
massKgnumber | nullyes
childobject | any | nullyes
externalReferencestring | nullyes
childrenany[]yes
AuditLog12 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
actorIdstring | nullyes
actionstringyes
entityTypestringyes
entityIdstringyes
beforeanyyes
afteranyyes
createdAtstring (date-time)yes
chainSeqnumber | nullyes
prevHashstring | nullyes
entryHashstring | nullyes
BomProposalResult8 fields
FieldTypeRequired
placedPlacedBomLine[]yes
unresolvedUnresolvedBomLine[]yes
ignoredIgnoredBomField[]yes
unplacedUnplacedBomLine[]yes
duplicatesobject[]yes
totalsobjectyes
lineCoveragePercentnumber | nullyes
massCoveragePercentnumber | nullyes
CandidateAssessment10 fields
FieldTypeRequired
supplierIdstringyes
namestringyes
countrystring | nullyes
eligibility"conditional" | "eligible" | "ineligible"yes
blockersstring[]yes
conditionsstring[]yes
scorenumberyes
reasonsstring[]yes
improvementsstring[]yes
whatDoesNotImprovestring[]yes
CandidateEntry8 fields
FieldTypeRequired
casstringyes
ecstringno
namestringyes
reasonstringyes
addedOnstringno
specificLimitPercentnumberno
annexXivbooleanno
groupstringno
CarbonBaseline5 fields
FieldTypeRequired
footprintKgCo2enumberyes
reductionTargetPercentnumber | nullno
notestring | nullno
setAtstringyes
setBystring | nullno
CarbonEstimate42 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
dppIdstringyes
referencestringyes
versionNumbernumberyes
statusstringyes
estimateVersionstringyes
factorTableVersionstringyes
dppVersionnumberyes
sourcestringyes
documentIdstring | nullyes
providerstringyes
modelstring | nullyes
degradedbooleanyes
providerErrorstring | nullyes
latencyMsnumber | nullyes
bomCharactersnumberyes
parsedLinesnumberyes
mappableLinesnumberyes
placedLinesnumberyes
unresolvedCountnumberyes
unplacedCountnumberyes
ignoredCountnumberyes
totalKgCo2estringyes
a1KgCo2estringyes
a2KgCo2estringyes
a3KgCo2estringyes
massKgstringyes
energyKwhstringyes
lineCoveragePercentstring | nullyes
massCoveragePercentstring | nullyes
declaredKgCo2estring | nullyes
declaredPathstring | nullyes
verdictstringyes
signalsanyyes
payloadanyyes
notestring | nullyes
createdBystring | nullyes
createdAtstring (date-time)yes
revokedAtstring (date-time) | nullyes

and 2 more fields (see openapi.json)

CarbonEstimateInput7 fields
FieldTypeRequired
bomstringno
documentIdstringno
dryRunbooleanno
transportLcaTransportInput[]no
manufacturingElectricityKwhnumberno
manufactureCountrystringno
notestringno
CarbonStatement11 fields
FieldTypeRequired
valuenumberyes
unitstringyes
pathstringyes
methodologystring | nullyes
boundarystring | nullyes
stagesExcludedstring | nullyes
functionalUnitstring | nullyes
referenceYearnumber | nullyes
sourcestring | nullyes
reportUrlstring | nullyes
verificationobjectyes
Carrier6 fields
FieldTypeRequired
typestringyes
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
dppIdstringyes
payloadstringyes
ChainNode14 fields
FieldTypeRequired
idstringyes
tiernumberyes
entitystringyes
role"supplier" | "delegated-supplier" | "declared-upstream"yes
identityWithheldbooleanno
supplierIdstringno
countrystring | nullno
trustScorenumber | nullno
status"declared" | "responded" | "pending"yes
declaredCarbonKgCo2enumber | nullno
recycledContentPercentnumber | nullno
materialsstring[]no
substancesanyno
childrenany[]yes
ChannelAttribute13 fields
FieldTypeRequired
keystringyes
labelstringyes
type"number" | "boolean" | "date" | "url" | "gtin" | "text" | "integer" | "enum"yes
pathsstring[]no
derived"publishedAt" | "channelCategory" | "passportUrl" | "digitalLinkUrl" | "qrImageUrl" | "complianceStatus" | "complianceScore" | "complianceGrade" | "complianceFreshness" | "carbonFootprintKgCo2e" | "recycledContentPercent" | "repairabilityClass" | "repairabilityScore" | "sparePartsYears" | "softwareSupportYears" | "svhcPresent" | "scipNumber" | "passportVersion" | "generatedAt"no
requiredbooleanno
requiredWhenobjectno
enumValuesstring[]no
maxLengthnumberno
minnumberno
maxnumberno
unitstringno
notestringno
ChannelEndpoint12 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
createdBystring | nullyes
updatedAtstring (date-time)yes
channelstringyes
webhookIdstring | nullyes
modestringyes
enabledbooleanyes
externalAccountstring | nullyes
notesstring | nullyes
lastSyncAtstring (date-time) | nullyes
ChannelFeed10 fields
FieldTypeRequired
channelstringyes
channelLabelstringyes
profileVersionstringyes
generatedAtstringyes
includeOptionalbooleanyes
columnsobject[]yes
productsobject[]yes
skippedobject[]yes
countsobjectyes
caveatstringyes
ChannelRow12 fields
FieldTypeRequired
dppIdstringyes
skustring | nullyes
namestring | nullyes
categorystringyes
gtinstring | nullyes
versionnumberyes
publishedbooleanyes
publishedAtstring | nullyes
readybooleanyes
blockingstring[]yes
countsobjectyes
attributesResolvedAttribute[]yes
ChannelSubmission29 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
referencestringyes
versionNumbernumberyes
channelstringyes
profileVersionstringyes
statusstringyes
formatstringyes
includeOptionalbooleanyes
productsnumberyes
readyProductsnumberyes
skippedProductsnumberyes
attributesFillednumberyes
attributesMissingnumberyes
requiredMissingnumberyes
payloadHashstringyes
payloadanyyes
rowsanyyes
endpointIdstring | nullyes
webhookIdstring | nullyes
dispatchedbooleanyes
externalIdstring | nullyes
acknowledgedAtstring (date-time) | nullyes
acknowledgedBystring | nullyes
notestring | nullyes
cancelledAtstring (date-time) | nullyes
cancelledReasonstring | nullyes
createdBystring | nullyes
createdAtstring (date-time)yes
ChemicalObligation5 fields
FieldTypeRequired
idstringyes
regulationstringyes
requirementstringyes
status"satisfied" | "outstanding" | "not-applicable"yes
notestringyes
Claim15 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
statusstringyes
createdBystring | nullyes
updatedAtstring (date-time)yes
notestring | nullyes
revisionnumberyes
subjectKindstringyes
subjectstringyes
attributestringyes
valueanyyes
unitstring | nullyes
supplierIdstring | nullyes
updatedBystring | nullyes
Claim215 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
subjectKindstringyes
subjectstringyes
attributestringyes
valueanyyes
unitstring | nullyes
supplierIdstring | nullyes
statusstringyes
notestring | nullyes
revisionnumberyes
createdBystring | nullyes
updatedBystring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes
ClaimApplication7 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
createdBystring | nullyes
dppIdstringyes
claimIdstringyes
fieldPathstringyes
ClaimEvidence10 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
createdBystring | nullyes
claimIdstringyes
documentIdstringyes
documentSha256stringyes
documentTitlestringyes
pagenumber | nullyes
quotestringyes
ClassifiedSubstance8 fields
FieldTypeRequired
casstringyes
ecstringno
namestringyes
iupacNamestringno
statementsstring[]yes
sclPercentobject[]no
transportobjectno
ewcCodesobject[]no
ConnectInput7 fields
FieldTypeRequired
providerstringno
storeUrlstringno
accessTokenstringno
clientIdstringno
clientSecretstringno
consumerKeystringno
consumerSecretstringno
ConstructionGap5 fields
FieldTypeRequired
idstringyes
severity"error" | "info" | "warning"yes
requirementstringyes
clausestringyes
detailstringyes
ConstructionVerification6 fields
FieldTypeRequired
programmeOperatorstring | nullyes
registrationstring | nullyes
validUntilstring | nullyes
thirdPartyVerifiedboolean | nullyes
verifierstring | nullyes
pcrstring | nullyes
CredentialCheck3 fields
FieldTypeRequired
namestringyes
okbooleanyes
detailstringno
CredentialCheckResult3 fields
FieldTypeRequired
namestringyes
okbooleanyes
detailstringyes
CredentialVerification13 fields
FieldTypeRequired
validbooleanyes
format"unknown" | "vc-jwt" | "data-integrity"yes
issuerstring | nullyes
issuerNamestring | nullyes
issuerVerifiedobject | any | nullyes
typesstring[]yes
subjectanyyes
validFromstring | nullyes
validUntilstring | nullyes
status"active" | "unknown" | "revoked" | "suspended" | "not-listed"yes
bindsDocumentboolean | nullyes
checksCredentialCheckResult[]yes
verifiedAtstringyes
CriticalMaterial6 fields
FieldTypeRequired
keystringyes
namestringyes
strategicbooleanyes
criticalbooleanyes
supplyRiskstringyes
typicalUsestringyes
CrosscheckSummary7 fields
FieldTypeRequired
pathsnumberyes
factsnumberyes
conflictsnumberyes
gapsnumberyes
agreeingnumberyes
bySeverityobjectyes
verdict"consistent" | "review" | "conflicting" | "unassessed"yes
CsvImportRequest4 fields
FieldTypeRequired
rowsProductImportRow[]yes
defaultsImportDefaultsno
onDuplicate"update" | "skip"no
dryRunbooleanno
CustodyAccount15 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
namestringyes
createdAtstring (date-time)yes
statusstringyes
createdBystring | nullyes
updatedAtstring (date-time)yes
unitstringyes
materialstringyes
modelstringyes
claimstringyes
schemestring | nullyes
certificateDocumentIdstring | nullyes
sitestring | nullyes
creditValidityDaysnumber | nullyes
CustodyAccount215 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
namestringyes
materialstringyes
modelstringyes
claimstringyes
schemestring | nullyes
certificateDocumentIdstring | nullyes
sitestring | nullyes
unitstringyes
creditValidityDaysnumber | nullyes
statusstringyes
createdBystring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes
CustodyEntry21 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
kindstringyes
createdBystring | nullyes
dppIdstring | nullyes
referencestring | nullyes
notestring | nullyes
supplierIdstring | nullyes
documentIdstring | nullyes
batchstring | nullyes
quantitystringyes
accountIdstringyes
occurredOnstringyes
creditsstringyes
certifiedSharestring | nullyes
conversionFactorstring | nullyes
expiresOnstring | nullyes
inputEntryIdstring | nullyes
reversalOfstring | nullyes
reversedBystring | nullyes
CustodyEntry221 fields
FieldTypeRequired
quantitynumberyes
creditsnumberyes
certifiedSharenumber | nullyes
conversionFactornumber | nullyes
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
kindstringyes
createdBystring | nullyes
dppIdstring | nullyes
referencestring | nullyes
notestring | nullyes
supplierIdstring | nullyes
documentIdstring | nullyes
batchstring | nullyes
accountIdstringyes
occurredOnstringyes
expiresOnstring | nullyes
inputEntryIdstring | nullyes
reversalOfstring | nullyes
reversedBystring | nullyes
DataMappingRun12 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
mappingIdstringyes
mappingRevisionnumberyes
triggerstringyes
dryRunbooleanyes
statusstringyes
summaryanyyes
outcomesanyyes
errorstring | nullyes
createdBystring | nullyes
createdAtstring (date-time)yes
DeclaredComparison5 fields
FieldTypeRequired
declaredKgCo2enumber | nullyes
declaredPathstring | nullyes
estimatePercentOfDeclarednumber | nullyes
verdict"plausible" | "estimate-higher" | "estimate-lower" | "no-declaration"yes
notestringyes
DerivedFact5 fields
FieldTypeRequired
path"svhc.present" | "chemicals.hazardous" | "recycled_content.claimed" | "repairability.claimed"yes
derivedbooleanyes
declaredboolean | nullyes
effectivebooleanyes
reasonstringyes
DigestSettingsInput5 fields
FieldTypeRequired
frequency"off" | "daily" | "weekly"no
recipientsstring[]no
expiryDaysnumberno
includeSuppliersbooleanno
includeLeasesbooleanno
DisplayColumn3 fields
FieldTypeRequired
keystringyes
labelstringyes
unitstring | nullyes
DisplayField5 fields
FieldTypeRequired
keystringyes
pathstringyes
labelstringyes
helpstringno
valueobject | object | object | object | object | object | objectyes
DisplayGroup6 fields
FieldTypeRequired
keystringyes
pathstringyes
labelstringyes
fieldsDisplayField[]yes
tablesDisplayTable[]yes
groupsany[]yes
DisplayTable5 fields
FieldTypeRequired
keystringyes
pathstringyes
labelstringyes
columnsDisplayColumn[]yes
rowsobject | object | object | object | object | object | object | any | null[][]yes
Document25 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
dppIdstring | nullyes
typestringyes
titlestringyes
storageKeystringyes
sha256string | nullyes
accessLevelstringyes
supersedesIdstring | nullyes
extractedanyyes
textContentstring | nullyes
textTruncatedbooleanyes
issuedAtstring (date-time) | nullyes
expiresAtstring (date-time) | nullyes
expiryNotifiedForstring (date-time) | nullyes
reviewStatusstringyes
reviewRevisionnumberyes
reviewedBystring | nullyes
reviewedAtstring (date-time) | nullyes
reviewReasonstring | nullyes
issuerNamestring | nullyes
issuerIdentifierstring | nullyes
credentialanyyes
credentialVerifiedAtstring (date-time) | nullyes
createdAtstring (date-time)yes
DopCharacteristic5 fields
FieldTypeRequired
namestringyes
valuestring | number | any | nullyes
unitstring | nullyes
standardstring | nullyes
classstring | nullyes
DopReadiness20 fields
FieldTypeRequired
manufacturerstring | nullyes
numberstring | nullyes
harmonisedStandardstring | nullyes
avcpobject | any | nullyes
notifiedBodystring | nullyes
ceMarkingDatestring | nullyes
intendedUsestring | nullyes
plantstring | nullyes
characteristicsDopCharacteristic[]yes
dangerousSubstancesobjectyes
serviceLifeYearsnumber | nullyes
maintenanceIntervalMonthsnumber | nullyes
deconstructionReusePercentnumber | nullyes
recycledContentPercentnumber | nullyes
bioBasedContentPercentnumber | nullyes
fireClassstring | nullyes
readybooleanyes
blockingstring[]yes
gapsConstructionGap[]yes
caveatstringyes
Dpp25 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
productIdstringyes
schemaIdstringyes
statusstringyes
lifecycleStatestringyes
currentVersionnumberyes
publishedVersionnumber | nullyes
publishedAtstring (date-time) | nullyes
publishedMarketsstring[] | any | nullyes
publicRedactionsanyyes
publicDisclosuresanyyes
pendingPublicRedactionsanyyes
pendingPublicDisclosuresanyyes
derivedFromIdstring | nullyes
derivationstring | nullyes
derivationMetaanyyes
sourceLocalestring | nullyes
carbonBaselineanyyes
correctionOpenedAtstring (date-time) | nullyes
suspendedAtstring (date-time) | nullyes
suspensionReasonstring | nullyes
suspendedFromLifecycleStatestring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes
DppCredentialSubject7 fields
FieldTypeRequired
idstringyes
type"DigitalProductPassport"yes
issuerNamestringno
productobjectyes
passportobjectyes
dataHashstringyes
eventCountnumberno
DppEvent10 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
dppIdstringyes
typestringyes
actorstring | nullyes
locationstring | nullyes
notesstring | nullyes
dataanyyes
occurredAtstring (date-time)yes
createdAtstring (date-time)yes
DppEventInput7 fields
FieldTypeRequired
type"split" | "created" | "updated" | "recalled" | "recycled" | "published" | "repaired" | "inspected" | "transferred" | "returned" | "remanufactured" | "merged"yes
actorstringno
locationstringno
notesstringno
datamap of anyno
occurredAtstring | string (date-time)no
timeZoneOffsetstringno
DppOwnership13 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
dppIdstringyes
ownerTypestringyes
ownerRefstring | nullyes
ownerRefHashstring | nullyes
countrystring | nullyes
acquiredAtstring (date-time)yes
releasedAtstring (date-time) | nullyes
transferRefstring | nullyes
notesstring | nullyes
recordedBystring | nullyes
createdAtstring (date-time)yes
DppOwnership213 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
dppIdstringyes
countrystring | nullyes
notesstring | nullyes
ownerTypestringyes
ownerRefstring | nullyes
ownerRefHashstring | nullyes
acquiredAtstring (date-time)yes
releasedAtstring (date-time) | nullyes
transferRefstring | nullyes
recordedBystring | nullyes
DppOwnership313 fields
FieldTypeRequired
releasedAtstring (date-time)yes
idstringyes
organizationIdstringyes
dppIdstringyes
ownerTypestringyes
ownerRefstring | nullyes
ownerRefHashstring | nullyes
countrystring | nullyes
acquiredAtstring (date-time)yes
transferRefstring | nullyes
notesstring | nullyes
recordedBystring | nullyes
createdAtstring (date-time)yes
DppPublicationApproval13 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
statusstringyes
reasonstringyes
dppIdstringyes
dppVersionnumberyes
marketsanyyes
requestedBystringyes
approvedBystring | nullyes
approvedAtstring (date-time) | nullyes
consumedAtstring (date-time) | nullyes
selfDecidedbooleanyes
DppPublicationApproval213 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
dppIdstringyes
dppVersionnumberyes
marketsanyyes
reasonstringyes
statusstringyes
requestedBystringyes
approvedBystring | nullyes
approvedAtstring (date-time) | nullyes
consumedAtstring (date-time) | nullyes
selfDecidedbooleanyes
createdAtstring (date-time)yes
DppRegistryRecord15 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
statusstringyes
updatedAtstring (date-time)yes
dppIdstringyes
externalIdstring | nullyes
dppVersionnumberyes
errorstring | nullyes
registrystringyes
registryUrlstring | nullyes
requestDigeststringyes
responseanyyes
submittedBystring | nullyes
submittedAtstring (date-time) | nullyes
DppRegistryRecord215 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
dppIdstringyes
dppVersionnumberyes
registrystringyes
statusstringyes
externalIdstring | nullyes
registryUrlstring | nullyes
requestDigeststringyes
responseanyyes
errorstring | nullyes
submittedBystring | nullyes
submittedAtstring (date-time) | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes
DppVersion7 fields
FieldTypeRequired
idstringyes
dppIdstringyes
versionnumberyes
schemaVersionstringyes
dataanyyes
createdBystring | nullyes
createdAtstring (date-time)yes
EpcisEmittedEvent5 fields
FieldTypeRequired
typestringyes
eventIDstringyes
eventTimestringyes
bizStepstringyes
dispositionstringno
EpcisSubscription13 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
namestringyes
webhookIdstringyes
destinationUrlstringyes
filtersanyyes
activebooleanyes
createdBystring | nullyes
notifiedCountnumberyes
backfilledCountnumberyes
lastNotifiedAtstring (date-time) | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes
EpdIndicator5 fields
FieldTypeRequired
keystringyes
labelstringyes
unitstringyes
corebooleanyes
notestringno
EpdModule4 fields
FieldTypeRequired
key"A1" | "A2" | "A3" | "A4" | "A5" | "B1" | "B2" | "B3" | "B4" | "B5" | "B6" | "B7" | "C1" | "C2" | "C3" | "C4" | "D" | "A1-A3"yes
labelstringyes
stage"product" | "construction" | "use" | "end-of-life" | "beyond"yes
scenarioExpectedbooleanyes
EpdModuleValues8 fields
FieldTypeRequired
modulestringyes
labelstringyes
stage"product" | "construction" | "use" | "end-of-life" | "beyond"yes
indicatorsmap of numberyes
declaredstring[]yes
scenarioDocumentedbooleanyes
unitIssuesobject[]yes
notDeclaredstring[]yes
EpdReadiness16 fields
FieldTypeRequired
status"partial" | "declared" | "insufficient"yes
standardstringyes
methodVersionstringyes
declaredUnitstring | nullyes
functionalUnitstring | nullyes
systemBoundarystringyes
modulesEpdModuleValues[]yes
indicatorsobject[]yes
coreIndicatorCoveragePercentnumberyes
carbonStorageobjectyes
verificationConstructionVerificationyes
gapsConstructionGap[]yes
errorGapsnumberyes
warningGapsnumberyes
caveatstringyes
disclaimerstringyes
EvidenceLink14 fields
Exposure11 fields
FieldTypeRequired
materialstringyes
criticalityobjectyes
suppliersnumberyes
singleSourcebooleanyes
upstreamOnlybooleanyes
countriesstring[]yes
countryConcentrationnumberyes
topCountrystring | nullyes
unattributedbooleanyes
exposureScorenumberyes
reasonsstring[]yes
ExtensionInput12 fields
FieldTypeRequired
keystringyes
labelstringyes
categorystring | nullno
descriptionstring | nullno
type"string" | "number" | "boolean" | "date" | "integer" | "enum"no
requiredbooleanno
enumValuesstring[] | any | nullno
patternstring | nullno
minValuenumber | nullno
maxValuenumber | nullno
unitstring | nullno
activebooleanno
ExtensionIssue6 fields
FieldTypeRequired
extensionIdstringyes
keystringyes
labelstringyes
messagestringyes
kind"missing" | "invalid"yes
severity"medium" | "high"yes
FactInput7 fields
FieldTypeRequired
documentIdstringyes
pathstringyes
valuestringyes
evidencestringyes
unitstring | nullno
confidencestringno
notestringno
FieldChange4 fields
FieldTypeRequired
fieldstringyes
beforeanyyes
afteranyyes
classes"breaking" | "tightening" | "easing" | "editorial" | "timing"[]yes
Finding3 fields
FieldTypeRequired
pathstringyes
messagestringyes
severity"error" | "warning"yes
FuturePackReadiness6 fields
FieldTypeRequired
packobjectyes
daysUntilnumber | nullyes
labelstringyes
readybooleanyes
missingobject[]yes
newFieldsstring[]yes
Gap5 fields
FieldTypeRequired
idstringyes
requirementstringyes
severity"error" | "info" | "warning"yes
basisstringyes
detailstringyes
GlossaryEntry3 fields
FieldTypeRequired
termstringyes
reasonstringyes
kind"standard" | "scheme" | "regime" | "acronym"yes
Gs1CompanyPrefixe11 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
statusstringyes
updatedAtstring (date-time)yes
evidencestring | nullyes
verifiedAtstring (date-time) | nullyes
prefixstringyes
evidenceDocumentIdstring | nullyes
verifiedBystring | nullyes
rejectedReasonstring | nullyes
Gs1CompanyPrefixe211 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
prefixstringyes
statusstringyes
evidencestring | nullyes
evidenceDocumentIdstring | nullyes
verifiedAtstring (date-time) | nullyes
verifiedBystring | nullyes
rejectedReasonstring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes
HazardStatement7 fields
FieldTypeRequired
codestringyes
textstringyes
hazardClassstringyes
categorystringyes
pictogramstring | nullyes
signal"DANGER" | "WARNING" | nullyes
ruleobject | object | object | objectyes
IgnoredBomField4 fields
FieldTypeRequired
indexnumber | nullyes
fieldstringyes
valuestringyes
reasonstringyes
IgnoredRiskField3 fields
FieldTypeRequired
fieldstringyes
valuestringyes
reasonstringyes
ImpactCoverage6 fields
FieldTypeRequired
passportsnumberyes
newlyFailingnumberyes
newlyPassingnumberyes
stillFailingnumberyes
unchangednumberyes
affectedPercentnumberyes
ImportDefaults5 fields
FieldTypeRequired
categorystring | nullno
workspaceIdstring | nullno
brandstring | nullno
manufacturerNamestring | nullno
manufacturerCountrystring | nullno
ImportInput4 fields
FieldTypeRequired
itemsobject[]no
defaultCategorystring | nullno
workspaceIdstring | nullno
updateLinkedbooleanno
Item9 fields
FieldTypeRequired
categorystringyes
ruleIdstringyes
messagestringyes
effectiveFromstringyes
sourcestringno
daysUntilnumberyes
status"overdue" | "due-today" | "preparation-late" | "on-track"yes
labelstringyes
prepareBystringyes
ItemGenerationJob18 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
dppIdstringyes
gtinstringyes
batchstring | nullyes
prefixstringyes
widthnumberyes
startNumbernumberyes
countnumberyes
nextOffsetnumberyes
createdCountnumberyes
skippedCountnumberyes
statusstringyes
errorstring | nullyes
heartbeatAtstring (date-time) | nullyes
createdBystring | nullyes
createdAtstring (date-time)yes
finishedAtstring (date-time) | nullyes
ItemGenerationJob218 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
statusstringyes
createdBystring | nullyes
dppIdstringyes
widthnumberyes
gtinstringyes
countnumberyes
batchstring | nullyes
errorstring | nullyes
prefixstringyes
startNumbernumberyes
nextOffsetnumberyes
createdCountnumberyes
skippedCountnumberyes
heartbeatAtstring (date-time) | nullyes
finishedAtstring (date-time) | nullyes
ItemIdentity11 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
dppIdstringyes
gtinstringyes
serialstringyes
batchstring | nullyes
statusstringyes
attributesanyyes
jobIdstring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes
Label14 fields
FieldTypeRequired
methodstringyes
classifiedbooleanyes
signalWord"DANGER" | "WARNING" | nullyes
pictogramsobject[]yes
hazardsLabelHazard[]yes
precautionaryobject[]yes
mixtureRulesMixtureRuleResult[]yes
physicalHazardsPhysicalHazard[]yes
perComponentobject[]yes
unresolvedobject[]yes
missingstring[]yes
verifyBeforeLabellingstring[]yes
notesstring[]yes
disclaimerstringyes
Label213 fields
FieldTypeRequired
dppIdstringyes
productNamestringyes
skustringyes
serialstring | nullyes
gtinstring | nullyes
digitalLinkstringyes
passportUrlstringyes
qrDataUrlstringno
datamatrixDataUrlstringno
symbolTextstringno
humanReadablestringno
symbolWarningstringno
statusstringno
LabelComparison3 fields
FieldTypeRequired
status"matches" | "not-declared" | "review-required"yes
fieldsobject[]yes
warningsstring[]yes
LabelHazard8 fields
FieldTypeRequired
codestringyes
textstringyes
hazardClassstringyes
categorystringyes
pictogramstring | nullyes
signal"DANGER" | "WARNING" | nullyes
triggerobject | object | objectyes
verifybooleanyes
LanguageReport16 fields
FieldTypeRequired
localestringyes
languageNamestringyes
status"skipped" | "failed" | "drafted"yes
writtenbooleanyes
segmentsnumberyes
segmentsDraftednumberyes
verdict"suspect" | "review-carefully" | "ready-for-review" | nullyes
scorenumber | nullyes
termsLoststring[]yes
suspectstring[]yes
reviewCarefullystring[]yes
scriptstringyes
reviewFocusstring[]yes
signalsobject[]yes
skippedReasonstringno
draftmap of objectno
LcaEstimateInput4 fields
FieldTypeRequired
materialsobject[]yes
manufactureCountrystringno
manufacturingElectricityKwhnumberno
transportLcaTransportInput[]no
LcaTransportInput3 fields
FieldTypeRequired
modestringyes
distanceKmnumberyes
weightKgnumberno
LeaseContract17 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
dppIdstringyes
contractRefstring | nullyes
lesseeTypestringyes
lesseeRefstring | nullyes
lesseeRefHashstring | nullyes
countrystring | nullyes
startDatestring (date-time)yes
endDatestring (date-time) | nullyes
monthlyAmountstring | nullyes
currencystring | nullyes
statusstringyes
notesstring | nullyes
createdBystring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes
LeaseContract217 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
statusstringyes
createdBystring | nullyes
updatedAtstring (date-time)yes
dppIdstringyes
countrystring | nullyes
notesstring | nullyes
contractRefstring | nullyes
lesseeTypestringyes
lesseeRefstring | nullyes
lesseeRefHashstring | nullyes
startDatestring (date-time)yes
endDatestring (date-time) | nullyes
monthlyAmountstring | nullyes
currencystring | nullyes
LeaseInput10 fields
FieldTypeRequired
lesseeType"public" | "consumer" | "business"no
lesseeRefstring | nullno
countrystring | nullno
contractRefstring | nullno
startDatestring | string (date-time)no
endDatestring | string (date-time) | any | nullno
monthlyAmountnumber | nullno
currencystring | nullno
notesstring | nullno
transferCustodybooleanno
LedgerState5 fields
FieldTypeRequired
creditsobjectyes
physicalobjectyes
blendRationumber | nullyes
lotsLot[]yes
problemsobject[]yes
LifecycleReport18 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
dppIdstringyes
grantIdstring | nullyes
reporterNamestringyes
accessTierstringyes
typestringyes
serialstring | nullyes
occurredAtstring (date-time)yes
locationstring | nullyes
notesstring | nullyes
measurementsanyyes
statusstringyes
decidedBystring | nullyes
decidedAtstring (date-time) | nullyes
decisionReasonstring | nullyes
eventIdstring | nullyes
createdAtstring (date-time)yes
LocaleInfo3 fields
FieldTypeRequired
codestringyes
namestringyes
nativeNamestringyes
Lot9 fields
FieldTypeRequired
entryIdstringyes
occurredOnstringyes
quantitynumberyes
creditsnumberyes
sharenumberyes
remainingQuantitynumberyes
remainingCreditsnumberyes
expiresOnstring | nullyes
expiredbooleanyes
MappingTemplate8 fields
FieldTypeRequired
keystringyes
systemstringyes
family"ERP" | "PIM" | "PLM"yes
labelstringyes
descriptionstringyes
mappingobjectyes
feedExamplestringyes
notesstring[]yes
MarketVerdict4 fields
FieldTypeRequired
compliantbooleanyes
scorenumberyes
gradestringyes
missingstring[]yes
MaterialsDossier13 fields
FieldTypeRequired
dossierVersionstringyes
dppVersionnumber | nullyes
generatedAtstringyes
productTypestringyes
categorystringyes
articleobjectyes
repairabilityRepairabilityyes
recycledContentRecycledContentResultyes
criticalRawMaterialsobject[]yes
gapsGap[]yes
claimsobject[]yes
crmListVersionstringyes
caveatstringyes
MergeInput8 fields
FieldTypeRequired
idsstring[]yes
datamap of anyno
schemaIdstringno
schemaVersionstringno
serialstringno
publishbooleanno
archiveSourcesbooleanno
notestringno
MixtureRuleResult8 fields
FieldTypeRequired
groupstringyes
statementsstring[]yes
sumPercentnumberyes
thresholdPercentnumberyes
triggeredbooleanyes
resultingClassificationstringno
contributionsobject[]yes
verifybooleanyes
OrganizationRule13 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
categorystring | nullyes
codestringyes
severitystringyes
definitionanyyes
notestring | nullyes
activebooleanyes
effectiveFromstring (date-time) | nullyes
effectiveTostring (date-time) | nullyes
createdBystring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes
OrganizationRule213 fields
FieldTypeRequired
activebooleanyes
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
createdBystring | nullyes
updatedAtstring (date-time)yes
categorystring | nullyes
notestring | nullyes
codestringyes
severitystringyes
definitionanyyes
effectiveFromstring (date-time) | nullyes
effectiveTostring (date-time) | nullyes
OrgRuleInput8 fields
FieldTypeRequired
codestringyes
categorystring | nullno
severity"error" | "info" | "warning"no
definitionmap of anyyes
notestring | nullno
activebooleanno
effectiveFromstring | nullno
effectiveTostring | nullno
Outcome8 fields
FieldTypeRequired
recordnumberyes
keystring | nullyes
action"error" | "created" | "updated" | "unchanged" | "unmatched" | "would-update" | "would-create"yes
productIdstringno
dppIdstringno
versionnumberno
changesobject[]no
errorsstring[]no
PackCoverage5 fields
FieldTypeRequired
fieldsnumberyes
blockingRulesnumberyes
rulesnumberyes
gradablebooleanyes
notestringyes
PackRef3 fields
FieldTypeRequired
codestringyes
versionstringyes
statusstringyes
ParsedElement4 fields
FieldTypeRequired
aistringyes
namestringyes
valuestringyes
formattedstringno
ParseResult5 fields
FieldTypeRequired
validbooleanyes
gtinstringno
elementsParsedElement[]yes
issuesobject[]yes
separatorUsedbooleanyes
PassportComponent17 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
namestringyes
createdAtstring (date-time)yes
createdBystring | nullyes
updatedAtstring (date-time)yes
supplierIdstring | nullyes
rolestring | nullyes
childDppIdstring | nullyes
externalReferencestring | nullyes
quantitystringyes
massKgstring | nullyes
visibilitystringyes
positionnumberyes
parentDppIdstringyes
sourceMappingIdstring | nullyes
sourceLinestring | nullyes
PassportComponent217 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
parentDppIdstringyes
childDppIdstring | nullyes
externalReferencestring | nullyes
namestringyes
rolestring | nullyes
quantitystringyes
massKgstring | nullyes
supplierIdstring | nullyes
visibilitystringyes
positionnumberyes
sourceMappingIdstring | nullyes
sourceLinestring | nullyes
createdBystring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes
PassportObligation17 fields
FieldTypeRequired
codestringyes
kindstringyes
titlestringyes
instructionstringyes
fieldPathstring | nullyes
evidenceTypestring | nullyes
sourcestringyes
locatorstringyes
effectiveFromstring | nullyes
dateType"fixed" | "conditional" | "indicative"yes
prepareBystring | nullyes
daysUntilnumber | nullyes
status"missing" | "not-applicable" | "overdue" | "ready" | "indicative" | "confirm"yes
labelstringyes
recommendationstring | nullyes
action"confirm" | "update-passport" | "upload-evidence" | nullyes
packPackRefyes
PhysicalHazard5 fields
FieldTypeRequired
codestringyes
propertystringyes
declaredbooleanyes
declaredValuestring | nullyes
notestringyes
PlacedBomLine14 fields
FieldTypeRequired
indexnumber | nullyes
descriptionstringyes
materialstringyes
factorKeystringyes
factornumberyes
factorBasis"mass" | "energy"yes
matchedBystringyes
unitstringyes
quantitynumberyes
quantityNormalisednumberyes
normalisedUnit"kg" | "kwh"yes
valueKgCo2enumberyes
evidencestring | nullyes
source"model" | "deterministic"yes
PlanCheck5 fields
FieldTypeRequired
planNamestringyes
productsobjectyes
categoriesobjectyes
exceededbooleanyes
messagestring | nullyes
Product16 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
workspaceIdstring | nullyes
modelIdstring | nullyes
variantAttributesanyyes
namestringyes
skustringyes
gtinstring | nullyes
categorystringyes
brandstring | nullyes
descriptionstring | nullyes
manufacturerNamestring | nullyes
manufacturerCountrystring | nullyes
metadataanyyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes
Product216 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
namestringyes
brandstring | nullyes
createdAtstring (date-time)yes
descriptionstring | nullyes
updatedAtstring (date-time)yes
workspaceIdstring | nullyes
modelIdstring | nullyes
variantAttributesanyyes
skustringyes
gtinstring | nullyes
categorystringyes
manufacturerNamestring | nullyes
manufacturerCountrystring | nullyes
metadataanyyes
ProductImportRow17 fields
FieldTypeRequired
linenumberyes
namestringno
brandstringno
descriptionstringno
skustringno
gtinstringno
categorystringno
manufacturerNamestringno
manufacturerCountrystringno
imageUrlstringno
modelNumberstringno
manufacturerDunsstringno
importerNamestringno
importerCountrystringno
importerEoristringno
authorizedRepNamestringno
authorizedRepCountrystringno
ProductModel12 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
codestringyes
namestringyes
categorystringyes
brandstring | nullyes
workspaceIdstring | nullyes
variantAxesanyyes
sharedDataanyyes
createdBystring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes
ProductModel212 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
namestringyes
brandstring | nullyes
createdAtstring (date-time)yes
createdBystring | nullyes
updatedAtstring (date-time)yes
workspaceIdstring | nullyes
categorystringyes
codestringyes
variantAxesanyyes
sharedDataanyyes
PropagationGap7 fields
FieldTypeRequired
casstringyes
namestringyes
entitystringyes
tiernumberyes
percentnumber | nullyes
messagestringyes
severity"error" | "warning"yes
PublicObligation7 fields
FieldTypeRequired
titlestringyes
summarystringyes
regulationstringyes
locatorstringyes
effectiveFromstring | nullyes
dateType"fixed" | "conditional" | "indicative"yes
whenstringyes
RecycledClaim16 fields
FieldTypeRequired
pathstringyes
componentstring | nullyes
materialstringyes
recycledPercentnumberyes
weightKgnumber | nullyes
weightPercentnumber | nullyes
weightnumberyes
weightUnit"percent" | "kg"yes
weightPercentOfTotalnumberyes
weightablebooleanyes
originstring | nullyes
auditSchemestring | nullyes
substantiatedbooleanyes
criticalCriticalMaterial | any | nullyes
targetobject | any | nullyes
meetsTargetboolean | nullyes
RecycledContentResult13 fields
FieldTypeRequired
weightedPercentnumber | nullyes
simpleAveragePercentnumber | nullyes
weightBasisKgnumber | nullyes
weightBasisPercentnumber | nullyes
weightUnit"percent" | "kg" | nullyes
coveragePercentnumberyes
claimsRecycledClaim[]yes
unweightableClaimsobject[]yes
unsubstantiatedClaimsobject[]yes
criticalMaterialsobject[]yes
targetsobject[]yes
warningsstring[]yes
notestringyes
RecycledContentTarget3 fields
FieldTypeRequired
materialstringyes
targetsobject[]yes
basisstringyes
RegistrationEntry7 fields
FieldTypeRequired
dppIdstringyes
upistringyes
granularity"batch" | "model" | "item"yes
productGroupstring | nullyes
modelIdentifierstring | nullyes
batchIdentifierstring | nullyes
issuesstring[]yes
RegulationPack3 fields
FieldTypeRequired
manifestmap of anyyes
rulesRule[]yes
schemamap of anyyes
RegulatoryImpactReport24 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
referencestringyes
versionNumbernumberyes
statusstringyes
codestringyes
categorystringyes
fromVersionstring | nullyes
toVersionstring | nullyes
leadTimeDaysnumberyes
breakingnumberyes
tighteningnumberyes
easingnumberyes
editorialnumberyes
timingnumberyes
passportsInScopenumberyes
newlyFailingnumberyes
newlyPassingnumberyes
stillFailingnumberyes
payloadanyyes
issuedBystring | nullyes
issuedAtstring (date-time)yes
revokedAtstring (date-time) | nullyes
revokedReasonstring | nullyes
RegulatoryImpactReport224 fields
FieldTypeRequired
statusstringyes
idstringyes
organizationIdstringyes
payloadanyyes
categorystringyes
referencestringyes
versionNumbernumberyes
codestringyes
issuedBystring | nullyes
issuedAtstring (date-time)yes
revokedAtstring (date-time) | nullyes
revokedReasonstring | nullyes
breakingnumberyes
tighteningnumberyes
easingnumberyes
editorialnumberyes
timingnumberyes
fromVersionstring | nullyes
toVersionstring | nullyes
leadTimeDaysnumberyes
passportsInScopenumberyes
newlyFailingnumberyes
newlyPassingnumberyes
stillFailingnumberyes
RemediationCampaign18 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
referencestringyes
titlestringyes
impactReferencestringyes
codestringyes
categorystringyes
fromVersionstring | nullyes
toVersionstringyes
statusstringyes
dueDatestring | nullyes
ownerIdstring | nullyes
lastCheckedAtstring (date-time) | nullyes
createdBystring | nullyes
createdAtstring (date-time)yes
closedAtstring (date-time) | nullyes
closedBystring | nullyes
closeNotestring | nullyes
RemediationItem16 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
campaignIdstringyes
dppIdstringyes
baselinestringyes
findingsanyyes
statusstringyes
supplierRequestIdstring | nullyes
checkedVersionnumber | nullyes
lastCheckFindingsanyyes
lastCheckedAtstring (date-time) | nullyes
resolvedAtstring (date-time) | nullyes
notestring | nullyes
revisionnumberyes
updatedBystring | nullyes
updatedAtstring (date-time)yes
RenderedSymbol8 fields
FieldTypeRequired
symbology"DataMatrix"yes
encoding"digital-link" | "element-string"yes
textstringyes
humanstringyes
pngstringyes
svgstringyes
widthnumberyes
heightnumberyes
Repairability8 fields
FieldTypeRequired
scorenumber | nullyes
coveragePercentnumberyes
completeness"partial" | "insufficient" | "complete"yes
classstring | nullyes
criteriaobject[]yes
declaredobjectyes
missingstring[]yes
caveatstringyes
ResolvedAttribute12 fields
FieldTypeRequired
keystringyes
labelstringyes
type"number" | "boolean" | "date" | "url" | "gtin" | "text" | "integer" | "enum"yes
requiredbooleanyes
requirementstringyes
source"declared" | "derived" | "missing" | "invalid"yes
valueboolean | string | number | any | nullyes
pathstring | nullyes
status"missing" | "invalid" | "filled"yes
messagestringno
notestringno
unitstringno
Restriction5 fields
FieldTypeRequired
casstringyes
namestringyes
entrystringyes
scopestringyes
limitPercentnumberyes
RiskAssessmentInput3 fields
FieldTypeRequired
dryRunbooleanno
notestringno
documentIdsstring[]no
RiskDimension8 fields
FieldTypeRequired
key"quality" | "labour" | "environment" | "governance" | "sanctions" | "logistics" | "financial"yes
labelstringyes
questionstringyes
riskPointsnumberyes
mitigationPointsnumberyes
netPointsnumberyes
status"risk-found" | "mitigated" | "no-signal" | "unassessable"yes
signalsobject[]yes
RiskVerdict3 fields
FieldTypeRequired
verdict"partial" | "unassessed" | "assessed"yes
reasonsstring[]yes
notestringyes
RowOutcome7 fields
FieldTypeRequired
linenumberyes
skustringyes
namestringyes
categorystring | nullyes
action"error" | "create" | "update" | "skip"yes
messagestringno
productIdstringno
Rule14 fields
FieldTypeRequired
idstringyes
severity"error" | "info" | "warning"no
messagestringyes
sourcestringno
effectiveFromstringno
effectiveTostringno
marketsstring[]no
whenobjectno
requireobjectno
requireWhenobjectno
rangeobjectno
expiresWithinDaysobjectno
notOlderThanDaysobjectno
patternobjectno
RuleChange9 fields
FieldTypeRequired
idstringyes
kind"removed" | "added" | "changed"yes
classes"breaking" | "tightening" | "easing" | "editorial" | "timing"[]yes
summarystringyes
severityBeforestring | nullyes
severityAfterstring | nullyes
messagestringyes
sourcestring | nullno
fieldChangesFieldChange[]yes
RuleSetDiff6 fields
FieldTypeRequired
addedRuleChange[]yes
removedRuleChange[]yes
changedRuleChange[]yes
countsobjectyes
headlinestringyes
mayBreakExistingPassportsbooleanyes
ScanEvent5 fields
FieldTypeRequired
idstringyes
createdAtstring (date-time)yes
carrierIdstringyes
countrystring | nullyes
devicestring | nullyes
SchemaExtension17 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
categorystring | nullyes
keystringyes
labelstringyes
descriptionstring | nullyes
typestringyes
requiredbooleanyes
enumValuesanyyes
patternstring | nullyes
minValuestring | nullyes
maxValuestring | nullyes
unitstring | nullyes
activebooleanyes
createdBystring | nullyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes
SchemaExtension217 fields
FieldTypeRequired
activebooleanyes
typestringyes
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
enumValuesanyyes
descriptionstring | nullyes
createdBystring | nullyes
updatedAtstring (date-time)yes
categorystring | nullyes
keystringyes
unitstring | nullyes
labelstringyes
requiredbooleanyes
patternstring | nullyes
minValuestring | nullyes
maxValuestring | nullyes
ScipDossier15 fields
FieldTypeRequired
dossierVersionstringyes
dppVersionnumber | nullyes
candidateListVersionstringyes
generatedAtstringyes
organisationobjectyes
articleobjectyes
identifiersobjectyes
containsSvhcbooleanyes
substancesobject[]yes
otherSubstancesobject[]yes
obligationsScreeningObligation[]yes
safeUseInstructionsstring[]yes
checklistobject[]yes
submissionobjectyes
disclaimerstringyes
Screening14 fields
FieldTypeRequired
status"no-declaration" | "svhc-present" | "svhc-below-threshold" | "restricted-substance" | "no-svhc"yes
productType"unknown" | "article" | "mixture"yes
thresholdPercentnumberyes
declaredCountnumberyes
hitsSubstanceHit[]yes
belowThresholdSubstanceHit[]yes
unresolvedScreeningUnresolved[]yes
watchedSubstanceHit[]yes
obligationsScreeningObligation[]yes
scipobjectyes
marketsstring[]yes
warningsstring[]yes
missingInputsstring[]yes
declarationPathsstring[]yes
ScreeningObligation6 fields
FieldTypeRequired
idstringyes
regulationstringyes
requirementstringyes
status"satisfied" | "outstanding" | "not-applicable"yes
fieldstringno
notestringyes
ScreeningUnresolved4 fields
FieldTypeRequired
namestring | nullyes
casstring | nullyes
pathstringyes
reasonstringyes
SdsPackage14 fields
FieldTypeRequired
revisionstringyes
revisionNotestring | nullno
dppVersionnumber | nullno
generatedAtstringyes
languagestringyes
productobjectyes
sectionsobject[]yes
filledSectionsnumberyes
requiresAuthoringstring[]yes
labelLabelyes
transportobjectyes
wasteobjectyes
identifiersobjectyes
disclaimerstringyes
SdsRecord26 fields
FieldTypeRequired
statusstringyes
idstringyes
organizationIdstringyes
dppIdstringyes
payloadanyyes
referencestringyes
classifiedbooleanyes
ufistring | nullyes
languagestringyes
revisionstringyes
revisionNumbernumberyes
clpSubsetVersionstringyes
signalWordstring | nullyes
pictogramsnumberyes
hazardStatementsnumberyes
rulesToVerifynumberyes
unresolvedComponentsnumberyes
filledSectionsnumberyes
requiresAuthoringnumberyes
labelSnapshotanyyes
issuedBystring | nullyes
issuedAtstring (date-time)yes
supersededAtstring (date-time) | nullyes
revokedAtstring (date-time) | nullyes
revokedReasonstring | nullyes
nextReviewAtstring (date-time) | nullyes
SignedUrl3 fields
FieldTypeRequired
urlstringyes
expiresAtstring (date-time)yes
method"signed" | "proxied"yes
SourceRef5 fields
FieldTypeRequired
kind"passport" | "document" | "attested"yes
documentIdstring | nullno
labelstringyes
confidencestring | nullno
issuedAtstring | nullno
SplitInput7 fields
FieldTypeRequired
countnumberno
serialsstring[]no
datamap of anyno
serialFieldstringno
batchstringno
publishbooleanno
notestringno
SubscriptionInput5 fields
FieldTypeRequired
namestringyes
urlstringyes
secretstring | nullno
filtersanyno
activebooleanno
SubstanceHit18 fields
FieldTypeRequired
namestringyes
casstringyes
ecstringno
reasonstringyes
concentrationPercentnumber | nullyes
concentrationRangestringyes
limitPercentnumberyes
exceedsThresholdbooleanyes
annexXivbooleanyes
restrictedobject | any | nullyes
restrictedExceededbooleanyes
watchlistedbooleanyes
locationstring | nullyes
basis"component" | "whole-product" | "unstated"yes
basisUndeterminedbooleanno
pathstringyes
declaredBystring | nullyes
addedOnstringno
Supplier12 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
namestringyes
createdAtstring (date-time)yes
metadataanyyes
countrystring | nullyes
emailstring | nullyes
trustScorenumber | nullyes
tiernumberyes
viaSupplierIdstring | nullyes
identityWithheldbooleanyes
withheldContactstring | nullyes
SupplierPortalDocument4 fields
FieldTypeRequired
namestringyes
instructionsstringno
idstringyes
uploadedobjectno
SupplierRequest18 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
supplierIdstringyes
dppIdstring | nullyes
statusstringyes
requestedFieldsanyyes
requestItemsanyyes
requestedDocumentsanyyes
messagestring | nullyes
responseDataanyyes
respondedAtstring (date-time) | nullyes
inviteTokenHashstring | nullyes
inviteSentAtstring (date-time) | nullyes
inviteExpiresAtstring (date-time) | nullyes
parentRequestIdstring | nullyes
tiernumberyes
createdAtstring (date-time)yes
updatedAtstring (date-time)yes
SupplierRequest218 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
createdAtstring (date-time)yes
statusstringyes
updatedAtstring (date-time)yes
dppIdstring | nullyes
supplierIdstringyes
tiernumberyes
requestedFieldsanyyes
requestItemsanyyes
requestedDocumentsanyyes
messagestring | nullyes
responseDataanyyes
respondedAtstring (date-time) | nullyes
inviteTokenHashstring | nullyes
inviteSentAtstring (date-time) | nullyes
inviteExpiresAtstring (date-time) | nullyes
parentRequestIdstring | nullyes
SupplierRequestItem5 fields
FieldTypeRequired
idstringyes
kind"material" | "substance"yes
namestringyes
fieldsstring[]yes
instructionsstringno
SupplierRiskAssessment37 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
supplierIdstringyes
referencestringyes
versionNumbernumberyes
statusstringyes
riskVersionstringyes
catalogueVersionstringyes
providerstringyes
modelstring | nullyes
degradedbooleanyes
providerErrorstring | nullyes
latencyMsnumber | nullyes
responsesCountnumberyes
documentsCountnumberyes
readableDocumentsnumberyes
evidenceCharactersnumberyes
deterministicScorenumberyes
deterministicLevelstringyes
riskPointsnumberyes
mitigationPointsnumberyes
netRiskPointsnumberyes
penaltynumberyes
combinedIndexnumberyes
combinedLevelstringyes
acceptedCountnumberyes
droppedCountnumberyes
ignoredCountnumberyes
unassessableCountnumberyes
verdictstringyes
payloadanyyes
notestring | nullyes
createdBystring | nullyes
createdAtstring (date-time)yes
revokedAtstring (date-time) | nullyes
revokedBystring | nullyes
revokeReasonstring | nullyes
SvhcListAge7 fields
FieldTypeRequired
versionstringyes
ageDaysnumberyes
stalebooleanyes
nextExpectedUpdatestringyes
entriesnumberyes
coverage"subset"yes
messagestringyes
TaxonomyResult7 fields
FieldTypeRequired
referenceobjectyes
substantialContributionobjectyes
dnshobject[]yes
minimumSafeguardsobjectyes
countsobjectyes
verdict"aligned" | "not-aligned" | "not-assessed" | "partially-assessed"yes
caveatstringyes
TransferInput6 fields
FieldTypeRequired
ownerType"other" | "manufacturer" | "distributor" | "retailer" | "consumer" | "repairer" | "recycler" | "lessee"yes
ownerRefstring | nullno
countrystring | nullno
transferRefstring | nullno
notesstring | nullno
occurredAtstring | string (date-time)no
TranslateInput5 fields
FieldTypeRequired
localesstring[]no
pathsstring[]no
overwritebooleanno
dryRunbooleanno
notestringno
UiField18 fields
FieldTypeRequired
pathstringyes
labelstringyes
kind"number" | "boolean" | "object" | "array" | "json" | "text" | "enum"yes
requiredbooleanyes
optionsstring[]no
optionLabelsmap of stringno
minimumnumberno
maximumnumberno
minLengthnumberno
maxLengthnumberno
descriptionstringno
requiredLevel"error" | "info" | "warning"no
requiredIfstring[]no
unitstringno
examplesany[]no
widgetstringno
deprecatedbooleanno
childrenany[]no
UnplacedBomLine3 fields
FieldTypeRequired
indexnumberyes
textstringyes
reasonstringyes
UnresolvedBomLine6 fields
FieldTypeRequired
indexnumber | nullyes
materialstringyes
quantitynumber | nullyes
unitstring | nullyes
reasonstringyes
actionstringyes
UpsertInput6 fields
FieldTypeRequired
fieldsmap of string | nullyes
statusstringno
replacebooleanno
notestringno
confirmstring[]no
provenanceobjectno
ValidationRun10 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
dppIdstringyes
dppVersionnumberyes
packCodestringyes
packVersionstringyes
scorenumberyes
compliantbooleanyes
resultanyyes
createdAtstring (date-time)yes
VerifiableCredentialBody8 fields
FieldTypeRequired
@contextstring[]yes
idstringno
typestring[]yes
issuerobjectyes
validFromstringyes
validUntilstringyes
credentialStatusobjectno
credentialSubjectDppCredentialSubjectyes
VerifiableCredentialClaims15 fields
FieldTypeRequired
@contextstring[]yes
idstringno
typestring[]yes
issuerobjectyes
validFromstringyes
validUntilstringyes
credentialStatusobjectno
credentialSubjectDppCredentialSubjectyes
issstringyes
substringyes
jtistringyes
iatnumberyes
nbfnumberyes
expnumberyes
vcVerifiableCredentialBodyno
VerificationMethod5 fields
FieldTypeRequired
idstringyes
typestringno
controllerstringno
publicKeyJwkmap of anyno
publicKeyMultibasestringno
WebhookDelivery11 fields
FieldTypeRequired
idstringyes
webhookIdstringyes
organizationIdstringyes
eventstringyes
urlstringyes
statusCodenumber | nullyes
okbooleanyes
errorstring | nullyes
attemptsnumber | nullyes
payloadanyyes
createdAtstring (date-time)yes
WidgetPayload13 fields
FieldTypeRequired
dppIdstringyes
passportUrlstringyes
digitalLinkUrlstring | nullyes
qrImageUrlstringyes
productobjectyes
issuerobjectyes
versionnumberyes
publishedAtstring | nullyes
complianceobject | any | nullyes
badgesobjectyes
labelstringyes
generatedAtstringyes
caveatstringyes
WithheldField3 fields
FieldTypeRequired
pathstringyes
labelstringyes
tiers"recycler" | "authority" | "legitimate_interest" | "service"[]yes
WorkingDraft9 fields
FieldTypeRequired
organizationIdstringyes
userIdstringyes
entityKindstringyes
entityIdstringyes
baseVersionnumberyes
schemaVersionstringyes
dataanyyes
revisionnumberyes
updatedAtstring (date-time)yes
Workspace6 fields
FieldTypeRequired
idstringyes
organizationIdstringyes
namestringyes
slugstringyes
brandstring | nullyes
createdAtstring (date-time)yes