Changelog
Historique des modifications de MCM.ApiProxy.
[3.6.0-alpha.1] - 2026-06-09
Ajouté
IInstancesClient— Nouveau client en lecture seule pour le Module Instances (vote en séance). Permet aux systèmes de mission d'interroger les résultats de vote et les statistiques de participation après la fin d'une réunion.GetResultatsPoint(Guid instanceId, Guid pointId)— résultats d'un point précis (décompte par proposition et par option, pondéré).GetResultatsInstance(Guid instanceId)— résultats de tous les points votables d'une séance en un seul appel.GetInstanceStats(Guid instanceId)— statistiques agrégées de participation (inscriptions, présences, taux de présence, points votés).
B2BInstanceResultatsInstanceItem— DTO de convenance regroupant les résultats de tous les points votables d'une séance.B2BInstanceResultatsPointItem— DTO des résultats d'un point : décompte par proposition et par option, pondéré parPoids.B2BInstanceStatsItem— DTO des statistiques de participation d'une séance (inscriptions, présences, taux).B2BPropositionResultatsItem— DTO des résultats d'une proposition au sein d'un point.B2BOptionResultatsItem— DTO du décompte d'une option au sein d'une proposition.
[3.5.1] - 2026-05-26
Version de maintenance — aucun changement d'API publique côté SDK. Configuration de l'envoi de courriels pour l'environnement de démonstration FIQ. Aucune incidence sur les contrats.
[3.5.0] - 2026-05-21
Version de maintenance — aucun changement d'API publique côté SDK. Inclut l'extension des scénarios de test de charge (breakpoint poussé à 5000 req/s et 1 million de votant·e·s) ainsi que la documentation des résultats des tests de performance sur UAT. Aucune incidence sur les contrats.
[3.4.0] - 2026-05-21
Version stable consolidant les changements des versions 3.4.0-alpha.1 et 3.4.0-alpha.2. Aucun changement d'API publique depuis 3.4.0-alpha.2 ; les changements côté SDK sont rappelés ci-dessous pour référence.
Modifié — rupture sur ISignatureClient
ISignatureClient.GetImageSignatureParIdExterneretiré. La méthode introduite en3.2.0est remplacée par deux méthodes au rôle distinct :GetDerniereImageSignatureParIdExterne(string idExterne)— comportement identique à l'ancienne méthode (signature manuscrite de l'adhésion la plus récente d'un·e employé·e), mais retourne désormais le nouveau typeB2BEmployeDerniereImageSignatureItem. EndpointGET /b2b/employe/{idExterne}/derniere-image-signature.GetImageSignatureParAdhesionId(Guid adhesionId)— nouveau, retourne la signature d'une adhésion spécifique identifiée par sonIdUnique. RetourneB2BAdhesionImageSignatureItem. EndpointGET /b2b/adhesion/{adhesionId}/image-signature.
B2BAdhesionImageSignatureItem— propriétéIdExterneretirée. Le type est désormais utilisé uniquement pour la recherche paradhesionId, où l'identifiant externe de l'employé·e n'est pas pertinent. Pour conserver l'IdExternedans le résultat, utilisezB2BEmployeDerniereImageSignatureItemviaGetDerniereImageSignatureParIdExterne.
Ajouté
B2BEmployeDerniereImageSignatureItem— nouveau DTO de réponse pourGetDerniereImageSignatureParIdExterne. Mêmes champs que l'ancienB2BAdhesionImageSignatureItem(IdExterne,IdUniqueAdhesion,DateSignature,ImageSignature).
Migration
Remplacer :
var result = await _signatureClient.GetImageSignatureParIdExterne("EMP-001");
par :
var result = await _signatureClient.GetDerniereImageSignatureParIdExterne("EMP-001");
// result.Value est désormais de type B2BEmployeDerniereImageSignatureItem
// (mêmes champs que l'ancien B2BAdhesionImageSignatureItem)
Pour récupérer la signature d'une adhésion précise (par exemple à partir d'un IdUnique reçu via webhook) :
var result = await _signatureClient.GetImageSignatureParAdhesionId(adhesionId);
[3.4.0-alpha.2] - 2026-05-21
Modifié — rupture sur ISignatureClient
ISignatureClient.GetImageSignatureParIdExterneretiré. La méthode introduite en3.2.0est remplacée par deux méthodes au rôle distinct :GetDerniereImageSignatureParIdExterne(string idExterne)— comportement identique à l'ancienne méthode (signature manuscrite de l'adhésion la plus récente d'un·e employé·e), mais retourne désormais le nouveau typeB2BEmployeDerniereImageSignatureItem. EndpointGET /b2b/employe/{idExterne}/derniere-image-signature.GetImageSignatureParAdhesionId(Guid adhesionId)— nouveau, retourne la signature d'une adhésion spécifique identifiée par sonIdUnique. RetourneB2BAdhesionImageSignatureItem. EndpointGET /b2b/adhesion/{adhesionId}/image-signature.
B2BAdhesionImageSignatureItem— propriétéIdExterneretirée. Le type est désormais utilisé uniquement pour la recherche paradhesionId, où l'identifiant externe de l'employé·e n'est pas pertinent. Pour conserver l'IdExternedans le résultat, utilisezB2BEmployeDerniereImageSignatureItemviaGetDerniereImageSignatureParIdExterne.
Ajouté
B2BEmployeDerniereImageSignatureItem— nouveau DTO de réponse pourGetDerniereImageSignatureParIdExterne. Mêmes champs que l'ancienB2BAdhesionImageSignatureItem(IdExterne,IdUniqueAdhesion,DateSignature,ImageSignature).
Migration
Remplacer :
var result = await _signatureClient.GetImageSignatureParIdExterne("EMP-001");
par :
var result = await _signatureClient.GetDerniereImageSignatureParIdExterne("EMP-001");
// result.Value est désormais de type B2BEmployeDerniereImageSignatureItem
// (mêmes champs que l'ancien B2BAdhesionImageSignatureItem)
Pour récupérer la signature d'une adhésion précise (par exemple à partir d'un IdUnique reçu via webhook) :
var result = await _signatureClient.GetImageSignatureParAdhesionId(adhesionId);
[3.3.3] - 2026-05-20
Version de maintenance — aucun changement d'API publique côté SDK. Inclut des optimisations de performance des déploiements IIS dans le pipeline unifié (changements d'infrastructure de déploiement uniquement, sans incidence sur les contrats).
[3.3.2] - 2026-05-20
Version de maintenance — aucun changement d'API publique côté SDK. Inclut l'ajout de l'environnement de démonstration FiqTest et d'un mode de release Demo dans le pipeline unifié (changements d'infrastructure de déploiement uniquement, sans incidence sur les contrats).
[3.3.1] - 2026-05-15
Version de maintenance — aucun changement d'API publique côté SDK. Inclut des correctifs internes de l'API (codes d'erreur HTTP, journalisation, adresse IP réelle derrière le proxy IIS) et un correctif de l'application web (cycle d'imports qui empêchait l'exécution de 18 fichiers de test côté front).
[3.3.0] - 2026-05-14
Version de maintenance — aucun changement d'API publique côté SDK depuis 3.2.2. Les améliorations de cette version concernent la console d'administration (profils d'expéditeur multi-instances, aperçu des questions côté votant·e, précision en minutes du décompte de vote) et l'infrastructure interne (rafraîchissement proactif du jeton JWT pour SignalR). Aucune incidence sur les contrats B2B.
[3.2.2] - 2026-05-13
Version de maintenance — aucun changement d'API publique côté SDK. Inclut la restitution du vote préférentiel dans les exports Excel et PDF des résultats de campagne (changements purement internes, sans incidence sur les contrats).
[3.2.1] - 2026-05-12
Version de maintenance — aucun changement d'API publique côté SDK. Inclut des correctifs internes (vote préférentiel, conservation des candidats lors du retrait d'options, règles de vérification de campagne) et une amélioration du routage du pipeline de déploiement.
[3.2.0] - 2026-05-12
Version stable consolidant les fonctionnalités des versions alpha 3.2.0-alpha.1 à 3.2.0-alpha.10. Aucun changement d'API publique depuis 3.2.0-alpha.10 ; les ajouts depuis 3.1.3 côté SDK sont rappelés ci-dessous pour référence.
Ajouté
ISignatureClient.GetImageSignatureParIdExterne— Récupère l'image PNG (data URL) de la signature manuscrite de l'adhésion la plus récente d'un·e employé·e. RetourneB2BAdhesionImageSignatureItem. EndpointGET /b2b/adhesion/{idExterne}/image-signatureICampagnesClient.GetCampagneStats— Nouveau paramètre optionnelemployeurIdentifiantExterne(string?) pour restreindre les stats à un employeur (correspond àEmployeurs.IdentifiantExterne). Combiné en ET logique avecsyndicatIdExterne, limité auClientIdde l'appelantB2BDemandeAdhesionConciliationItem.ValeursChampUtilisateur— Les demandes d'adhésion exportées viaIConciliationClient.GetDemandesATransfererexposent désormais les valeurs des champs personnalisésB2BValeurChampUtilisateur(polymorphe) — Nouveau type abstrait pour la lecture V2. Quatre sous-types scellés :Texte,Date,Booleen,Choix(discriminateur JSONtype)B2BCreateQuestionDto.EstPreferentiel/B2BUpdateQuestionDto.EstPreferentiel— Active le mode vote préférentiel (ranked-choice). Pris en charge parChoixLibreetElection;Propositionnon pris en chargeB2BCreateQuestionDto.OrdreReponsesAleatoire/B2BUpdateQuestionDto.OrdreReponsesAleatoire— Politique d'ordre aléatoire (0= Hériter,1= Désactivé,2= Activé)B2BQuestionItem.EstPreferentiel— Indique si la question est en mode préférentiel
Modifié — rupture sur les surfaces V2
B2BAdhesionItemV2.ValeursChampUtilisateur(recherche d'adhésions V2 et webhookadhesion.signee) — Le type passe deICollection<B2BValeurChampUtilisateurItem>(multi-colonnes nullables) àICollection<B2BValeurChampUtilisateur>(polymorphe). Adapter le dispatch côté consommateur — voir le guide de migration V2- Choix — correction
IdExterneau lieu du libellé — Pour les champs de typeChoixretournés parSearchSignaturesV2et le webhookadhesion.signee, la valeur est désormais l'IdExternedu choix sélectionné (B2BValeurChampUtilisateurChoix.IdExterneChoix), conforme à la documentation. Si votre intégration matchait sur le libellé, basculez sur l'IdExterne
Corrigé
GET /b2b/v1/campagnes/{id}/stats— Les filtressyndicatIdExterneetemployeurIdentifiantExternes'appliquent désormais de façon cohérente à tous les compteurs retournés (participation et résultats par option)- Dapper — Correction du dépassement de la limite de paramètres SQL Server (2100) dans les requêtes paginées sur de gros jeux de données
- Documentation SDK — Correction de liens relatifs cassés
Inchangé (V1)
- Les surfaces V1 (
IEmployesClient,B2BAdhesionItemV1,B2BConsentementItemV1) continuent d'utiliserB2BValeurChampUtilisateurItem. Aucune rupture côté V1 - Sync V2 en écriture (
B2BUpsertEmployeDtoV2) continue d'utiliserB2BValeurChampUtilisateurDto(DTO platNomChamp+Valeur)
[3.2.0-alpha.10] - 2026-05-10
Corrigé
- Tests d'intégration B2B (suite) — Correction d'une collision sur l'index unique
(Courriel, CampagneId)introduite par l'ensemencement de votant·e ajouté enalpha.9: le helper utilise maintenant un préfixevpub_pour ne pas entrer en conflit avec les inserts SQL bruts des tests de stats. Aucun changement d'API publique
[3.2.0-alpha.9] - 2026-05-10
Corrigé
- Tests d'intégration B2B et API — Correction des tests
PublierCampagne_PublishesSuccessfully,DepublierCampagne_UnpublishesSuccessfully,Publish_CampagneWithQuestion_ReturnsSuccess,Archive_PublishedCampagne_ReturnsSuccesset plusieurs scénarios de stats : ajout de l'ensemencement d'un·e votant·e avant la publication pour respecter la nouvelle règle de prépublicationVote.AucunVotant. Aucun changement d'API publique
[3.2.0-alpha.8] - 2026-05-10
Ajouté
B2BDemandeAdhesionConciliationItem.ValeursChampUtilisateur— Les demandes d'adhésion exportées viaIConciliationClient.GetDemandesATransfererexposent désormais les valeurs de champs personnalisés saisies dans le formulaire d'adhésion. Le système de mission peut lire ces données directement pour créer le membre — plus besoin d'un appel séparé après la confirmationB2BValeurChampUtilisateur(polymorphe) — Nouveau type abstrait pour la lecture V2 des valeurs de champs personnalisés. Quatre sous-types scellés :B2BValeurChampUtilisateurTexte(Valeur: string),B2BValeurChampUtilisateurDate(Valeur: DateTime),B2BValeurChampUtilisateurBooleen(Valeur: bool),B2BValeurChampUtilisateurChoix(IdExterneChoix: string). Sérialisation JSON polymorphe avec discriminateurtype("texte","date","booleen","choix")
Modifié — rupture sur les surfaces V2
B2BAdhesionItemV2.ValeursChampUtilisateur(recherche d'adhésions V2 et webhookadhesion.signee) — Le type passe deICollection<B2BValeurChampUtilisateurItem>(multi-colonnes nullables) àICollection<B2BValeurChampUtilisateur>(polymorphe). Adapter le dispatch côté consommateur — voir le guide de migration V2- Choix — correction
IdExterneau lieu du libellé — Pour les champs de typeChoixretournés parSearchSignaturesV2et le webhookadhesion.signee, la valeur est désormais l'IdExternedu choix sélectionné (B2BValeurChampUtilisateurChoix.IdExterneChoix), conforme à la documentation. Auparavant, la requête SQL retournait par erreur le libellé du choix. Si votre intégration matchait sur le libellé, basculez sur l'IdExterne
Inchangé (V1)
B2BUpdateEmployeDto.ValeursChampUtilisateur(lecture/écriture V1 surIEmployesClient),B2BAdhesionItemV1,B2BConsentementItemV1 — continuent d'utiliserB2BValeurChampUtilisateurItem. Pas de rupture côté V1- Sync V2 (écriture via
B2BUpsertEmployeDtoV2) — continue d'utiliser le DTO platB2BValeurChampUtilisateurDto(NomChamp+Valeurstring)
[3.2.0-alpha.6] - 2026-05-05
Ajouté
ISignatureClient.GetImageSignatureParIdExterne— Nouvelle méthode pour récupérer l'image de la signature manuscrite de l'adhésion la plus récente d'un·e employé·e. Retourne unB2BAdhesionImageSignatureItem(identifiant externe, GUID de l'adhésion, date de signature UTC, image au format URL de donnéesdata:image/png;base64,...). Seules les adhésions ayant une signature manuscrite capturée sont prises en compte. ErreurEmploye.NotFoundsi l'identifiant externe est inconnu ; erreurSignature.NotFoundsi aucune adhésion signée manuellement n'existe pour cet·te employé·e. L'endpoint est limité au locataire de la clé API — il est impossible de consulter les données d'un autre locataireB2BAdhesionImageSignatureItem— Nouveau type retourné parGetImageSignatureParIdExterne(IdExterne,IdUniqueAdhesion,DateSignature,ImageSignature)- Endpoint
GET /b2b/adhesion/{idExterne}/image-signature— Endpoint B2B correspondant, documenté dans la référence des adhésions
[3.2.0-alpha.5] - 2026-05-05
Ajouté
ICampagnesClient.GetCampagneStats— Nouveau paramètre optionnelemployeurIdentifiantExterne(string?) pour restreindre les statistiques à un employeur spécifique (correspond àEmployeurs.IdentifiantExterne). Les deux filtressyndicatIdExterneetemployeurIdentifiantExternesont combinés par ET logique (AND) et sont limités auClientIdde l'appelant — il est impossible de sonder les identifiants d'un autre locataire. Un identifiant inconnu retourne des stats à zéro (pas d'erreur 404)
Corrigé
GET /b2b/v1/campagnes/{id}/stats— Les filtressyndicatIdExterneetemployeurIdentifiantExternes'appliquent désormais de façon cohérente à tous les compteurs retournés : totaux de participation (TotalVotants,TotalVotantsAvecDroitDeVote,VotantsAyantVote) et résultats par option (Questions[].Options[].Votes,PoidsTotal,Pourcentage). Auparavant, les filtres restreignaient les totaux de participation mais étaient ignorés silencieusement pour les décomptes par option, produisant des résultats incohérents
[3.2.0-alpha.4] - 2026-04-28
Corrigé
- Build CI — Mise à jour du constructeur de
GetDemandeAdhesionATraiterIndexQueryHandlerdans les tests d'intégration (suite à la migration EF du handler) qui faisait échouer la compilation Release sur le pipeline
[3.2.0-alpha.3] - 2026-04-28
Ajouté
B2BCreateQuestionDto.EstPreferentieletB2BUpdateQuestionDto.EstPreferentiel— Active le mode vote préférentiel (ranked-choice). En préférentiel,MinReponses/MaxReponsesdéfinissent le nombre min/max de rangs. Seuls les typesChoixLibreetElectionprennent en charge ce mode ;Propositionne le prend pas en chargeB2BCreateQuestionDto.OrdreReponsesAleatoireetB2BUpdateQuestionDto.OrdreReponsesAleatoire— Politique d'ordre aléatoire des options :0= Hériter (par défaut, utilise le réglage de la campagne),1= Désactivé (ordre fixe),2= Activé (ordre aléatoire forcé)B2BQuestionItem.EstPreferentiel— Indique si la question est en mode préférentiel
[3.2.0-alpha.2] - 2026-04-28
Pré-release alpha consolidant les améliorations de la branche feature/green (correction de la limite de paramètres SQL dans Dapper, etc.).
[3.2.0-alpha.1] - 2026-04-28
Première pré-release alpha de la série 3.2.0 (snapshot de feature/green).
[3.1.3] - 2026-04-27
Version stable consolidant les fonctionnalités des versions alpha 3.1.3-alpha.1 à 3.1.3-alpha.4.
Ajouté
- ISignatureClient.SearchSignaturesV2 — Méthode de recherche d'adhésions V2 avec filtres optionnels combinés par ET logique (AND) :
Apres,Avant,IdExterneSyndicat,IdExterneEmploye,NoMembre,ASignatureManuscripte,AvecPaiement. Utilise l'endpoint V2GET b2b/v2/adhesionavec les filtres en paramètres de requête - B2BAdhesionSearchRequestV2 — DTO de critères de recherche pour
SearchSignaturesV2(tous les filtres optionnels) - Documentation SDK — Guides complets ajoutés ou enrichis :
sandbox,conciliation,courriel,custom-fields,employee-sync,idempotency,master-data,rate-limits,search-and-filtering,voting-workflow,troubleshooting,v1-vs-v2. Documentation B2B harmonisée (commentaires XML sur tous les DTO, écriture inclusive, glossaire formalisé, lint anti-anglicismes intégré au pipeline CI)
Modifié
GET b2b/v2/adhesion— Le paramètre de requêteIdExterne(V1) a été renomméIdExterneEmploye. Les consommateurs du SDK MCM.ApiProxy ne sont pas affectés (les méthodesGetSignaturesV2DepuisetGetSignaturesV2ParIdExternecontinuent de fonctionner). Les intégrations HTTP directes qui passaient?IdExterne=...sur l'endpoint V2 doivent migrer vers?IdExterneEmploye=...
Corrigé
- Pipeline CI — Mise à niveau des packages OpenTelemetry vers 1.15.3 pour corriger trois vulnérabilités modérées (
GHSA-g94r-2vxg-569j,GHSA-q834-8qmm-v933,GHSA-mr8r-92fq-pj8p) - API — Exécution séquentielle des requêtes Dapper dans les handlers de statistiques de campagne (
GetCampagneStats,GetCampagneStatsBySegment,ExportCampagneResultsExcel,ExportCampagneResultsPdf) pour éviter des erreurs 500 intermittentes liées à MARS sous charge CI - Webhook
adhesion.signee— Déclenchement fiable via événement de domaine reporté à la fin de la transaction parente - Documentation SDK — Correction des ancres cassées et de ~180 anglicismes/typos (URLs
macartedemembre.com, accord, articles)
[3.1.3-alpha.4] - 2026-04-24
Corrigé
- Pipeline CI — Mise à niveau des packages OpenTelemetry vers 1.15.3 pour corriger trois vulnérabilités modérées (
GHSA-g94r-2vxg-569j,GHSA-q834-8qmm-v933,GHSA-mr8r-92fq-pj8p) qui bloquaient la restaurationTreatWarningsAsErrors - API — Exécution séquentielle des requêtes Dapper dans les handlers de statistiques de campagne (
GetCampagneStats,GetCampagneStatsBySegment,ExportCampagneResultsExcel,ExportCampagneResultsPdf) pour éviter des erreurs 500 intermittentes liées à MARS sous charge CI
[3.1.3-alpha.3] - 2026-04-24
Ajouté
- ISignatureClient.SearchSignaturesV2 — Nouvelle méthode de recherche d'adhésions V2 avec filtres optionnels combinés par ET logique (AND) :
Apres,Avant,IdExterneSyndicat,IdExterneEmploye,NoMembre,ASignatureManuscripte,AvecPaiement. Utilise l'endpoint V2GET b2b/v2/adhesionavec les filtres en paramètres de requête - B2BAdhesionSearchRequestV2 — DTO de critères de recherche pour
SearchSignaturesV2(tous les filtres optionnels)
Modifié
GET b2b/v2/adhesion— Le paramètre de requêteIdExterne(V1) a été renomméIdExterneEmploye. Les consommateurs du SDK MCM.ApiProxy ne sont pas affectés (les méthodesGetSignaturesV2DepuisetGetSignaturesV2ParIdExternecontinuent de fonctionner). Les intégrations HTTP directes qui passaient?IdExterne=...sur l'endpoint V2 doivent migrer vers?IdExterneEmploye=...
[3.1.0] - 2026-04-16
Version stable consolidant les fonctionnalités des versions alpha 3.1.0-alpha.1 à 3.1.0-alpha.3.
Ajouté
- IConciliationClient — Nouveau client pour la conciliation des demandes d'adhésion par un système de mission externe
GetDemandesATransferer()— Liste des demandes en statutATransfererConfirmer(idUnique, data?)— Confirme qu'une demande a été traitée et retourne l'IdExternedu nouvelEmployeRejeter(idUnique)— Rejette une demande sans créer de membre
- IEmploisClient.SearchEmplois — Recherche d'emplois avec filtres optionnels (syndicat, employeur, employé, matricule, statut actif) via l'endpoint V2
b2b/v2/emploi - ISignatureClient.DeleteAdhesionByIdUnique — Suppression d'une adhésion par son identifiant unique (GUID) via l'endpoint V2
- ISignatureClient.DeleteAdhesionsByMembre — Suppression de toutes les adhésions d'un membre, avec filtre optionnel par syndicat
- B2BDemandeAdhesionConciliationItem — DTO décrivant une demande d'adhésion en attente de traitement externe
- B2BConfirmerDemandeAdhesionDto — DTO optionnel pour écraser les valeurs de la demande lors de la confirmation
- B2BEmploiSearchRequest — DTO de critères de recherche pour
SearchEmplois(tous les filtres optionnels) - WebhookEventTypes.AdhesionSignee (
adhesion.signee) — Nouvel événement webhook déclenché à la signature d'une adhésion. Payload :B2BAdhesionItemV2
Modifié
- B2BListeElectoraleItem — Nouvelle propriété optionnelle
Commentaire(string?) pour annoter un membre de la liste électorale
[3.1.0-alpha.3] - 2026-04-16
Ajouté
- IConciliationClient — Nouveau client pour la conciliation des demandes d'adhésion par un système de mission externe
GetDemandesATransferer()— Liste des demandes en statutATransfererConfirmer(idUnique, data?)— Confirme qu'une demande a été traitée et retourne l'IdExternedu nouvelEmployeRejeter(idUnique)— Rejette une demande sans créer de membre
- B2BDemandeAdhesionConciliationItem — DTO décrivant une demande d'adhésion en attente de traitement externe
- B2BConfirmerDemandeAdhesionDto — DTO optionnel pour écraser les valeurs de la demande lors de la confirmation
- WebhookEventTypes.AdhesionSignee (
adhesion.signee) — Nouvel événement webhook déclenché à la signature d'une adhésion. Payload :B2BAdhesionItemV2
[3.1.0-alpha.2] - 2026-04-15
Aucune modification au SDK (ApiProxy / B2B.Contracts). Cette release concerne la refactorisation interne de la configuration des formulaires en sections indépendantes.
[3.1.0-alpha.1] - 2026-04-14
Ajouté
- IEmploisClient.SearchEmplois — Nouvelle méthode de recherche d'emplois avec filtres optionnels (syndicat, employeur, employé, matricule, statut actif) via l'endpoint V2
b2b/v2/emploi - ISignatureClient.DeleteAdhesionByIdUnique — Suppression d'une adhésion par son identifiant unique (GUID) via l'endpoint V2
- ISignatureClient.DeleteAdhesionsByMembre — Suppression de toutes les adhésions d'un membre, avec filtre optionnel par syndicat
- B2BEmploiSearchRequest — Nouveau DTO de critères de recherche pour
SearchEmplois(tous les filtres sont optionnels)
Modifié
- B2BListeElectoraleItem — Nouvelle propriété optionnelle
Commentaire(string?) pour annoter un membre de la liste électorale
[3.0.2] - 2026-04-13
Aucune modification au SDK (ApiProxy / B2B.Contracts). Cette release corrige le flash d'erreur sur la page de vote et les namespaces i18n des validations utilisateur.
[3.0.1] - 2026-04-12
Aucune modification au SDK (ApiProxy / B2B.Contracts). Cette release ajoute les modèles de courriels système, le support multi-domaine en production, et inclut une revue de code complète avec 31 correctifs.
[3.0.0] - 2026-04-10
Version majeure. Aucune modification au SDK (ApiProxy / B2B.Contracts) depuis 2.19.10. Cette release regroupe des corrections backend et frontend diverses (voir les notes de version pour les détails).
[2.19.0] - 2026-04-01
Version stable consolidant toutes les fonctionnalités des versions alpha 2.19.0-alpha.15 à 2.19.0-alpha.68.
Ajouté
- IListeElectoraleClient — Nouveau client pour la gestion de la liste électorale (consultation, droits de vote, envoi de jetons)
- Webhooks sortants — Système de webhooks pour notifier les applications externes (création de liste électorale, etc.)
- ICourrielClient.EnvoyerDerniereCarteMembrePourEmploi — Envoi de carte de membre ciblant un emploi spécifique
- ICourrielClient.EnvoyerFormulairePourEmploi — Envoi de formulaire ciblant un emploi spécifique
- IVotantsClient.MettreAJourDroitsDeVote — Mise à jour en lot des droits de vote
- B2BAdhesionDtoV2 / B2BAdhesionItemV2 — DTOs d'adhésion V2 avec snapshot des coordonnées
- B2BUpdateSyndicatDtoV2 — Mise à jour syndicat V2
- ISignatureClient.GetSignatureInfo — Obtention des informations de signature
- B2BVotantItem.Commentaire — Annotation libre des votants
- B2BCampagneStatsItem.ResultatsVisibles — Indicateur de visibilité des résultats
- B2BCampagneStatsItem.TotalVotantsAvecDroitDeVote — Distinction votants inscrits vs avec droit de vote
Modifié (breaking changes)
- IVotantsClient — Toutes les méthodes utilisent
Guid votantIdau lieu destring identifiant - IListeElectoraleClient — Méthodes
EnvoyerJetonetMettreAJourDroitDeVoteutilisentGuid votantId - B2BUpsertVotantDto —
Identifiantdevient optionnel, nouveau champVotantId: Guid? - B2BMettreAJourDroitsDeVoteDto —
Identifiantsremplacé parVotantIds: ICollection<Guid> - ApiProxy SDK — Suppression de
ApiKeyHandler,ConfigApiKeyProvider,IApiKeyProvider(simplification de l'authentification) - ISyncClient.Sync — Accepte 4 paramètres incluant les syndicats V2
Migration
Voir le Guide de migration V2 et les entrées alpha ci-dessous pour les détails de migration.
[2.19.0-alpha.32] - 2026-03-15
Ajouté
- B2BCampagneStatsItem — Nouvelle propriété
ResultatsVisibles(bool) indiquant si les résultats détaillés par option sont visibles.falselorsque le vote est actif et que le feature flagAfficherResultatsVoteActifest désactivé.
[2.19.0-alpha.28] - 2026-03-13
Modifié (breaking changes)
- IVotantsClient.GetVotantByIdentifiant renommé en GetVotantById — le paramètre
string identifiantdevientGuid votantId - IVotantsClient.DeleteVotant — le paramètre
string identifiantdevientGuid votantId - IVotantsClient.RadierVotant — le paramètre
string identifiantdevientGuid votantId - IVotantsClient.MettreAJourDroitsDeVote — utilise désormais
B2BMettreAJourDroitsDeVoteDto.VotantIds(ICollection<Guid>) au lieu deIdentifiants(ICollection<string>) - IListeElectoraleClient.EnvoyerJeton — le paramètre
string identifiantdevientGuid votantId - IListeElectoraleClient.MettreAJourDroitDeVote — le paramètre
string identifiantdevientGuid votantId - B2BUpsertVotantDto —
Identifiantn'est plusrequired(devientstring?, simple métadonnée). Nouveau champVotantId: Guid?: null pour créer, fourni pour mettre à jour - B2BMettreAJourDroitsDeVoteDto —
Identifiants: ICollection<string>remplacé parVotantIds: ICollection<Guid> - B2BMettreAJourDroitsDeVoteResult —
IdentifiantsNonTrouves: ICollection<string>remplacé parVotantIdsNonTrouves: ICollection<Guid> - Routes — tous les segments
{identifiant}dans les routes votants deviennent{votantId:guid}
Migration
Remplacer les usages de string identifiant par le Guid retourné par UpsertVotant. Pour B2BUpsertVotantDto, supprimer Identifiant = "..." comme clé de correspondance et utiliser VotantId pour les mises à jour.
[2.19.0-alpha.27] - 2026-03-13
Ajouté
- B2BVotantItem - Nouvelle propriété
Commentairepour annoter librement un votant - B2BUpsertVotantDto - Nouvelle propriété optionnelle
Commentairepour définir un commentaire lors de la création ou mise à jour d'un votant - B2BMettreAJourDroitDeVoteDto - Nouvelle propriété optionnelle
Commentairepour enregistrer un motif lors de la mise à jour individuelle du droit de vote - B2BMettreAJourDroitsDeVoteDto - Nouvelle propriété optionnelle
Commentairepour enregistrer un motif commun lors de la mise à jour en lot des droits de vote
[2.19.0-alpha.24] - 2026-03-12
Ajouté
- IListeElectoraleClient - Nouveau client pour la gestion de la liste électorale (consultation, droits de vote, envoi de jetons)
- B2BListeElectoraleItem / B2BListeElectoraleSearchRequest - Types pour la liste électorale avec filtre par
SyndicatIdExterne - B2BMettreAJourDroitDeVoteDto - DTO pour la mise à jour individuelle du droit de vote avec option d'envoi de jeton
- B2BVotantItem - Nouvelles propriétés
EmployeIdExterneetSyndicatIdExternepour identifier les liens employé/syndicat - B2BListeElectoraleItem - Nouvelles propriétés
EmployeIdExterneetSyndicatIdExterne(même logique que B2BVotantItem) - B2BCampagneStatsItem - Nouvelle propriété
TotalVotantsAvecDroitDeVotepour distinguer votants inscrits et votants avec droit de vote
Modifié
- ICampagnesClient.GetCampagneStats - Nouveau paramètre optionnel
syndicatIdExternepour filtrer les compteurs de votants par syndicat
[2.19.0-alpha.22] - 2026-03-04
Ajouté
- Webhooks sortants - Nouveau système de webhooks pour notifier les applications externes lors d'événements MCM
- IVotantsClient - Nouvelle méthode
MettreAJourDroitsDeVotepour la mise à jour en lot des droits de vote - B2BMettreAJourDroitsDeVoteDto / B2BMettreAJourDroitsDeVoteResult - DTOs pour la mise à jour en lot
- B2BWebhookPayload / B2BListeElectoraleCreeData - DTOs pour les événements webhook
- IMcmWebhookHandler - Interface pour recevoir et traiter les webhooks MCM
- WebhookSignatureValidator - Validation HMAC-SHA256 des signatures webhook
- McmWebhookMiddleware - Middleware ASP.NET Core pour la réception des webhooks
Modifié
- IConsentementClient - Mise à jour de la méthode de recherche des consentements
[2.19.0-alpha.21] - 2026-02-18
Ajouté
- ICourrielClient - Nouvelle méthode
EnvoyerDerniereCarteMembrePourEmploipour envoyer la carte de membre en ciblant un emploi spécifique - ICourrielClient - Nouvelle méthode
EnvoyerFormulairePourEmploipour envoyer un formulaire en ciblant un emploi spécifique - B2BEnvoyerDerniereCarteMembrePourEmploiRequest - Requête avec
IdExterneEmploietCourriel - B2BEnvoyerFormulairePourEmploiRequest - Requête avec
IdExterneEmploi,CourrieletIdFormulaire
[2.19.0-alpha.16] - 2026-02-11
Corrigé
- B2BAdhesionSearchQueryV2 - Correction du nom de colonne
Libelle→Labeldans la requête Dapper des champs personnalisés - Tests d'intégration - Ajout de tests pour B2BAdhesionSearchQueryV2 et correction de l'isolation des tests AdhesionDetail
[2.19.0-alpha.15] - 2026-02-11
Ajouté
- B2BAdhesionDtoV2 - DTO d'adhésion V2 avec snapshot des coordonnées
- B2BAdhesionItemV2 - Item de recherche d'adhésion V2
- B2BUpdateSyndicatDtoV2 - Mise à jour syndicat V2
- ISignatureClient - Nouvelle méthode
GetSignatureInfo - Endpoint
GET /api/b2b/v2/adhesionspour recherche d'adhésions V2
Modifié
- ApiProxy - Refactorisation du SDK : suppression de
ApiKeyHandler,ConfigApiKeyProvider,IApiKeyProvider - BaseClient - Simplification de l'authentification
- ISyncClient - Support du syndicat V2 dans la synchronisation
[2.19.0] - 2026-02-02
Ajouté
- B2B API V2 - Nouveau modèle multi-employeurs :
B2BUpsertEmployeDtoV2- Employé avec collection d'emploisB2BEmploiDtoV2- Relation employé-employeur avec matricule et datesB2BUpdateEmployeurDtoV2- Mise à jour employeur V2B2BSyncEmployesResultV2- Résultat de synchronisation V2
- Endpoint
POST /api/b2b/v2/employes/upsertpour gestion multi-employeurs - Endpoint
POST /api/b2b/v2/syncavec support des emplois
Modifié
ISyncClient.Sync()accepte maintenant 4 paramètres : syndicats, employeurs, employés V2, objets de consentement
Migration V1 → V2
Voir le Guide de migration V2 pour les détails.
Changements majeurs :
EmployeurIdExterneetMatriculeretirés deB2BUpsertEmployeDto- Utiliser
Emplois[]avecB2BEmploiDtoV2pour les relations employeur
[2.15.0] - 2026-01-08
Ajouté
- Module Votez - Nouveaux clients pour la gestion des campagnes de vote :
ICampagnesClient- Gestion des campagnes (création, publication, statistiques)IQuestionsClient- Gestion des questions et options de réponseIVotantsClient- Gestion des votants (import, radiation, suivi du vote)
- Documentation complète du module Votez avec types et exemples
- Restriction des endpoints B2B par module activé (
RequireModule)
[2.14.0] - 2026-01-08
Ajouté
- Documentation SDK avec Docusaurus
- Intégration de MaCarteDeMembreProxy dans la solution MCM
- Tests d'intégration B2B avec Testcontainers
[1.0.0] - 2024-01-01
Ajouté
- Version initiale de MCM.ApiProxy
- Clients pour toutes les ressources B2B :
IEmployesClient- Gestion des employésIEmployeursClient- Gestion des employeursIFormulaireClient- Récupération des formulairesIConsentementClient- Historique des consentementsIObjetsConsentementClient- Objets de consentementIChampUtilisateurClient- Champs personnalisésICourrielClient- Envoi de courrielsISyncClient- Synchronisation en lot
- Pattern ErrorOr pour la gestion d'erreurs
- Injection automatique des clients via
AddMcmApiClient() - Support de l'authentification par clé API
Format
Ce changelog suit le format Keep a Changelog et ce projet adhère au Semantic Versioning.
Types de changements
- Ajouté pour les nouvelles fonctionnalités
- Modifié pour les changements dans les fonctionnalités existantes
- Déprécié pour les fonctionnalités qui seront supprimées
- Retiré pour les fonctionnalités supprimées
- Corrigé pour les corrections de bugs
- Sécurité pour les vulnérabilités corrigées