Outils pour utilisateurs

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 :

  1. 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.
  2. 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.
  3. 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.
  4. Acceptation des CGU : cette mĂ©thode permet de mettre Ă  jour les champs accept_cgu ainsi qu’accept_biometry dans l’enrĂŽlement.
  5. Comparaison de données (optionnelle) : Il est également possible de comparer des données attendues avec celles extraites de l'identité.
  6. Uplaod de la piĂšce d’identitĂ© : l’upload de la piĂšce d’identitĂ© se fera Ă  ce niveau
  7. 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Ă©
  8. Finalisation du dossier : Finalise l'enrĂŽlement
  9. 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

Exemple de headers

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 :

  1. Cliquez sur le bouton Try it out (en haut Ă  droite)
  2. Entrez le token sous la forme : Token 0123456789abcdef01234567
  3. 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’id du dossier ainsi que la api_key pour 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.
    1. Exemples :
      1. name → nom de famille
      2. first_name → prĂ©nom
      3. birth_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 :

  1. NEW
  2. STARTED
  3. CANCELED

aura un dossier de preuve temporaire accessible en ajoutant draft = true à l’appel.

→ Voir dans Swagger


📄 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* :

  1. Adresse e-mail
  2. Mot de passe personnel
  3. 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

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also, you acknowledge that you have read and understand our Privacy Policy. If you do not agree, please leave the website.

Plus d’informations