Zum Hauptinhalt springen

Abholbestellungen

Erstellen Sie wiederkehrende geplante Abholbestellungen. DPD holt Pakete von Ihrem Standort an bestimmten Tagen und in bestimmten Zeitfenstern ab.

EndpunktAuthentifizierung
POST /api/v1/pickup-ordersBearer JWT-Token erforderlich

Anfrage​

Abfrageparameter: lang (optional) — z.B. de_CH, en_US, fr_CH, it_CH

Body: List<PickupOrderDTO>

Felder​

FeldTypLängePflichtfeldBeschreibung
invoicingNumberString1–20JaKundenrechnungsnummer
pickupDateString10JaGeplantes Abholdatum (yyyy-MM-dd), muss in der Zukunft liegen
weekDayInteger—NeinWochentag (1=Mo … 7=So). Wird aus pickupDate berechnet, wenn nicht angegeben
fromTime1String5NeinBeginn des morgendlichen Zeitfensters (HH:mm)
toTime1String5NeinEnde des morgendlichen Zeitfensters (HH:mm)
fromTime2String5NeinBeginn des nachmittäglichen Zeitfensters (HH:mm)
toTime2String5NeinEnde des nachmittäglichen Zeitfensters (HH:mm)
addressAddressDTO—JaAdresse des Abholorts
numberOfParcelsInteger—JaErwartete Paketanzahl (1–99)
tourString0–50NeinTour-/Routenkennung
clientSoftwareString1–30JaName der Client-Anwendung. Fehlt der Wert oder ist er leer, wird die Anfrage abgelehnt
clientVersionString1–10JaVersion der Client-Anwendung. Fehlt der Wert oder ist er leer, wird die Anfrage abgelehnt

Zeitfenster​

Sie können bis zu zwei Zeitfenster angeben (morgens und nachmittags). Lassen Sie die Nachmittagsfelder leer für ein einziges durchgehendes Fenster.

FensterFelderBeispiel
MorgensfromTime1 / toTime108:00 / 12:00
NachmittagsfromTime2 / toTime213:00 / 17:00

Beispiel​

curl -X POST "https://label-print-shipments.dpd.ch/api/v1/pickup-orders?lang=de_CH" \
-H "Authorization: Bearer <jwt_token>" \
-H "Content-Type: application/json" \
-d '[
{
"invoicingNumber": "12345678",
"pickupDate": "<next working day, yyyy-MM-dd>",
"weekDay": 5,
"fromTime1": "08:00",
"toTime1": "12:00",
"fromTime2": "13:00",
"toTime2": "17:00",
"numberOfParcels": 15,
"address": {
"name": "Warehouse Location A",
"countryCode": "CH",
"zipCode": "8000",
"city": "Zürich",
"street": "Industriestrasse 45",
"phone": "+41441234567",
"email": "warehouse@company.ch",
"reference": "WAREHOUSE-A"
},
"tour": "TOUR-ZH-WEST",
"clientSoftware": "Customer App",
"clientVersion": "4.0.0"
}
]'

Antwort​

201 Created — alle Bestellungen erstellt:

{
"tracingId": "TRACE-321",
"success": [
{ "tracingId": "123456789" }
],
"failed": []
}

Jeder success[]-Eintrag enthält die dem erstellten Auftrag zugewiesene tracingId sowie identificationNumber, sofern der Anfrage-Eintrag einen Wert mitgeliefert hat. Ein id-Feld gibt es in einem Erfolgseintrag nicht — id erscheint nur in failed[]-Einträgen.

Null-Felder werden in Antworten weggelassen, daher enthält ein Erfolgseintrag häufig nur tracingId.

207 Multi-Status — Teilerfolg mit feldbezogenen Fehlern. Jeder Eintrag in failed[] enthält eine identificationNumber (spiegelt den vom Client übergebenen Wert, sofern der Eingabe-Eintrag einen hatte) und einen errorCode; Feldfehler erscheinen als flaches fieldErrors[]-Array, wobei jeder Eintrag seinen eigenen path trägt:

{
"tracingId": "TRACE-322",
"success": [],
"failed": [
{
"identificationNumber": "client-supplied-id-5",
"errorCode": "SYS-VALIDATION-FAILURE",
"fieldErrors": [
{
"path": "numberOfParcels",
"code": "SHP-VAL-NUMBEROFPARCELS-MAX-CHARACTERS",
"message": "Number of parcels exceeds the maximum allowed length."
},
{
"path": "address.countryCode",
"code": "SHP-VAL-COUNTRYCODE-REQUIRED",
"message": "Country code is required."
}
]
}
]
}

Ein vorübergehender Fehler (ohne fieldErrors – ein Ausfall ist kein Feldproblem) sieht dagegen so aus:

{
"identificationNumber": "client-supplied-id-7",
"errorCode": "SHP-ROUTING-ENGINE-UNAVAILABLE",
"reason": "SHP-ROUTING-ENGINE-UNAVAILABLE: Routing engine is temporarily unavailable. Please try again."
}

Statuscodes:

CodeBeschreibung
201 CreatedAlle Abholbestellungen erstellt
207 Multi-StatusTeilerfolg
400 Bad RequestValidierungsfehler, oder alle Positionen der Sammelanfrage sind fehlgeschlagen — unabhängig von der Ursache, auch bei einem Ausfall der Routing-Engine
401 UnauthorizedToken fehlt oder ungültig

Unterschied zu Abholaufträgen​

AbholbestellungenAbholaufträge
HäufigkeitWiederkehrend (Wochenplan)Einmalig
ZeitfensterBis zu 2 (morgens + nachmittags)Von DPD festgelegt
Paketlimit99999
GewichtsfeldNicht erforderlichOptional (Gramm)