Vue d'ensemble des 3 APIs

L'API DSP2 de L by LCL Pro est composée de 3 APIs distinctes.

API 1 — TPP Registration

MéthodeEndpointRôle
POST/psd2/registerCréer un client OAuth2
GET/psd2/register/{clientId}Consulter la configuration d'un client
PATCH/psd2/register/{clientId}Mise à jour partielle
DELETE/psd2/register/{clientId}Supprimer le client

API 2 — OAuth2 / OpenID Connect

MéthodeEndpointRôle
GET/authInitier l'authentification PSU (login + SCA + consentement)
POST/tokenÉchanger le code d'autorisation contre des tokens
POST/tokenRafraîchir les tokens (grant_type=refresh_token, même URL)
POST/revokeRévoquer un access ou refresh token

API 3 — AISP

MéthodeEndpointScope requis
GET/psd2/aisp/accountsaisp
GET/psd2/aisp/accounts/{accountResourceId}/balancesaisp
GET/psd2/aisp/accounts/{accountResourceId}/transactionsaisp (+ extended_transaction_history pour l'historique étendu)
GET/psd2/aisp/trusted-beneficiariesaisp
GET/psd2/aisp/end-user-identityaisp

Endpoints utilitaires

MéthodeEndpointRôle
GET/psd2/healthHealthcheck du service
GET/psd2/docs/openapi.json (.yaml)Spécification OpenAPI complète
GET/psd2/docs/modulesListe des modules (tpp-registration, aisp)
GET/psd2/docs/modules/{moduleName}/openapi.json (.yaml)Spécification par module

Particularités

Nous avons 2 hosts différents pour traiter les endpoints sous mTLS et sous HTTPS

Toutes les requêtes sont en mTLS, sauf le GET /auth (l'URL sur laquelle vous redirigez le navigateur du PSU). Comme /auth est ouvert dans un navigateur, il ne peut pas être en mTLS : il est donc servi par un host différent de tous les autres endpoints.

Host mTLS (tous les endpoints sauf /auth)Host GET /auth (navigateur, sans mTLS)
Productionhttps://psd-pro.lcl.frhttps://auth.pro.lcl.fr
Sandboxhttps://sandbox-psd-pro.lcl.frhttps://auth.pro.lcl.fr

Les paths OAuth ne sont pas à la racine du host

Étant donné notre usage de Keycloak pour gérer en partie les flows OAuth, les endpoints OAuth ne sont pas à la racine du host : ils portent le préfixe complet du realm Keycloak. C'est donc https://psd-pro.lcl.fr/realms/epro-psd2/protocol/openid-connect/token — et non https://psd-pro.lcl.fr/token.

Point de vigilance, les realms sont différents pour la production et la sandbox :

  • epro-psd2 (prod)
  • epro-psd2-sandbox (sandbox)

Base URLs complètes par endpoint

API / EndpointmTLSURL ProductionURL Sandbox
TPP Registration✅https://psd-pro.lcl.fr/psd2/registerhttps://sandbox-psd-pro.lcl.fr/psd2/register
AISP✅https://psd-pro.lcl.fr/psd2/aisphttps://sandbox-psd-pro.lcl.fr/psd2/aisp
OAuth GET /auth❌ nonhttps://auth.pro.lcl.fr/realms/epro-psd2/protocol/openid-connect/authhttps://auth.pro.lcl.fr/realms/epro-psd2-sandbox/protocol/openid-connect/auth
OAuth POST /token✅https://psd-pro.lcl.fr/realms/epro-psd2/protocol/openid-connect/tokenhttps://sandbox-psd-pro.lcl.fr/realms/epro-psd2-sandbox/protocol/openid-connect/token
OAuth POST /revoke✅https://psd-pro.lcl.fr/realms/epro-psd2/protocol/openid-connect/revokehttps://sandbox-psd-pro.lcl.fr/realms/epro-psd2-sandbox/protocol/openid-connect/revoke

Le POST /token sert aussi bien pour grant_type=authorization_code que pour refresh_token : même URL, seul le body change.

Tapez pour rechercher dans la documentation et la référence API