API changelog
This page lists changes to the Integration API (/api/v1) and to the public passport data (/api/dpp, JSON-LD) that an integration can see. Changes are additive, with one exception: a field the Battery Regulation requires us to correct may be retired in place. Each such retirement is listed here with the field that replaces it. Any other breaking change would ship as /v2.
For the changes to the platform as a whole, see the changelog.
v0.99.22
Retired field: critical_raw_materials_none_declared (breaking, 2026-10-24)
Applies to the EV, LMT, Industrial, Stationary and SLI battery templates.
- The field
critical_raw_materials_none_declaredis retired. The fieldcritical_raw_materials_none_present_declaredreplaces it. It means that the manufacturer declares no critical raw material is present, at any concentration. - Sending the old field returns
UNKNOWN_FIELD: a row error on CSV import and a422 FIELD_VALIDATION_ERRORon the API (see Errors and conventions). - In JSON-LD, the term
dpp:criticalRawMaterialsNoneDeclaredis retired.dpp:criticalRawMaterialsNonePresentDeclaredreplaces it.
What to change in an integration:
- Map your ERP column to
critical_raw_materials_none_present_declared. A mapping that targets the old field is refused. - Remove the old field from anything you send back, including
formDatayou read from the API and write again. - If you read the JSON-LD, read the new term.
- A declaration is not carried over. A product that had the old value set to
truehas to make the new declaration again.
The hazardous-substances declaration (hazardous_substances_none_declared, dpp:hazardousSubstancesNoneDeclared) is unchanged.
New publish gap kind: brand_operator_role_invalid
GET /api/v1/products/{id}/gate and GET /api/v1/products/{id}/readiness can return a gap of kind brand_operator_role_invalid, with resolver operator-ui and detail.reason of not_set or distributor. It applies to every battery category and to no other category.
not_set: the product's brand has no economic operator role. A person sets it on the brand, on the Branding page of the Company Portal.distributor: a brand cannot publish a battery as a distributor. The product has to move to a brand with another role in the product wizard.
No integration change is needed: kind is an open string by contract, and a kind you do not know is routed to a person. The gap cannot be closed over the API.
Passport data
GET /api/dpp/{slug}gainsdataController:{ name, address, email }ornull. See DPP overview.- JSON-LD
dpp:economicOperatorsitems now require a name (an item without one is not listed) and can carrycontactPointwith atelephone, andurl. See JSON-LD format.
Document download
GET /api/v1/documents/{id}/download can answer 502 DOWNLOAD_FAILED for a file whose malware check is not complete or did not pass. Only a file that is still being checked is worth retrying, and only later. Do not retry an infected file, or one whose check failed. See Document download refusals.
GDPR
GET /api/v1/gdpr/access and GET /api/v1/gdpr/portability now return company.legalEntities[] and company.brands[]. See GDPR and data.
v0.99.21
- Battery units.
GETandPOST /api/v1/products/{id}/unitslist and create the battery units of a published model. See The wizard flow. - File fields take a document id. A field of
type: filetakes theidof a document your company already holds. A document id that cannot be used is refused withFILE_REFERENCE_UNRESOLVED.GET /api/v1/categories/{code}/schemareturns anevidenceobject on a file field that the certificate registry knows. See File fields. - Erasure deadline.
POST /api/v1/gdpr/erasereturnsdeadlineRule(one_calendar_month).slaDaysis deprecated:deadlineAtis the deadline. See GDPR and data.
2026-08-01
New publish gap kind registry_registration_missing (resolver operator-ui) on GET /gate and GET /readiness. The gap kind was added on this date and stays inactive until 18 February 2027. It appears only for battery categories in EU DPP scope, only from that date, and only while the product has no production registration in the EU DPP Registry. No integration change is needed today.