Aller au contenu principal

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é par Poids.
  • 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.GetImageSignatureParIdExterne retiré. La méthode introduite en 3.2.0 est 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 type B2BEmployeDerniereImageSignatureItem. Endpoint GET /b2b/employe/{idExterne}/derniere-image-signature.
    • GetImageSignatureParAdhesionId(Guid adhesionId) — nouveau, retourne la signature d'une adhésion spécifique identifiée par son IdUnique. Retourne B2BAdhesionImageSignatureItem. Endpoint GET /b2b/adhesion/{adhesionId}/image-signature.
  • B2BAdhesionImageSignatureItem — propriété IdExterne retirée. Le type est désormais utilisé uniquement pour la recherche par adhesionId, où l'identifiant externe de l'employé·e n'est pas pertinent. Pour conserver l'IdExterne dans le résultat, utilisez B2BEmployeDerniereImageSignatureItem via GetDerniereImageSignatureParIdExterne.

Ajouté

  • B2BEmployeDerniereImageSignatureItem — nouveau DTO de réponse pour GetDerniereImageSignatureParIdExterne. Mêmes champs que l'ancien B2BAdhesionImageSignatureItem (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.GetImageSignatureParIdExterne retiré. La méthode introduite en 3.2.0 est 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 type B2BEmployeDerniereImageSignatureItem. Endpoint GET /b2b/employe/{idExterne}/derniere-image-signature.
    • GetImageSignatureParAdhesionId(Guid adhesionId) — nouveau, retourne la signature d'une adhésion spécifique identifiée par son IdUnique. Retourne B2BAdhesionImageSignatureItem. Endpoint GET /b2b/adhesion/{adhesionId}/image-signature.
  • B2BAdhesionImageSignatureItem — propriété IdExterne retirée. Le type est désormais utilisé uniquement pour la recherche par adhesionId, où l'identifiant externe de l'employé·e n'est pas pertinent. Pour conserver l'IdExterne dans le résultat, utilisez B2BEmployeDerniereImageSignatureItem via GetDerniereImageSignatureParIdExterne.

Ajouté

  • B2BEmployeDerniereImageSignatureItem — nouveau DTO de réponse pour GetDerniereImageSignatureParIdExterne. Mêmes champs que l'ancien B2BAdhesionImageSignatureItem (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. Retourne B2BAdhesionImageSignatureItem. Endpoint GET /b2b/adhesion/{idExterne}/image-signature
  • ICampagnesClient.GetCampagneStats — Nouveau paramètre optionnel employeurIdentifiantExterne (string?) pour restreindre les stats à un employeur (correspond à Employeurs.IdentifiantExterne). Combiné en ET logique avec syndicatIdExterne, limité au ClientId de l'appelant
  • B2BDemandeAdhesionConciliationItem.ValeursChampUtilisateur — Les demandes d'adhésion exportées via IConciliationClient.GetDemandesATransferer exposent désormais les valeurs des champs personnalisés
  • B2BValeurChampUtilisateur (polymorphe) — Nouveau type abstrait pour la lecture V2. Quatre sous-types scellés : Texte, Date, Booleen, Choix (discriminateur JSON type)
  • B2BCreateQuestionDto.EstPreferentiel / B2BUpdateQuestionDto.EstPreferentiel — Active le mode vote préférentiel (ranked-choice). Pris en charge par ChoixLibre et Election ; Proposition non pris en charge
  • B2BCreateQuestionDto.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 webhook adhesion.signee) — Le type passe de ICollection<B2BValeurChampUtilisateurItem> (multi-colonnes nullables) à ICollection<B2BValeurChampUtilisateur> (polymorphe). Adapter le dispatch côté consommateur — voir le guide de migration V2
  • Choix — correction IdExterne au lieu du libellé — Pour les champs de type Choix retournés par SearchSignaturesV2 et le webhook adhesion.signee, la valeur est désormais l'IdExterne du 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 filtres syndicatIdExterne et employeurIdentifiantExterne s'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, B2BAdhesionItem V1, B2BConsentementItem V1) continuent d'utiliser B2BValeurChampUtilisateurItem. Aucune rupture côté V1
  • Sync V2 en écriture (B2BUpsertEmployeDtoV2) continue d'utiliser B2BValeurChampUtilisateurDto (DTO plat NomChamp + 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é en alpha.9 : le helper utilise maintenant un préfixe vpub_ 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_ReturnsSuccess et 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épublication Vote.AucunVotant. Aucun changement d'API publique

