Abholaufträge
Planen Sie eine einmalige Paketabholung von Ihrem Standort. DPD holt die Pakete am gewünschten Datum innerhalb eines festgelegten Zeitfensters ab.
| Endpunkt | Authentifizierung |
|---|---|
POST /api/v1/collection-requests | Bearer JWT-Token erforderlich |
Anfrage
Abfrageparameter: lang (optional) — lokalisiert Fehlermeldungen (z.B. de_CH, en_US, fr_CH, it_CH)
Body: List<CollectionRequestDTO>
Felder
| Feld | Typ | Länge | Pflichtfeld | Beschreibung |
|---|---|---|---|---|
id | Long | — | Nein | Auftragskennung zur Nachverfolgung in der Antwort |
invoicingNumber | String | 1–20 | Ja | Ihre DPD-Kundenrechnungsnummer |
pickupDate | String | 10 | Ja | Gewünschtes Abholdatum (yyyy-MM-dd), muss in der Zukunft liegen |
referenceNumber | String | 0–50 | Nein | Ihre interne Referenznummer |
note | String | 0–255 | Nein | Besondere Abholhinweise |
sender | AddressDTO | — | Ja | Adresse, von der die Pakete abgeholt werden |
receiver | AddressDTO | — | Ja | Endbestimmungsadresse |
requester | AddressDTO | — | Nein | Person, die die Abholung anfordert (Standard: Empfänger) |
numberOfParcels | Integer | — | Ja | Erwartete Paketanzahl. Die API erzwingt keinen Wertebereich |
weight | Integer | — | Nein | Gesamtgewicht aller Pakete in Gramm |
serviceCode | String | — | Ja | Muss vorhanden sein, der Wert wird jedoch ignoriert — Abholaufträge werden immer als B2B erstellt |
clientSoftware | String | 1–30 | Ja | Name Ihrer Anwendung. Fehlt der Wert oder ist er leer, wird die Anfrage abgelehnt |
clientVersion | String | 1–10 | Ja | Version Ihrer Anwendung. Fehlt der Wert oder ist er leer, wird die Anfrage abgelehnt |
Beispiel
curl -X POST "https://label-print-shipments.dpd.ch/api/v1/collection-requests?lang=de_CH" \
-H "Authorization: Bearer <jwt_token>" \
-H "Content-Type: application/json" \
-d '[
{
"invoicingNumber": "12345678",
"pickupDate": "<next working day, yyyy-MM-dd>",
"serviceCode": "B2B",
"numberOfParcels": 5,
"weight": 25000,
"clientSoftware": "My Integration",
"clientVersion": "1.0.0",
"sender": {
"name": "Sender Company AG",
"countryCode": "CH",
"zipCode": "8000",
"city": "Zürich",
"street": "Industriestrasse 25",
"phone": "+41441234567"
},
"receiver": {
"name": "Receiver GmbH",
"countryCode": "DE",
"zipCode": "10115",
"city": "Berlin",
"street": "Alexanderplatz 1"
}
}
]'
Antwort
201 Created — alle Aufträge erstellt:
{
"tracingId": "TRACE-789",
"success": [
{ "tracingId": "BPsEYzTIZ" }
],
"failed": []
}
Jeder success[]-Eintrag enthält die dem erstellten Auftrag zugewiesene tracingId sowie
identificationNumber, sofern der Anfrage-Eintrag einen Wert mitgeliefert hat. Ein id- oder
referenceNumber-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. 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-790",
"success": [],
"failed": [
{
"identificationNumber": "client-supplied-id-4",
"errorCode": "SYS-VALIDATION-FAILURE",
"fieldErrors": [
{
"path": "pickup.date",
"code": "SHP-VAL-PICKUP-DATE-INVALID",
"message": "Pickup date is invalid."
}
]
}
]
}
Ein vorübergehender Fehler (ohne fieldErrors – ein Ausfall ist kein Feldproblem) sieht dagegen so aus:
{
"identificationNumber": "client-supplied-id-6",
"errorCode": "SHP-ROUTING-ENGINE-UNAVAILABLE",
"reason": "SHP-ROUTING-ENGINE-UNAVAILABLE: Routing engine is temporarily unavailable. Please try again."
}
Statuscodes:
| Code | Beschreibung |
|---|---|
201 Created | Alle Abholaufträge erstellt |
207 Multi-Status | Teilerfolg |
400 Bad Request | Validierungsfehler, oder alle Positionen der Sammelanfrage sind fehlgeschlagen — unabhängig von der Ursache, auch bei einem Ausfall der Routing-Engine |
401 Unauthorized | Token fehlt oder ungültig |
Hinweise
pickupDatemuss in der Zukunft liegen; vergangene Daten werden abgelehntweightwird in Gramm angegeben (z.B. 25000 = 25 kg)- Die Adressvalidierung folgt denselben länderspezifischen Regeln wie bei Sendungen (NL-Hausnummer, GB-Telefon, Nicht-CH/LI-E-Mail usw.)