Kant-en-klare, kopieerbare voorbeelden om een OTEP-integratie te bouwen en te verifiëren. Alle endpoints zijn openbaar en alleen-lezen.
Eén genormaliseerde tijdlijn over eigen bezorging, derden en vervoerders heen.
curl https://api.superlabel.ca/api/v1/otep/trackings/SR123456789
{
"result": true,
"format": "otep",
"data": {
"otep_version": "0.1",
"profile": "parcel",
"subject": { "order_id": 12345, "tracking_number": "SR123456789" },
"current_status": "delivered",
"delivered": true,
"events": [
{ "occurred_at": "2026-06-10T08:00:00-04:00", "status_code": "out_for_delivery",
"phase": "out_for_delivery", "location": { "name": "Toronto Hub" },
"source": { "type": "self_delivery" } },
{ "occurred_at": "2026-06-10T11:30:00-04:00", "status_code": "delivered",
"source": { "type": "self_delivery" }, "pod": { "recipient": "J. Smith" } }
]
}
}
Voeg ?format= (of een Accept-profiel) toe om dezelfde tijdlijn te krijgen als GS1 EPCIS 2.0, IATA ONE Record, UN/CEFACT, OpenTelemetry (OTLP), OGC SensorThings, AfterShip, Shopify, Amazon, Walmart, BigCommerce, Magento, WooCommerce of Etsy.
curl "https://api.superlabel.ca/api/v1/otep/trackings/SR123456789?format=epcis"
{ "format": "epcis", "data": { "type": "EPCISDocument", "schemaVersion": "2.0",
"epcisBody": { "eventList": [
{ "type": "ObjectEvent", "action": "OBSERVE", "eventTime": "2026-06-10T11:30:00-04:00",
"bizStep": "urn:epcglobal:cbv:bizstep:receiving", "disposition": "urn:epcglobal:cbv:disp:received" } ] } } }
curl "https://api.superlabel.ca/api/v1/otep/trackings/SR123456789?format=otlp"
POST een willekeurige tijdlijn naar de validator en krijg de exacte fouten en waarschuwingen ten opzichte van de specificatie terug.
curl -X POST https://api.superlabel.ca/api/v1/otep/validate \ -H "Content-Type: application/json" -d '{ "otep_version":"0.1","profile":"parcel", "subject":{"tracking_number":"SR1"}, "events":[{"status_code":"not_a_code","source":{"type":"bogus"}}] }'
{
"conformant": false,
"errors": [
{ "path": "events[0].occurred_at", "message": "occurred_at is required (ISO-8601 with offset)" },
{ "path": "events[0].status_code", "message": "unknown status_code 'not_a_code'..." },
{ "path": "events[0].source.type", "message": "source.type must be one of: self_delivery, ..." }
],
"warnings": []
}
Vertaal je ruwe codes naar de OTEP-codes; bewaar je eigen code in source.external_event_code. De volledige codelijst staat in het Codebook.
# your code -> OTEP status_code "OFD" -> "out_for_delivery" "DELIVERED" -> "delivered" "ATTEMPT_FAIL" -> "delivery_failed" "RTS" -> "return_to_sender"
{ "occurred_at": "2026-06-10T08:00:00-04:00", "status_code": "out_for_delivery",
"source": { "type": "carrier_label", "carrier_code": "ACME", "external_event_code": "OFD" } }
De openbare MCP-server biedt een otep_tracking-tool — een assistent kan een tijdlijn in natuurlijke taal ophalen (en projecteren).
{ "method": "tools/call",
"params": { "name": "otep_tracking",
"arguments": { "tracking_number": "SR123456789", "format": "epcis" } } }
Voor diepgaandere hulp biedt de ontwikkelaars-MCP get_otep_guide, en alles (specificatie, JSON Schema, Codebook, MCP-configuratie, skill) is beschikbaar via de protocol-startpagina.