TracePass
Passaporti

Creare un passaporto

Crea un singolo passaporto digitale di prodotto. Il passaporto è vincolato a un prodotto (productId) e identificato da un GS1 GTIN + un numero di serie univoco all'interno di quel GTIN. I nuovi passaporti iniziano nello stato `draft` — i campi vengono popolati tramite successive chiamate PATCH e il passaporto viene pubblicato dalla dashboard una volta completata la revisione.

POST/api/v1/passports
Scarica OpenAPI 3.1
POST/api/v1/passports

Creare un passaporto

Crea un singolo passaporto digitale di prodotto. Il passaporto è vincolato a un prodotto (productId) e identificato da un GS1 GTIN + un numero di serie univoco all'interno di quel GTIN. I nuovi passaporti iniziano nello stato `draft` — i campi vengono popolati tramite successive chiamate PATCH e il passaporto viene pubblicato dalla dashboard una volta completata la revisione.

Il GTIN deve essere di 14 cifre con una cifra di controllo GS1 valida e non ancora registrato a un altro tenant. Conta come una scrittura v1 E consuma uno slot DPP dalla quota `maxDpps` del vostro piano — quando tale quota è esaurita e il vostro piano supporta l'eccedenza, la chiamata restituisce 402 con un corpo `overage_required`; ritentate con `confirmOverage: true` per accettare l'addebito per passaporto.

Rispetta l'header opzionale `Idempotency-Key` — la piattaforma riproduce la risposta 201 originale per 24 ore con la stessa chiave, quindi un nuovo tentativo di rete è sicuro.

Header

  • Authorizationobbligatorio

    string

    `Bearer <api-key>`. Generate le chiavi in Developer → API keys (ogni piano, incluso Free; il limite giornaliero di chiamate scala con il piano).

    e.g. Bearer tp_REDACTED_xxxxxxxxxxxx

  • Idempotency-Key

    string

    UUID v4 (o qualsiasi stringa opaca ≤ 255 caratteri) per operazione logica. La prima risposta viene riprodotta per 24 ore.

Campi del corpo

  • productIdobbligatorio

    ObjectId

    ID del prodotto a cui appartiene il passaporto. Deve appartenere all'azienda della chiave API.

    e.g. 6650a1b2c3d4e5f6a7b8c9d0

  • gs1.gtinobbligatorio

    string (14 digits)

    GTIN-14 con una cifra di controllo GS1 valida. Non deve essere già registrato da un altro tenant.

    e.g. 04012345000015

  • gs1.serialNumberobbligatorio

    string (1-100 chars)

    Numero di serie univoco all'interno del GTIN. Lo schema più comune è il modello del prodotto + una sequenza (BP-48V-100-000001).

    e.g. BP-48V-100-000001

  • parties

    Record<role, Party>

    Blocco strutturale parties opzionale. Una mappa indicizzata per ruolo — `manufacturer`, `importer`, `authorisedRepresentative`, `distributor`, `recycler`, `producerResponsibilityOrg`. Ogni valore è una Party. Si veda l'endpoint Upsert party per la forma del corpo di ogni Party. I ruoli possono anche essere aggiunti o sostituiti dopo la creazione tramite PATCH /api/v1/passports/{id}/parties/{role}.

  • confirmOverage

    boolean

    Accetta l'addebito di eccedenza per passaporto quando la quota `maxDpps` del piano è già esaurita. Obbligatorio solo dopo una risposta 402 a un tentativo precedente.

Richiesta

curl -sS https://app.tracepass.eu/api/v1/passports \
  -H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx" \
  -H "Idempotency-Key: 7b4f1e2c-9a3d-4e5b-8c1a-2d3e4f5a6b7c" \
  -H "Content-Type: application/json" \
  -d '{
    "productId": "6650a1b2c3d4e5f6a7b8c9d0",
    "gs1": {
      "gtin": "04012345000015",
      "serialNumber": "BP-48V-100-000001"
    }
  }'

Risposta

{
  "_id": "6650b2c3d4e5f6a7b8c9d0e1",
  "companyId": "6650a0b1c2d3e4f5a6b7c8d9",
  "productId": "6650a1b2c3d4e5f6a7b8c9d0",
  "templateId": "6650a1b2c3d4e5f6a7b8c9d1",
  "gs1": {
    "gtin": "04012345000015",
    "serialNumber": "BP-48V-100-000001",
    "digitalLinkUri": "https://id.tracepass.eu/p/01/04012345000015/21/BP-48V-100-000001"
  },
  "status": "draft",
  "completionPercentage": 32,
  "fieldCounts": {
    "total": 52,
    "empty": 35,
    "approved": 17,
    "pendingReview": 0,
    "flagged": 0
  },
  "fields": { "...": "...seeded from product defaults + template defaults + company prefill..." },
  "createdAt": "2026-05-09T10:00:00.000Z"
}