REST API - Sendungen und Statusdaten
1 Allgemein
1.1 Einführung
Nachfolgend wird die Schnittstelle beschrieben, die der Shiptrack.com Service anbietet. Die Schnittstelle ist in mehrere URL-Endpunkte nach dem REST Paradigma aufgeteilt. Mithilfe jedes URL-Endpunktes kann eine spezifische Ressource bearbeitet oder abgefragt werden. Sämtliche Abfragen erfolgen per HTTPS. Dabei müssen die in der folgenden Tabelle angegebenen HTTP-Header mit den aufgeführten Werten gesetzt werden. Die Authentifizierung des Aufrufers, erfolgt an der Schnittstelle mithilfe eines zuvor definierten Benutzernamens und Passworts über die HTTP-Basic Authentifizierungsmethode (siehe RFC2617).
HTTP-Header | Wert |
---|---|
Content-Type | application/json |
1.2 Fehlerbehandlung
Damit bei einem auftretenden Fehler in der Schnittstelle der Aufrufer eine aussagekräftige Fehlermeldung bekommt, sendet die Schnittstelle eine Antwort mit einem HTTP-Statuscode, der den Fehler repräsentiert. Außerdem wird eine Nachricht zurück geliefert, die Detailinformationen zum Fehler enthält. Für den Fehler, dass ein Kunde als Parameter angegeben wird, der nicht existiert, wird zum Beispiel der HTTP-Statuscode 404 zurückgesendet. Die dazugehörige Detail-Fehlermeldung sieht wie folgt aus:
{
"Message": "Requested client does not exists"
"ErrorCode": "404.1"
}
Der Standardfehlercode für undefinierte Fehler ist der HTTP-Statuscode 505. Nachfolgend ist eine Tabelle mit allen bekannten Shiptrack.com spezifischen Fehlercodes aufgelistet:
Fehlercode | HTTP-Status | Beschreibung |
---|---|---|
404.1 | 404 | Die angegebene Client-Id existiert nicht in der Datenbank |
400.1 | 400 | Das angegebene Datumsformat im since-Parameter entspricht nicht den Richtlinien |
500.1 | 500 | Es ist kein Statusbaum konfiguriert um die Status auszuwerten |
Inhalt:
|
2 Sendungsverfolgungsdaten
Zum Abruf der Sendungsverfolgungsdaten existieren zwei unterschiedliche Methoden. Die erste Methode ist die Sammelabfrage. Mit dieser können große Datenmenge zwischen zwei Systemen übertragen werden, dabei existiert ein Mechanismus um nur aktualisierte Daten seit dem letzten Abruf zu übertragen. Des Weiteren ist es möglich über diese Methode neue Sendungen oder zusätzliche Informationen für Sendungen an Shiptrack.com zu senden. Als zweite Methode steht die Einzelabfrage zur Verfügung mit der einzelne Sendungen abgefragt werden können. Nachfolgend werden die beiden Methode genauer Erläutert.
2.1 Sammelabfrage
Die Endpunkt-URL der Sammelabfrage hat folgende Struktur:
Der Parameter <Client-Id> muss mit der mitgeteilten Kunden-Id gefüllt werden.
2.1.1 GET
Mit der http-Methode GET werden alle Sendungen, die den Kunden mit der in der URL angegebenen Client-Id zugeordnet sind aufgerufen. Das Ergebnis wird als JSON-String zurück geliefert und als Stream übertragen. Die Liste der Sendungsdaten die zurückgeschickt wird, kann mit folgenden optionalen GET Parametern eingeschränkt werden:
since Wird dieser Parameter angegeben, werden nur Datensätze zurück geliefert, die seit dem Zeitpunkt importiert oder bei denen neue Daten hinzugefügt wurden.
Datentyp:
Datum - Format(YYYYMMddHHmmss) in der Zeitzone UTC oder ISO-8601until Wird dieser Parameter angegeben, werden nur Datensätze zurück geliefert, die bis zu dem Zeitpunkt importiert oder bei denen neue Daten hinzugefügt wurden.
Datentyp:
Datum - Format(YYYYMMddHHmmss) in der Zeitzone UTC oder ISO-8601
2.2 Einzelabfrage
Der Parameter <Client-Id> muss mit der mitgeteilten Kunden-Id gefüllt werden.
2.2.1 GET
Mit dem GET-Verb kann eine Suche auf den Sendungsdaten durchgeführt werden. Dabei wird der jeweilige Suchparameter als GET-Parameter der Anfrage übergeben. Eine Kombination von mehreren Suchparametern ist noch vorhergesehen und führt zu einem leeren Ergebnis. Folgende Suchparameter stehen zur Verfügung:
trackingNr Führt eine Suche auf der Trackingnummer einer Sendung oder eines Paketes durch. Es wird immer die komplette Sendung zurück geliefert auch wenn die Trackingnummer sich auf Paketebene findet. Betroffene Felder sind: shipment_tracking_id auf Sendungsebene und send_id auf Paketebene
Datentyp:
stringreferenceNr Dieser Parameter ermöglicht eine Suche auf den Referenznummern einer Sendung, sowohl auf Sendungs- als auch auf Paketebene. Der angegebene Wert wird in folgenden Feldern gesucht: send_referenznr_01, send_referenznr_02, send_referenznr_03, send_referenznr_04, send_referenznr_05 auf Sendungsebene und send_referenznr_06, send_referenznr_07, send_referenznr_08, send_referenznr_09, send_referenznr_10 auf Paketebene.
Datentyp:
string
2.3 Sendungsanlage
2.3.1 PUT
Mit dem http-Verb PUT können eine oder mehrere Sendungen an den Service übermittelt werden. Bei erfolgreicher Annahme der Anfrage wird nur ein HTTP Status-Code 202 zurückgemeldet. Zur erfolgreichen Übermittlung müssen die Minimalfelder die in Abschnitt 2.3.2 angegeben werden gefüllt sein.
Nach erfolgreicher Übermittlung stehen die Daten nicht sofort zum Abruf über die Sammel- oder Einzelabfrage zur Verfügung sondern müssen erst durch den Service verarbeitet werden.
Falls Sie größere Blöcke übertragen möchten, sprechen Sie uns bitte an, damit wir den Import darauf optimieren können! Eine Blockgröße von mehr als 10 Sendungen ist nicht ratsam.
2.3.2 Minimale Felder für Anlage einer neuen Sendung
Feld | Beschreibung |
---|---|
shipment_tracking_id | Tracking-Sendungsnummer des Frachtführers. (Ist nicht über längeren Zeitraum eindeutig) |
frachtfuehrer | Kürzel des Frachtführers, mit dem die Sendung befördert wird. |
package.send_id | Tracking-Paketnummer des Frachtführers. (Wenn keine abweichende Paketnummer vorhanden ist, dann ist die Sendungsnummer als Paketnummer anzulegen!) |
send_versanddatum | Datum an dem die Sendung versendet wurde. |
2.3.3 Beispiel die für Anlage einer einzelnen neuen Sendung
{
"shipment": [{
"shipment_tracking_id": "123456789",
"frachtfuehrer": "DHL",
"send_versanddatum": {
"time": "12:00:00",
"date": "01/01/2016"
},
"package": [{
"send_id": "123456789"
}]
}]
}
2.3.4 Zusatzparameter
Zur Unterscheidung der auszuführenden Workflows kann ein weiterer Headerparameter mitgegeben werden:
source Wird dieser Parameter angegeben (nach Absprache mit ecovium), werden alle gelieferten Sendungen einem bestimmten Workflow zugeführt.
Datentyp:
string
2.4 Sendungsverfolgungsdatenformat
Nachfolgend wird das Format der Sendungsverfolgungsdaten, welche von der Schnittstelle zurück geliefert und angenommen werden erläutert. Die Übertragung der Daten findet im JSON-Format statt. Dabei wird immer ein Dokument, welches ein Array an Sendungen enthält, übermittelt. Somit wird mindestens folgende Nachricht übertragen:
{
"shipment": [],
"shipment_count": "0"
}
Eine Abfrage die Daten enthält sieht wie folgt aus:
2.4.1 Format der Shipment tags
Im nachfolgenden werden Angaben für Felder auf die einzelnen Ebenen im JSON durch einen Pfad mit Punkten getrennt angegeben. Zum Beispiel wird auf das Feld send_id, welches sich auf der Pakete-Ebene, die sich wiederum auf der Shipment-Ebene befindet, wie folgt angegeben: shipment.package.send_id
2.4.2 Status-Codes
Im zurück gelieferten Ergebnis sind sowohl Status-Werte auf Ebene der Sendung unter dem Schlüssel shipment.shipment_tracking_id.status_code
zu finden, als auch auf der Ebene einzelner Pakete. Diese sind unter dem Schlüssel shipment.package.package_tracking_status.status_path
zu finden. Die genannten Schlüssel enthalten von Shiptrack normierte Status-Codes. Diese Status-Codes sind im Anhang in separaten Tabellen aufgelistet.
Der Status-Code, der unter dem shipment.package.package_tracking_status.status_code
zu finden ist, ist der originale Status-Code der vom Frachtführer übermittelt wurde.
2.4.3 Minimal Felder
Das Ergebnis kann je nach vorhandenem Informationsvolumen mehr oder weniger Informationen enthalten. In der nachfolgenden Tabelle sind alle Felder mit einer Beschreibung aufgeführt die bei jeder Anfrage mindestens mit gesendet werden. Alle Felder befinden sich mindestens auf der Shipment-Ebene, weswegen diese nicht explizit angegeben wird.
Feld | Beschreibung |
---|---|
shipment_tracking_id | Tracking-Sendungsnummer des Frachtführers. (Ist nicht über längeren Zeitraum eindeutig) |
shipment_id | Eindeutige Id der Sendung im Shiptrack.com System. |
frachtfuehrer | Kürzel des Frachtführers, mit dem die Sendung befördert wird. |
package.send_id | Tracking-Paketnummer des Frachtführers. |
send_versanddatum | Datum an dem die Sendung versendet wurde. |
2.4.4 Datumswerte
Datumswerte werden in den Sendungsdaten immer nach folgendem Schema dargestellt:
Feld | Beschreibung |
---|---|
date | Datum im Format mm/dd/yyyy |
time | Zeit im Format hh:mm:ss |
timezone | Zeitzone. Optionales Feld. Wenn Feld nicht angegeben ist die Zeitzone unbekannt. |
Name der Zeitzone | |
timezone.offset | Offset zur UTC Zeitzone |
2.4.5 Optionale Felder
Nachfolgend sind optionale Felder aufgeführt die in der Antwort enthalten seien können.
2.4.5.1 Shipment-ebene
Alle diese Felder befinden sich auf der Shipment-Ebene, weswegen diese nicht explizit angegeben wird.
Feld | Beschreibung |
---|---|
send_referenznr_01 | Referenznummer 1 |
send_referenznr_02 | Referenznummer 2 |
send_referenznr_03 | Referenznummer 3 |
send_referenznr_04 | Referenznummer 4 |
send_referenznr_05 | Referenznummer 5 |
abs_adr_01 | Absenderadresse 1 |
abs_adr_02 | Absenderadresse 2 |
abs_adr_03 | Absenderadresse 2 |
abs_strasse | Absenderstraße |
abs_plz | Absenderpostleitzahl |
abs_ort | Absenderort |
abs_land | Absenderland |
abs_land_kurz | Zweistelliges Absenderländerkürzel (ISO3166) |
abs_mail | Absendermail |
abs_telefon | Absendertelefon |
abs_telefax | Absenderfax |
abs_loc | Standort des Absenders |
empf_adr_01 | Empfängeradresse 1 |
empf_adr_02 | Empfängeradresse 2 |
empf_adr_03 | Empfängeradresse 2 |
empf_strasse | Empfängerstraße |
empf_hnr | Empfängerhausnummer |
empf_plz | Empfängerpostleitzahl |
empf_ort | Empfängerort |
empf_land_kurz | Zweistelliges Empfängerländerkürzel (ISO3166) |
empf_land | Empfängerland |
empf_staat | Staat des Empfängers |
empf_iso | ISO-Code des Empfängers |
empf_nationalitaet | Nationalität des Empfängers |
empf_postfach | Postfach des Empfängers |
empf_unterschrift | Empfängerunterschrift |
empf_mail | Empfängermail |
empf_tel | Empfängertelefon |
empf_kdnr | Empfängerkundennummer |
empf_locale | Sprache des Empfängers (aktuell mögliche Werte: af-ZA, am-ET, be-BY, bg-BG, ca-ES, cs-CZ, da-DK, de-AT, de-CH, de-DE, el-GR, en-AU, en-CA, en-GB, en-IE, en-NZ, en-US, es-ES, et-EE, eu-ES, fi-FI, fr-BE, fr-CA, fr-CH, fr-FR, he-IL, hi-IN, hr-HR, hy-AM, is-IS, it-CH, it-IT, ja-JP, kk-KZ, ko-KR, la-LN, lt-LT, nl-BE, nl-NL, no-NO, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, sk-SK, sl-SI, sr-YU, sv-SE, tr-TR, uk-UA, zh-CN, zh-HK, zh-TW) |
send_gewichtgesamt | Gewicht aller Pakete in der Sendung |
shipment_tracking_url | Link auf eine gebuchte Portalseite mit Trackinginformationen |
send_abholdatum | Abholdatum der Sendung |
send_anz | Anzahl der Pakete in der Sendung |
send_kundenkennung | ggf. besondere Kundennummer |
send_termindatum | Auslieferungsfälligkeit |
send_service_code | Code Zusatzinformationen zur Sendung |
send_service_details | Zusatzinformationen zur Sendung |
send_nachnahmebetrag | Nachnahmebetrag |
send_nachnahmewaehrung | Nachnahmebetrag Währung |
send_mandant | Mandant einer Sendung |
send_service_code | Service code |
send_service_details | Details zur Serviceart |
send_customerservice | Freie Bezeichnung der Serviceart (z.B. Express, Overnight) |
shipment_tags | Spezielle Key-Value Parameter (inbound, outbound b2b,b2c) |
send_estimatedtimeofarrival | Voraussichtliche Lieferzeit |
send_contractedtimeofarrival | Vertragliche Lieferzeit |
send_versandart_kunde | Serviceart Versand |
carrier_contract_id | Vertragsnummer mit dem Frachtführer zur eindeutigen Identifizierung der Konfiguration |
sourcesystem_shipmentid | Eindeutige ID der Sendung aus dem Vorsystem |
2.4.5.2 Shipmentstatus-ebene
Alle diese Felder können sich auf der Shipment-Tracking-Status-Ebene befinden.
Feld | Beschreibung |
---|---|
status_date | Statusdatum |
status_code | Shiptrack-Statuscode |
2.4.5.3 Package-ebene
Alle diese Felder können sich auf der Package-Ebene befinden.
Feld | Beschreibung |
---|---|
send_referenznr_06 | Referenznummer 6 |
send_referenznr_07 | Referenznummer 7 |
send_referenznr_08 | Referenznummer 8 |
send_referenznr_09 | Referenznummer 9 |
send_referenznr_10 | Referenznummer 10 |
send_anzahllademittel_01 | Anzahl der Lademittel 01 |
send_anzahllademittel_02 | Anzahl der Lademittel 02 |
send_anzahllademittel_03 | Anzahl der Lademittel 03 |
send_anzahllademittel_04 | Anzahl der Lademittel 04 |
send_artlademittel_01 | Art des Lademittels 01 |
send_gewichteinzel | Gewicht des Pakets |
send_hoehe | Höhe des Pakets |
send_laenge | Länge des Pakets |
send_breite | Breite des Pakets |
send_versandart | Versandart des Pakets |
send_zusatz | Zusätzliche Pakete |
sourcesystem_packageid | Eindeutige ID des Pakets aus dem Vorsystem |
2.4.5.4 Packagestatus-ebene
Alle diese Felder können sich ebenfalls auf der Package-Tracking-Status-Ebene befinden.
Feld | Beschreibung |
---|---|
status_date | Statusdatum |
status_details | Statusdetails |
status_code | Statuscode |
status_path.status_code | Shiptrack-Statuscode |
status_recipient | Wer hat das Paket entgegengenommen |
status_drop_location | Detail, wo z.B. das Paket abgelegt wurde |
status_country | Statusland kurz |
status_zip | Status Postleitzahl |
status_city | Statusort |
Status_state | Staat zum Status |
status_street | Statusstraße |
status_depot_name | Status-Depotname |
status_additional_info | Zusatzinformationen zum Status |
status_loc | Standort zum Status |
2.4.5.5 Dokument-ebene
Diese Ebene befindet sich innerhalb der Shipment-Ebene. Dieses enthält Dokumente wie Label oder Abliefernachweise (PODs).
Feld | Beschreibung |
---|---|
shipment_document_id | Eindeutige DokumentenId |
shipment_document_status_type | Status des Dokuments. Derzeit mögliche Status:("ShipmentDocumentOnInternalStorageStatus", |
shipment_document_type | Dokumentart. Beispiele: "PoD", "CustomsDocument", "Invoice"," Misc", "Waybill", "Return" |
url | Eindeutiger Pfad zum Dokument |
created | Erstellungsdatum des Dokuments in der Datenbank |
shipment_document_originalname | Originalname des Dokuments, wenn vorhanden |
mimetype | Dokumententyp (tif, gif, png, pdf ...) |
size | Dokumentengröße in byte |
shipment_document_description | Beschreibung des Dokuments |
2.4.5.6 Incident-ebene
Diese Ebene befindet sich innerhalb der Shipment-Ebene.
Feld | Beschreibung |
---|---|
name | Name der Definition, die gegriffen hat |
definition | Guid zur Definition, die gegriffen hat |
created | Erstellungsdatum des Incidents |
2.4.5.7 Timing-ebene
Diese Ebene befindet sich innerhalb der Shipment-Ebene und enthält GTA, ETA oder FIX timings.
Feld | Beschreibung |
---|---|
type | Typ des Timings (ETA, GTA, FIX) |
calculation_quality | Trefferqualität ETA (ContryToCountry → PlzToPlzWithServicedefinition) |
source.label | Wer hat es erstellt oder berechnet (derzeit Ecovium oder Carrier) |
source.service_definition_guid | Eindeutige Id der zugrundeliegenden Versandart |
source.transit_times_guid | Eindeutige Id der zugrundeliegenden Versandzeit in der Versandart |
source.hours_added.hours_total | Summe der Tage aus hours_saturday, hours_sunday & hours_holiday |
source.hours_added.hours_saturday | Anzahl der Samstage, die auf die Laufzeit drauf gerechnet wurden |
source.hours_added.hours_sunday | Anzahl der Sonntage, die auf die Laufzeit drauf gerechnet wurden |
source.hours_added.hours_holiday | Anzahl der Feiertage, die auf die Laufzeit drauf gerechnet wurden |
creation_date | Erstellungszeitpunkt der Berechnung |
range.from_date | Errechneter Lieferzeitpunkt von (Datum + Uhrzeit) |
range.to_date | Errechneter Lieferzeitpunkt bis (Datum + Uhrzeit) |
3 Anhang
3.1 Mögliche Status-Codes auf Sendungs- und Paketebene
Nachfolgend sind die sämtliche Status-Codes aufgelistet, die auf Sendungs- und Paketebene verwendet werden.
3.2 Frachtführerkürzel
Nachfolgend werden alle derzeit bekannten Frachtführerkürzel aufgelistet.