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

 

 

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-8601

  • until 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:
    string

  • referenceNr 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

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

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

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.

timezone.name

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

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

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

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

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

Feld

Beschreibung

shipment_document_id

Eindeutige DokumentenId

shipment_document_status_type

Status des Dokuments. Derzeit mögliche Status:("ShipmentDocumentOnInternalStorageStatus",
"ShipmentDocumentOnExternalStorageStatus",
"ShipmentDocumentExistsStatus",
"ShipmentDocumentDownloadErrorStatus")

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

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

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.