# Notifications temps réel & Webhooks --- ## Notifications WebSocket ### Architecture ``` Événement serveur → NotificationService → Création en base (notifications) ↓ NotificationsGateway (Socket.IO) ↓ Émission vers la room userId ↓ Client reçoit l'événement 'notification' ``` ### Connexion depuis le frontend Le hook `useNotifications` gère la connexion Socket.IO : ```typescript // Connexion avec JWT dans le handshake const socket = io(API_URL, { auth: { token: accessToken } }); socket.on('notification', (notification) => { /* ... */ }); ``` ### Types de notifications | Type | Déclencheur | |------|-------------| | BOOKING_CREATED | Nouvelle réservation | | BOOKING_STATUS_CHANGED | Changement de statut | | DOCUMENT_UPLOADED | Document uploadé | | CARRIER_ACCEPTED | Carrier a accepté une CSV booking | | CARRIER_REJECTED | Carrier a refusé | | PAYMENT_SUCCESS | Paiement Stripe réussi | | PAYMENT_FAILED | Paiement Stripe échoué | | SUBSCRIPTION_UPDATED | Abonnement modifié | | SYSTEM | Notification système | ### Niveaux de priorité `LOW` · `MEDIUM` · `HIGH` · `URGENT` ### API notifications | Méthode | Route | Description | |---------|-------|-------------| | GET | /api/v1/notifications | Liste (paginée, filtrable) | | PATCH | /api/v1/notifications/:id/read | Marquer comme lu | | PATCH | /api/v1/notifications/read-all | Tout marquer comme lu | | DELETE | /api/v1/notifications/:id | Supprimer | --- ## Webhooks ### Pour qui Les webhooks permettent à des systèmes tiers de recevoir des événements Xpeditis en temps réel. ### Configuration ``` POST /api/v1/webhooks { "url": "https://your-system.com/webhook", "events": ["BOOKING_CREATED", "BOOKING_UPDATED"], "secret": "your-signing-secret" } ``` ### Sécurité Chaque webhook est signé HMAC-SHA256 : ``` X-Webhook-Signature: sha256=xxxxxxxx ``` Vérification côté récepteur : ```typescript const signature = crypto .createHmac('sha256', secret) .update(rawBody) .digest('hex'); const isValid = `sha256=${signature}` === headers['x-webhook-signature']; ``` ### Retry - 3 tentatives avec backoff exponentiel - Après 3 échecs → statut `FAILED`, webhook désactivé - `failure_count` incrémenté à chaque échec ### Événements disponibles `BOOKING_CREATED` · `BOOKING_UPDATED` · `BOOKING_CANCELLED` · `RATE_QUOTED` · `CARRIER_ACCEPTED` · `CARRIER_REJECTED` · `PAYMENT_SUCCESS` · `PAYMENT_FAILED` ### API webhooks | Méthode | Route | Description | |---------|-------|-------------| | GET | /api/v1/webhooks | Liste des webhooks | | POST | /api/v1/webhooks | Créer un webhook | | PATCH | /api/v1/webhooks/:id | Modifier | | DELETE | /api/v1/webhooks/:id | Supprimer | | POST | /api/v1/webhooks/:id/test | Tester le webhook |