Démarrage rapide
Créez et payez votre première proposition Pool TPV en sept appels.
Avant de commencer
Il vous faut un compte prestataire (e-mail et mot de passe) fourni par le Pool TPV ou par ASACI Technologies, rattaché à un courtier ou à une compagnie. C'est ce rattachement qui définit le périmètre des données que vous verrez et les partenariats avec lesquels vous pourrez souscrire.
Tous les exemples utilisent la préproduction : https://apigw-pp.pooltpv.app/subscription/api/v1.
Les identifiants (UUID) sont illustratifs.
Dans les exemples, $API désigne la base URL et $TOKEN le jeton obtenu à l'étape 1.
export API=https://apigw-pp.pooltpv.app/subscription/api/v1Étape 1 — Obtenir un jeton
curl -s -X POST $API/provider/token \
-H "Content-Type: application/json" \
-d '{ "email": "integration@courtier.ci", "password": "••••••••" }'{
"access_token": "eyJhbGciOiJSUzI1NiIs...",
"expires_in": 300,
"refresh_expires_in": 1800,
"refresh_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "Bearer"
}Conservez access_token et refresh_token. Le jeton d'accès expire vite (ici 300 s) : renouvelez-le
avec POST /provider/token/refresh plutôt que de renvoyer le mot de passe.
export TOKEN=eyJhbGciOiJSUzI1NiIs...Étape 2 — Collecter les identifiants du contrat
Une proposition se crée à partir de cinq références que vous récupérez une fois pour toutes.
Le partenariat (companyBrokerId)
curl -s "$API/provider/lnk-broker-companies?size=5" -H "Authorization: Bearer $TOKEN"Le serveur ne renvoie que les partenariats actifs autorisés à créer une proposition. Prenez le champ
id. La compagnie du partenariat devient l'assureur du contrat : elle n'est jamais envoyée séparément.
La durée (durationCode)
curl -s $API/provider/durations -H "Authorization: Bearer $TOKEN"Utilisez durationCode (par exemple 3_MOIS, 12_MOIS), pas l'id.
Le souscripteur (subscriberId) et l'assuré (insuredId)
curl -s -X POST $API/provider/subscribers \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{
"personType": "PHYSIQUE", "civility": "MR",
"lastName": "KOUAME", "firstNames": "Jean",
"birthDate": "1985-04-12", "nationalIdNumber": "CI0012345678",
"mobilePhone": "+2250700000000", "email": "jean.kouame@example.com"
}'La réponse est une enveloppe ActionResponse : l'identifiant est dans data.id. Si le souscripteur
est aussi l'assuré, réutilisez le même identifiant pour insuredId ; sinon créez l'assuré avec
POST /provider/insureds (même modèle).
Le véhicule (vehicleIds)
Les référentiels fournissent les identifiants attendus : marque, modèle, type, catégorie, énergie,
usage, genre et ville de circulation (GET /provider/vehicles/brands, .../models, .../types,
.../categories, .../energies, .../usages, .../genders, .../circulation-cities).
curl -s -X POST $API/provider/vehicles \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{
"registrationNumber": "2546ZR64",
"chassisNumber": "3XDWSNVZS3AHSX6JS",
"brandId": "uuid-marque", "modelId": "uuid-modele",
"vehicleTypeId": "uuid-type", "vehicleCategoryId": "uuid-categorie",
"energyId": "uuid-energie", "usageId": "uuid-usage",
"genderId": "uuid-genre", "circulationCityId": "uuid-ville",
"numberOfSeats": 5, "horsepower": 10,
"firstRegistrationDate": "2019-03-20", "manufactureYear": 2018
}'data.id est l'identifiant à placer dans vehicleIds. numberOfSeats est obligatoire : il pilote
la tarification TPV.
Étape 3 — Créer la proposition
curl -s -X POST $API/provider/contracts \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{
"companyBrokerId": "7fa1ffd4-4fc6-400e-b5c8-5da5256d978f",
"subscriberId": "dae6bf98-00e3-4bb3-9f5c-2e6bef6f882e",
"insuredId": "dae6bf98-00e3-4bb3-9f5c-2e6bef6f882e",
"durationCode": "3_MOIS",
"effectiveDate": "2026-11-07 00:00:01",
"vehicleIds": ["9e7258b6-2eb6-4969-b84c-cfa1343e0d71"]
}'Réponse 201 : un objet Contract au statut DRAFT, déjà tarifé. Le serveur a aussi créé l'avenant
« affaire nouvelle » en statut QUOTE.
{
"id": "1273be1c-9403-4bbf-a507-62b9bdbf6b30",
"proposalNumber": "PRO-99485-COMAR-TPV-2611-083839ABC",
"status": "DRAFT",
"contractType": "MONO",
"effectiveDate": "2026-11-07T00:00:01",
"expiryDate": "2027-02-06T23:59:59",
"primeNette": 41151, "accessoire": 2000, "taxe": 6257,
"fga": 784, "cedeao": 1000, "primeTtc": 52190
}Étape 4 — Vérifier la prime (optionnel)
curl -s $API/provider/contracts/1273be1c-9403-4bbf-a507-62b9bdbf6b30 \
-H "Authorization: Bearer $TOKEN"La réponse contient contract et breakdown, la décomposition lisible de la prime (prime nette,
garanties, accessoires, taxe unique, FGA, carte brune CEDEAO, total). Si vous modifiez la proposition
(durée, véhicule), relancez POST /provider/contracts/tarification/{contractId}/calculate.
Étape 5 — Initier le paiement
curl -s -X POST $API/provider/contracts/1273be1c-9403-4bbf-a507-62b9bdbf6b30/pay \
-H "Authorization: Bearer $TOKEN"{
"endorsementId": "c0261ae8-feee-4ee4-827d-9df4ceb4af4f",
"premiumId": "35ef3da7-9945-4051-a13a-7a72a39af200",
"amount": 52190.00,
"paymentUrl": "https://paiement.pooltpv.app/pay/...",
"paymentReference": "pi_91cb5dddcb204a959396ab0f",
"expiresAt": null
}Redirigez le client vers paymentUrl, ou renvoyez-lui le lien par e-mail, SMS ou WhatsApp avec
POST /provider/endorsements/{endorsementId}/payment/resend.
Étape 6 — Suivre le paiement et l'émission
curl -s $API/provider/contracts/1273be1c-9403-4bbf-a507-62b9bdbf6b30/payments/status \
-H "Authorization: Bearer $TOKEN"{ "status": true } dès que le règlement est confirmé. L'émission du contrat, l'attestation et les
documents sont ensuite produits automatiquement par la plateforme : consultez
GET /provider/contracts/{id} (statut ACTIVE, policyNumber renseigné) et
GET /provider/contracts/{contractId}/documents.
Étape 7 — Éditer un premier état
curl -s -X POST $API/provider/reports/generate \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{
"definitionCode": "QUITTANCEMENT",
"scope": { "basedOn": "issuedAt", "relativeRange": "CURRENT_MONTH" },
"format": "XLSX"
}'La réponse contient execution.id. Téléchargez le fichier :
curl -s -o quittancement.xlsx \
$API/provider/reports/executions/7b1c.../file -H "Authorization: Bearer $TOKEN"Les endpoints d'états exigent un compte compagnie (rôles COMPANY_ADMIN, SUPERVISEUR,
ACCOUNTANT). Un compte courtier reçoit 403. Voir
Droits et périmètre.
Et ensuite
Parcours de souscription
Le détail de chaque phase, les règles de modification d'une proposition et les cas d'erreur.
Avenants
Changement d'immatriculation, résiliation, suspension, incorporation : coter puis payer.
États personnalisés
Construire une spécification sur mesure et l'enregistrer comme modèle.
Référence API
Tous les endpoints, paramètres et schémas.