Zum Hauptinhalt springen

Abholaufträge

Planen Sie eine einmalige Paketabholung von Ihrem Standort. DPD holt die Pakete am gewünschten Datum innerhalb eines festgelegten Zeitfensters ab.

EndpunktAuthentifizierung
POST /api/v1/collection-requestsBearer JWT-Token erforderlich

Anfrage

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

Body: List<CollectionRequestDTO>

Felder

FeldTypLängePflichtfeldBeschreibung
idLongNeinAuftragskennung zur Nachverfolgung in der Antwort
invoicingNumberString1–20JaIhre DPD-Kundenrechnungsnummer
pickupDateString10JaGewünschtes Abholdatum (yyyy-MM-dd), muss in der Zukunft liegen
referenceNumberString0–50NeinIhre interne Referenznummer
noteString0–255NeinBesondere Abholhinweise
senderAddressDTOJaAdresse, von der die Pakete abgeholt werden
receiverAddressDTOJaEndbestimmungsadresse
requesterAddressDTONeinPerson, die die Abholung anfordert (Standard: Empfänger)
numberOfParcelsIntegerJaErwartete Paketanzahl. Die API erzwingt keinen Wertebereich
weightIntegerNeinGesamtgewicht aller Pakete in Gramm
serviceCodeStringJaMuss vorhanden sein, der Wert wird jedoch ignoriert — Abholaufträge werden immer als B2B erstellt
clientSoftwareString1–30JaName Ihrer Anwendung. Fehlt der Wert oder ist er leer, wird die Anfrage abgelehnt
clientVersionString1–10JaVersion 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:

CodeBeschreibung
201 CreatedAlle Abholaufträge 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

Hinweise

  • pickupDate muss in der Zukunft liegen; vergangene Daten werden abgelehnt
  • weight wird 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.)