Table des matières

Français | English


Guide du Développeur - ID360 Capture

🎯 La solution ID360 vous permettra de :


🔗 Accès au Swagger


🔧 Principales opérations API

  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. Comparaison de données (en option) : Il est également possible de comparer des données attendues avec celles extraites de l'identité.
  4. Redirection de l’utilisateur vers l’interface utilisateur (UI) : La clé API obtenue à l’étape précédente vous permettra de rediriger l’utilisateur vers son parcours d’enrôlement.
  5. 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.
  6. Récupération des documents : Vous aurez également la possibilité de récupérer les documents d'identité et complémentaires soumis par l'utilisateur lors de son parcours.
  7. Récupération de l'idClaim (en option) : Uniquement dans le cas de la signature électronique avancée, retourne un ASIC-E.

🔧 Options et outils complémentaires


📘 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

Voir la méthode dans le Swagger


🔧 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

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


1.2 Headers de vos prochaines requêtes

Exemple de headers

Le header essentiel à ajouter à vos requêtes API est :

Authorization → doit contenir :

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 :

Authorization: Token 0123456789abcdef01234567

✅ Vérification de validité

ℹ️ À 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

Voir la méthode dans le Swagger


🔧 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"}]
  }],
  "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

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

3. 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: application/json" \
  -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: application/json" \
  -H "Authorization: Token 0123456789abcdef01234567"

🛠 Informations techniques

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)
auto false Comportement dépendant du type de data appelé. Pour la data phone_number permet l'envoi du SMS OTP au moment du chargement de la page (sinon code OTP envoyé instantanément au moment de l'appel à la requête)

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

4. Renvoi de l’utilisateur vers l’UI

Cette étape doit être réalisée directement dans le navigateur de l’utilisateur. À l’aide de l’api_key obtenue lors de la création du dossier utilisateur, vous pouvez rediriger l’utilisateur vers l’interface de saisie via l’URL suivante :


🌐 Environnement de Production

https://www.id360docaposte.com/static/process_ui/index.html#/enrollment/api_key_de_l_etape_precedente

🧪 Environnement de Préproduction

https://preprod.id360docaposte.com/static/process_ui/index.html#/enrollment/api_key_de_l_etape_precedente

ℹ️ Remarques

Lorsque l’utilisateur a terminé son parcours d’identification

Un token est ajouté en paramètre de l’URL de redirection (browser callback) lors de la redirection de l’utilisateur. Par exemple :

https://browsercallback.fr?token=2c4a10812ed36dd6d6de2e3c4751ff20e277b4fe41b557dcebb31f5f5a66550815163de0f4e51ac4619a14be98da2de156914a87bdecccba41e9be357aaa2582

Ce token permet d’appeler la méthode suivante :

https://preprod.id360docaposte.com/static/swagger.html#/enrollment/enrollment_status_retrieve

Cette méthode récupère l'enrôlement associé au jeton présent dans l'URL de callback. Elle ne peut être invoquée qu'une seule fois pour un même enrôlement, après quoi le jeton sera automatiquement invalidé.

Notez qu'il s'agit d'une empreinte de l'enrôlement et non d'un rapport d’identification comme celui obtenu via le paramètre « report » (un exemple est disponible dans le swagger).

Même si vous n’utilisez pas ce token, le statut du dossier sera communiqué via l’URL de callback (voir le guide de callback).

5. Récupération du rapport

5.1 Récupération du rapport par API

Voir la méthode dans le Swagger


🔧 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


✅ Résultat attendu

HTTP Status : 200 OK

Format de la réponse : JSON


💬 Commentaires

Authorization: Token le_token_retourné_par_login

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

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


👥 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

6. Récupération de documents

Il vous est possible, via l’API, de récupérer les pièces d’identité analysées et, si configuré, les documents collectés. Cela est possible jusqu’à 7 jours après l’enrôlement.

Voir la méthode dans le Swagger


🔧 Requête CURL – Production

curl -X 'GET' \
  'https://id360docaposte.com/api/1.0.0/document/{id_document}/file_contents/?page_number={page_number}' \
  -H 'accept: application/octet_stream' \
  -H 'Authorization: Token 4550d727f89d76dc0b07917461a16710141d101e0796ec644c'

🔧 Requête CURL – Préproduction

curl -X 'GET' \
  'https://preprod.id360docaposte.com/api/1.0.0/document/{id_document}/file_contents/?page_number={page_number}' \
  -H 'accept: application/octet_stream' \
  -H 'Authorization: Token 4550d727f89d76dc0b07917461a16710141d101e0796ec644c'

