Aller au contenu principal

Authentification

L'API de connexion fournit des jetons JWT d'accès requis pour tous les points de terminaison protégés.

Chemin de base: /api/v1


POST /api/v1/login

Connexion standard — retourne des jetons d'accès et de rafraîchissement.

Authentification: Aucune (point de terminaison public)

Requête :

{
"username": "jean.dupont",
"password": "MotDePasse@Sécurisé"
}
ChampTypeObligatoireDescription
usernameStringOuiNom d'utilisateur
passwordStringOuiMot de passe

Réponse 200 OK :

{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

Codes de statut :

CodeDescription
200 OKConnexion réussie
400 Bad RequestErreur de validation (champs manquants)
401 UnauthorizedIdentifiants invalides

POST /api/v1/login-extended

Retourne le jeton d'accès ainsi que des informations utilisateur supplémentaires (code dépôt, horodatage d'expiration). Utilisez-le lorsque votre intégration a besoin de connaître le code dépôt ou l'expiration exacte du jeton.

Authentification: Aucune (point de terminaison public)

Requête: identique à /login

Réponse 200 OK :

{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"userName": "jean.dupont",
"depotCode": "0699",
"expireAt": "2025-10-30T18:30:00Z"
}
ChampTypeDescription
tokenStringJeton d'accès JWT
refreshTokenStringJeton de rafraîchissement JWT
userNameStringNom d'utilisateur authentifié
depotCodeStringPremier code dépôt non vide parmi les adresses d'enlèvement de l'utilisateur
expireAtISO 8601Horodatage d'expiration du jeton

Codes de statut :

CodeDescription
200 OKConnexion réussie
400 Bad RequestErreur de validation
401 UnauthorizedIdentifiants invalides
403 ForbiddenContexte d'auto-connexion manquant

Utilisation des jetons

Incluez le JWT dans chaque requête suivante :

curl -X GET "https://label-print-shipments.dpd.ch/api/v1/tracking/05305000123456" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
const response = await fetch('https://label-print-shipments.dpd.ch/api/v1/shipments', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify(shipmentData)
});

Expiration du jeton

  • La durée de vie (TTL) par défaut est configurée par environnement (généralement 24 heures)
  • Une réponse 401 Unauthorized signifie que le jeton a expiré
  • Se reconnecter via /login pour obtenir un nouveau jeton

Liste de contrôle de sécurité

  • Toujours utiliser HTTPS en production
  • Stocker les jetons dans des cookies HTTP-only sécurisés ou un stockage sécurisé — jamais dans localStorage
  • Ne jamais exposer les jetons dans les URLs ou les fichiers journaux
  • Effacer les jetons à la déconnexion