Coter et payer un avenant

La mécanique commune à tous les types — choisir le type et le motif, coter avec PATCH, payer, suivre.

Choisir le type — GET /provider/endorsement-types

curl -s "$API/provider/endorsement-types?size=100" -H "Authorization: Bearer $TOKEN"
ChampDescription
id→ endorsementId du corps de cotation
endorsementCodeCode du type (RENOUVELLEMENT, SUSPENSION, …)
endorsementLabel, descriptionLibellés
premiumImpactINCREASE, DECREASE, NEUTRAL, RECALCULATE
modifiableFieldsChamps attendus dans le corps de cotation pour ce type
selectedReasonsMotifs proposés, le cas échéant

Seuls les types actifs sont renvoyés. Filtres : label, code, page, size (défaut 100).

Choisir le motif (si le type en demande un)

EndpointUsage
GET /provider/reason-typesTypes de motifs : RESILIATION, SUSPENSION, CHANGEMENT_IMMATRICULATION, CHANGEMENT_ASSURE, MODIFICATION, DEMANDE_ANNULATION, ENDORSEMENT
GET /provider/reasons/type/{typeIdOrCode}Motifs d'un type, par id ou par code : …/type/RESILIATION
GET /provider/reasons?filter[typeId]=…Motifs paginés

Le label du motif est envoyé dans selectedReason (ou cancellationReason pour la demande d'annulation).

Coter — PATCH /provider/endorsements/{contractId}

Le corps contient toujours endorsementId (l'identifiant du type), plus les champs propres au type. Toute clé supplémentaire est transmise telle quelle au traitement du type ; les clés inconnues sont ignorées.

curl -s -X PATCH $API/provider/endorsements/1273be1c-9403-4bbf-a507-62b9bdbf6b30 \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{
    "endorsementId": "<id du type CHANGEMENT_IMMATRICULATION>",
    "vehicleId": "9e7258b6-2eb6-4969-b84c-cfa1343e0d71",
    "newRegistrationNumber": "2547 ZR 64",
    "selectedReason": "Changement de propriétaire"
  }'

Avant de coter, le serveur vérifie que le contrat est modifiable (pas de lien de paiement en attente) et que son statut autorise ce type (INVALID_CONTRACT_STATUS sinon, avec le libellé du statut et de l'avenant dans detail).

Cotation puis paiement d'un avenant

Réponse de la cotation

200 avec une enveloppe ActionResponse :

Famille du typedata
Gratuit immédiatLe contrat mis à jour
Gratuit différéLe contrat (l'avenant est programmé)
PayantUn EndorsementPaymentLink (endorsementId, premiumId, amount, paymentUrl, paymentReference, expiresAt, endorsement)
Ristourne (montant négatif)Un EndorsementPaymentLink sans URL : le remboursement est pris en charge par le Pool

id de l'enveloppe = identifiant de l'avenant créé.

Payer

EndpointUsage
POST /provider/endorsements/{endorsementId}/payment/initGénère ou régénère le lien de paiement d'un avenant QUOTE (sans corps). Réutilise un lien encore valide pour le même montant
POST /provider/endorsements/{endorsementId}/payment/resendRenvoie le lien par EMAIL, SMS, WHATSAPP
POST /provider/endorsements/{contractId}/payment/cancelAnnule les liens en attente du contrat ; les avenants redeviennent recotables

Un avenant dont la prime est nulle ne peut pas lancer de paiement (INVALID_STATE). Le détail du lien et du suivi est dans Paiement.

Suivre

EndpointContenu
GET /provider/endorsements/{endorsementId}{ endorsement, premium } avec la prime et ses composants
GET /provider/contracts/{contractId}/endorsementsAvenants d'un contrat
GET /provider/endorsements?filter[status]=QUOTETous les avenants visibles, filtrables (status, contract.id, reference, endorsementType.endorsementCode, premiumImpact…)
GET /provider/endorsements/{endorsementId}/paymentsRèglements
GET /provider/endorsements/{endorsementId}/documentsDocuments produits à l'émission

Objet ContractEndorsement

ChampDescription
id, contractId, endorsementTypeId, endorsementCodeIdentité
referenceAV-<TYPE>-<horodatage>
sequenceNumberN° d'ordre (0 = affaire nouvelle)
status, premiumImpact, premiumDelta, premiumIdStatut et incidence
payloadCorps de cotation enrichi par le serveur (valeurs précédentes, dates calculées…)
changes, vehicleChanges, vehiclesAdded, vehiclesRemovedDifférences appliquées
effectiveDate, coverageStart, coverageEndPériode de l'acte
reasonCode, reasonCommentMotif
paymentReference, paymentLinkPaiement
issuedAt, cancelledAt, createdDate, lastModifiedDateDates

Erreurs communes à tous les types

exceptionCause
INVALID_ENDORSEMENT_TYPEendorsementId inconnu ou type sans traitement disponible
INVALID_CONTRACT_STATUSLe statut du contrat n'autorise pas ce type
CONTRACT_NOT_MODIFIABLE, PROPOSAL_LOCKED_FOR_PAYMENTUn lien de paiement est en attente
INVALID_DURATION_CONFIGURATIONLe contrat n'a pas de durée exploitable
GENERIC_ERRORRègle propre au type, lisible dans detail

On this page