Points de collecte
Recherchez des points relais DPD (points de collecte, consignes, points de service) par adresse ou coordonnées GPS.
| Chemin de base | Authentification |
|---|---|
/api/v1/parcel-shop | Jeton JWT Bearer requis |
Récapitulatif des points de terminaison
| Méthode | Point de terminaison | Description |
|---|---|---|
| GET | /api/v1/parcel-shop/{parcelShopId} | Obtenir un point relais spécifique par son identifiant |
| POST | /api/v1/parcel-shop/address | Rechercher des points relais par adresse |
| POST | /api/v1/parcel-shop/coordinates | Rechercher des points relais par coordonnées GPS |
GET /api/v1/parcel-shop/{parcelShopId}
Consulter les détails d'un point relais spécifique.
Paramètre de chemin : parcelShopId — p. ex.
FR64548. La forme numérique renvoyée comme parcelShopId dans les réponses (p. ex.
70825452535256) est également acceptée.
Paramètre de requête : lang (facultatif) — en, de, fr ou it. Détermine weekDay et
services[].description. À défaut, Accept-Language est utilisé, puis la langue par défaut de
l'unité commerciale.
curl -X GET "https://label-print-shipments.dpd.ch/api/v1/parcel-shop/FR64548?lang=fr" \
-H "Authorization: Bearer <jwt_token>"
Réponse 200 OK (horaires d'ouverture réduits à deux jours) :
{
"id": "FR64548",
"parcelShopId": 70825452535256,
"name": "Chris’music",
"order": 1,
"distance": 0,
"type": 100,
"countryNum": "250",
"address": {
"countryCode": "FR",
"zipCode": "71500",
"city": "LOUHANS",
"street": "RUE DES BORDES",
"street2": "",
"street3": "",
"houseNumber": "57",
"language": "FR"
},
"locationHint": "",
"mapUrl": "",
"available": "partial",
"latitude": 46.624802,
"longitude": 5.224876,
"openingHours": [
{
"weekDay": "Lundi",
"openMorning": "09:30",
"closeMorning": "12:00",
"openAfternoon": "14:00",
"closeAfternoon": "19:00"
},
{
"weekDay": "Vendredi",
"openMorning": "09:30",
"closeMorning": "12:00"
}
],
"holidays": [
{ "start": "15/08/2026", "end": "29/08/2026" }
],
"services": [
{ "code": "100", "available": true, "description": "Collecte chez le destinataire" },
{ "code": "200", "available": true, "description": "Paiement en ligne des colis accepté" },
{ "code": "991", "available": true, "description": "Retours acceptés" }
]
}
Remarques sur la structure de la réponse :
- Les champs sans valeur sont omis, jamais renvoyés à
null. Dans l'exemple, l'entrée du vendredi n'a niopenAfternoonnicloseAfternoon, car ce jour ne comporte qu'une seule plage d'ouverture. Ne partez pas du principe qu'une clé est présente. - Les dates de
holidaysutilisent le formatdd/MM/yyyy, et non ISO 8601. Le reste de l'API utilise des dates ISO. parcelShopIdest l'encodage numérique deid; les deux désignent le même point relais.weekDayetservices[].descriptionsont localisés selonlang.
Codes de statut : 200 OK | 401 Unauthorized | 404 Not Found
POST /api/v1/parcel-shop/address
Recherche de points relais près d'une adresse. Résultats triés par distance (le plus proche en premier).
Corps de la requête :
| Champ | Type | Obligatoire | Description | Défaut |
|---|---|---|---|---|
country | String (2) | Oui | Code pays ISO | — |
zipCode | String | Oui | Code postal | — |
city | String | Non | Nom de la ville | — |
street | String | Non | Nom de la rue | — |
destCountryCode | String | Non | Pays de destination pour le filtrage des services | — |
weight | String | Non | Poids du colis en kg | — |
services | String | Non | Codes de service séparés par des virgules | — |
type | String | Non | Filtre par type de point relais | — |
limit | Integer | Non | Nombre maximum de résultats | 25 |
availabilityDate | String | Non | Vérifier la disponibilité à une date (yyyy-MM-dd) | — |
hideClosed | Boolean | Non | Exclure les points actuellement fermés | false |
curl -X POST "https://label-print-shipments.dpd.ch/api/v1/parcel-shop/address?lang=fr_CH" \
-H "Authorization: Bearer <jwt_token>" \
-H "Content-Type: application/json" \
-d '{
"country": "CH",
"zipCode": "1000",
"city": "Lausanne",
"limit": 10
}'
Codes de statut : 200 OK (peut retourner une liste vide) | 400 Bad Request | 401 Unauthorized
POST /api/v1/parcel-shop/coordinates
Recherche de points relais près de coordonnées GPS. Mêmes filtres et même format de réponse que la recherche par adresse.
Corps de la requête :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
latitude | Double | Oui | Latitude GPS (−90 à 90) |
longitude | Double | Oui | Longitude GPS (−180 à 180) |
destCountryCode | String | Non | Pays de destination |
limit | Integer | Non | Nombre maximum de résultats (défaut : 25) |
hideClosed | Boolean | Non | Exclure les points fermés (défaut : false) |
availabilityDate | String | Non | Vérifier la disponibilité à une date |
curl -X POST "https://label-print-shipments.dpd.ch/api/v1/parcel-shop/coordinates" \
-H "Authorization: Bearer <jwt_token>" \
-H "Content-Type: application/json" \
-d '{
"latitude": 47.3769,
"longitude": 8.5417,
"limit": 10,
"hideClosed": true
}'
Codes de statut : 200 OK | 400 Bad Request | 401 Unauthorized
Types de points relais
type n'est pas défini par cette API. La valeur est transmise telle quelle depuis le service DPD PUDO
en amont, à la fois dans la réponse et dans le filtre de requête optionnel type, qui utilisent donc le
même espace de valeurs.
| Type | Description |
|---|---|
100 | DPD Pickup Point |
200 | DPD Locker |
300 | Commerce partenaire (p. ex. La Poste) |
400 | Service Point |
Considérez la liste comme incomplète et non comme fermée : ces valeurs appartiennent au service en amont, ne rejetez donc pas une valeur que vous ne reconnaissez pas.
type est un champ distinct de services[].code, même si les deux utilisent des nombres à trois
chiffres. Un point relais avec "type": 100 peut porter n'importe quelle combinaison de codes service.
Pour filtrer par type de point relais, utilisez une valeur que vous avez observée dans une réponse pour la même région plutôt qu'une valeur devinée.
Exemples de code
Sélecteur de point relais dans un formulaire d'expédition :
async function searchParcelShops(zipCode, city) {
const response = await fetch(
'https://label-print-shipments.dpd.ch/api/v1/parcel-shop/address',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ country: 'CH', zipCode, city, limit: 10 })
}
);
return response.json();
}
Localisateur basé sur une carte :
function findNearby(lat, lng) {
return fetch('https://label-print-shipments.dpd.ch/api/v1/parcel-shop/coordinates', {
method: 'POST',
headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ latitude: lat, longitude: lng, limit: 20, hideClosed: true })
}).then(r => r.json());
}