/api/v1/epcis/captureEPCIS-Ereignisse erfassen
Die GS1-EPCIS-2.0-Capture-Schnittstelle. Übermitteln Sie Lieferketten-Ereignisse von Partnern, ERP-Systemen oder Werkstatt-Scannern, und TracePass hängt sie an die passenden Pässe an. Der Request-Body akzeptiert vier Formen: ein vollständiges EPCISDocument, ein EPCISQueryDocument, ein einzelnes nacktes Event oder ein nacktes JSON-LD-Array von Events. Senden Sie Content-Type: application/ld+json.
Jedes Event wird auf strukturelle Gültigkeit geprüft (erforderliche Envelope-Schlüssel, Pflichtfelder des Events, Vorhandensein von epcList), anschließend wird jeder EPC in epcList / quantityList zu einem Pass in Ihrem Workspace aufgelöst. Gültige Events werden gespeichert und der Aufruf liefert 202 Accepted mit einer captureJobId. Die Verarbeitung ist abgeschlossen, bevor die Antwort gesendet wird; der Status 202 folgt der Konvention der EPCIS-2.0-Capture-Schnittstelle. Zählt als ein v1-Schreibvorgang, unabhängig davon, wie viele Events das Dokument trägt.
Das Volumen wird gegen das maxEpcisEventsPerMonth des Tarifs gemessen (1.000 bei Basic bis 10.000.000 bei Pro, 10 bei Free, unbegrenzt bei Enterprise). Wenn ein einzelner Capture-Aufruf das Periodenvolumen über das Limit eines kostenpflichtigen Tarifs heben würde, liefert der Endpoint 402 {"error":"epcis_events_overage_required"} mit ausgefüllten overageBlocks + totalOverageCents — wiederholen Sie denselben Aufruf mit "confirmOverage":true im Body, um die Gebühr pro 1.000-Event-Block anzunehmen. Bei Free liefert dieselbe Überschreitung 402 {"error":"epcis_events_hard_block"} mit Upgrade-CTA; kein Pfad für Überschreitungen. Der Aufruf ist auf zwei Arten idempotent — geben Sie einen Idempotency-Key-Header an, um die gesamte Anfrage wiederholungssicher zu machen, und die Plattform dedupliziert zusätzlich über die EPCIS-eventID jedes Events, sodass ein erneut gesendetes Dokument, das eine frühere Erfassung überschneidet, Events nicht doppelt speichert und den Zähler nicht doppelt belastet.
Header
- Authorizationerforderlich
string
Bearer <token>— entweder eintp_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 — wiederholtes Senden mit demselben Schlüssel liefert das ursprüngliche Erfassungsergebnis. Unabhängig von der
eventID-Deduplizierung pro Event.
Body-Felder
- bodyerforderlich
EPCISDocument | EPCISQueryDocument | EPCISEvent | EPCISEvent[]
JSON-LD-Payload, gesendet mit
Content-Type: application/ld+json. Akzeptiert ein vollständiges EPCISDocument, ein EPCISQueryDocument, ein nacktes Event oder ein nacktes Array von Events. - confirmOverage
boolean
Opt-in-Flag, um die Pro-1.000-Event-Blockgebühr für eine Überschreitung zu akzeptieren, wenn eine Erfassung
maxEpcisEventsPerMonthüberschreiten würde. Ohne dieses Flag liefert der erste Über-dem-Limit-Aufruf einen 402 mitoverageBlocks+totalOverageCentsim Body — senden Sie denselben Payload erneut mitconfirmOverage:true, um die Gebühr zu bestätigen und fortzufahren. Free hat keinen Überschreitungspfad; die Upgrade-erforderlich-Hardblockade ignoriert dieses Flag.e.g. true
Anfrage
curl -sS -X POST https://app.tracepass.eu/api/v1/epcis/capture \
-H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx" \
-H "Idempotency-Key: 7b4f1e2c-9a3d-4e5b-8c1a-2d3e4f5a6b7c" \
-H "Content-Type: application/ld+json" \
-d '{
"@context": "https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld",
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2026-05-09T12:00:00.000Z",
"epcisBody": {
"eventList": [
{
"type": "ObjectEvent",
"eventID": "ni:///sha-256;9f86d0...?ver=CBV2.0",
"eventTime": "2026-05-09T11:58:00.000Z",
"eventTimeZoneOffset": "+02:00",
"epcList": ["https://id.tracepass.eu/p/01/04012345000016/21/BP-48V-100-000001"],
"action": "OBSERVE",
"bizStep": "shipping",
"bizLocation": { "id": "https://id.tracepass.eu/loc/acme-batteries-de" }
}
]
}
}'Antwort
{
"captureJobId": "6650c4d5e6f7a8b9c0d1e2f3",
"status": "success",
"eventCount": 1,
"capturedCount": 1,
"errors": []
}