TracePass
Passaporti

Contrassegnare un passaporto per l'eliminazione

Primo di due passaggi. Un passaporto si elimina in due passaggi: lo contrassegnate qui per l'eliminazione, poi chiamate DELETE /api/v1/passports/{id} (un passaporto mai pubblicato in stato draft o in_review si può eliminare direttamente). L'eliminazione è logica (soft delete): nulla viene cancellato, ma il passaporto scompare dall'API e da ogni superficie pubblica. Chi scansiona il codice QR vede una pagina che indica che il passaporto è terminato, e i formati leggibili da macchina rispondono 410 Gone.

POST/api/v1/passports/{id}/mark-for-deletion
Scarica OpenAPI 3.1
POST/api/v1/passports/{id}/mark-for-deletion

Contrassegnare un passaporto per l'eliminazione

Primo di due passaggi. Un passaporto si elimina in due passaggi: lo contrassegnate qui per l'eliminazione, poi chiamate DELETE /api/v1/passports/{id} (un passaporto mai pubblicato in stato draft o in_review si può eliminare direttamente). L'eliminazione è logica (soft delete): nulla viene cancellato, ma il passaporto scompare dall'API e da ogni superficie pubblica. Chi scansiona il codice QR vede una pagina che indica che il passaporto è terminato, e i formati leggibili da macchina rispondono 410 Gone.

Un passaporto contrassegnato non può più essere modificato, e contrassegnare un passaporto pubblicato libera il suo posto nel piano. Si può contrassegnare un passaporto in qualsiasi stato tranne archiviato; un secondo contrassegno restituisce 409 already_marked_for_deletion. Attiva il webhook passport.marked_for_deletion.

I passaporti della batteria richiedono un motivo. Secondo il Regolamento sulle batterie il passaporto della batteria termina solo dopo che la batteria è stata riciclata (art. 77, paragrafo 8), quindi la richiesta indica perché termina questo passaporto: recycled, never_placed (mai immessa sul mercato) o duplicate_or_error. Senza motivo, un passaporto della batteria restituisce 400 reason_required. Per le altre categorie reason è facoltativo; se presente, deve essere uno degli stessi tre valori.

Rifiutato finché un passaporto più recente vi è collegato. Finché un nuovo passaporto della batteria nel vostro account è collegato a questo come predecessore, il contrassegno restituisce 409 has_live_successor; eliminate prima il passaporto più recente.

L'eliminazione tramite API richiede un piano a pagamento: sul piano Free il contrassegno restituisce 403 deletion_not_on_plan. Conta come una scrittura v1. Rispetta Idempotency-Key. POST /api/v1/passports/by-serial/{serial}/mark-for-deletion è l'alternativa per numero di serie (accetta il disambiguatore ?gtin=).

never_placed è rifiutato per un passaporto immesso sul mercato. Un passaporto registrato come immesso sul mercato risponde 409 reason_contradicts_placement con questo motivo. recycled e duplicate_or_error restano disponibili.

Parametri di percorso

  • idobbligatorio

    string (24 hex chars)

    ID del passaporto.

Header

  • Authorizationobbligatorio

    string

    Bearer <token> — una chiave API tp_ (Developer → API Keys; più semplice, per server-to-server) oppure un access token OAuth 2.0 (Developer → OAuth Apps; per app autorizzate dall'utente, scoped e revocabili). La pagina Authentication contiene il flusso OAuth completo e l'elenco degli scopes.

    e.g. Bearer tp_REDACTED_xxxxxxxxxxxx

  • Idempotency-Key

    string

    UUID v4.

Campi del corpo

  • reason

    enum

    recycled, never_placed o duplicate_or_error. Obbligatorio per i passaporti della batteria, facoltativo per le altre categorie.

    e.g. recycled

Richiesta

curl -sS -X POST \
  https://app.tracepass.eu/api/v1/passports/6650b2c3d4e5f6a7b8c9d0e1/mark-for-deletion \
  -H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f9c2a7e-1b3d-4c5e-8f60-7a8b9c0d1e2f" \
  -d '{ "reason": "recycled" }'

Risposta

{
  "_id": "6650b2c3d4e5f6a7b8c9d0e1",
  "status": "marked_for_deletion",
  "markedForDeletionAt": "2026-11-01T10:00:00.000Z",
  "markedForDeletionReason": "recycled"
}