Aller au contenu
Support

Modèles de données

Les objets que l'API renvoie, champ par champ. Les exemples sont des réponses réelles de la sandbox.

Conventions
  • Montants : nombres entiers en FCFA (XOF), sans décimales.
  • Dates : AAAA-MM-JJ. Instants : ISO 8601 en UTC.
  • Un champ sans valeur vaut null : il n'est pas omis.
  • De nouveaux champs peuvent apparaître : votre code doit les ignorer, pas les refuser.

Offre

GET /v1/produits, GET /v1/produits/{code}

ChampTypeToujours présentDescription
codetexteouiCode de l'offre, à envoyer dans offre lors d'un devis.
produittexteouiFamille : sante, habitation, commerce, vie, voyage, accidents.
libelletexteouiNom commercial, à afficher.
descriptiontexteouiRésumé de la couverture.
dureetexteouiDurée de couverture (ou durées possibles pour un voyage).
documentsliste de textesouiTypes de documents remis (voir Constantes).
disponiblebooléenouifalse : offre momentanément retirée de la vente.
garantiesobjetouiGaranties, capitaux et limites d'âge, propres à chaque offre (voir la page du produit).
exemple_devisobjetnonConsultation d'une seule offre : un corps de POST /v1/devis prêt à l'emploi.
Exemple
{
  "code": "securvie_500k",
  "produit": "vie",
  "libelle": "SecurVie 500 000 FCFA",
  "description": "Assurance temporaire décès : capital versé aux bénéficiaires en cas de décès de l'assuré.",
  "duree": "12 mois",
  "documents": [
    "conditions_generales",
    "conditions_particulieres"
  ],
  "disponible": true,
  "garanties": {
    "capital_deces": 500000,
    "age_max": 65
  },
  "exemple_devis": {
    "offre": "securvie_500k",
    "donnees": {
      "assure": {
        "date_naissance": "1985-06-15"
      }
    }
  }
}

Devis

POST /v1/devis, GET /v1/devis/{id}

ChampTypeToujours présentDescription
idtexteouiIdentifiant : dev_ suivi de 24 caractères.
objet« devis »oui
environnement« test » | « live »oui
offretexteouiCode de l'offre.
produittexteouiFamille de produit.
primePrimeouiLe prix (voir Prime ci-dessous).
duree_moisentierouiDurée de couverture en mois.
detailobjet | nullouiHabitation et commerce : capitaux assurés et garanties retenues. null pour les autres produits.
donneesobjetouiLes informations de tarification reçues, après normalisation.
reference_partenairetexte | nullouiVotre référence.
expire_leinstant ISO 8601 (UTC)ouiFin de validité du prix (15 jours). Au-delà, une souscription est refusée.
expirebooléenouitrue si expire_le est passé.
cree_leinstant ISO 8601 (UTC)oui
Exemple
{
  "id": "dev_68e56446d4b5c6875911f178",
  "objet": "devis",
  "environnement": "test",
  "offre": "securvie_500k",
  "produit": "vie",
  "prime": {
    "nette": 11000,
    "accessoires": 0,
    "taxes": 1980,
    "totale": 12980,
    "devise": "XOF"
  },
  "duree_mois": 12,
  "detail": null,
  "donnees": {
    "assure": {
      "date_naissance": "1985-06-15"
    }
  },
  "reference_partenaire": "CMD-2026-0042",
  "expire_le": "2026-11-19T17:35:33.439+00:00",
  "expire": false,
  "cree_le": "2026-11-04T17:35:33.447204+00:00"
}

Prime

dans Devis et Contrat

ChampTypeToujours présentDescription
netteentier, FCFAouiPrime hors taxes.
accessoiresentier, FCFAouiFrais accessoires.
taxesentier, FCFAouiTaxes.
totaleentier, FCFAouiMontant payé par le client. C'est le montant à afficher.
devise« XOF »ouiFranc CFA (BCEAO).
Exemple
{
  "nette": 11000,
  "accessoires": 0,
  "taxes": 1980,
  "totale": 12980,
  "devise": "XOF"
}

Souscripteur

envoyé dans POST /v1/souscriptions

Le client final, celui qui souscrit et paie. Commun à tous les produits. Les réponses n'en renvoient qu'une partie (nom, prénom, téléphone, et email pour un contrat).

ChampTypeObligatoireDescription
nomtexteouiNom du client final (120 caractères max).
prenomtexteouiPrénom(s).
telephonetexteoui8 à 15 chiffres, indicatif « + » accepté. Ex. +2250701020304.
emailtextenonAdresse email valide.
adressetextenonAdresse postale ou quartier (200 caractères max).
date_naissancedate AAAA-MM-JJnonRecommandé pour Habitation, Commerce et Accidents (imprimée sur les Conditions Particulières).
Exemple
{
  "nom": "KONE",
  "prenom": "Awa",
  "telephone": "+2250701020304",
  "email": "awa.kone@example.com",
  "adresse": "Cocody, Abidjan",
  "date_naissance": "1990-04-12"
}

