SOAP API - Sendungen und Statusdaten

1   Allgemein

1.1   Einführung

Nachfolgend wird die SOAP Schnittstelle beschrieben, die vom Shiptrack.com Service angeboten. Die Schnittstelle arbeitet nach dem SOAP-Standard. Die Authentifizierung des Aufrufers, erfolgt an der Schnittstelle mithilfe eines zuvor definierten Benutzernamens und Passworts über die HTTP-Basic Authentifizierungsmethode (siehe RFC2617).

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:

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

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

Über die SOAP Schnittstellen können die Sendungsverfolgungsdaten mithilfe von zwei Funktionen abgerufen werden, die ein gefiltertes Ergebnis der gesamten Sendungsverfolgungsdaten eines Kunden zurück liefern. Beide Funktionen liefern das Ergebnis in Form eines XML-Strings, dessen Format im nachfolgenden Kapitel erläutert wird.  Die zugehörigen WSDL Dateien, die den SOAP Webservice beschreiben, finden Sie hier:

  File Modified

File SOAP_Shiptrack_shipments.wsdl

Jun 10, 2022 by Michael.Landwehr

File SOAP_Shiptrack_shipmentsearch.wsdl

Jun 10, 2022 by Michael.Landwehr

 

2.1   Sammelabfrage

Die Endpunkt-URL der Sammelabfrage muss folgende Struktur aufweisen:

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 auf. Das Ergebnis wird als XML 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

Die URL für der Einzelabfrage hat folgenden Aufbau:

2.2.1   GetWithTrackingNr

Diese Methode 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 der Paketebene findet. Betroffene Felder sind: shipment_tracking_id auf Sendungsebene und send_id auf Paketebene.

Parameter

Beschreibung

Parameter

Beschreibung

client

Id des Shiptrack.com Kunden. Wird von ecovium mitgeteilt.

trackingNr

Trackingnummer nach der gesucht werden soll.

2.2.2   GetWithReferenceNr

Dieser Aufruf 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.

Parameter

Beschreibung

Parameter

Beschreibung

client

Id des Shiptrack.com Kunden. Wird von ecovium mitgeteilt.

referenceNr

Referenznummer nach der gesucht werden soll.

 

2.3   Sendungsanlage via PUT

Mit Hilfe des http-Verbs PUT lassen sich sowohl einzelne als auch mehrere Sendungen an den Service übermitteln. Zur erfolgreichen Übermittlung müssen die in Punkt 2.3.1 definierten Felder angegeben werden.

Nach erfolgreicher Übermittlung stehen die Daten stehen die Daten nicht sofort zum Abruf über die Sammel- oder Einzelabfrage zur Verfügung, sondern müssen zunächst durch den Service abgearbeitet werden.

2.3.1   Minimale Felder für die Anlage einer Sendung

Parameter

Beschreibung

Parameter

Beschreibung

shipment_tracking_id

Tracking-Sendungsnummer des Frachtführers

frachtfuehrer

Kürzel des Frachtführers

send_versanddatum

Datum an dem die Sendung versendet wurde

2.3.2   Beispiel für die Anlage einer Sendung

<?xml version="1.0" encoding="utf-8"?> <workitem> <shipment collection="true"> <frachtfuehrer>HVS</frachtfuehrer> <send_versanddatum> <date>01/22/2017</date> </send_versanddatum> <shipment_tracking_id>365767978452</shipment_tracking_id> </shipment> </workitem>

 

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 XML-Format statt. Die Kodierung des XML erfolgt immer als UTF-8 und beginnt mit dem Tag „workitem“. Innerhalb des Tags „workitem“ können eine oder mehrere Sendungen übergeben werden. Eine Sendung wird dabei immer mit dem Tag „shipment“ eingeleitet. Wichtig dabei ist, dass bei dem „shipment“ Tag immer das Attribut „collection“ mit dem Wert „true“ vorhanden ist. Ebenso werden alle Tags, die in dem XML vorkommen, kleingeschrieben.

Mindestens folgender Inhalt muss übertragen werden:

<?xml version="1.0" encoding="utf-8"?> <workitem> <shipment_count>0</shipment_count> </workitem>

Eine erfolgreiche Abfrage liefert folgende Daten zurück:

