Types Webhooks
Types partagés pour le système de webhooks MCM.
B2BWebhookPayload
Enveloppe non-typée d'un événement webhook.
public class B2BWebhookPayload
{
public string EventType { get; init; }
public DateTime TimestampUtc { get; init; }
public Guid DeliveryId { get; init; }
public JsonElement Data { get; init; }
}
B2BWebhookPayload<TData>
Enveloppe typée passée aux gestionnaires.
public class B2BWebhookPayload<TData>
{
public string EventType { get; init; }
public DateTime TimestampUtc { get; init; }
public Guid DeliveryId { get; init; }
public TData Data { get; init; }
}
B2BListeElectoraleCreeData
Données de l'événement campagne.liste_electorale_cree.
| Propriété | Type | Description |
|---|---|---|
CampagneId | Guid | Identifiant unique de la campagne |
TitreCampagne | string | Titre de la campagne |
NombreVotantsAjoutes | int | Nombre de votants ajoutés avec succès |
NombreVotantsIgnores | int | Nombre de votants ignorés (doublons) |
NombreVotantsErreurs | int | Nombre d'erreurs lors de l'ajout |
TotalVotantsCampagne | int | Total de votants dans la campagne |
B2BAdhesionItemV2 (payload adhesion.signee)
Données de l'événement adhesion.signee. Il s'agit du même type que celui retourné par la recherche d'adhésions V2 — il contient un snapshot des coordonnées et champs personnalisés au moment de la signature (et non les valeurs actuelles de l'employé).
Namespace : MCM.B2B.Contracts.V2. Définition complète : B2BAdhesionItemV2.
| Propriété | Type | Description |
|---|---|---|
DateSignature | DateTime | Date/heure UTC de la signature |
IdUniqueAdhesion | string | Identifiant unique (GUID) de l'adhésion |
TransactionId | string | Identifiant de la transaction de paiement (vide si aucun paiement) |
ASignatureManuscripte | bool | true si une signature manuscrite est présente |
SyndicatIdExterne | string? | Identifiant externe du syndicat |
SyndicatNom | string? | Nom du syndicat |
EmployeIdExterne | string | Identifiant externe de l'employé |
EmployeIdUnique | string | Identifiant unique (GUID) de l'employé |
EmployePrenom | string | Prénom de l'employé |
EmployeNom | string | Nom de l'employé |
Courriel | string? | Courriel capturé lors de la signature |
CourrielAlternatif | string? | Courriel alternatif |
TelephonePrincipal | string? | Téléphone principal |
TelephoneAlternatif | string? | Téléphone alternatif |
Adresse1 | string? | Adresse (ligne 1) |
Adresse2 | string? | Adresse (ligne 2) |
Ville | string? | Ville |
Province | string? | Province |
CodePostal | string? | Code postal |
ValeursChampUtilisateur | ICollection<B2BValeurChampUtilisateurItem> | Valeurs des champs personnalisés au moment de la signature |
Le payload ne contient pas d'identifiant d'emploi (EmploiIdExterne) ni d'employeur. Corrélez côté consommateur via EmployeIdExterne si nécessaire.
IMcmWebhookHandler<TData>
Interface pour les gestionnaires de webhooks.
public interface IMcmWebhookHandler<TData>
{
Task HandleAsync(B2BWebhookPayload<TData> payload, CancellationToken ct);
}
WebhookEventTypes
Constantes pour les types d'événements.
| Constante | Valeur | Description |
|---|---|---|
ListeElectoraleCree | campagne.liste_electorale_cree | Liste électorale créée — payload B2BListeElectoraleCreeData |
AdhesionSignee | adhesion.signee | Adhésion signée (acceptation ou fusion d'une demande) — payload B2BAdhesionItemV2 |
WebhookSignatureValidator
Utilitaire pour valider les signatures HMAC-SHA256.
public static class WebhookSignatureValidator
{
public static bool IsValid(
string secret, // Secret base64
string timestamp, // En-tête X-MCM-Timestamp
string body, // Corps brut de la requête
string signature // En-tête X-MCM-Signature
);
}