Guide du développeur - ID360 Service
đŻ La solution ID360 vous permettra de :
- â GĂ©rer lâidentification et lâauthentification des utilisateurs de votre service mĂ©tier.
- đïž (Optionnel) Collecter, stocker et vĂ©rifier lâauthenticitĂ© de documents complĂ©mentaires.
- đš Personnaliser une interface utilisateur selon vos besoins.
đ AccĂšs au Swagger
đ§ Principales opĂ©rations API
Voici les étapes clés à implémenter dans votre intégration :
- Connexion Ă lâAPI : Cet appel vous fournira un token valide pendant 15 minutes, vous permettant dâaccĂ©der aux diffĂ©rentes mĂ©thodes de lâAPI.
- CrĂ©ation dâun dossier utilisateur : Lors de la crĂ©ation dâun dossier utilisateur, vous recevrez un identifiant de dossier ainsi qu'une clĂ© API (api_key), qui sera essentielle pour la suite du processus.
- Choix de la route : lâapi_key obtenue Ă lâĂ©tape prĂ©cĂ©dente va vous permettre de retrouver lâidentifiant de la « route » que vous souhaitez rĂ©aliser. Dans votre cas dâutilisation, vous nâaurez quâune seule route possible, ce sera le parcours en ligne personnalisable de Docaposte.
- Acceptation des CGU : cette mĂ©thode permet de mettre Ă jour les champs accept_cgu ainsi quâaccept_biometry dans lâenrĂŽlement.
- Comparaison de données (optionnelle) : Il est également possible de comparer des données attendues avec celles extraites de l'identité.
- Uplaod de la piĂšce dâidentitĂ© : lâupload de la piĂšce dâidentitĂ© se fera Ă ce niveau
- Uplaod du selfie (en option) : une image du selfie sera Ă©galement Ă uploader pour permettre la comparaison faciale biomĂ©trique avec la piĂšce dâidentitĂ©
- Finalisation du dossier : Finalise l'enrĂŽlement
- Récupération du rapport : Vous pourrez récupérer le rapport du dossier utilisateur en utilisant l'identifiant du dossier obtenu lors de la deuxiÚme étape. Ce rapport contiendra le statut du dossier ainsi que des informations techniques et sur les différentes étapes de vérification.
đ Pour poursuivre la lecture de ce guide, il est nĂ©cessaire dâavoir créé au moins un parcours et une application.
Si ce nâest pas encore fait, nous vous recommandons de consulter : Mes premiers pas avec ID360
1. Connexion Ă lâAPI
1.1 Connexion Ă lâAPI : Authentification
đ§ RequĂȘte CURL â Production
curl -X POST "https://id360docaposte.com/api/1.0.0/user/login/" \ -H "accept: application/json" \ -d '{ "username": "string", "password": "string", "token": "string" }'
đ§ RequĂȘte CURL â PrĂ©production
curl -X POST "https://preprod.id360docaposte.com/api/1.0.0/user/login/" \ -H "accept: application/json" \ -d '{ "username": "string", "password": "string", "token": "string" }'
đ„ ParamĂštres requis dans le corps de la requĂȘte
| ParamÚtre | Obligatoire | Détails |
|---|---|---|
username | Oui | Identifiant de connexion |
password | Oui | Mot de passe associé |
token | Non (sauf si admin) | Inutile pour les comptes application. Obligatoire uniquement pour les comptes admin avec authentification Ă deux facteurs. |
đ€ RĂ©sultat attendu (exemple)
HTTP Status : 200 OK
Réponse (Body) :
{ "token": "0123456789abcdef01234567" }
đŹ Commentaires
- Cet appel doit ĂȘtre effectuĂ© par votre serveur, jamais depuis le navigateur de lâutilisateur.
- Le token retourné est valide 15 minutes. Ce délai est réinitialisé à chaque appel API utilisant ce token.
- Si vous tentez un appel avec un token expiré ou sans token, vous recevrez une erreur
401 Unauthorized. - Tant que le token est valide, il ne faut pas refaire un appel Ă
/login/. - Le token sâutilise dans les appels suivants sous forme de header :
Authorization: Token 0123456789abcdef01234567
1.2 Headers de vos prochaines requĂȘtes
Le header essentiel Ă ajouter Ă vos requĂȘtes API est :
Authorization â doit contenir :
- le préfixe
Token - un espace
- la valeur du token rĂ©cupĂ©rĂ©e lors de la connexion Ă lâAPI
Exemple :
Authorization: Token 0123456789abcdef01234567
Tester via le Swagger
Pour tester les appels dans Swagger :
- Cliquez sur le bouton
Try it out(en haut Ă droite) - Entrez le token sous la forme : Token 0123456789abcdef01234567
- Cliquez ensuite sur
Authorize.
Vous serez alors authentifié pour effectuer les appels API directement depuis Swagger.
1.3 â ïž DurĂ©e de vie et extension du token - A INTEGRER IMPERATIVEMENT â ïž
Le token de connexion est valable pendant 15 minutes.
Cette durée est réinitialisée à chaque appel de méthode utilisant le token (*à l'exception de la méthode logIn*).
Si vous nâĂȘtes pas connectĂ© ou si votre token a expirĂ©, vous recevrez une erreur 401 Unauthorized pour toute opĂ©ration nĂ©cessitant une authentification.
đ Prolonger la validitĂ© du token
Pour prolonger la durée de vie de votre token, vous pouvez appeler la méthode suivante toutes les 13 minutes :
/api/1.0.0/user/whoami
Cette méthode :
- Ne nécessite aucun paramÚtre
- Requiert un en-tĂȘte Authorization au format suivant :
Authorization: Token 0123456789abcdef01234567
â VĂ©rification de validitĂ©
- Si cette méthode retourne un code 200, cela signifie que votre token est toujours valide.
- Dans le cas contraire, vous devrez générer un nouveau token via la méthode
logIn.
âčïž Ă retenir : intĂ©grer cet appel de maniĂšre automatique dans vos processus pour Ă©viter dâavoir Ă solliciter la mĂ©thode logIn Ă rĂ©pĂ©tition, cela pourrait ĂȘtre interprĂ©tĂ© par ID360 comme un comportement anormal ou agressif.
2. CrĂ©ation dâun dossier utilisateur
đ§ RequĂȘte CURL â Production
curl -X POST \ "https://id360docaposte.com/api/1.0.0/process/{id}/enrollment" \ -H "Authorization: Token 0123456789abcdef01234567"
đ§ RequĂȘte CURL â PrĂ©production
curl -X POST \ "https://preprod.id360docaposte.com/api/1.0.0/process/{id}/enrollment" \ -H "Authorization: Token 0123456789abcdef01234567"
đ Remarques sur lâURL
Remplacez la partie {id} par lâUUID dâun process.
Les objets process sont configurables via lâIHM dâadministration (leur UUID y est affichĂ©).
đ„ Body attendu
{
"browser_callback_url": "https://www.example.com/browser_callback_url",
"client_reference": "any_string",
"callback_endpoints": [{
"url": "https://www.example.com/callback_url1",
"on": ["E","F","C"],
"headers": [{"name": "string", "value": "string"}]
},{
"url": "https://www.example.com/callback_url2",
"on": [],
"headers": [{"name": "string", "value": "string"}]
}],
"callback_headers": {
"header_name_1": "header_value_1",
"header_name_2": "header_value_2"
},
"last_name": "Users last name",
"first_name": "Users first name",
"email": "Users email",
"address_line_1": "Users address line 1",
"address_line_2": "Users address line 2",
"address_line_3": "Users address line 3",
"zip_code": "Users zip code",
"city": "Users city",
"country": "Users country",
"phone_number": "Users phone number",
"group": "string"
}
đ DĂ©tails des champs
browser_callback_url: obligatoire â URL appelĂ©e par le navigateur de lâutilisateur Ă la fin du parcours (utilisĂ©e uniquement pour la redirection).client_reference: facultatif â Permet dâassocier un identifiant interne Ă votre systĂšme. Utile pour les croisements en cas dâannulation ou dâĂ©chec.callback_endpoints: obligatoire â un callback endpoint permet Ă ID360 de notifier automatiquement votre systĂšme lorsquâun dossier atteint un certain statut (ex. Ă©chec, annulation, fin de traitement), via une requĂȘte HTTP POST envoyĂ©e Ă lâURL que vous avez fournie. Les headers sont optionnels, vous pouvez les utiliser comme des headers d'identification lors de la rĂ©ception des callbacks.last_name, first_name, address_line_1/2/3, zip_code, city, country, phone_number, email: facultatifs â Informations utilisateur Ă titre informatif uniquement (aucun contrĂŽle rĂ©alisĂ© dessus).group: facultatif â permettra de faire un export des consommations en fonction de groupes.
Pour plus de détails sur les callback_endpoints, consultez ce guide dédié.
đ€ RĂ©sultat attendu (exemple)
HTTP Status : 200 OK
{
"url": "https://www.id360docaposte.com/api/1.0.0/enrollment/{id}",
"id": "{id}",
"process": 1,
"api_key": "0123456789abcdef0123456789abcde",
"browser_callback_url": "yyy",
"client_reference": "any_string",
"status": "NEW",
"reason": null,
"creation_time": "2021-12-17T15:01:49.013906",
"starting_time": null,
"finished_time": null;
"callback_endpoints": [{
"url": "https://dev.webhook.id360docaposte.com/66b905f6-ac91-4a2c-8b1b-752d2393ac3b",
"on": ["E","F","C"],
"headers": [{"name": "string"}]
},{
"url": "https://dev.webhook.id360docaposte.com/66b905f6-ac91-4a2c-8b1b-752d2393ac3b",
"on": [],
"headers": [{"name": "string"}]
}]
}
đŹ Commentaire
- Cet appel doit ĂȘtre effectuĂ© cĂŽtĂ© serveur, jamais depuis le navigateur de l'utilisateur.
- â ïž Il est essentiel de conserver lâ
iddu dossier ainsi que laapi_keypour la suite du processus.
3. Choix de la route
Dans certains parcours, deux mĂ©thodes d'identification sont proposĂ©es Ă lâutilisateur final, telles que :
- Lâidentification via lâIdentitĂ© NumĂ©rique de La Poste ;
- Lâidentification par le Parcours en Ligne Personnalisable de Docaposte.
Dans le cadre de notre parcours, seule lâoption de Parcours en Ligne Personnalisable de Docaposte a Ă©tĂ© retenue, offrant ainsi un unique canal dâauthentification.
Ce guide prĂ©sente les Ă©tapes pour rĂ©cupĂ©rer lâidentifiant de la route et la sĂ©lectionner dans ce parcours.
3.1 RĂ©cupĂ©ration de lâidentifiant de route
đ§ RequĂȘte CURL â Production
curl -X GET \ "https://id360docaposte.com/api/1.0.0/enrollment/flow/enrollment_info/" \ -H "accept: application/json" \ -H "x-api-key: <votre_api_key>"
đ§ RequĂȘte CURL â PrĂ©production
curl -X GET \ "https://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/enrollment_info/" \ -H "accept: application/json" \ -H "x-api-key: <votre_api_key>"
đ Remarques
- `x-api-key` : remplacez la valeur par l'API key générée lors de la création du dossier utilisateur.
- đ Aucun body nâest attendu dans cette requĂȘte (le corps doit rester vide).
đ€ RĂ©sultat attendu (extrait JSON)
"routes": [
{
"id": 275128
}
]
đŹ Commentaire
- Lâidentifiant de la route Ă utiliser pour la suite du parcours se trouve dans le champ `id` Ă lâintĂ©rieur*
3.2 Sélection de la route
đ§ RequĂȘte CURL â Production
curl -X POST \ "https://id360docaposte.com/api/1.0.0/enrollment/flow/route/{route_id}/select/" \ -H "accept: application/json" \ -H "x-api-key: <votre_api_key>" \ -H "Content-Type: text/plain"
đ§ RequĂȘte CURL â PrĂ©production
curl -X POST \ "https://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/route/{route_id}/select/" \ -H "accept: application/json" \ -H "x-api-key: <votre_api_key>" \ -H "Content-Type: text/plain"
đ Remarques
- Remplacez `<votre_api_key>` par l'API key obtenue lors de la création du dossier utilisateur.
- Remplacez {route_id} dans lâURL par lâidentifiant de route rĂ©cupĂ©rĂ© lors de lâĂ©tape prĂ©cĂ©dente.
- đ Aucun corps (body) nâest attendu dans la requĂȘte
đ€ RĂ©sultat attendu
HTTP Status : `204 No Content`
đŹ Commentaire
- La route sĂ©lectionnĂ©e est maintenant liĂ©e Ă lâAPI key utilisĂ©e dans la requĂȘte.
4. Acceptation des CGU
đ§ RequĂȘte CURL â Production
curl -X POST \ "https://id360docaposte.com/api/1.0.0/enrollment/flow/consent/?accepted_cgu=true&accepted_biometry=true" \ -H "accept: */*" \ -H "x-api-key: <votre_api_key>" \ -d ''
đ§ RequĂȘte CURL â PrĂ©production
curl -X POST \ "https://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/consent/?accepted_cgu=true&accepted_biometry=true" \ -H "accept: */*" \ -H "x-api-key: <votre_api_key>" \ -d ''
đ€ RĂ©sultat attendu
HTTP Status : `204 No Content`
đŹ Commentaire
- â Si vous ne dĂ©posez quâun document dâidentitĂ© ou complĂ©mentaire, utilisez uniquement `accepted_cgu=true`.
- â Si vous dĂ©posez Ă©galement un selfie, ajoutez impĂ©rativement `accepted_biometry=true` dans lâURL.
5. Comparaison de données (optionnelle)
Dans la configuration du parcours, il est indispensable de sélectionner au moins une donnée à comparer.
Pour ce faire, accédez au bloc Saisie d'informations et choisissez les éléments à comparer.
Voir la méthode dans le Swagger
đ§ RequĂȘte CURL â Production
curl -X POST \ "https://id360docaposte.com/api/1.0.0/enrollment/{id}/control/data/{data_name}/?locked=true" \ -H "accept: text/plain" \ -H "Authorization: Token 0123456789abcdef01234567"
đ§ RequĂȘte CURL â PrĂ©production
curl -X POST \ "https://preprod.id360docaposte.com/api/1.0.0/enrollment/{id}/control/data/{data_name}/?locked=true" \ -H "accept: text/plain" \ -H "Authorization: Token 0123456789abcdef01234567"
đ Informations techniques
{id}: identifiant de lâenrĂŽlement, rĂ©cupĂ©rĂ© lors de la crĂ©ation du dossier utilisateur.{data_name}: nom de la donnĂ©e Ă comparer.- Exemples :
nameâ nom de famillefirst_nameâ prĂ©nombirth_dateâ date de naissance
- Pour connaßtre les données attendues, vous pouvez interroger :
https://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/enrollment_info
đ„ ParamĂštres
| ParamĂštre | Valeur | Description |
|---|---|---|
locked | true | Verrouille la donnée une fois soumise (évite la modification ultérieure) |
đ€ Body attendu
Le body doit simplement contenir la donnée à vérifier, au format brut (texte ou valeur simple).
â RĂ©sultat attendu
HTTP Status : 204 No Content
Cela indique que la comparaison a bien été prise en compte et ne retourne pas de corps de réponse.
6. Upload de la piĂšce dâidentitĂ©
đ§ RequĂȘte CURL â Production
curl -X POST \ "https://id360docaposte.com/api/1.0.0/enrollment/flow/document/id_document_image/?total_pages=2&uploaded_page=0" \ -H "accept: */*" \ -H "x-api-key: <votre_api_key>" \ -H "Content-Type: application/json" \ --data-binary "@CNIRecto.PNG"
đ§ RequĂȘte CURL â PrĂ©production
curl -X POST \ "https://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/document/id_document_image/?total_pages=2&uploaded_page=0" \ -H "accept: */*" \ -H "x-api-key: <votre_api_key>" \ -H "Content-Type: application/json" \ --data-binary "@CNIRecto.PNG"
đ Remarques
- `x-api-key` : remplacez cette valeur par lâAPI key gĂ©nĂ©rĂ©e lors de la crĂ©ation du dossier utilisateur.
- `@CNIRecto.PNG` : remplacez par le chemin de votre fichier (ex. image ou PDF).
- `total_pages` : indique le nombre total de pages Ă envoyer pour le document (ex : `2` pour une CNI recto/verso).
- `uploaded_page` : index (commençant à `0`) de la page actuellement envoyée.
đ€ RĂ©sultat attendu
HTTP Status : `204 No Content`
đŹ Commentaire
- Cette Ă©tape doit ĂȘtre rĂ©pĂ©tĂ©e pour chaque page du document Ă transmettre.
- Une requĂȘte doit ĂȘtre faite par page, avec un `uploaded_page` et un fichier correspondant.
7. Upload du selfie (en option)
đ§ RequĂȘte CURL â Production
curl -X POST \ "https://id360docaposte.com/api/1.0.0/enrollment/flow/document/selfie_image_upload/?total_pages=1&uploaded_page=0" \ -H "accept: */*" \ -H "x-api-key: <votre_api_key>" \ -H "Content-Type: application/json" \ --data-binary "@selfie.PNG"
đ§ RequĂȘte CURL â PrĂ©production
curl -X POST \ "https://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/document/selfie_image_upload/?total_pages=1&uploaded_page=0" \ -H "accept: */*" \ -H "x-api-key: <votre_api_key>" \ -H "Content-Type: application/json" \ --data-binary "@selfie.PNG"
đ Remarques
- `x-api-key` : remplacez cette valeur par lâAPI key obtenue lors de la crĂ©ation du dossier utilisateur.
- `@selfie.PNG` : remplacez par le chemin vers votre fichier image (ex. photo prise par lâutilisateur).
- `total_pages` : doit ĂȘtre `1` pour un selfie.
- `uploaded_page=0` : reste Ă `0` car il nây a quâune seule page.
đ€ RĂ©sultat attendu
HTTP Status : `204 No Content`
đŹ Commentaire
- Lâenvoi dâun selfie est optionnel, mais indispensable pour les parcours avec vĂ©rification biomĂ©trique.
- Assurez-vous que le paramĂštre `accepted_biometry=true` ait Ă©tĂ© dĂ©fini lors de lâacceptation des CGU si un selfie est transmis.
8. Finalisation du dossier â â ïž OBLIGATOIRE
đ§ RequĂȘte CURL â Production
curl -X POST \ "https://id360docaposte.com/api/1.0.0/enrollment/flow/finalize_enrollment" \ -H "accept: application/json" \ -H "x-api-key: <votre_api_key>"
đ§ RequĂȘte CURL â PrĂ©production
curl -X POST \ "https://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/finalize_enrollment" \ -H "accept: application/json" \ -H "x-api-key: <votre_api_key>"
đ Remarques
- Remplacez `<votre_api_key>` par lâAPI key obtenue lors de la crĂ©ation du dossier utilisateur.
- đ Aucun paramĂštre dans le corps de la requĂȘte.
đ€ RĂ©sultat attendu
HTTP Status : `204 No Content`
đŹ Commentaire
- Cette étape est obligatoire pour que le dossier soit pris en charge par les moteurs de traitement sans délai.
9. Récupération du rapport
9.1 Récupération du rapport par API
đ§ RequĂȘte CURL â Production
curl -X GET \ "https://id360docaposte.com/api/1.0.0/enrollment/{id}/report" \ -H "accept: application/json" \ -H "Authorization: Token 0123456789abcdef01234567"
đ§ RequĂȘte CURL â PrĂ©production
curl -X GET \ "https://preprod.id360docaposte.com/api/1.0.0/enrollment/{id}/report" \ -H "accept: application/json" \ -H "Authorization: Token 0123456789abcdef01234567"
đ Informations techniques
{id}: identifiant du dossier utilisateur, rĂ©cupĂ©rĂ© lors de sa crĂ©ation.- ParamĂštres : aucun paramĂštre attendu dans cette requĂȘte.
â RĂ©sultat attendu
HTTP Status : 200 OK
Format de la réponse : JSON
đŹ Commentaires
- Cet appel doit ĂȘtre effectuĂ© par votre serveur, jamais depuis le navigateur de lâutilisateur.
- Le token de connexion est valable 15 minutes, renouvelées à chaque appel utilisant ce token.
- En cas de token expiré ou absent, vous recevrez une erreur 401 Unauthorized.
- Tant que votre token est valide, il ne faut pas réutiliser la méthode
login. - Le token sâutilise dans lâen-tĂȘte des appels suivants sous la forme :
Authorization: Token le_token_retourné_par_login
9.2 Récupération du rapport depuis la plateforme d'administration
Le rapport est Ă©galement accessible dans la console, sous l'onglet « Dossiers Utilisateurs » pour une durĂ©e de deux mois. L'identifiant correspond Ă l'ID du dossier gĂ©nĂ©rĂ© Ă lâissue de lâĂ©tape 2. En sĂ©lectionnant « Voir le dĂ©tail », vous pouvez consulter le rapport dâidentification et tĂ©lĂ©charger le dossier de preuves au format JSON en bas de page.
9.3 Spécificités
đ Un rapport temporaire
Un rapport temporaire est disponible avant que le rapport final ne soit émis.
Ce rapport peut ĂȘtre rĂ©cupĂ©rĂ© grĂące au paramĂštre allow_draft = true, mais ne doit pas ĂȘtre utilisĂ© en production.
â ïž La rĂ©cupĂ©ration du rapport ne peut se faire qu'aprĂšs rĂ©ception de la callback_url vous informant de la fin du traitement du dossier.
Attention : L'appel Ă un rapport temporaire peut induire des ralentissements ou des blocages pour vos utilisateurs.
đ Un rapport Ă©mis il y a moins de 7 jours
Les applications et utilisateurs peuvent récupérer tous les dossiers de preuve via la méthode report.
- Un dossier ayant le statut :
NEWSTARTEDCANCELED
aura un dossier de preuve temporaire accessible en ajoutant draft = true Ă lâappel.
đ Un rapport Ă©mis il y a plus de 7 jours et moins de 2 mois
Les utilisateurs peuvent récupérer tous les dossiers de preuve finalisés (avec un verdict OK ou KO) via la méthode report.
đ Un rapport Ă©mis il y a plus de 2 mois et jusquâĂ expiration de la pĂ©riode dâarchivage
Seuls les utilisateurs peuvent accéder aux rapports archivés via la méthode report/archive.
- Un dossier avec un statut CANCELED ou FAILED nâest pas archivĂ©.
- Un dossier DELETED (de plus de 2 mois) est archivĂ© uniquement sâil avait un statut final OK ou KO.
đ„ DĂ©finition : application vs utilisateur
â¶ïž RĂ©cupĂ©ration via une application : Connexion via vos identifiants *applicatifs* (identifiant de l'application + mot de passe dĂ©fini Ă la crĂ©ation).
â¶ïž RĂ©cupĂ©ration via un utilisateur : Connexion avec vos identifiants *utilisateur* :
- Adresse e-mail
- Mot de passe personnel
- Jeton de double authentification (2FA)
đ RĂ©cupĂ©ration du PDF du rapport
Voir méthode dédiée : Téléchargement du PDF du rapport
