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_du_developpeur_capture [2025/08/07 10:15] – [3. Data Comparison (optional)] admin | en:guide_du_developpeur_capture [2026/01/16 17:09] (Version actuelle) – admin | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ~~NOTOC~~ | ||
| [[: | [[: | ||
| ---- | ---- | ||
| + | ===== 🔗 DOCUMENTATION URL CHANGE ===== | ||
| - | ====== Developer Guide – ID360 Capture ====== | + | The ID360 documentation |
| - | + | ||
| - | === 🎯 The ID360 solution allows you to: === | + | |
| - | * ✅ Manage the **identification** and **authentication** of users in your business service. | + | |
| - | * 🗂️ (Optional) **Collect**, | + | |
| - | * 🎨 Customize a **user interface** to meet your needs. | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🔗 Swagger Access === | + | |
| - | * **[[https:// | + | |
| - | * **[[https:// | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🔧 Main API Operations === | + | |
| - | + | ||
| - | - **API Login**: This call provides a valid token for 15 minutes, allowing access to other API methods. | + | |
| - | - **Create a user folder**: Returns a folder ID and an API key (api_key), essential for the next steps. | + | |
| - | - **Data comparison (optional)**: | + | |
| - | - **Redirect user to the user interface (UI)**: Use the API key to redirect the user to their enrollment journey. | + | |
| - | - **Retrieve report**: Retrieve the user's folder report using the folder ID, with status and technical/ | + | |
| - | - **Retrieve documents**: | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | 📘 **To continue reading this guide, you must first create at least one process and one application.** | + | |
| - | + | ||
| - | If not already done, we recommend checking the first section of this guide: **Getting Started with ID360** | + | |
| - | + | ||
| - | ====== 1. API Login ====== | + | |
| - | ==== 1.1 API Login: Authentication ==== | + | |
| - | + | ||
| - | [[https:// | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | + | ||
| - | === 🔧 Requête CURL – Production === | + | |
| - | <code javascript> | + | |
| - | curl -X POST " | + | |
| - | -H " | + | |
| - | -d '{ " | + | |
| - | </ | + | |
| - | + | ||
| - | === 🔧 Requête CURL – Préproduction === | + | |
| - | <code javascript> | + | |
| - | curl -X POST " | + | |
| - | -H " | + | |
| - | -d '{ " | + | |
| - | </ | + | |
| - | ---- | + | |
| - | + | ||
| - | === 📥 Required Parameters === | + | |
| - | + | ||
| - | ^ Parameter | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 📤 Expected Result (example) === | + | |
| - | + | ||
| - | **HTTP Status**: `200 OK` | + | |
| - | + | ||
| - | **Response Body**: | + | |
| - | <code javascript> | + | |
| - | { | + | |
| - | " | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 💬 Notes === | + | |
| - | + | ||
| - | * This call **must be made by your server**, **never** from the user’s browser. | + | |
| - | * The **token is valid for 15 minutes**. This duration **resets on each API call** using the token. | + | |
| - | * If you use an expired token or no token, you’ll get a `401 Unauthorized` error. | + | |
| - | * As long as the token is valid, **do not call `/login/` again**. | + | |
| - | * Use the token in the header of future calls:'' | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== 1.2 Headers for your API Requests ==== | + | |
| - | + | ||
| - | {{: | + | |
| - | + | ||
| - | Essential header for your API calls: | + | |
| - | + | ||
| - | **`Authorization`** → must contain: | + | |
| - | * the prefix **`Token`** | + | |
| - | * a space | + | |
| - | * the **token value** from the login call | + | |
| - | + | ||
| - | **Example**: | + | |
| - | < | + | |
| - | Authorization: | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === Testing via Swagger === | + | |
| - | + | ||
| - | To test calls in Swagger: | + | |
| - | - Click **"Try it out"** (top right) | + | |
| - | - Enter the token in this format: `Token 0123456789abcdef01234567` | + | |
| - | - Then click **" | + | |
| - | + | ||
| - | You will then be authenticated to run API calls directly from Swagger. | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== ⚠️ 1.3 Token lifespan and refresh – MUST BE IMPLEMENTED ⚠️ ==== | + | |
| - | + | ||
| - | The **login token is valid for 15 minutes**, and its lifespan is **reset with every call using the token** (*except `logIn` itself*). | + | |
| - | + | ||
| - | If you are not connected or the token is expired, you will receive a **401 Unauthorized** for any operation requiring authentication. | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🔁 Extending Token Validity === | + | |
| - | + | ||
| - | To extend token lifespan, you may call this method **every 13 minutes**: | + | |
| - | **`/ | + | |
| - | + | ||
| - | This method: | + | |
| - | * Requires **no parameters** | + | |
| - | * Requires an **Authorization header**: | + | |
| - | + | ||
| - | < | + | |
| - | Authorization: | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === ✅ Validity Check === | + | |
| - | + | ||
| - | * If the method returns **200 OK**, your token is still valid. | + | |
| - | * Otherwise, generate a **new token** via the `logIn` method. | + | |
| - | + | ||
| - | **ℹ️ Tip: Automate this call to avoid repeated login requests, which may be seen by ID360 as abnormal or aggressive behavior.** | + | |
| - | + | ||
| - | # 2. Creating a User Folder | + | |
| - | + | ||
| - | [See method in Swagger](https:// | + | |
| - | + | ||
| - | --- | + | |
| - | + | ||
| - | ## 🔧 CURL Request – Production | + | |
| - | ```bash | + | |
| - | curl -X POST \ | + | |
| - | " | + | |
| - | -H " | + | |
| - | + | ||
| - | ====== 2. Create a user folder ====== | + | |
| - | + | ||
| - | [[https:// | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🔧 CURL Request – Production === | + | |
| - | <code javascript> | + | |
| - | curl -X POST \ | + | |
| - | " | + | |
| - | -H " | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🔧 CURL Request – Preproduction === | + | |
| - | <code javascript> | + | |
| - | curl -X POST \ | + | |
| - | " | + | |
| - | -H " | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🛠 URL Notes === | + | |
| - | + | ||
| - | Replace the '' | + | |
| - | Process objects are configurable via the admin UI (their UUID is displayed there). | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 📥 Expected Body === | + | |
| - | + | ||
| - | <code json> | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | },{ | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }], | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }, | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 📝 Field Details === | + | |
| - | + | ||
| - | * **'' | + | |
| - | * **'' | + | |
| - | * **'' | + | |
| - | * **'' | + | |
| - | * **'' | + | |
| - | + | ||
| - | > For more information about callback_endpoints, | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 📤 Expected Result (example) === | + | |
| - | + | ||
| - | **HTTP Status**: '' | + | |
| - | + | ||
| - | <code json> | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | },{ | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }] | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 💬 Notes === | + | |
| - | + | ||
| - | * This call **must be performed server-side**, | + | |
| - | * ⚠️ **It is essential to keep both the enrollment '' | + | |
| - | + | ||
| - | ====== 3. Data Comparison (optional) ====== | + | |
| - | + | ||
| - | In the process configuration, | + | |
| - | To do this, go to the **'' | + | |
| - | + | ||
| - | [[https:// | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🔧 CURL Request – Production === | + | |
| - | <code javascript> | + | |
| - | curl -X POST \ | + | |
| - | " | + | |
| - | -H " | + | |
| - | -H " | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🔧 CURL Request – Preproduction === | + | |
| - | <code javascript> | + | |
| - | curl -X POST \ | + | |
| - | " | + | |
| - | -H " | + | |
| - | -H " | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🛠 Technical Information === | + | |
| - | + | ||
| - | * **'' | + | |
| - | * **'' | + | |
| - | - Examples: | + | |
| - | - '' | + | |
| - | - '' | + | |
| - | - '' | + | |
| - | * To check the expected data fields, you can query: | + | |
| - | [[https:// | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 📥 Parameters === | + | |
| - | + | ||
| - | ^ Parameter ^ Value ^ Description ^ | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 📤 Expected Body === | + | |
| - | + | ||
| - | The body must simply contain **the data to be checked**, in plain format (text or simple value). | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === ✅ Expected Result === | + | |
| - | + | ||
| - | **HTTP Status**: '' | + | |
| - | This indicates that the comparison was successfully processed **and no response body is returned**. | + | |
| - | + | ||
| - | ====== 4. Redirecting the User to the UI ====== | + | |
| - | + | ||
| - | This step must be performed **directly in the user's browser**. | + | |
| - | Using the '' | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🌐 Production Environment === | + | |
| - | + | ||
| - | < | + | |
| - | https:// | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🧪 Preproduction Environment === | + | |
| - | + | ||
| - | < | + | |
| - | https:// | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === ℹ️ Notes === | + | |
| - | + | ||
| - | * This URL **must be opened in the end user's browser**. | + | |
| - | * Replace **'' | + | |
| - | + | ||
| - | ==== When the user has completed their identification process ==== | + | |
| - | + | ||
| - | A token is appended as a parameter to the redirection URL (browser callback) when the user is redirected. For example: | + | |
| - | + | ||
| - | https:// | + | |
| - | + | ||
| - | This token can be used to call the following method: | + | |
| - | + | ||
| - | https:// | + | |
| - | + | ||
| - | This method retrieves the enrollment associated with the token present in the callback URL. It can only be invoked **once per enrollment**, | + | |
| - | + | ||
| - | Note that this is a **fingerprint of the enrollment**, | + | |
| - | + | ||
| - | Even if you do not use this token, the enrollment status will still be sent through the callback URL (see next step). | + | |
| - | + | ||
| - | ====== 5 Retrieve report ====== | + | |
| - | + | ||
| - | ===== 5.1 Retrieving the Report via API ===== | + | |
| - | + | ||
| - | [[https:// | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🔧 CURL Request – Production === | + | |
| - | <code javascript> | + | |
| - | curl -X GET \ | + | |
| - | " | + | |
| - | -H " | + | |
| - | -H " | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🔧 CURL Request – Preproduction === | + | |
| - | <code javascript> | + | |
| - | curl -X GET \ | + | |
| - | " | + | |
| - | -H " | + | |
| - | -H " | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🛠 Technical Information === | + | |
| - | + | ||
| - | * **'' | + | |
| - | * **Parameters**: | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === ✅ Expected Result === | + | |
| - | + | ||
| - | **HTTP Status**: '' | + | |
| - | **Response format**: JSON | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 💬 Notes === | + | |
| - | + | ||
| - | * This call must be made **by your server**, **never from the user's browser**. | + | |
| - | * The access token is **valid for 15 minutes**, renewed with each call using the token. | + | |
| - | * If the token is missing or expired, a **401 Unauthorized error** will be returned. | + | |
| - | * As long as your token is valid, **you should not reuse the '' | + | |
| - | * The token must be included in the header of subsequent requests as follows: | + | |
| - | + | ||
| - | < | + | |
| - | Authorization: | + | |
| - | </ | + | |
| - | + | ||
| - | ===== 5.2 Retrieving the Report from the Admin Platform ===== | + | |
| - | + | ||
| - | The report is also available in the console, under the “User Enrollments” tab, for a period of two months. The identifier corresponds to the enrollment ID generated at the end of step 2. By selecting “View details,” you can access the identification report and download the evidence file in JSON format at the bottom of the page. | + | |
| - | + | ||
| - | ===== 5.3 Specifics ===== | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 📄 A Temporary Report === | + | |
| - | + | ||
| - | A temporary report is available **before** the final report is issued. | + | |
| - | This report can be retrieved using the **'' | + | |
| - | + | ||
| - | ⚠️ The report can only be retrieved **after receiving the '' | + | |
| - | + | ||
| - | **Warning**: | + | |
| - | Calling a temporary report **may cause slowdowns or blockages** for your users. | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 📄 A Report Issued Less Than 7 Days Ago === | + | |
| - | + | ||
| - | Applications and users can retrieve all **evidence files** via the '' | + | |
| - | + | ||
| - | - A file with the status: | + | |
| - | - '' | + | |
| - | - '' | + | |
| - | - '' | + | |
| - | will return a **temporary** evidence file when using the **'' | + | |
| - | + | ||
| - | → [[https:// | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 📄 A Report Issued More Than 7 Days Ago and Less Than 2 Months Ago === | + | |
| - | + | ||
| - | Users can retrieve all **finalized evidence files** (with a **verdict OK or KO**) via the '' | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 📄 A Report Issued More Than 2 Months Ago and Before the Archiving Expiration Date === | + | |
| - | + | ||
| - | Only **users** can access **archived reports** via the '' | + | |
| - | + | ||
| - | * A file with status **CANCELED** or **FAILED** **is not archived**. | + | |
| - | * A **DELETED** file (older than 2 months) is archived **only** if it had a final status of **OK** or **KO**. | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 👥 Definition: Application vs User === | + | |
| - | + | ||
| - | **▶️ Retrieval via an application: | + | |
| - | Login using your *application credentials* (application ID + password defined at creation). | + | |
| - | + | ||
| - | **▶️ Retrieval via a user: | + | |
| - | Login using your *user credentials*: | + | |
| - | - Email address | + | |
| - | - Personal password | + | |
| - | - Two-factor authentication token (2FA) | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 📄 Retrieving the PDF Report === | + | |
| - | + | ||
| - | See the dedicated method: | + | |
| - | [[https:// | + | |
| - | + | ||
| - | ====== 6. Retrieving documents ====== | + | |
| - | + | ||
| - | You can use the API to retrieve **analyzed identity documents** and, if configured, **collected documents**. | + | |
| - | This is possible **up to 7 days after enrollment**. | + | |
| - | + | ||
| - | [[https:// | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🔧 CURL Request – Production === | + | |
| - | <code bash> | + | |
| - | curl -X ' | + | |
| - | ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 🔧 CURL Request – Preproduction === | + | |
| - | <code bash> | + | |
| - | curl -X ' | + | |
| - | ' | + | |
| - | -H ' | + | |
| - | -H ' | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 📄 Notes === | + | |
| - | + | ||
| - | * The document is returned **directly in the response**. | + | |
| - | * To get **both front and back** of an ID document, call the method twice with a different **'' | + | |
| - | - '' | + | |
| - | - '' | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 📁 Example of extraction from a JSON report === | + | |
| - | + | ||
| - | <code json> | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | { " | + | |
| - | { " | + | |
| - | ] | + | |
| - | }] | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | * The document ID is **'' | + | |
| - | * '' | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | === 📚 Types of Documents That Can Be Retrieved === | + | |
| - | + | ||
| - | ^ Document Type ^ JSON Key (name) ^ | + | |
| - | | **Identity Document (SVID)** | ''" | + | |
| - | | **Identity Document (PVID)** | ''" | + | |
| - | | **Identity Document with MIE** | ''" | + | |
| - | | **Bank Account Details (RIB)** | ''" | + | |
| - | | **Tax Notice** | ''" | + | |
| - | | **Company Registration (KBIS)** | ''" | + | |
| - | | **Payslip** | ''" | + | |
| - | | **Property Tax** | ''" | + | |
| - | | **Selfie / Uploaded Photo** | ''" | + | |
| - | | **Selfie / Processed Photo** | ''" | + | |
| - | | **Health Insurance Card** | ''" | + | |
| - | | **Social Security Card** | ''" | + | |
| - | | **Proof of Address** | ''" | + | |
| - | | **Car Registration** | ''" | + | |
| - | | **Liveness** | ''" | + | |
| - | + | ||
| - | ====== Health Monitoring ====== | + | |
| - | + | ||
| - | You can use the health API to retrieve a JSON containing the status of services used by ID360. | + | |
| - | + | ||
| - | curl " | + | |
| - | + | ||
| - | **Example result:** | + | |
| - | + | ||
| - | <code json> | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }, | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }, | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | } | + | |
| - | }, | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }, | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }, | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }, …. | + | |
| - | }, …. | + | |
| - | </ | + | |
| - | + | ||
| - | **Time**: corresponds to the timestamp of the last update | + | |
| - | + | ||
| - | **Two instances " | + | |
| + | 👉 **New address: | ||
| + | https:// | ||
| + | Please update your bookmarks and internal links accordingly. | ||
| + | Feel free to reach out if you have any questions 😊 | ||