Demandes de collecte
Planifiez une collecte ponctuelle de colis depuis votre adresse. DPD viendra collecter les colis à la date demandée, dans un créneau horaire spécifié.
| Point de terminaison | Authentification |
|---|---|
POST /api/v1/collection-requests | Jeton JWT Bearer requis |
Requête
Paramètre de requête : lang (facultatif) — localise les messages d'erreur (p. ex. de_CH, en_US, fr_CH, it_CH)
Corps : List<CollectionRequestDTO>
Champs
| Champ | Type | Longueur | Obligatoire | Description |
|---|---|---|---|---|
id | Long | — | Non | Identifiant de la demande pour le suivi dans la réponse |
invoicingNumber | String | 1–20 | Oui | Votre numéro de facturation client DPD |
pickupDate | String | 10 | Oui | Date de collecte souhaitée (yyyy-MM-dd), doit être une date future |
referenceNumber | String | 0–50 | Non | Votre numéro de référence interne |
note | String | 0–255 | Non | Instructions spéciales de collecte |
sender | AddressDTO | — | Oui | Adresse où les colis seront collectés |
receiver | AddressDTO | — | Oui | Adresse de destination finale |
requester | AddressDTO | — | Non | Personne demandant la collecte (par défaut, le destinataire) |
numberOfParcels | Integer | — | Oui | Nombre de colis prévu. L'API n'impose aucune plage de valeurs |
weight | Integer | — | Non | Poids total de tous les colis en grammes |
serviceCode | String | — | Oui | Doit être présent, mais la valeur est ignorée — les demandes d'enlèvement sont toujours créées en B2B |
clientSoftware | String | 1–30 | Oui | Nom de votre application. La requête est rejetée si la valeur est absente ou vide |
clientVersion | String | 1–10 | Oui | Version de votre application. La requête est rejetée si la valeur est absente ou vide |
Exemple
curl -X POST "https://label-print-shipments.dpd.ch/api/v1/collection-requests?lang=fr_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": "Société Expéditrice SA",
"countryCode": "CH",
"zipCode": "1000",
"city": "Lausanne",
"street": "Route de Berne 25",
"phone": "+41441234567"
},
"receiver": {
"name": "Société Destinataire SARL",
"countryCode": "FR",
"zipCode": "75001",
"city": "Paris",
"street": "Rue de Rivoli 1"
}
}
]'
Réponse
201 Created — toutes les demandes créées :
{
"tracingId": "TRACE-789",
"success": [
{ "tracingId": "BPsEYzTIZ" }
],
"failed": []
}
Chaque élément de success[] porte le tracingId attribué à la demande créée, ainsi que
identificationNumber renvoyé lorsque l'élément de la requête en fournissait un. Un élément de
succès ne comporte ni id ni referenceNumber — id n'apparaît que dans les éléments failed[].
Les champs nuls sont omis des réponses : un élément de succès ne contient donc souvent que
tracingId.
207 Multi-Status — succès partiel. Chaque entrée de failed[] porte une identificationNumber (reprend la valeur fournie par le client, lorsque l'élément d'entrée en avait une) et un errorCode ; les violations de champ apparaissent comme un tableau fieldErrors[] plat, chaque entrée portant son propre path :
{
"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."
}
]
}
]
}
Un échec transitoire (sans fieldErrors — une panne n'est pas un problème de champ) se présente ainsi :
{
"identificationNumber": "client-supplied-id-6",
"errorCode": "SHP-ROUTING-ENGINE-UNAVAILABLE",
"reason": "SHP-ROUTING-ENGINE-UNAVAILABLE: Routing engine is temporarily unavailable. Please try again."
}
Codes de statut :
| Code | Description |
|---|---|
201 Created | Toutes les demandes de collecte créées |
207 Multi-Status | Certaines ont réussi, d'autres ont échoué |
400 Bad Request | Erreur de validation, ou tous les éléments du lot ont échoué — quelle que soit la cause, y compris une panne du moteur de routage |
401 Unauthorized | Jeton manquant ou invalide |
Remarques
pickupDatedoit être une date future ; les dates passées sont rejetéesweightest exprimé en grammes (p. ex. 25000 = 25 kg)- La validation des adresses suit les mêmes règles spécifiques aux pays que les Expéditions (numéro de maison NL, téléphone GB, e-mail non-CH/LI, etc.)