- Introduction
- Prérequis
- Logique métier
- Spécifications techniques
- Exemples d'utilisation
- Ressources supplémentaires
L'API PSI permet d'enrôler des tiers dans le système PSI (Pro Santé Identité). Elle est conçue pour un usage interne et externe tels que le le RPPS et les établissements de santé afin d'enregistrer les professionnels en santé tout en validant la qualité des donnéés d'identité auprès du RNIPP.
L'API est exposée via Gravitee de l' ANS (Agence du Numérique en Santé) à l'URL suivante :
https://psi-partenaire.gateway.api.esante.gouv.fr/
Cette documentation fournit une vue d'ensemble de la logique métier, des spécifications techniques et des exemples d'utilisation pour faciliter l'intégration.
Avant de commencer à utiliser l'API, assurez-vous de remplir les conditions suivantes :
- Accès à l'API : Vous devez disposer des droits d'accès à l'URL Gravitee mentionnée ci-dessus. Pour cela, merci de remplir le formulaire de demande dipsonible à l'URL suivante : prochainement disponible
- Authentification : Les appels à l'API nécessitent une authentification. Les clés d'API ou les jetons nécessaires vous seront fournis par l'administrateur ANS de Gravitee.
- Outils recommandés :
- Un outil pour tester les API REST, comme Postman.
- Un lecteur de fichiers YAML pour consulter le fichier Swagger fourni.
La logique métier de l'API est décrite dans le schéma suivant :
-
Recherche initiale :
- L'API commence par rechercher les traits d'identité dans le système PSI.
- Si aucun compte PSI n'existe, une recherche est effectuée dans le RNIPP, le RPPS et l'API-PSC.
-
Validation et enrôlement :
- Si les données sont valides et qu'une correspondance unique est trouvée, un compte PSI est créé ou mis à jour.
- En cas de divergences ou de correspondances multiples, des informations sont retournées à l'appelant pour résolution.
-
Cas spécifiques :
- Gestion des identifiants RPPS.
- Création de comptes avec des données partielles (e-mail et téléphone non vérifiés).
- Méthode :
POST - URL :
/v1/identities - Description : Permet de créer ou de mettre à jour une identité dans le système PSI.
- Headers :
Content-Type: application/jsonesante-api-key: <votre api key>
- Body (exemple) :
{
"lastName": "DUPONT",
"firstNames": "Jean Pierre",
"birthDate": "1995-02-15",
"genderCode": "M",
"birthLocationCode": "99103",
"birthPlace": "OSLO",
"professionalLastName": "Durant",
"email": "[email protected]",
"phone": "0612345678",
"identifier": "8100112345678"
}- 201 Created : Identité créée avec succès.
- 400 Bad Request : Erreur de validation des données (exemple : format de date incorrect).
- 404 Not Found : Aucune correspondance trouvée dans le RNIPP.
- 409 Conflict : Un compte PSI existe déjà pour ces traits d'identité.
- 500 Internal Server Error : Erreur interne.
Pour plus de détails sur les schémas de requêtes et réponses, consultez le fichier Swagger : PSI_swagger_15-10-25.yml.
Voici les principaux schémas utilisés par l'API :
- Description : Représente les données nécessaires pour créer ou mettre à jour une identité.
- Propriétés :
lastName(string) : Nom de famille.firstNames(string) : Liste des prénoms séparés par un espace.birthDate(string) : Date de naissance (format ISO-8601).genderCode(string) : Sexe (M,F,I).birthLocationCode(string) : Code INSEE du lieu de naissance.birthPlace(string): libellé du lieu de naissance (à ne renseigner que sibirthLocationCodeest un pays étranger),professionalLastName(string): Nom d'exercice (nom de famille professionnel),email(string) : Adresse e-mail.phone(string) : Numéro de téléphone.identifier(string) : Identifiant (optionnel)(ex. : identifiant RPPS).
- Description : Réponse retournée après la création ou mise à jour d'une identité.
- Propriétés :
rppsIdentifiers(array of string) : Liste des identifiants RPPS associés.identityTraits(object) : Traits d'identité trouvés.
Pour une liste complète des schémas, référez-vous au fichier Swagger.
Requête :
curl -X POST "https://apimgmtui.integ.api.esante.gouv.fr/v1/identities" \
-H "Content-Type: application/json" \
-H "esante-api-key: <votre api key>" \
-d '{
"lastName": "DUPONT",
"firstNames": "Jean Pierre",
"birthDate": "1995-02-15",
"genderCode": "M",
"birthLocationCode": "99103",
"birthPlace": "OSLO",
"professionalLastName": "Durant",
"email": "[email protected]",
"phone": "0612345678",
"identifier": "8100112345678"
}'Réponse :
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"rppsIdentifiers": [
"810000000000"
],
"identityTraits": {
"lastName": "DUPONT",
"firstNames": "Jean Pierre",
"birthDate": "1995-02-15",
"genderCode": "M",
"birthLocationCode": "99103",
"birthPlace": "OSLO",
"professionalLastName": "Durant"
}
}Requête :
{
"lastName": "DUPONT",
"firstNames": "Jean Pierre",
"birthDate": "01-01-1990", // Format incorrect
"genderCode": "M",
"birthLocationCode": "99103",
"birthPlace": "OSLO",
"professionalLastName": "Durant",
"email": "[email protected]",
"phone": "0612345678",
"identifier": "8100112345678"
}Réponse :
{
"timestamp": "2025-12-01T15:22:22.954149+01:00",
"status": "400",
"error": "Des erreurs ont été détectées lors de la validation. Veuillez consulter le détail",
"detail": [
{
"object": "registerIdentityRequestDto",
"field": "birthDate",
"message": "Le format de date est invalide. Format attendu : aaaa-mm-jj",
"rejected": "01-01-1990",
"constraint": "DateTime"
}
],
"path": "/v1/identities"
}- Swagger : [PSI_swagger_v0.4.0_01-12-2025.yml]
- Schéma de la logique métier : PSI_Enrolement_par_un_tiers_(Logigramme).jpg
- Postman Collection : Collection POSTMAN PSI.
- Contenu du bouchon RPPS : Personnes_RPPS.csv.
Si vous avez des questions ou des problèmes, veuillez contacter l'équipe technique à l'adresse suivante : [email protected].
.jpg)