Outils pour utilisateurs

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
fr:guide_de_migration_shootid_vers_id360 [2025/08/06 16:12] adminfr: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|Français]] | [[:en:guide_de_migration_shootid_vers_id360|English]] 
----- 
-====== Guide de migration ShootID vers ID360 ====== 
  
-===== 🔑 ETAPE 1 – AUTHENTIFICATION ===== 
- 
-==== 🔹 ShootID ==== 
-  * **Méthode** : Authentification via **HTTP Basic Auth** 
-  * **Header utilisé dans toutes les requêtes** : 
-    <code> 
-Authorization: Basic base64(applicationToken:applicationSecret) 
-    </code> 
-  * **Durée de validité** : Permanente (ou jusqu’à révocation manuelle) 
- 
----- 
- 
-==== 🔸 ID360 ==== 
-  * **Méthode** : POST /api/1.0.0/user/login/ 
-  * **URL** : 
-    * Préprod : https://preprod.id360docaposte.com/api/1.0.0/user/login/ 
-    * Prod : https://id360docaposte.com/api/1.0.0/user/login/ 
-  * **Payload JSON** : 
-    <code javascript> 
-{ 
-  "username": "string", 
-  "password": "string" 
-} 
-    </code> 
-  * **Réponse** : 
-    <code javascript> 
-{ 
-  "token": "0123456789abcdef01234567" 
-} 
-    </code> 
-  * **Header à inclure ensuite dans chaque appel API** : 
-    <code> 
-Authorization: Token 0123456789abcdef01234567 
-    </code> 
- 
----- 
- 
-==== 🕐 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 `/user/login/` ne renouvelle **pas** la durée 
-  * **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/user/whoami 
-Authorization: Token 0123456789abcdef01234567 
-</code> 
- 
-  * **Fréquence recommandée** : toutes les 13 minutes 
-  * **Réponse attendue** : HTTP 200 si le token est toujours valide 
- 
----- 
- 
-==== ✅ Tableau de correspondance : Authentification ==== 
- 
-^ Fonction                 ^ ShootID                                      ^ ID360                                                                ^ 
-| Méthode                 | HTTP Basic Auth                              | Login avec username/password → Token                                | 
-| Endpoint                | N/A (inclus dans chaque appel)               | POST /user/login/                                                   | 
-| Format d’authentification | Authorization: Basic ...                   | Authorization: Token <jeton>                                        | 
-| Validité du token       | Long terme (pas d’expiration)               | expiré au delà de 15 min d'inactivité                    | 
-| Prolongation du token   | N/A                                          | GET /user/whoami recommandé toutes les 13 min                       | 
- 
----- 
- 
-===== 🧩 ÉTAPE 2 – INITIALISER UNE TRANSACTION / DÉMARRER UN PARCOURS ===== 
- 
-==== 🔹 ShootID ==== 
-  * **Méthode** : `GET` 
-  * **URL** : `https://www.contralia.fr/shootid/api/v2/init` 
-  * **Réponse** : 
-    <code javascript> 
-{ 
-  "transactionId": "2c95841e45404f7e0145405da33f0009", 
-  "qrCode": "https://www.contralia.fr/shootid/api/v2/picture?pictureId=2c95841e45404f7e0145405" 
-} 
-    </code> 
- 
----- 
- 
-==== 🔸 ID360 ==== 
-  * **Méthode** : `POST` 
-  * **URL PROD** : `https://id360docaposte.com/api/1.0.0/process/{UUID}/enrollment`   
-  * **URL PREPROD** : `https://preprod.id360docaposte.com/api/1.0.0/process/{UUID}/enrollment` 
-  * **Requête (cURL)** : 
-    <code bash> 
-curl -X POST \ 
-"https://id360docaposte.com/api/1.0.0/process/{UUID}/enrollment" \ 
--H "accept: application/json" \ 
--H "Authorization: Token 0123456789abcdef01234567" \ 
--d '{ 
-  "callback_url": "https://www.example.com/callback_url", 
-  "browser_callback_url": "https://www.example.com/browser_callback_url", 
-  "client_reference": "any_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" 
-}' 
-    </code> 
- 
-=== 🧾 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, etc.) 
-  * `client_reference` : identifiant de dossier interne à votre SI (pour faire le lien avec vos données) 
-  * Champs utilisateurs (`last_name`, `email`, etc.) : purement **informatifs**, non utilisés pour des contrôles 
-  * `email` : obligatoire uniquement si parcours PVID 
- 
----- 
- 
-==== ✅ Tableau de correspondance : Initialisation de parcours ==== 
- 
-^ Fonction                    ^ **ShootID**                                                                 ^ **ID360**                                                                                         ^ 
-| Type d’appel                | `GET /api/v2/init`                                                          | `POST /api/1.0.0/process/{id}/enrollment`                                                          | 
-| Retour                      | `transactionId`, `qrCode`                                                  | `id` (dossier), `url`, `api_key`, `status`                                                        | 
-| Paramétrage du parcours     | Implicite                                                                  | Explicite via `{id}` du process configuré dans l’IHM                                              | 
-| Callback technique          | N\A                                                                 | `callback_url` (backend) + `browser_callback_url` (front)                                          | 
-| Suivi personnalisé          | Non                                                                         | `client_reference` possible                                                                       | 
-| Authentification            | Via Basic dans chaque appel                                                | Via token (`Authorization: Token ...`)                                                            | 
- 
-===== 🔀 É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**, sans ambiguïté,   
-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 /api/1.0.0/enrollment/flow/enrollment_info/` 
- 
-**Préprod :** 
-<code bash> 
-curl -X 'GET' \ 
-'https://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/enrollment_info/' \ 
--H 'accept: application/json' \ 
--H 'x-api-key: {API_KEY_DOSSIER}' 
-</code> 
- 
-**Prod :** 
-<code bash> 
-curl -X 'GET' \ 
-'https://id360docaposte.com/api/1.0.0/enrollment/flow/enrollment_info/' \ 
--H 'accept: application/json' \ 
--H 'x-api-key: {API_KEY_DOSSIER}' 
-</code> 
- 
-**Réponse (extrait)** : 
-<code javascript> 
-{ 
-  "routes": [ 
-    { 
-      "id": 275128 
-    } 
-  ] 
-} 
-</code> 
- 
-> Le champ `routes[0].id` contient l’identifiant de la route à utiliser. 
- 
----- 
- 
-=== 2. ✅ Sélection de la route === 
- 
-  * **Endpoint** : `POST /api/1.0.0/enrollment/flow/route/{route_id}/select/` 
- 
-**Préprod :** 
-<code bash> 
-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: {API_KEY_DOSSIER}' \ 
--H 'Content-Type: text/plain' 
-</code> 
- 
-**Prod :** 
-<code bash> 
-curl -X 'POST' \ 
-'https://id360docaposte.com/api/1.0.0/enrollment/flow/route/{route_id}/select/' \ 
--H 'accept: application/json' \ 
--H 'x-api-key: {API_KEY_DOSSIER}' \ 
--H 'Content-Type: text/plain' 
-</code> 
- 
-**Réponse attendue** : 
-<code> 
-HTTP 204 No Content 
-</code> 
- 
----- 
- 
-=== 📝 Remarques clés === 
- 
-  * La **clé API du dossier (`api_key`)** est obtenue via l’appel `POST /process/{id}/enrollment` 
-  * 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://www.contralia.fr/shootid/api/v2/add` 
-  * **Type** : `multipart/form-data` 
-  * **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, scanProvider, OCR/MRZ, traitement image 
-  * **Réponse exemple** : 
-    <code javascript> 
-{ 
-  "transactionId": "2c95841e45404f7e0145405da33f0009", 
-  "qrCode": "https://www.contralia.fr/shootid/api/v2/picture?pictureId=2c95841e45404f7e0145405da35c000a", 
-  "documents": [{ 
-    "status": "READY_TO_BE_SCANNED", 
-    "declaredType": "IDENTITY", 
-    "documentId": 0 
-  }] 
-} 
-    </code> 
- 
----- 
- 
-==== 🔸 ID360 ==== 
- 
-  * **Méthode** : `POST` 
-  * **URL** : 
-    <code> 
-https://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/document/id_document_image/?total_pages=2&uploaded_page=0 
-    </code> 
-  * **Type** : `application/octet-stream` 
-  * **Authentification** : `x-api-key` (obtenue lors de l’enrollment) 
-  * **Payload** : binaire pur (pas de form-data) 
- 
-=== ➤ cURL (préprod) === 
-<code bash> 
-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: {API_KEY_DOSSIER}' \ 
--H 'Content-Type: application/octet-stream' \ 
---data-binary '@CNIRecto.PNG' 
-</code> 
- 
-=== ➤ Paramètres dans l’URL === 
- 
-^ Paramètre       ^ Description ^ 
-| `total_pages`   | Nombre total de pages à uploader pour le document (ex : `2` pour CNI recto/verso) | 
-| `uploaded_page` | Index de la page envoyée (commence à `0`) | 
- 
----- 
- 
-==== ✅ Tableau de correspondance – Upload Document ==== 
- 
-^ Élément                        ^ **ShootID**                                                       ^ **ID360**                                                                                      ^ 
-| Endpoint                      | `POST /api/v2/add`                                                | `POST /enrollment/flow/document/id_document_image/                                           | 
-| Authentification              | `Authorization: Basic` + `transactionId`                         | `x-api-key`                                                                                     | 
-| Format d’envoi                | `multipart/form-data`                                             | `application/octet-stream` (binaire pur)                                                       | 
-| Paramètres document           | `type`, `documentId`, `page`, etc.                               | `total_pages`, `uploaded_page` dans l’URL                                                      | 
-| Champ du fichier              | `file`                                                            | contenu brut via `--data-binary`                                                               | 
-| Réponse                       | JSON avec `status`, `documentId`, etc.                           | Réponse non détaillée (succès silencieux) ou `204` attendu                                     | 
-| Traitements optionnels        | Oui (binarisation, OCR, cropping, etc.)                         | Gérés en amont dans le paramétrage du parcours                                                 | 
-| Type de document géré         | Enum : `IDENTITY`, `RIB`, `CHECK`, `CAR_REGISTRATION`, etc.     | Fixe : `id_document_image` (pour cette étape spécifique)                                       | 
- 
----- 
- 
-===== 📄 É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'autres documents **en plus** de la pièce d’identité : 
- 
-  * 📄 **Justificatif de domicile** (facture, quittance, etc.) 
-  * 🏦 **RIB** (relevé d'identité bancaire) 
- 
----- 
- 
-==== 🔹 ShootID ==== 
- 
-  * **Endpoint** : `POST /shootid/api/v2/add` 
-  * **Champs obligatoires** : 
-    * `transactionId` 
-    * `file` 
-    * `type` → `ADDRESS_BLOCK` (justificatif) ou `RIB` 
-  * **Champs optionnels** : `documentId`, `page`, `scanProvider`, `processCropping`, etc. 
-  * **Réponse** : confirmation + status `READY_TO_BE_SCANNED` 
- 
----- 
- 
-==== 🔸 ID360 ==== 
- 
-=== 🏦 1. Upload du RIB === 
- 
-  * **Endpoint** : 
-    <code http> 
-POST /api/1.0.0/enrollment/flow/document/bank_details_image/ 
-    </code> 
- 
-  * **Exemple cURL** : 
-    <code bash> 
-curl -X 'POST' \ 
-'https://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/document/bank_details_image/' \ 
--H 'accept: */*' \ 
--H 'x-api-key: {API_KEY_DOSSIER}' \ 
--H 'Content-Type: application/octet-stream' \ 
---data-binary '@rib.jpg' 
-    </code> 
- 
-→ Ce document alimente le **bloc bancaire** (IBAN, titulaire du compte). 
- 
----- 
- 
-=== 🏠 2. Upload du justificatif de domicile === 
- 
-  * **Endpoint** : 
-    <code http> 
-POST /api/1.0.0/enrollment/flow/document/proof_of_address_image/ 
-    </code> 
- 
-  * **Exemple cURL** : 
-    <code bash> 
-curl -X 'POST' \ 
-'https://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/document/proof_of_address_image/' \ 
--H 'accept: */*' \ 
--H 'x-api-key: {API_KEY_DOSSIER}' \ 
--H 'Content-Type: application/octet-stream' \ 
---data-binary '@facture_edf.pdf' 
-    </code> 
- 
-→ 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              ^ Endpoint ID360                                                                 ^ 
-| Pièce d'identité             | `/enrollment/flow/document/id_document_image/                                 | 
-| Justificatif de domicile     | `/enrollment/flow/document/proof_of_address_image/                            | 
-| RIB                          | `/enrollment/flow/document/bank_details_image/                                | 
- 
----- 
-===== 📥 ÉTAPE 5 – RECUPERATION DU RESULTAT FINAL ===== 
-==== 🔹 ShootID ==== 
- 
-  * **Méthode** : `GET` 
-  * **URL** : `https://www.contralia.fr/shootid/api/v2/result` 
-  * **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`, `image1Cut`, `image2Cut`, `imageSignature` 
-  * Critères de fraude : `fraudScanTimesCriteria`, `fraudPeriodCriteria` 
- 
-==== 🔸 ID360 ==== 
- 
-=== Requête de récupération du rapport === 
- 
-  * **Méthode** : `GET` 
-  * **URL PROD** : `https://id360docaposte.com/api/1.0.0/enrollment/{id}/report` 
-  * **URL PRÉPROD** : `https://preprod.id360docaposte.com/api/1.0.0/enrollment/{id}/report` 
-  * **Authentification** : `Authorization: Token {votre_token}` 
- 
-=== Exemple de requête CURL === 
-<code bash> 
-curl -X GET \ 
-  "https://preprod.id360docaposte.com/api/1.0.0/enrollment/{id}/report" \ 
-  -H "accept: application/json" \ 
-  -H "Authorization: Token 0123456789abcdef01234567" 
-</code> 
- 
-  * **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> 
-{ 
-  "status": "OK", 
-  "id": 215416, 
-  "identity": { 
-    "name": "SPECIMEN ABB", 
-    "first_name": "NATACHA", 
-    "birth_date": "1973-07-12", 
-    "gender": "F", 
-    "birth_place": "TOULON", 
-    "nationality": "FRA", 
-    "extra": { 
-      "id_number": "90RF02331", 
-      "expiration_date": "2029-03-03", 
-      "issuer": "Préfecture du Sud", 
-      "address": "102 RUE PRINCIPALE 34700 LODÈVE FRANCE" 
-    } 
-  }, 
-  "extracted_data": { 
-    "proof_of_address": [ 
-      { 
-        "full_name": "MME SPECIMEN NATACHA", 
-        "address_1": "205 route des lylas", 
-        "address_2": "BT LES OLIVIERS", 
-        "zip_code": "06000", 
-        "city": "Nice", 
-        "date": "2022-04-06" 
-      } 
-    ], 
-    "bank_details": [ 
-      { 
-        "iban": "FR7630006000011234567890189", 
-        "bic": "CEPAFRPP831", 
-        "full_name": "MLE NATACHA SPECIMEN" 
-      } 
-    ] 
-  } 
-} 
-</code> 
- 
-==== ⚠️ Attention : ne pas appeler le rapport immédiatement ==== 
- 
-**→ Attendez toujours la réception de la *callback finale* sur votre `callback_url` avant d'appeler la méthode report.** 
- 
-  * Cette callback vous informe que le traitement est terminé. 
-  * Une fois reçue, vous pouvez alors appeler `/enrollment/{id}/report`. 
-  * Voir le guide des callbacks ici : [[fr:guide_callbacks|INTRODUCTION AUX CALLBACKS]] 
- 
-==== Comparatif ShootID / ID360 ==== 
- 
-^ Fonction ^ ShootID ^ ID360 ^ 
-| Endpoint | `GET /result` | `GET /enrollment/{id}/report` | 
-| Authentification | Basic Auth | `Authorization: Token ...` | 
-| 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`, `blocks.address`, etc.) | 
-| Résultats techniques | Détail MRZ / OCR | Agrégés selon configuration du parcours | 
- 
----- 

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