<?xml version="1.0" encoding="utf-8"?> <workitem> <shipment collection="true"> <frachtfuehrer>UPS</frachtfuehrer> <abs_adr_01>ECOVOUM GMBH</abs_adr_01> <empf_adr_01>ROSEN VERSENDER</empf_adr_01> <empf_adr_02>ZHD ROSENVERKAEFAUER 1</empf_adr_02> <abs_strasse>JUSTUS-VON-LIEBIG-STRASSE 3</abs_strasse> <abs_ort>NEUSTADT A. RBGE.</abs_ort> <abs_plz>31535</abs_plz> <abs_land_kurz>DE</abs_land_kurz> <empf_strasse>MARIA-KIRCHNER-STR. 32</empf_strasse> <empf_ort>ARNSTORF</empf_ort> <empf_plz>94424</empf_plz> <empf_land_kurz>DE</empf_land_kurz> <send_referenznr_01>5601519</send_referenznr_01> <send_abholdatum> <date>03/24/2014</date> </send_abholdatum> <send_versanddatum> <date>03/24/2014</date> </send_versanddatum> <send_gewichtgesamt>1.00</send_gewichtgesamt> <package collection="true"> <collection_index>1</collection_index> <send_id>1Z7110966853336416</send_id> <send_gewichteinzel>1</send_gewichteinzel> <package_tracking_status collection="true"> <status_country>DE</status_country> <status_code>Manifest Pickup</status_code> <status_path collection="true"> <collection_index>1</collection_index> <status_code>data_transmitted</status_code> </status_path> <status_path_count>1</status_path_count> <status_date> <time>12:39:40</time> <date>03/24/2014</date> </status_date> <status_details>Order Processed: Ready for UPS</status_details> <collection_index>1</collection_index> </package_tracking_status> <package_tracking_status collection="true"> <status_country>DE</status_country> <status_city>HERFORD</status_city> <status_code>Pick-Up</status_code> <status_path collection="true"> <collection_index>1</collection_index> <status_code>pick_up</status_code> </status_path> <status_path_count>1</status_path_count> <status_date> <time>19:35:00</time> <date>03/24/2014</date> </status_date> <status_details>Origin Scan</status_details> <collection_index>2</collection_index> </package_tracking_status> <package_tracking_status collection="true"> <status_country>DE</status_country> <status_city>HERFORD</status_city> <status_code>In transit</status_code> <status_path collection="true"> <collection_index>1</collection_index> <status_code>transit</status_code> </status_path> <status_path_count>1</status_path_count> <status_date> <time>23:00:00</time> <date>03/24/2014</date> </status_date> <status_details>Departure Scan</status_details> <collection_index>3</collection_index> </package_tracking_status> <package_tracking_status collection="true"> <status_country>DE</status_country> <status_city>NURNBERG</status_city> <status_code>In transit</status_code> <status_path collection="true"> <collection_index>1</collection_index> <status_code>transit</status_code> </status_path> <status_path_count>1</status_path_count> <status_date> <time>05:54:00</time> <date>03/25/2014</date> </status_date> <status_details>Arrival Scan</status_details> <collection_index>4</collection_index> </package_tracking_status> <package_tracking_status collection="true"> <status_country>DE</status_country> <status_city>NURNBERG</status_city> <status_code>In transit</status_code> <status_path collection="true"> <collection_index>1</collection_index> <status_code>transit</status_code> </status_path> <status_path_count>1</status_path_count> <status_date> <time>19:43:00</time> <date>03/25/2014</date> </status_date> <status_details>Departure Scan</status_details> <collection_index>5</collection_index> </package_tracking_status> <package_tracking_status collection="true"> <status_country>DE</status_country> <status_city>OETZING</status_city> <status_code>In transit</status_code> <status_path collection="true"> <collection_index>1</collection_index> <status_code>transit</status_code> </status_path> <status_path_count>1</status_path_count> <status_date> <time>22:00:00</time> <date>03/25/2014</date> </status_date> <status_details>Arrival Scan</status_details> <collection_index>6</collection_index> </package_tracking_status> <package_tracking_status collection="true"> <status_country>DE</status_country> <status_city>OETZING</status_city> <status_code>In transit</status_code> <status_path collection="true"> <collection_index>1</collection_index> <status_code>transit</status_code> </status_path> <status_path_count>1</status_path_count> <status_date> <time>09:27:00</time> <date>03/26/2014</date> </status_date> <status_details>Destination Scan</status_details> <collection_index>7</collection_index> </package_tracking_status> <package_tracking_status collection="true"> <status_country>DE</status_country> <status_city>ARNSTORF</status_city> <status_zip>94424</status_zip> <status_recipient>MUELLER</status_recipient> <status_code>Delivered</status_code> <status_path collection="true"> <collection_index>1</collection_index> <status_code>delivered</status_code> </status_path> <status_path_count>1</status_path_count> <status_date> <time>13:41:00</time> <date>03/26/2014</date> </status_date> <status_details>Package/Shipment delivered</status_details> <collection_index>8</collection_index> </package_tracking_status> <package_tracking_status_count>8</package_tracking_status_count> </package> <package_count>1</package_count> <shipment_tracking_id>1Z7110966853336416</shipment_tracking_id> <shipment_id>3a7b13db-b20a-45bd-8e05-575e1311f2fb</shipment_id> <shipment_tracking_status> <status_first_refresh_date> <time>12:39:40</time> <date>03/24/2014</date> </status_first_refresh_date> <status_last_refresh_date> <time>13:41:00</time> <date>03/26/2014</date> </status_last_refresh_date> <status_code>delivered</status_code> <status_date> <timezone> <name>UTC</name> <offset>+0000</offset> </timezone> <time>09:26:12</time> <date>08/01/2014</date> </status_date> </shipment_tracking_status> <collection_index>1</collection_index> </shipment> <shipment_count>1</shipment_count> </workitem>

2.4.1   Grundstruktur

2.4.1.1   Grundstruktur mit mehreren Sendungen

2.4.1.2   Grundstruktur mit mit Paketen

Eine Sendung kann wiederum ein oder mehrere Pakete enthalten. Ein Paket wird dabei mit dem Tag „package“ eingeleitet. Auch bei diesem Tag muss das Attribut „collection“ mit dem Wert „true“ angegeben werden.

2.4.1.3   Grundstruktur mit mehreren Paketen

 

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 ecovium normierte Status-Codes. Diese Status-Codes sind im Anhang unter Punkt 3.1 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.

Feld

Beschreibung

Feld

Beschreibung

shipment_tracking_id

Tracking-Sendungsnummer des Frachtführers.

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

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

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   Paket-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"

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.