Modèles d'état
Enregistrer une spécification sous un nom pour la réexécuter, la partager et la planifier.
À quoi sert un modèle
Un modèle est une spécification enregistrée : source, colonnes, filtres, période, tri, regroupements, options, formats autorisés, destinataires. Il sert à :
- réexécuter le même état sans renvoyer sa définition (
generateavecmodelId) ; - le partager avec les autres comptes de votre organisation (
visibility: SHARED) ; - le planifier pour un envoi automatique.
Un modèle est rattaché à la compagnie (et au courtier) du compte qui le crée : il n'est visible que
dans ce périmètre. Les modèles sans compagnie (créés par le Pool) en visibilité SHARED sont
visibles de tous.
Créer — POST /provider/reports/models
{
"name": "Quittancement du mois — WAFA",
"description": "Quittances émises du mois, triées par date",
"sourceCode": "RECEIPTS",
"columns": [
{ "fieldName": "receiptRef" }, { "fieldName": "subscriberName" },
{ "fieldName": "netPremium" }, { "fieldName": "totalTtc" },
{ "type": "CALCULATED", "name": "tauxTaxes", "label": "Taxes / prime nette (%)", "definition": "(totalTaxes / netPremium) * 100" }
],
"filters": [ { "fieldName": "paymentStatus", "operator": "EQUALS", "values": ["CONFIRMED"] } ],
"scope": { "basedOn": "issuedAt", "relativeRange": "CURRENT_MONTH" },
"sorting": { "fieldName": "issuedAt", "direction": "ASC" },
"options": { "includeTotals": true, "hideSensitiveData": true },
"allowedFormats": ["XLSX", "CSV"],
"visibility": "SHARED"
}| Champ | Obligatoire | Description |
|---|---|---|
name | oui | Nom, unique dans votre périmètre |
description | non | |
sourceCode ou definitionCode | l'un des deux | Base du modèle |
columns, filters, scope, sorting, grouping, options | non | La spécification (voir États personnalisés) |
scopeMode | non | GLOBAL (défaut) ou PER_COMPANY |
allowedFormats | non | Formats autorisés à la génération |
visibility | non | PRIVATE (défaut) ou SHARED |
recipientsTo, recipientsCc | non | Destinataires par défaut |
Réponse 201 : le ReportModel avec son id, createdDate, createdBy. Un nom déjà utilisé
renvoie 400 « Un modèle avec ce nom existe déjà ».
Dans un modèle, préférez une période relative (relativeRange) à des bornes fixes : le modèle
reste valable chaque mois et c'est ce qu'attend une planification.
Utiliser un modèle
// POST /provider/reports/generate
{ "modelId": "0d4f…", "format": "XLSX" }Vous pouvez surcharger ponctuellement la période ou le format en les passant à côté de modelId.
Lire, modifier, dupliquer, supprimer
| Opération | Endpoint | Notes |
|---|---|---|
| Lister | GET /provider/reports/models?page=0&size=20 | Pagination dans le corps (content, page, size, totalElements, totalPages) |
| Consulter | GET /provider/reports/models/{id} | |
| Modifier | PATCH /provider/reports/models/{id} | Corps = ReportModel partiel ; les champs fournis remplacent les existants |
| Dupliquer | POST /provider/reports/models/{id}/duplicate?name=Copie | 201, copie en PRIVATE |
| Supprimer | DELETE /provider/reports/models/{id} | 204 ; supprime aussi sa planification |
Objet ReportModel : tous les champs de création, plus id, companyId, brokerId,
createdDate, createdByUserId, createdBy, lastModifiedDate.