Outils pour utilisateurs

Français | English


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.
  10. Récupération de l'idClaim (en option) : Uniquement dans le cas de la signature électronique avancée, retourne un ASIC-E.

📘 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 la première section de ce guide: 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
  • Le token est composé de 25 caractères (longueur fixe).

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).

Attention, les données doivent être poussées en UTF-8.


✅ 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>" \
  --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>" \
  --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.
  • Formats autorisés : jpg, jpeg, png, pdf, heic
  • Taille maximale par document : 9,5 Mo

📤 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>" \
  --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>" \
  --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.
  • Formats autorisés : jpg, jpeg, png, pdf, heic
  • Taille maximale par document : 9,5 Mo

📤 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

10. Récupération de l'idClaim

🔧 Requête CURL – Production

curl -X GET \
  "https://id360docaposte.com/api/1.0.0/enrollment/{id}/idclaim" \
  -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}/idclaim" \
  -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 : ASIC-E


💬 Commentaires

  • 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

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