Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédente | |||
| fr:guide_de_migration_shootid_vers_id360 [2025/08/06 16:12] – admin | fr:guide_de_migration_shootid_vers_id360 [2025/08/06 16:13] (Version actuelle) – supprimée admin | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ~~NOTOC~~ | ||
| - | [[: | ||
| - | ---- | ||
| - | ====== Guide de migration ShootID vers ID360 ====== | ||
| - | ===== 🔑 ETAPE 1 – AUTHENTIFICATION ===== | ||
| - | |||
| - | ==== 🔹 ShootID ==== | ||
| - | * **Méthode** : Authentification via **HTTP Basic Auth** | ||
| - | * **Header utilisé dans toutes les requêtes** : | ||
| - | < | ||
| - | Authorization: | ||
| - | </ | ||
| - | * **Durée de validité** : Permanente (ou jusqu’à révocation manuelle) | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ==== 🔸 ID360 ==== | ||
| - | * **Méthode** : POST / | ||
| - | * **URL** : | ||
| - | * Préprod : https:// | ||
| - | * Prod : https:// | ||
| - | * **Payload JSON** : | ||
| - | <code javascript> | ||
| - | { | ||
| - | " | ||
| - | " | ||
| - | } | ||
| - | </ | ||
| - | * **Réponse** : | ||
| - | <code javascript> | ||
| - | { | ||
| - | " | ||
| - | } | ||
| - | </ | ||
| - | * **Header à inclure ensuite dans chaque appel API** : | ||
| - | < | ||
| - | Authorization: | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ==== 🕐 Durée de vie & renouvellement du token (ID360) ==== | ||
| - | * **Durée de validité** : 15 minutes | ||
| - | * **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 / | ||
| - | 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 à l'ID du parcours | ||
| - | * `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 si parcours PVID | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ==== ✅ 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 : [[fr: | ||
| - | |||
| - | ==== 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 | | ||
| - | |||
| - | ---- | ||