Aller au contenu principal

V1 vs V2 — aide-mémoire

L'API B2B coexiste en V1 et V2. Les versions sont sélectionnées par segment d'URL (/b2b/v1/…, /b2b/v2/…) ou par les en-têtes / query-string api-version, X-Version. Le SDK cible directement la version dans chaque méthode — pas de réglage global.

Règle simple : pour un nouveau projet, allez en V2 partout où la V2 existe. N'utilisez V1 que pour les CRUD unitaires (un employé à la fois) ou les domaines sans V2.


1. Cheat sheet par domaine

DomaineV1V2Recommandation
Sync employésIEmployesClient.Add/Update/Delete (un par un)ISyncClient.Sync(syndicats, employes, objetsConsentement)V2 pour 10+ employés. V1 OK pour CRUD ponctuel.
Lecture adhésionsISignatureClient.GetSignaturesDepuis / GetSignaturesParIdExterneISignatureClient.GetSignaturesV2Depuis / …V2ParIdExterne / SearchSignaturesV2V2 — payload riche, filtres avancés, snapshots.
Recherche emploisIEmploisClient.GetAllEmplois (sans filtres)IEmploisClient.SearchEmplois(req)V2 dès que vous avez un filtre.
Suppression d'adhésion(n/a, V1 ne supprime pas)ISignatureClient.DeleteAdhesionByIdUnique / DeleteAdhesionsByMembreV2 uniquement.
Employeur, Syndicat, Emploi (CRUD)IEmployeursClient, ISyndicatsClient, IEmploisClient(pas de CRUD V2 distinct — DTO V2 nested via Sync)V1 pour les unitaires, V2 nested via Sync pour les batchs.
ObjetConsentementIObjetsConsentementClient(DTO V2 nested via Sync)V1 pour CRUD, V2 nested pour batch.
FormulairesIFormulaireClient.GetAllFormulaires(n/a)V1 uniquement, suffisant.
ConsentementsIConsentementClient(n/a)V1 uniquement.
CourrielsICourrielClient (5 méthodes)(n/a)V1 uniquement.
Champs utilisateurIChampUtilisateurClient(DTO V2 nested via ValeursChampUtilisateur dans B2BUpsertEmployeDtoV2)V1 pour la définition, V2 nested pour l'assignation.
ConciliationIConciliationClient(n/a)V1 uniquement.
Votez (campagnes, votants, questions, liste électorale)Tous les clients Votez(n/a)V1 uniquement.
Test / sandboxITestClient(n/a)V1 uniquement.

2. Pièges fréquents

Mélanger les DTOs V1 et V2

B2BUpdateEmployeDto (V1) et B2BUpsertEmployeDtoV2 (V2) ne sont pas interchangeables :

ChampV1 (B2BUpdateEmployeDto)V2 (B2BUpsertEmployeDtoV2)
Matricule au niveau racineOuiNon — descend dans Emplois[].Matricule
IdentifiantExterneEmployeur au niveau racineOuiNon — descend dans Emplois[].IdentifiantExterneEmployeur
Adhesions[]NonOui (avec DateAdhesion)
Emplois[] (nested)NonOui (avec DateDebut, DateFin)
ValeursChampUtilisateur[]Type B2BValeurChampUtilisateurItem (typé : ValeurString/ValeurDate/...)Type plat { NomChamp, Valeur } (toujours string)

Symptôme : un sync V2 « marche » mais le matricule disparaît → vous passez un V1 dans une méthode V2. Recompilez avec types stricts.

Filtrer une adhésion V1 avec une date V2

GetSignaturesDepuis(DateTime) (V1) ne renvoie qu'un sous-ensemble des champs. Si vous avez besoin de Paiement ou ASignatureManuscripte, passez en SearchSignaturesV2 (V2).

Supprimer côté V1

Il n'y a pas d'endpoint V1 de suppression d'adhésion. Utilisez V2DeleteAdhesionByIdUnique ou DeleteAdhesionsByMembre.

Sync V1 (POST /b2b/v1/employe/sync)

L'endpoint existe encore côté API mais n'est pas exposé par le SDK. Migrez vers ISyncClient.Sync (V2). Si votre intégration appelle directement l'URL V1 en HTTP brut, basculez : la V1 ne reçoit plus d'évolutions.


3. Quand rester en V1

  • Vous maintenez une intégration existante stable, et la migration V2 n'apporte aucun bénéfice fonctionnel.
  • Vous faites du CRUD unitaire (création de membre par formulaire interne, par exemple).
  • Le domaine ne propose tout simplement pas de V2 (Votez, Courriel, Conciliation, Formulaires, Consentements).

4. Migration

Voir le guide complet de migration V1 → V2. Cheminement type :

  1. Identifier les appels IEmployesClient.AddEmploye/Update/Delete qui pourraient être groupés. Les remplacer par ISyncClient.Sync.
  2. Remplacer ISignatureClient.GetSignaturesDepuis/ParIdExterne par les variantes V2 (SearchSignaturesV2 quand des filtres sont nécessaires).
  3. Réenregistrer un seul DI (AddMcmApiClient) — pas besoin de duplication.
  4. Vérifier que les valeurs de champs utilisateur sont sérialisées correctement (V1 utilise des propriétés typées, V2 utilise une chaîne unique Valeur).

Voir aussi