Conventions

Format JSON, dates, pagination par en-têtes, filtres de liste, enveloppe ActionResponse et identifiants métier.

Format JSON

  • Champs en anglais, camelCase (companyBrokerId, effectiveDate).
  • Les champs null sont omis des réponses : testez l'absence d'une clé, pas sa nullité.
  • Montants en FCFA, nombres décimaux (au plus deux décimales), jamais en centimes.
  • Identifiants : UUID sous forme de chaîne.
  • Codes métier véhicule issus du référentiel eAtCI : types TV01–TV13, catégories 01–12, genres GV01–GV12, énergies SEDI/SEEL/SEES/SEHY, usages UV01–UV10. Dans les corps de requête on envoie toutefois l'identifiant du référentiel (brandId, usageId…), pas le code.
  • Une exception historique : l'apporteur se nomme referreId dans le JSON (et referrerId dans le domaine).

Dates

ContexteFormatExemple
Dates de contrat en entrée (effectiveDate de POST /provider/contracts, PATCH …/duration)yyyy-MM-dd HH:mm:ss2026-11-07 00:00:01
Dates civiles (naissance, 1ʳᵉ mise en circulation, permis)yyyy-MM-dd2019-03-20
Dates-heures en sortieISO 8601 sans fuseau2026-10-06T08:38:39
periodStart d'une cotation d'avenantISO 86012026-12-01T00:00:00+00:00
Bornes et valeurs de filtre des étatsISO 8601 (yyyy-MM-dd accepté pour un DATETIME)2026-10-01T00:00:00

Toutes les heures sont exprimées dans le fuseau Africa/Abidjan (UTC+0).

Pagination

Les listes renvoient le tableau en corps et les métadonnées en en-têtes :

En-têteTypeSens
X-Pageintpage courante, à partir de 0
X-Sizeinttaille de page
X-Totallongnombre total d'éléments
X-Total-Pagesintnombre de pages

Paramètres : page (défaut 0) et size (défaut 10, 20 pour les états, 50 pour les motifs, 100 pour les types d'avenant).

curl -si "$API/provider/contracts?page=0&size=20" -H "Authorization: Bearer $TOKEN" | grep -i '^x-'
X-Page: 0
X-Size: 20
X-Total: 1432
X-Total-Pages: 72

Exception : les listes de modèles d'état et d'exécutions d'état renvoient la pagination dans le corps (content, page, size, totalElements, totalPages, first, last).

Filtres de liste

Les listes acceptent des filtres sous la forme filter[champ]=valeur. Le champ peut traverser une relation avec un point (filter[contract.id]). Les champs texte font une recherche contient, insensible à la casse ; les autres une égalité. Les filtres non reconnus sont ignorés.

ListeFiltres acceptés
GET /provider/contracts, /proposalsproposalNumber, policyNumber (contient), contractType, status, broker.id, company.id, subscriber.id, referrer.id, endorsement.id
GET /provider/endorsements, /contracts/{id}/endorsementsreference, contract.policyNumber, contract.proposalNumber (contient), contract.id, status, endorsementType.id, endorsementType.endorsementCode, premiumImpact
GET …/paymentspaymentReference, externalTransactionId (contient), paymentMethod, status, contract.id, contract.policyNumber, contractEndorsement.id
GET /provider/lnk-broker-companiesquery (recherche globale), companyCode, brokerCode, broker.id, company.id, companyBrokerCode, partnershipStatus
GET /provider/insuredslastName, firstNames, companyName, email, mobilePhone, clientNumber (contient), personType, nationalIdNumber, drivingLicenseNumber
GET /provider/vehicles/modelsbrand.id, modelCode, modelLabel (contient)
GET /provider/vehicles/brandsbrandLabel (contient)
GET /provider/reasonstypeId, label (contient), isActive

GET /provider/subscribers utilise un paramètre query unique (nom, pièce, téléphone…).

Enveloppe ActionResponse

Certaines opérations renvoient une enveloppe plutôt que l'objet nu : création de souscripteur, d'assuré, de véhicule, cotation d'avenant, renvoi et annulation de lien de paiement.

{
  "success": true,
  "message": "Souscripteur créé",
  "status": "Completed",
  "id": "dae6bf98-00e3-4bb3-9f5c-2e6bef6f882e",
  "data": { "id": "dae6bf98-00e3-4bb3-9f5c-2e6bef6f882e", "personType": "PHYSIQUE", "...": "..." }
}
ChampTypeDescription
successbooleantrue si l'opération a réussi
messagestringMessage métier
dataobjet ou tableauCharge utile
idstringIdentifiant lié (parfois)
statusstringCompleted, Failed…

Identifiants à connaître

ChampSourceRôle
companyBrokerIdGET /provider/lnk-broker-companies → idPartenariat ; la compagnie du lien devient l'assureur
subscriberIdPOST/GET /provider/subscribers → idSouscripteur du contrat
insuredIdPOST/GET /provider/insureds → idAssuré, posé sur chaque véhicule du contrat
referreIdPOST/GET /provider/referrers → idApporteur (optionnel)
durationCodeGET /provider/durations → durationCodeDurée de couverture (ex. 12_MOIS)
vehicleIdsPOST/GET /provider/vehicles → idVéhicules déjà en base, au moins un
endorsementId (type)GET /provider/endorsement-types → idType d'avenant à coter
contractIdPOST /provider/contracts → idProposition puis contrat
endorsementId (acte)avenant → idAvenant à payer, consulter, documenter

Statuts HTTP

CodeQuand
200Lecture, mise à jour, action
201Création (proposition, souscripteur, modèle d'état, génération d'état…)
204Suppression ou favori sans contenu
400Corps invalide ou règle métier non respectée
401 / 403Jeton absent ou rôle insuffisant
404Ressource introuvable ou hors périmètre
502 / 503Service de la plateforme (authentification, paiement, documents) momentanément en erreur

On this page