TracePass
Pässe

Pässe im Batch erstellen

Erstellt bis zu 100 Pässe in einem Aufruf. Jedes Element trägt dieselbe Body-Form wie die Einzel-Create-Endpoint ({ productId, gs1: { gtin, serialNumber }, parties? }). Teilerfolg pro Element — jedes bekommt seinen eigenen Status im Antwort-Array.

POST/api/v1/passports/batch
OpenAPI 3.1 herunterladen
POST/api/v1/passports/batch

Pässe im Batch erstellen

Erstellt bis zu 100 Pässe in einem Aufruf. Jedes Element trägt dieselbe Body-Form wie die Einzel-Create-Endpoint ({ productId, gs1: { gtin, serialNumber }, parties? }). Teilerfolg pro Element — jedes bekommt seinen eigenen Status im Antwort-Array.

Der gesamte Batch wird vorab gegen N Schreibvorgänge geprüft: Würde er das Tages-Schreib-Budget überschreiten, gibt der gesamte Batch 429 zurück und nichts wird angelegt. Auf das Budget zählen nur die tatsächlich angelegten Pässe. Jeder Pass wird als Entwurf angelegt, und ein Entwurf belegt keinen Platz im maxDpps-Limit Ihres Plans. Ein Batch liefert daher nie einen Overage-Fehler und löst keine Gebühr aus. Das Plan-Limit und eine etwaige Pro-Pass-Overage-Gebühr greifen erst, wenn der jeweilige Pass im Dashboard veröffentlicht wird.

Idempotency-Key gilt für den gesamten Batch — wiederholtes Senden mit demselben Schlüssel liefert das ursprüngliche vollständige Ergebnis-Array. Limit ist 100 Elemente pro Aufruf (entspricht Stripes Batch-Cap).

Header

  • Authorizationerforderlich

    string

    Bearer <token> — entweder ein tp_ API-Schlüssel (Developer → API Keys; am einfachsten, für Server-zu-Server) oder ein OAuth-2.0-Access-Token (Developer → OAuth Apps; für nutzerautorisierte Apps, scoped und widerrufbar). Die Authentication-Seite enthält den vollständigen OAuth-Flow und die Scope-Liste.

    e.g. Bearer tp_REDACTED_xxxxxxxxxxxx

  • Idempotency-Key

    string

    UUID v4 — gilt für den gesamten Batch.

Body-Felder

  • passportserforderlich

    Array<CreatePassportInput> (1-100)

    1–100 Pass-Objekte, jeweils in der Single-Create-Body-Form, einschließlich eines optionalen lineage-Blocks pro Element für Batterien mit zweitem Leben. Ein Verstoß gegen eine Lineage-Regel lässt nur dieses Element fehlschlagen: sein Ergebnis ist status: "error", und error beginnt mit dem Regelcode, z. B. duplicate_predecessor: ….

Anfrage

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

Antwort

{
  "results": [
    { "index": 0, "status": "created", "data": { "_id": "...", "gs1": { "...": "..." }, "status": "draft" } },
    { "index": 1, "status": "error", "error": "Serial number already exists for this GTIN" },
    { "index": 2, "status": "created", "data": { "...": "..." } }
  ],
  "summary": { "created": 2, "errors": 1, "total": 3 }
}

Verwandte Endpoints