Souscription

POST /v1/souscriptions, GET /v1/souscriptions/{id}, paiement

ChampTypeToujours présentDescription
idtexteouiIdentifiant : sou_ suivi de 24 caractères.
objet« souscription »oui
environnement« test » | « live »oui
statut« en_attente_paiement » | « payee » | « expiree »ouiVoir Constantes.
devis_idtexteouiLe devis d'origine.
montant_a_payer{ montant, devise }ouiMontant exact à encaisser (prime totale du devis).
mode_paiement« encaissement_partenaire » | « jeko »ouiMode A (vous encaissez) ou mode B (COVERAF encaisse en Mobile Money).
date_effet_prevuedate AAAA-MM-JJouiDébut de couverture demandé.
souscripteur{ nom, prenom, telephone }oui
reference_partenairetexte | nulloui
paiementPaiement | nullouiMode B : la dernière tentative de paiement Mobile Money. null en mode A.
contrat{ numero, adresse } | nullouiRempli dès que le contrat est émis.
expire_leinstant ISO 8601 (UTC)ouiMême date que le devis.
payee_leinstant ISO 8601 (UTC) | nulloui
cree_leinstant ISO 8601 (UTC)oui
Exemple
{
  "id": "sou_f6ac5791c1dd467dd238607f",
  "objet": "souscription",
  "environnement": "test",
  "statut": "payee",
  "devis_id": "dev_44cfca8ed08b74ff676b9474",
  "montant_a_payer": {
    "montant": 12980,
    "devise": "XOF"
  },
  "mode_paiement": "jeko",
  "date_effet_prevue": "2026-11-04",
  "souscripteur": {
    "nom": "KONE",
    "prenom": "Awa",
    "telephone": "+2250701020304"
  },
  "reference_partenaire": "CMD-2026-0042",
  "paiement": {
    "id": "pay_e6bf7dd3fd60f74b08c1fef9",
    "statut": "reussi",
    "operateur": "orange",
    "montant": 12980,
    "lien_paiement": null,
    "motif_echec": null,
    "cree_le": "2026-11-04T17:35:45.931257+00:00"
  },
  "contrat": {
    "numero": "TEST-CVR-API-MW2EE3CW-0845CBC0B0",
    "adresse": "/v1/contrats/TEST-CVR-API-MW2EE3CW-0845CBC0B0"
  },
  "expire_le": "2026-11-19T17:35:42.74+00:00",
  "payee_le": "2026-11-04T17:35:49.232+00:00",
  "cree_le": "2026-11-04T17:35:43.359143+00:00"
}

Paiement (mode B)

champ paiement d'une souscription

ChampTypeToujours présentDescription
idtexteouiIdentifiant : pay_ suivi de 24 caractères.
statut« en_attente » | « reussi » | « echoue »oui
operateurtexteouiOpérateur Mobile Money (voir Constantes).
montantentier, FCFAoui
lien_paiementadresse | nullouiPage de paiement à ouvrir pour le client, tant que le paiement est en attente.
motif_echectexte | nullouiSi statut = echoue (voir Constantes).
cree_leinstant ISO 8601 (UTC)oui
Exemple
{
  "id": "pay_e6bf7dd3fd60f74b08c1fef9",
  "statut": "en_attente",
  "operateur": "orange",
  "montant": 12980,
  "lien_paiement": "http://localhost:3005/sandbox/paiement/pay_e6bf7dd3fd60f74b08c1fef9",
  "motif_echec": null,
  "cree_le": "2026-11-04T17:35:45.931257+00:00"
}

Contrat

GET /v1/contrats/{numero}

