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
weekDayIntegerNeinWochentag (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)
addressAddressDTOJaAdresse des Abholorts
numberOfParcelsIntegerJaErwartete 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)