Abholbestellungen
Erstellen Sie wiederkehrende geplante Abholbestellungen. DPD holt Pakete von Ihrem Standort an bestimmten Tagen und in bestimmten Zeitfenstern ab.
Endpunkt: POST /api/v1/pickup-orders
Authentifizierung: Bearer JWT-Token erforderlich
Anfrage
Abfrageparameter: locale (optional) — z.B. de_CH, en_US, fr_CH, it_CH
Body: List<PickupOrderDTO>
Felder
| Feld | Typ | Länge | Pflichtfeld | Beschreibung |
|---|---|---|---|---|
invoicingNumber | String | 1–20 | Ja | Kundenrechnungsnummer |
pickupDate | String | 10 | Ja | Geplantes Abholdatum (yyyy-MM-dd), muss in der Zukunft liegen |
weekDay | Integer | — | Nein | Wochentag (1=Mo … 7=So). Wird aus pickupDate berechnet, wenn nicht angegeben |
fromTime1 | String | 5 | Nein | Beginn des morgendlichen Zeitfensters (HH:mm) |
toTime1 | String | 5 | Nein | Ende des morgendlichen Zeitfensters (HH:mm) |
fromTime2 | String | 5 | Nein | Beginn des nachmittäglichen Zeitfensters (HH:mm) |
toTime2 | String | 5 | Nein | Ende des nachmittäglichen Zeitfensters (HH:mm) |
address | AddressDTO | — | Ja | Adresse des Abholorts |
numberOfParcels | Integer | — | Ja | Erwartete Paketanzahl (1–99) |
tour | String | 0–50 | Nein | Tour-/Routenkennung |
clientSoftware | String | 0–50 | Nein | Name der Client-Anwendung |
clientVersion | String | 0–20 | Nein | Version der Client-Anwendung |
Zeitfenster
Sie können bis zu zwei Zeitfenster angeben (morgens und nachmittags). Lassen Sie die Nachmittagsfelder leer für ein einziges durchgehendes Fenster.
| Fenster | Felder | Beispiel |
|---|---|---|
| Morgens | fromTime1 / toTime1 | 08:00 / 12:00 |
| Nachmittags | fromTime2 / toTime2 | 13:00 / 17:00 |
Beispiel
curl -X POST "https://label-print-shipments.dpd.ch/api/v1/pickup-orders?locale=de_CH" \
-H "Authorization: Bearer <jwt_token>" \
-H "Content-Type: application/json" \
-d '[
{
"invoicingNumber": "12345678",
"pickupDate": "2025-10-31",
"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": [
{ "id": 1, "tracingId": "123456789" }
],
"failed": []
}
207 Multi-Status — Teilerfolg mit feldbezogenen Fehlern:
{
"tracingId": "TRACE-322",
"success": [],
"failed": [
{
"id": 1,
"fieldErrors": {
"numberOfParcels": ["MAX_99"],
"address.countryCode": ["REQUIRED"]
}
}
]
}
Statuscodes:
| Code | Beschreibung |
|---|---|
201 Created | Alle Abholbestellungen erstellt |
207 Multi-Status | Teilerfolg |
400 Bad Request | Validierungsfehler |
401 Unauthorized | Token fehlt oder ungültig |
Unterschied zu Abholaufträgen
| Abholbestellungen | Abholaufträge | |
|---|---|---|
| Häufigkeit | Wiederkehrend (Wochenplan) | Einmalig |
| Zeitfenster | Bis zu 2 (morgens + nachmittags) | Von DPD festgelegt |
| Paketlimit | 99 | 999 |
| Gewichtsfeld | Nicht erforderlich | Optional (Gramm) |