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 | ||
| en:guide_de_migration_shootid_vers_id360 [2025/08/07 15:24] – admin | en:guide_de_migration_shootid_vers_id360 [2026/01/16 17:10] (Version actuelle) – admin | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| [[: | [[: | ||
| ---- | ---- | ||
| - | ====== Migration Guide : ShootID to ID360 ====== | + | ===== 🔗 DOCUMENTATION URL CHANGE |
| - | ===== 🔑 STEP 1 – AUTHENTICATION | + | |
| - | ==== 🔹 ShootID ==== | + | The ID360 documentation URL has been updated. |
| - | * **Method**: Authentication via **HTTP Basic Auth** | + | |
| - | * **Header used in all requests**: | + | |
| - | < | + | |
| - | Authorization: | + | |
| - | </ | + | |
| - | * **Validity duration**: Permanent (or until manually revoked) | + | |
| - | ---- | + | 👉 **New address: |
| - | + | https://id360.doca-id.com/? | |
| - | ==== 🔸 ID360 ==== | + | |
| - | | + | |
| - | * **URL**: | + | |
| - | * Preprod: https:// | + | |
| - | * Prod: https:// | + | |
| - | * **JSON Payload**: | + | |
| - | <code javascript> | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | } | + | |
| - | </ | + | |
| - | * **Response**: | + | |
| - | <code javascript> | + | |
| - | { | + | |
| - | " | + | |
| - | } | + | |
| - | </ | + | |
| - | * **Header to include in each subsequent API call**: | + | |
| - | < | + | |
| - | Authorization: | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== 🕐 Token lifespan & renewal (ID360) ==== | + | |
| - | * **Validity**: | + | |
| - | * **Auto-renewal**: | + | |
| - | * **Exception**: | + | |
| - | * **Error on expiration**: | + | |
| - | + | ||
| - | **🔄 To extend token validity (without generating a new one):** | + | |
| - | + | ||
| - | <code http> | + | |
| - | GET / | + | |
| - | Authorization: | + | |
| - | </ | + | |
| - | + | ||
| - | * **Recommended frequency**: | + | |
| - | * **Expected response**: HTTP 200 if token is still valid | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== ✅ Authentication Summary Table ==== | + | |
| - | + | ||
| - | ^ Function | + | |
| - | | Method | + | |
| - | | Endpoint | + | |
| - | | Authentication format | + | |
| - | | Token validity | + | |
| - | | Token refresh | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== 🧩 STEP 2 – INITIALIZE A TRANSACTION / START A PROCESS ===== | + | |
| - | + | ||
| - | ==== 🔹 ShootID ==== | + | |
| - | * **Method**: `GET` | + | |
| - | * **URL**: `https:// | + | |
| - | * **Response**: | + | |
| - | <code javascript> | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== 🔸 ID360 ==== | + | |
| - | * **Method**: `POST` | + | |
| - | * **URL PROD**: `https:// | + | |
| - | * **URL PREPROD**: `https:// | + | |
| - | * **Request (cURL)**: | + | |
| - | <code bash> | + | |
| - | curl -X POST \ | + | |
| - | " | + | |
| - | -H " | + | |
| - | -H " | + | |
| - | -d '{ | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }, | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }' | + | |
| - | </ | + | |
| - | + | ||
| - | === 🧾 Parameter details === | + | |
| - | | + | |
| - | | + | |
| - | * `browser_callback_url` (**required**): | + | |
| - | * `callback_headers`: | + | |
| - | * `client_reference`: | + | |
| - | * User fields (`last_name`, | + | |
| - | * `email`: required only for PVID processes | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== ✅ Summary table – Process initialization ==== | + | |
| - | + | ||
| - | ^ Function | + | |
| - | | Request type | `GET / | + | |
| - | | Response | + | |
| - | | Process configuration | + | |
| - | | Technical callbacks | + | |
| - | | Custom tracking | + | |
| - | | Authentication | + | |
| - | + | ||
| - | ===== 🔀 STEP 2B – SELECTING THE ROUTE (ID360) ===== | + | |
| - | + | ||
| - | === 🧭 Why this step is required === | + | |
| - | + | ||
| - | In some ID360 processes, **multiple identification methods** can be proposed to the user, such as: | + | |
| - | + | ||
| - | * Identification via **La Poste Digital Identity** | + | |
| - | * Identification via a **Custom Online Process from Docaposte** | + | |
| - | + | ||
| - | 👉 **In this process**, **only the Custom Online Process is used**, | + | |
| - | which means that the ID360 platform **requires the integrator to explicitly select this route** among the available options. | + | |
| - | + | ||
| - | 🔐 This selection ensures that the user will follow **the correct identification scenario**, | + | |
| - | according to the business configuration set in the admin console. | + | |
| - | + | ||
| - | === 🎯 Goal === | + | |
| - | + | ||
| - | Associate a **specific route** with a **user dossier (enrollment)** using its `api_key`, | + | |
| - | in order to **lock the identification method** to follow. | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 1. 📥 Retrieve the list of available routes === | + | |
| - | + | ||
| - | * **Endpoint**: | + | |
| - | + | ||
| - | **Preprod: | + | |
| - | <code bash> | + | |
| - | curl -X ' | + | |
| - | 'https://preprod.id360docaposte.com/ | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | </ | + | |
| - | + | ||
| - | **Prod:** | + | |
| - | <code bash> | + | |
| - | curl -X ' | + | |
| - | ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | </ | + | |
| - | + | ||
| - | **Sample response**: | + | |
| - | <code javascript> | + | |
| - | { | + | |
| - | " | + | |
| - | { | + | |
| - | "id": 275128 | + | |
| - | } | + | |
| - | ] | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | > The field `routes[0].id` contains the ID of the route to use. | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 2. ✅ Select the route === | + | |
| - | + | ||
| - | * **Endpoint**: | + | |
| - | + | ||
| - | **Preprod: | + | |
| - | <code bash> | + | |
| - | curl -X ' | + | |
| - | ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | </ | + | |
| - | + | ||
| - | **Prod:** | + | |
| - | <code bash> | + | |
| - | curl -X ' | + | |
| - | ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | </ | + | |
| - | + | ||
| - | **Expected response**: | + | |
| - | < | + | |
| - | HTTP 204 No Content | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 📝 Key notes === | + | |
| - | + | ||
| - | * The **dossier’s API key (`api_key`)** is obtained through the `POST / | + | |
| - | * Route selection is **mandatory** for multi-channel processes | + | |
| - | * Once selected, the route is **permanently associated** with the dossier | + | |
| - | * This action must be performed **before sending any documents or user data** | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== 🪪 STEP 3 – ADD AN IDENTITY DOCUMENT ===== | + | |
| - | + | ||
| - | ==== 🔹 ShootID ==== | + | |
| - | + | ||
| - | * **Method**: `POST` | + | |
| - | * **URL**: `https:// | + | |
| - | * **Type**: `multipart/ | + | |
| - | * **Main fields**: | + | |
| - | * `transactionId` (string) – transaction ID (**required**) | + | |
| - | * `file` (file) – image to upload (**required**) | + | |
| - | * `type` (enum string) – document type: `Enum: IDENTITY` (**required**) | + | |
| - | * `documentId` (integer) – document ID (**required**) | + | |
| - | * **Advanced options**: page, geolocation, | + | |
| - | * **Sample response**: | + | |
| - | <code javascript> | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }] | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== 🔸 ID360 ==== | + | |
| - | + | ||
| - | * **Method**: `POST` | + | |
| - | * **URL**: | + | |
| - | < | + | |
| - | https:// | + | |
| - | </ | + | |
| - | * **Type**: `application/ | + | |
| - | * **Authentication**: | + | |
| - | * **Payload**: | + | |
| - | + | ||
| - | === ➤ cURL (preprod) === | + | |
| - | <code bash> | + | |
| - | curl -X ' | + | |
| - | ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | --data-binary ' | + | |
| - | </ | + | |
| - | + | ||
| - | === ➤ URL Parameters === | + | |
| - | + | ||
| - | ^ Parameter | + | |
| - | | `total_pages` | + | |
| - | | `uploaded_page` | Index of the uploaded page (starts at `0`) | | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== ✅ Comparison Table – Upload Document ==== | + | |
| - | + | ||
| - | ^ Element | + | |
| - | | Endpoint | + | |
| - | | Authentication | + | |
| - | | Upload format | + | |
| - | | Document parameters | + | |
| - | | File field | `file` | + | |
| - | | Response | + | |
| - | | Optional processing | + | |
| - | | Supported document types | Enum: `IDENTITY`, `RIB`, `CHECK`, `CAR_REGISTRATION`, | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== 📄 STEP 4 – ADD OTHER DOCUMENTS (RIB, Proof of Address, etc.) ===== | + | |
| - | + | ||
| - | In some ID360 processes, especially those requiring an **address block** or **bank identity**, | + | |
| - | it is necessary to upload additional documents **in addition to the ID document**: | + | |
| - | + | ||
| - | * 📄 **Proof of address** (utility bill, rent receipt, etc.) | + | |
| - | * 🏦 **Bank details (RIB)** | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== 🔹 ShootID ==== | + | |
| - | + | ||
| - | * **Endpoint**: | + | |
| - | * **Required fields**: | + | |
| - | * `transactionId` | + | |
| - | * `file` | + | |
| - | * `type` → `ADDRESS_BLOCK` (proof of address) or `RIB` | + | |
| - | * **Optional fields**: `documentId`, | + | |
| - | * **Response**: | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== 🔸 ID360 ==== | + | |
| - | + | ||
| - | === 🏦 1. Upload RIB === | + | |
| - | + | ||
| - | * **Endpoint**: | + | |
| - | <code http> | + | |
| - | POST / | + | |
| - | </ | + | |
| - | + | ||
| - | * **Sample cURL**: | + | |
| - | <code bash> | + | |
| - | curl -X ' | + | |
| - | ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | --data-binary ' | + | |
| - | </ | + | |
| - | + | ||
| - | → This document feeds the **bank block** (IBAN, account holder). | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🏠 2. Upload Proof of Address === | + | |
| - | + | ||
| - | * **Endpoint**: | + | |
| - | <code http> | + | |
| - | POST / | + | |
| - | </ | + | |
| - | + | ||
| - | * **Sample cURL**: | + | |
| - | <code bash> | + | |
| - | curl -X ' | + | |
| - | ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | --data-binary ' | + | |
| - | </ | + | |
| - | + | ||
| - | → This document feeds the **address block**, which can be cross-verified with the ID document. | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== ✅ Summary of ID360 Document Upload Endpoints ==== | + | |
| - | + | ||
| - | ^ Document Type ^ ID360 Endpoint URL Path ^ | + | |
| - | | Identity document | + | |
| - | | Proof of address | + | |
| - | | Bank details (RIB) | `/ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== 📥 STEP 5 – RETRIEVING THE FINAL RESULT ===== | + | |
| - | + | ||
| - | ==== 🔹 ShootID ==== | + | |
| - | + | ||
| - | * **Method**: `GET` | + | |
| - | * **URL**: `https:// | + | |
| - | * **Parameters**: | + | |
| - | * `transactionId` (**required**) | + | |
| - | * `documentId` (optional) | + | |
| - | * `scanTimeout` (optional) | + | |
| - | + | ||
| - | === Sample response === | + | |
| - | * Scan status: `OK`, `KO`, `PROVIDER_COULD_NOT_PROCESS_ERROR` | + | |
| - | * Validation results: MRZ, integrity checks... | + | |
| - | * OCR data: name, first name, birth date, gender, number... | + | |
| - | * Generated images: `imagePhoto`, | + | |
| - | * Fraud criteria: `fraudScanTimesCriteria`, | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== 🔸 ID360 ==== | + | |
| - | + | ||
| - | === Report Retrieval Request === | + | |
| - | + | ||
| - | * **Method**: `GET` | + | |
| - | * **PROD URL**: `https:// | + | |
| - | * **PREPROD URL**: `https:// | + | |
| - | * **Authentication**: | + | |
| - | + | ||
| - | === Example cURL request === | + | |
| - | <code bash> | + | |
| - | curl -X GET \ | + | |
| - | " | + | |
| - | -H " | + | |
| - | -H " | + | |
| - | </ | + | |
| - | + | ||
| - | * **In the URL `{id}`**: refers to the enrollment ID | + | |
| - | * **Parameters**: | + | |
| - | * **Result**: HTTP 200 + JSON response | + | |
| - | * **Call should only be made from your backend server** | + | |
| - | + | ||
| - | === Sample response === | + | |
| - | <code json> | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | } | + | |
| - | }, | + | |
| - | " | + | |
| - | " | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | } | + | |
| - | ], | + | |
| - | " | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | } | + | |
| - | ] | + | |
| - | } | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== ⚠️ Warning: do not call the report endpoint too early ==== | + | |
| - | + | ||
| - | **→ Always wait for the *final callback* on your `callback_url` before calling the report endpoint.** | + | |
| - | + | ||
| - | * This callback confirms the end of the processing. | + | |
| - | * Once received, you can safely call `/ | + | |
| - | * See the callback guide here: [[en:guide_callbacks|INTRODUCTION TO CALLBACKS]] | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== ShootID / ID360 Comparison Table ==== | + | |
| - | + | ||
| - | ^ Function | + | |
| - | | Endpoint | + | |
| - | | Authentication | + | |
| - | | When to call | After document upload | + | |
| - | | Response structure | + | |
| - | | Technical results | + | |
| - | + | ||
| - | ---- | + | |
| + | Please update your bookmarks and internal links accordingly. | ||
| + | Feel free to reach out if you have any questions 😊 | ||