[3.2.0-alpha.8] - 2026-05-10

Ajouté

  • B2BDemandeAdhesionConciliationItem.ValeursChampUtilisateur — Les demandes d'adhésion exportées via IConciliationClient.GetDemandesATransferer exposent 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 confirmation
  • B2BValeurChampUtilisateur (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 discriminateur type ("texte", "date", "booleen", "choix")

Modifié — rupture sur les surfaces V2

  • B2BAdhesionItemV2.ValeursChampUtilisateur (recherche d'adhésions V2 et webhook adhesion.signee) — Le type passe de ICollection<B2BValeurChampUtilisateurItem> (multi-colonnes nullables) à ICollection<B2BValeurChampUtilisateur> (polymorphe). Adapter le dispatch côté consommateur — voir le guide de migration V2
  • Choix — correction IdExterne au lieu du libellé — Pour les champs de type Choix retournés par SearchSignaturesV2 et le webhook adhesion.signee, la valeur est désormais l'IdExterne du 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 sur IEmployesClient), B2BAdhesionItem V1, B2BConsentementItem V1 — continuent d'utiliser B2BValeurChampUtilisateurItem. Pas de rupture côté V1
  • Sync V2 (écriture via B2BUpsertEmployeDtoV2) — continue d'utiliser le DTO plat B2BValeurChampUtilisateurDto (NomChamp + Valeur string)

[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 un B2BAdhesionImageSignatureItem (identifiant externe, GUID de l'adhésion, date de signature UTC, image au format URL de données data:image/png;base64,...). Seules les adhésions ayant une signature manuscrite capturée sont prises en compte. Erreur Employe.NotFound si l'identifiant externe est inconnu ; erreur Signature.NotFound si 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 locataire
  • B2BAdhesionImageSignatureItem — Nouveau type retourné par GetImageSignatureParIdExterne (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 optionnel employeurIdentifiantExterne (string?) pour restreindre les statistiques à un employeur spécifique (correspond à Employeurs.IdentifiantExterne). Les deux filtres syndicatIdExterne et employeurIdentifiantExterne sont combinés par ET logique (AND) et sont limités au ClientId de 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 filtres syndicatIdExterne et employeurIdentifiantExterne s'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 GetDemandeAdhesionATraiterIndexQueryHandler dans 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.EstPreferentiel et B2BUpdateQuestionDto.EstPreferentiel — Active le mode vote préférentiel (ranked-choice). En préférentiel, MinReponses/MaxReponses définissent le nombre min/max de rangs. Seuls les types ChoixLibre et Election prennent en charge ce mode ; Proposition ne le prend pas en charge
  • B2BCreateQuestionDto.OrdreReponsesAleatoire et B2BUpdateQuestionDto.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 V2 GET b2b/v2/adhesion avec 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ête IdExterne (V1) a été renommé IdExterneEmploye. Les consommateurs du SDK MCM.ApiProxy ne sont pas affectés (les méthodes GetSignaturesV2Depuis et GetSignaturesV2ParIdExterne continuent 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 restauration TreatWarningsAsErrors
  • 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 V2 GET b2b/v2/adhesion avec 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ête IdExterne (V1) a été renommé IdExterneEmploye. Les consommateurs du SDK MCM.ApiProxy ne sont pas affectés (les méthodes GetSignaturesV2Depuis et GetSignaturesV2ParIdExterne continuent 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 statut ATransferer
    • Confirmer(idUnique, data?) — Confirme qu'une demande a été traitée et retourne l'IdExterne du nouvel Employe
    • Rejeter(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 statut ATransferer
    • Confirmer(idUnique, data?) — Confirme qu'une demande a été traitée et retourne l'IdExterne du nouvel Employe
    • Rejeter(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 votantId au lieu de string identifiant
  • IListeElectoraleClient — Méthodes EnvoyerJeton et MettreAJourDroitDeVote utilisent Guid votantId
  • B2BUpsertVotantDtoIdentifiant devient optionnel, nouveau champ VotantId: Guid?
  • B2BMettreAJourDroitsDeVoteDtoIdentifiants remplacé par VotantIds: 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. false lorsque le vote est actif et que le feature flag AfficherResultatsVoteActif est désactivé.

[2.19.0-alpha.28] - 2026-03-13

Modifié (breaking changes)

  • IVotantsClient.GetVotantByIdentifiant renommé en GetVotantById — le paramètre string identifiant devient Guid votantId
  • IVotantsClient.DeleteVotant — le paramètre string identifiant devient Guid votantId
  • IVotantsClient.RadierVotant — le paramètre string identifiant devient Guid votantId
  • IVotantsClient.MettreAJourDroitsDeVote — utilise désormais B2BMettreAJourDroitsDeVoteDto.VotantIds (ICollection<Guid>) au lieu de Identifiants (ICollection<string>)
  • IListeElectoraleClient.EnvoyerJeton — le paramètre string identifiant devient Guid votantId
  • IListeElectoraleClient.MettreAJourDroitDeVote — le paramètre string identifiant devient Guid votantId
  • B2BUpsertVotantDtoIdentifiant n'est plus required (devient string?, simple métadonnée). Nouveau champ VotantId: Guid? : null pour créer, fourni pour mettre à jour
  • B2BMettreAJourDroitsDeVoteDtoIdentifiants: ICollection<string> remplacé par VotantIds: ICollection<Guid>
  • B2BMettreAJourDroitsDeVoteResultIdentifiantsNonTrouves: ICollection<string> remplacé par VotantIdsNonTrouves: 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é Commentaire pour annoter librement un votant
  • B2BUpsertVotantDto - Nouvelle propriété optionnelle Commentaire pour définir un commentaire lors de la création ou mise à jour d'un votant
  • B2BMettreAJourDroitDeVoteDto - Nouvelle propriété optionnelle Commentaire pour enregistrer un motif lors de la mise à jour individuelle du droit de vote
  • B2BMettreAJourDroitsDeVoteDto - Nouvelle propriété optionnelle Commentaire pour 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 EmployeIdExterne et SyndicatIdExterne pour identifier les liens employé/syndicat
  • B2BListeElectoraleItem - Nouvelles propriétés EmployeIdExterne et SyndicatIdExterne (même logique que B2BVotantItem)
  • B2BCampagneStatsItem - Nouvelle propriété TotalVotantsAvecDroitDeVote pour distinguer votants inscrits et votants avec droit de vote

Modifié

  • ICampagnesClient.GetCampagneStats - Nouveau paramètre optionnel syndicatIdExterne pour 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 MettreAJourDroitsDeVote pour 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 EnvoyerDerniereCarteMembrePourEmploi pour envoyer la carte de membre en ciblant un emploi spécifique
  • ICourrielClient - Nouvelle méthode EnvoyerFormulairePourEmploi pour envoyer un formulaire en ciblant un emploi spécifique
  • B2BEnvoyerDerniereCarteMembrePourEmploiRequest - Requête avec IdExterneEmploi et Courriel
  • B2BEnvoyerFormulairePourEmploiRequest - Requête avec IdExterneEmploi, Courriel et IdFormulaire

[2.19.0-alpha.16] - 2026-02-11

Corrigé

  • B2BAdhesionSearchQueryV2 - Correction du nom de colonne LibelleLabel dans 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/adhesions pour 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'emplois
    • B2BEmploiDtoV2 - Relation employé-employeur avec matricule et dates
    • B2BUpdateEmployeurDtoV2 - Mise à jour employeur V2
    • B2BSyncEmployesResultV2 - Résultat de synchronisation V2
  • Endpoint POST /api/b2b/v2/employes/upsert pour gestion multi-employeurs
  • Endpoint POST /api/b2b/v2/sync avec 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 :

  • EmployeurIdExterne et Matricule retirés de B2BUpsertEmployeDto
  • Utiliser Emplois[] avec B2BEmploiDtoV2 pour 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éponse
    • IVotantsClient - 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és
    • IEmployeursClient - Gestion des employeurs
    • IFormulaireClient - Récupération des formulaires
    • IConsentementClient - Historique des consentements
    • IObjetsConsentementClient - Objets de consentement
    • IChampUtilisateurClient - Champs personnalisés
    • ICourrielClient - Envoi de courriels
    • ISyncClient - 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