Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| guide_de_migration_shootid_vers_id360 [2025/04/30 15:10] – [🔹 ShootID] admin | guide_de_migration_shootid_vers_id360 [2026/01/16 17:06] (Version actuelle) – admin | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Guide de migration ShootID vers ID360 ====== | + | [[:guide_de_migration_shootid_vers_id360|Français]] | [[:en:guide_de_migration_shootid_vers_id360|English]] |
| - | + | ||
| - | ===== 🔑 ETAPE 1 – AUTHENTIFICATION ===== | + | |
| - | + | ||
| - | ==== 🔹 ShootID ==== | + | |
| - | * **Méthode** | + | |
| - | * **Header utilisé dans toutes les requêtes** | + | |
| - | < | + | |
| - | Authorization: Basic base64(applicationToken: | + | |
| - | </ | + | |
| - | * **Durée de validité** : Permanente (ou jusqu’à révocation manuelle) | + | |
| ---- | ---- | ||
| + | ===== 🔗 CHANGEMENT D’URL DE LA DOCUMENTATION ===== | ||
| - | ==== 🔸 ID360 ==== | + | L’URL de la documentation |
| - | * **Méthode** : POST /api/1.0.0/ | + | |
| - | * **URL** : | + | |
| - | * Préprod : https:// | + | |
| - | * Prod : https:// | + | |
| - | * **Payload JSON** : | + | |
| - | <code javascript> | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | } | + | |
| - | </ | + | |
| - | * **Réponse** : | + | |
| - | <code javascript> | + | |
| - | { | + | |
| - | " | + | |
| - | } | + | |
| - | </ | + | |
| - | * **Header à inclure ensuite dans chaque appel API** : | + | |
| - | < | + | |
| - | Authorization: | + | |
| - | </ | + | |
| - | ---- | + | 👉 **Nouvelle adresse :** |
| + | https:// | ||
| - | ==== 🕐 Durée | + | Merci de bien vouloir mettre |
| - | * **Durée de validité** : 15 minutes | + | N’hésitez |
| - | * **Renouvellement automatique** : à chaque appel API utilisant ce token | + | |
| - | * **Exception** : L’appel `/ | + | |
| - | * **Erreur en cas d’expiration** : HTTP 401 Unauthorized | + | |
| - | + | ||
| - | **🔄 Pour prolonger la validité du token (sans générer un nouveau token) :** | + | |
| - | + | ||
| - | <code http> | + | |
| - | GET /api/1.0.0/ | + | |
| - | Authorization: | + | |
| - | </ | + | |
| - | + | ||
| - | * **Fréquence recommandée** : toutes les 13 minutes | + | |
| - | * **Réponse attendue** : HTTP 200 si le token est toujours valide | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== ✅ Tableau de correspondance : Authentification ==== | + | |
| - | + | ||
| - | ^ Fonction | + | |
| - | | Méthode | + | |
| - | | Endpoint | + | |
| - | | Format d’authentification | Authorization: | + | |
| - | | Validité du token | Long terme (pas d’expiration) | + | |
| - | | Prolongation du token | N/A | GET / | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== 🧩 ÉTAPE 2 – INITIALISER UNE TRANSACTION / DÉMARRER UN PARCOURS ===== | + | |
| - | + | ||
| - | ==== 🔹 ShootID ==== | + | |
| - | * **Méthode** : `GET` | + | |
| - | * **URL** : `https:// | + | |
| - | * **Réponse** : | + | |
| - | <code javascript> | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== 🔸 ID360 ==== | + | |
| - | * **Méthode** : `POST` | + | |
| - | * **URL PROD** : `https:// | + | |
| - | * **URL PREPROD** : `https:// | + | |
| - | * **Requête (cURL)** : | + | |
| - | <code bash> | + | |
| - | curl -X POST \ | + | |
| - | " | + | |
| - | -H " | + | |
| - | -H " | + | |
| - | -d '{ | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }, | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }' | + | |
| - | </ | + | |
| - | + | ||
| - | === 🧾 Précisions sur les paramètres === | + | |
| - | * Dans l'url, l'UUID correspond | + | |
| - | * `callback_url` (**obligatoire**) : URL backend qui recevra en POST le **résultat complet** du parcours ID360 | + | |
| - | * `browser_callback_url` (**obligatoire**) : URL vers laquelle l’utilisateur est **redirigé côté navigateur** | + | |
| - | * `callback_headers` : headers personnalisés pour l’appel vers votre backend (auth, identifiant, | + | |
| - | * `client_reference` : identifiant de dossier interne à votre SI (pour faire le lien avec vos données) | + | |
| - | * Champs utilisateurs (`last_name`, | + | |
| - | * `email` : obligatoire uniquement | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== ✅ Tableau de correspondance : Initialisation de parcours ==== | + | |
| - | + | ||
| - | ^ Fonction | + | |
| - | | Type d’appel | + | |
| - | | Retour | + | |
| - | | Paramétrage du parcours | + | |
| - | | Callback technique | + | |
| - | | Suivi personnalisé | + | |
| - | | Authentification | + | |
| - | + | ||
| - | ===== 🔀 ÉTAPE 2B – CHOIX & SÉLECTION DE LA ROUTE (ID360) ===== | + | |
| - | + | ||
| - | === 🧭 Pourquoi cette étape est nécessaire === | + | |
| - | + | ||
| - | Dans certains parcours ID360, **plusieurs méthodes d’identification** peuvent être proposées à l’utilisateur final, telles que : | + | |
| - | + | ||
| - | * L’identification via **l’Identité Numérique de La Poste** | + | |
| - | * L’identification via un **Parcours en Ligne Personnalisable de Docaposte** | + | |
| - | + | ||
| - | 👉 **Dans le cadre du présent parcours**, **seul le canal du Parcours Personnalisable Docaposte est utilisé**, | + | |
| - | ce qui implique que la plateforme ID360 **demande explicitement à l’intégrateur de sélectionner cette route** parmi les options disponibles. | + | |
| - | + | ||
| - | 🔐 Cette sélection garantit que l’utilisateur suivra **le bon scénario d’identification**, | + | |
| - | en accord avec le paramétrage métier prévu dans la console d’administration. | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🎯 Objectif === | + | |
| - | + | ||
| - | Associer une **route spécifique** à un **dossier utilisateur (enrollment)** via son `api_key`, | + | |
| - | afin de **verrouiller le mode d’identification** à suivre. | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 1. 📥 Récupération de la liste des routes === | + | |
| - | + | ||
| - | * **Endpoint** : `GET / | + | |
| - | + | ||
| - | **Préprod :** | + | |
| - | <code bash> | + | |
| - | curl -X ' | + | |
| - | ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | </ | + | |
| - | + | ||
| - | **Prod :** | + | |
| - | <code bash> | + | |
| - | curl -X ' | + | |
| - | ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | </ | + | |
| - | + | ||
| - | **Réponse (extrait)** : | + | |
| - | <code javascript> | + | |
| - | { | + | |
| - | " | + | |
| - | { | + | |
| - | " | + | |
| - | } | + | |
| - | ] | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | > Le champ `routes[0].id` contient l’identifiant de la route à utiliser. | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 2. ✅ Sélection de la route === | + | |
| - | + | ||
| - | * **Endpoint** : `POST / | + | |
| - | + | ||
| - | **Préprod :** | + | |
| - | <code bash> | + | |
| - | curl -X ' | + | |
| - | ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | </ | + | |
| - | + | ||
| - | **Prod :** | + | |
| - | <code bash> | + | |
| - | curl -X ' | + | |
| - | ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | </ | + | |
| - | + | ||
| - | **Réponse attendue** : | + | |
| - | < | + | |
| - | HTTP 204 No Content | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 📝 Remarques clés === | + | |
| - | + | ||
| - | * La **clé API du dossier (`api_key`)** est obtenue via l’appel `POST / | + | |
| - | * Le choix de la route est **obligatoire** dans les parcours multi-canal | + | |
| - | * La route sélectionnée est ensuite **associée définitivement** à ce dossier | + | |
| - | * Cette action doit être effectuée **avant tout envoi de documents ou d’infos utilisateur** | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== 🪪 ÉTAPE 3 – AJOUTER UN DOCUMENT D’IDENTITÉ ===== | + | |
| - | + | ||
| - | ==== 🔹 ShootID ==== | + | |
| - | + | ||
| - | * **Méthode** : `POST` | + | |
| - | * **URL** : `https:// | + | |
| - | * **Type** : `multipart/ | + | |
| - | * **Champs principaux** : | + | |
| - | * `transactionId` (string) – identifiant de la transaction (**obligatoire**) | + | |
| - | * `file` (fichier) – image à uploader (**obligatoire**) | + | |
| - | * `type` (enum string) – type de document géré : `Enum : IDENTITY`. (**obligatoire**) | + | |
| - | * `documentId` (integer) – identifiant du document (**obligatoire**) | + | |
| - | * **Options avancées** : page, géolocalisation, | + | |
| - | * **Réponse exemple** : | + | |
| - | <code javascript> | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }] | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== 🔸 ID360 ==== | + | |
| - | + | ||
| - | * **Méthode** : `POST` | + | |
| - | * **URL** : | + | |
| - | < | + | |
| - | https:// | + | |
| - | </ | + | |
| - | * **Type** : `application/ | + | |
| - | * **Authentification** : `x-api-key` (obtenue lors de l’enrollment) | + | |
| - | * **Payload** : binaire pur (pas de form-data) | + | |
| - | + | ||
| - | === ➤ cURL (préprod) === | + | |
| - | <code bash> | + | |
| - | curl -X ' | + | |
| - | ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | --data-binary ' | + | |
| - | </ | + | |
| - | + | ||
| - | === ➤ Paramètres dans l’URL === | + | |
| - | + | ||
| - | ^ Paramètre | + | |
| - | | `total_pages` | + | |
| - | | `uploaded_page` | Index de la page envoyée (commence à `0`) | | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== ✅ Tableau de correspondance – Upload Document ==== | + | |
| - | + | ||
| - | ^ Élément | + | |
| - | | Endpoint | + | |
| - | | Authentification | + | |
| - | | Format d’envoi | + | |
| - | | Paramètres document | + | |
| - | | Champ du fichier | + | |
| - | | Réponse | + | |
| - | | Traitements optionnels | + | |
| - | | Type de document géré | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== 📄 ÉTAPE 4 – AJOUT D’AUTRES DOCUMENTS (RIB, justificatif de domicile, etc.) ===== | + | |
| - | + | ||
| - | Dans certains parcours ID360, notamment ceux nécessitant la **constitution du bloc adresse** ou de l’**identité bancaire**, | + | |
| - | il est indispensable d’ajouter d' | + | |
| - | + | ||
| - | * 📄 **Justificatif de domicile** (facture, quittance, etc.) | + | |
| - | * 🏦 **RIB** (relevé d' | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== 🔹 ShootID ==== | + | |
| - | + | ||
| - | * **Endpoint** : `POST / | + | |
| - | * **Champs obligatoires** : | + | |
| - | * `transactionId` | + | |
| - | * `file` | + | |
| - | * `type` → `ADDRESS_BLOCK` (justificatif) ou `RIB` | + | |
| - | * **Champs optionnels** : `documentId`, | + | |
| - | * **Réponse** : confirmation + status `READY_TO_BE_SCANNED` | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== 🔸 ID360 ==== | + | |
| - | + | ||
| - | === 🏦 1. Upload du RIB === | + | |
| - | + | ||
| - | * **Endpoint** : | + | |
| - | <code http> | + | |
| - | POST / | + | |
| - | </ | + | |
| - | + | ||
| - | * **Exemple cURL** : | + | |
| - | <code bash> | + | |
| - | curl -X ' | + | |
| - | ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | --data-binary ' | + | |
| - | </ | + | |
| - | + | ||
| - | → Ce document alimente le **bloc bancaire** (IBAN, titulaire du compte). | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🏠 2. Upload du justificatif de domicile === | + | |
| - | + | ||
| - | * **Endpoint** : | + | |
| - | <code http> | + | |
| - | POST / | + | |
| - | </ | + | |
| - | + | ||
| - | * **Exemple cURL** : | + | |
| - | <code bash> | + | |
| - | curl -X ' | + | |
| - | ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | --data-binary ' | + | |
| - | </ | + | |
| - | + | ||
| - | → Ce document est utilisé pour alimenter le **bloc adresse**, qui peut être recoupé avec la pièce d’identité. | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== ✅ Résumé des endpoints documentaires ID360 ==== | + | |
| - | + | ||
| - | ^ Type de document | + | |
| - | | Pièce d' | + | |
| - | | Justificatif de domicile | + | |
| - | | RIB | `/ | + | |
| - | + | ||
| - | ---- | + | |
| - | ===== 📥 ÉTAPE 5 – RECUPERATION DU RESULTAT FINAL ===== | + | |
| - | ==== 🔹 ShootID ==== | + | |
| - | + | ||
| - | * **Méthode** : `GET` | + | |
| - | * **URL** : `https:// | + | |
| - | * **Paramètres** : | + | |
| - | * `transactionId` (obligatoire) | + | |
| - | * `documentId` (optionnel) | + | |
| - | * `scanTimeout` (optionnel) | + | |
| - | + | ||
| - | === Exemple de réponse === | + | |
| - | * Statut du scan : `OK`, `KO`, `PROVIDER_COULD_NOT_PROCESS_ERROR` | + | |
| - | * Résultats de validation : MRZ, intégrité... | + | |
| - | * Données OCR : nom, prénom, date de naissance, sexe, numéro... | + | |
| - | * Images générées : `imagePhoto`, | + | |
| - | * Critères de fraude : `fraudScanTimesCriteria`, | + | |
| - | + | ||
| - | ==== 🔸 ID360 ==== | + | |
| - | + | ||
| - | === Requête de récupération du rapport === | + | |
| - | + | ||
| - | * **Méthode** : `GET` | + | |
| - | * **URL PROD** : `https:// | + | |
| - | * **URL PRÉPROD** : `https:// | + | |
| - | * **Authentification** : `Authorization: | + | |
| - | + | ||
| - | === Exemple de requête CURL === | + | |
| - | <code bash> | + | |
| - | curl -X GET \ | + | |
| - | " | + | |
| - | -H " | + | |
| - | -H " | + | |
| - | </ | + | |
| - | + | ||
| - | * **Dans l'url {id}** : correspond à l'id du dossier | + | |
| - | * **Paramètres** : aucun | + | |
| - | * **Résultat** : Code HTTP 200 + réponse JSON | + | |
| - | * **Appel à effectuer uniquement côté serveur** | + | |
| - | + | ||
| - | === Exemple de réponse === | + | |
| - | <code json> | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | } | + | |
| - | }, | + | |
| - | " | + | |
| - | " | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | } | + | |
| - | ], | + | |
| - | " | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | } | + | |
| - | ] | + | |
| - | } | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | ==== ⚠️ Attention : ne pas appeler le rapport immédiatement ==== | + | |
| - | + | ||
| - | **→ Attendez toujours la réception de la *callback finale* sur votre `callback_url` avant d' | + | |
| - | + | ||
| - | * Cette callback vous informe que le traitement est terminé. | + | |
| - | * Une fois reçue, vous pouvez alors appeler `/ | + | |
| - | * [Voir le guide des callbacks ici](https:// | + | |
| - | + | ||
| - | ==== Comparatif ShootID / ID360 ==== | + | |
| - | + | ||
| - | ^ Fonction ^ ShootID ^ ID360 ^ | + | |
| - | | Endpoint | `GET /result` | `GET / | + | |
| - | | Authentification | Basic Auth | `Authorization: | + | |
| - | | Moment d’appel | Après upload des docs | **Après réception de la callback finale** | | + | |
| - | | Structure de réponse | Par document (`documents[]`) | Par bloc (`blocks.identity`, | + | |
| - | | Résultats techniques | Détail MRZ / OCR | Agrégés selon configuration du parcours | | + | |
| - | + | ||
| - | ---- | + | |