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

On this page