TracePass
Products

Archive a product

Soft-archive. `Product.status` flips to `archived`; the product disappears from default listings (still visible with the `?showArchived=true` filter). Existing passports keep resolving — archive blocks NEW passport creation against this product going forward, it doesn't break any QR already in customers' hands.

POST/api/v1/products/{id}/archive
Download OpenAPI 3.1
POST/api/v1/products/{id}/archive

Archive a product

Soft-archive. `Product.status` flips to `archived`; the product disappears from default listings (still visible with the `?showArchived=true` filter). Existing passports keep resolving — archive blocks NEW passport creation against this product going forward, it doesn't break any QR already in customers' hands.

Returns `409 Conflict` when any non-archived passport still references the product — archive every passport first, then re-call this endpoint. Available on every paid plan. Counts as one v1 write. Honours `Idempotency-Key`.

There's no DELETE verb here at the same path: `DELETE /api/v1/products/{id}` is the hard-delete endpoint, with stricter eligibility (zero passports of any status). Archive is the safe-default cleanup verb.

Path parameters

  • idrequired

    ObjectId

    Product ID.

Headers

  • Authorizationrequired

    string

    `Bearer <api-key>`.

  • Idempotency-Key

    string

    UUID v4.

Request

curl -sS -X POST \
  https://app.tracepass.eu/api/v1/products/6650b2c3d4e5f6a7b8c9d0e1/archive \
  -H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx"

Response

{
  "_id": "6650b2c3d4e5f6a7b8c9d0e1",
  "name": "Demo product",
  "status": "archived",
  "updatedAt": "2026-05-23T17:00:00.000Z"
}