Skip to main content

Withdraw a published DPP (Approved -> Withdrawn -> public withdrawal notice)

POST 

/api/v1/products/:id/withdraw

Required scope: dpp:withdraw (distinct least-privilege scope: it changes what an already-published passport shows). A WRITE (HMAC + Idempotency-Key). The public DPP shows a withdrawal notice within the cache tick: HTTP 200, with an availability block and X-DPP-Availability: archived on /api/dpp/{slug}. A Counterfeit withdrawal shows the notice only; every other reason keeps the passport under the notice. A successorProductId is REQUIRED for reasons MarketWithdrawal / Supersession and optional for EndOfLife. That is a platform continuity rule and NOT a regulatory one: those three reasons are commercial and assert no regulatory basis. Recall, SafetyDefect and NonCompliance carry regulator-notify metadata (regulatorNotifiedAuthority); Counterfeit does not. Under Reg. (EU) 2023/1542 Art. 38(9) a manufacturer must inform the market surveillance authority immediately where the battery presents a risk. Per-reason legal bases live in src/lib/dpp/withdrawal-legal-basis.ts. The successor must be your own product or a publicly Approved DPP. A RegulatoryDirective withdrawal REQUIRES freezeOrdered and directiveAuthority and accepts an optional directiveReference; all three are refused for any other reason. BMS updates to the product are refused afterwards unless freezeOrdered is false. None of the three is shown publicly.

Request​

Responses​

Withdrawn

Was this page helpful?