Table des matières

Français | English


Guide de migration ShootID vers ID360

🔑 ETAPE 1 – AUTHENTIFICATION

🔹 ShootID

Authorization: Basic base64(applicationToken:applicationSecret)
    

🔸 ID360

{
  "username": "string",
  "password": "string"
}
 
{
  "token": "0123456789abcdef01234567"
}
 
Authorization: Token 0123456789abcdef01234567
    

🕐 Durée de vie & renouvellement du token (ID360)

🔄 Pour prolonger la validité du token (sans générer un nouveau token) :

GET /api/1.0.0/user/whoami
Authorization: Token 0123456789abcdef01234567

✅ 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

{
  "transactionId": "2c95841e45404f7e0145405da33f0009",
  "qrCode": "https://www.contralia.fr/shootid/api/v2/picture?pictureId=2c95841e45404f7e0145405"
}
 

🔸 ID360

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"
}'
 

🧾 Précisions sur les paramètres


✅ 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 :

👉 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

Préprod :

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}'

Prod :

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}'

Réponse (extrait) :

{
  "routes": [
    {
      "id": 275128
    }
  ]
}
Le champ `routes[0].id` contient l’identifiant de la route à utiliser.

2. ✅ Sélection de la route

Préprod :

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'

Prod :

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'

Réponse attendue :

HTTP 204 No Content

📝 Remarques clés


🪪 ÉTAPE 3 – AJOUTER UN DOCUMENT D’IDENTITÉ

🔹 ShootID

{
  "transactionId": "2c95841e45404f7e0145405da33f0009",
  "qrCode": "https://www.contralia.fr/shootid/api/v2/picture?pictureId=2c95841e45404f7e0145405da35c000a",
  "documents": [{
    "status": "READY_TO_BE_SCANNED",
    "declaredType": "IDENTITY",
    "documentId": 0
  }]
}
 

🔸 ID360

https://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/document/id_document_image/?total_pages=2&uploaded_page=0
    

➤ cURL (préprod)

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'

➤ 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é :


🔹 ShootID


🔸 ID360

🏦 1. Upload du RIB

POST /api/1.0.0/enrollment/flow/document/bank_details_image/
 
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'
 

→ Ce document alimente le bloc bancaire (IBAN, titulaire du compte).


🏠 2. Upload du justificatif de domicile

POST /api/1.0.0/enrollment/flow/document/proof_of_address_image/
 
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'
 

→ 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

Exemple de réponse

🔸 ID360

Requête de récupération du rapport

Exemple de requête CURL

curl -X GET \
  "https://preprod.id360docaposte.com/api/1.0.0/enrollment/{id}/report" \
  -H "accept: application/json" \
  -H "Authorization: Token 0123456789abcdef01234567"

Exemple de réponse

{
  "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"
      }
    ]
  }
}

⚠️ 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.

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