📄 Commentaires


📁 Exemple d’extraction depuis un rapport JSON

"documents": {
  "identity": [{
    "name": "id_document_image",
    "files": [
      { "url": "https://preprod.id360docaposte.com/api/1.0.0/document/354746/file_contents/?page_number=0" },
      { "url": "https://preprod.id360docaposte.com/api/1.0.0/document/354746/file_contents/?page_number=1" }
    ]
  }]
}

📚 Typologie des documents récupérables

Type de document Clé JSON (name)
Pièce d'identité (SVID) “documents”: { “identity”: [{ “name”: “id_document_image”, “files”: [{“url”: xxxxxxxxxxxxxxx}, {“url”: xxxxxxxxxxxxxxx}]}
Pièce d'identité (PVID) “documents”: {“other”: [{ “name”: “ar24_in_front”, “files”: [{“url”: xxxxxxxxxxxxxxx}], [{ “name”: “ar24_in_back”, “files”: [{“url”: xxxxxxxxxxxxxxx}]}
Pièce d'identité avec MIE “documents”: {“identity”: [{ “name”: “idd”, “files”: [{“url”: xxxxxxxxxxxxxxx}]}]}
RIB “documents”: { “bank_details”: [{ “name”: “bank_details_image”, “files”: [{“url”: xxxxxxxxxxxxxxx}]}
Avis d’imposition “documents”: { “income_tax”: [{ “name”: « income_tax_notice_image“, “files”: [{“url”: xxxxxxxxxxxxxxx}]}
KBIS “documents”: { “kbis”: [{ “name”: « kbis_image”, “files”: [{“url”: xxxxxxxxxxxxxxx}]}
Bulletin de salaire “documents”: { “pay_slip”: [{ “name”: “pay_slip_image”, “files”: [{“url”: xxxxxxxxxxxxxxx}]}
Taxe foncière “documents”: { “property_tax”: [{ “name”: “property_tax_notice_image”, “files”: [{“url”: xxxxxxxxxxxxxxx}]}
Selfie / Photo uploadée “documents”: { “selfie”: [{ “name”: “selfie_image_upload”, “files”: [{“url”: xxxxxxxxxxxxxxx}]}
Selfie / Photo traitée “documents”: { “selfie”: [{ “name”: “selfie_image”, “files”: [{“url”: xxxxxxxxxxxxxxx}]}
Carte de mutuelle “documents”: { “health_insurance_card”: [{ “name”: “health_insurance_card_image”, “files”: [{“url”: xxxxxxxxxxxxxxx}]}
Carte vitale “documents”: { “social_security_card”: [{ “name”: “social_security_card_image”, “files”: [{“url”: xxxxxxxxxxxxxxx}]}
Justificatif de domicile “documents”: { “proof_of_address”: [{ “name”: “proof_of_address_image”, “files”: [{“url”: xxxxxxxxxxxxxxx}]}
Carte grise “documents”: { “car_registration”: [{ “name”: “car_registration_image”, “files”: [{“url”: xxxxxxxxxxxxxxx}]}
Liveness “documents”: { “liveness”: [{“name”: “liveness_video$0”, “files”: [{“url”: “xxxxxxxxxxxxxxx”}]},{“name”: “liveness_video$1”,“files”: [{“url”: “xxxxxxxxxxxxxxx”}]}]

7. Récupération de l'idClaim

Voir la méthode dans le Swagger


🔧 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


✅ Résultat attendu

HTTP Status : 200 OK

Format de la réponse : ASIC-E


💬 Commentaires

Authorization: Token le_token_retourné_par_login

Conditions pour faire fonctionner ID360 dans une WebView

Les permissions suivantes doivent être activées côté application (Android ou iOS) :

Et également :

Interrompre un dossier

Voir la méthode dans le Swagger


🔧 Requête CURL – Production

curl -X GET \
  "https://id360docaposte.com/api/1.0.0/enrollment/{id}/control/discontinue" \
  -H "Authorization: Token 0123456789abcdef01234567"

🔧 Requête CURL – Préproduction

curl -X GET \
  "https://preprod.id360docaposte.com/api/1.0.0/enrollment/{id}/control/discontinue" \
  -H "Authorization: Token 0123456789abcdef01234567"

🛠 Informations techniques


✅ Résultat attendu

HTTP Status : 204 No Content


💬 Commentaires

Le statut du dossier sera changé en DISCONTINUED