ChampTypeToujours présentDescription
numerotexteouiCVR-API-... en production, TEST-CVR-API-... en sandbox.
objet« contrat »oui
environnement« test » | « live »oui
statut« actif » | « expire » | « suspendu » | « annule »ouiActif dès son émission.
offretexteoui
produittexteoui
devis_idtexteoui
souscription_idtexteoui
reference_partenairetexte | nulloui
primePrimeoui
date_effetdate AAAA-MM-JJouiDébut de couverture : la date demandée, ou le jour du paiement s'il est plus tardif.
date_echeancedate AAAA-MM-JJouiFin de couverture.
duree_moisentieroui
souscripteur{ nom, prenom, telephone, email }oui
assureslistenonConsultation d'un contrat : personnes couvertes (santé : role, nom, prenoms, sexe, date_naissance ; voyage : les voyageurs). Liste vide pour les autres produits. Absent de la liste des contrats.
paiement{ montant, moyen, paye_le } | nullouiConsultation d'un contrat : le paiement. null dans la liste des contrats.
documentsliste de DocumentouiDocuments du contrat.
cree_leinstant ISO 8601 (UTC)oui
Exemple
{
  "numero": "TEST-CVR-API-MW2EDTG6-F92441FC41",
  "objet": "contrat",
  "environnement": "test",
  "statut": "actif",
  "offre": "securvie_500k",
  "produit": "vie",
  "devis_id": "dev_68e56446d4b5c6875911f178",
  "souscription_id": "sou_8a1ab1eb752f13c8f09bb0b6",
  "reference_partenaire": "CMD-2026-0042",
  "prime": {
    "nette": 11000,
    "accessoires": 0,
    "taxes": 1980,
    "totale": 12980,
    "devise": "XOF"
  },
  "date_effet": "2026-11-04",
  "date_echeance": "2027-11-03",
  "duree_mois": 12,
  "souscripteur": {
    "nom": "KONE",
    "prenom": "Awa",
    "telephone": "+2250701020304",
    "email": "awa.kone@example.com"
  },
  "assures": [],
  "paiement": {
    "montant": 12980,
    "moyen": "Orange Money (encaissé par le partenaire)",
    "paye_le": "2026-11-04T17:35:36.2+00:00"
  },
  "documents": [
    {
      "type": "conditions_generales",
      "disponible": true,
      "adresse": "/v1/contrats/TEST-CVR-API-MW2EDTG6-F92441FC41/documents/conditions_generales"
    },
    {
      "type": "conditions_particulieres",
      "disponible": true,
      "adresse": "/v1/contrats/TEST-CVR-API-MW2EDTG6-F92441FC41/documents/conditions_particulieres"
    }
  ],
  "cree_le": "2026-11-04T17:35:36.575052+00:00"
}

Document

champ documents d'un contrat

ChampTypeToujours présentDescription
typetexteouiconditions_generales, conditions_particulieres ou attestation.
disponiblebooléenouiLes Conditions Générales le sont toujours ; les autres tant que le contrat est actif.
adressecheminouiÀ appeler avec GET pour obtenir le PDF.
Exemple
{
  "type": "conditions_particulieres",
  "disponible": true,
  "adresse": "/v1/contrats/TEST-CVR-API-MW2EDTG6-F92441FC41/documents/conditions_particulieres"
}

Liste

GET /v1/contrats

ChampTypeToujours présentDescription
objet« liste »oui
donneeslisteouiLes éléments de la page, du plus récent au plus ancien.
suiteinstant ISO 8601 (UTC) | nullouiÀ passer dans ?avant= pour la page suivante. null : dernière page.
Exemple
{
  "objet": "liste",
  "donnees": [
    "…"
  ],
  "suite": "2026-11-04T16:44:34.688451+00:00"
}

Événement (notification)

envoyé à votre serveur

ChampTypeToujours présentDescription
idtexteouiIdentifiant : evt_ suivi de 24 caractères. Servez-vous-en pour ignorer les doublons.
objet« evenement »oui
typetexteouiVoir Constantes.
environnement« test » | « live »oui
cree_leinstant ISO 8601 (UTC)oui
donneesobjetouiContenu propre au type (voir Notifications).
Exemple
{
  "id": "evt_5f1c2a9be04d77a3c1d2e8f0",
  "objet": "evenement",
  "type": "contrat.emis",
  "environnement": "test",
  "cree_le": "2026-11-04T17:35:56.305Z",
  "donnees": {
    "souscription_id": "sou_f6ac5791c1dd467dd238607f",
    "contrat_numero": "TEST-CVR-API-MW2EE3CW-0845CBC0B0"
  }
}

Erreur

toute réponse 4xx ou 5xx

ChampTypeToujours présentDescription
erreur.codetexteouiCode stable : appuyez votre code dessus (voir Codes d'erreur).
erreur.messagetexteouiExplication en français, peut évoluer.
erreur.documentationadressenonLien vers la description du code.
erreur.detailsliste de { champ, message }nonErreur de saisie : chaque champ fautif.
requete_idtexteouiRéférence de l'appel, à donner au support.
Exemple
{
  "erreur": {
    "code": "validation",
    "message": "Certaines données sont manquantes ou incorrectes. Voir erreur.details.",
    "documentation": "https://docs.coveraf.com/erreurs#validation",
    "details": [
      {
        "champ": "assures[0].date_naissance",
        "message": "Date invalide, format attendu AAAA-MM-JJ."
      },
      {
        "champ": "assures[0].sexe",
        "message": "Valeur inconnue « H ». Valeurs possibles : M, F."
      }
    ]
  },
  "requete_id": "req_909aa466a35b048c634bdc80"
}