Ce document explique comment utiliser le service de notification, aussi bien pour les applications mobiles que pour le web. Il inclut le processus d’enregistrement, la gestion des désabonnements, l’accès aux statistiques, ainsi que les bases URL de chaque service.
La base URL pour accéder à l’API est :
https://services-innov.com/push/
    Avant de recevoir des notifications, il faut enregistrer l’appareil.
Voici le déroulé comment enregistrer un appareil mobile(Android ou iOS) :
POST push/devices/register
Content-Type: application/json
{
    "userId": "user123",
    "token": "fcm_device_token_from_mobile_app", 
    "platform": "android", // ou ios
    "deviceInfo": {
      "model": "Samsung Galaxy S21", // ou iPhone 13 Pro Max
      "osVersion": "Android 12", // ou iOS 15.6.1
      "appVersion": "2.1.0", 
      "locale": "fr-FR" 
    },
    "deviceId": "device_unique_id" 
  }
    Le processus d’enregistrement Web se déroule en trois étapes : récupérer la clé VAPID, créer une souscription via le Service Worker, puis enregistrer l’appareil auprès de l’API.
Étape 1 : Récupérer la clé VAPID
GET push/devices/vapid-key
    Étape 2 : Créer la souscription (extrait JavaScript minimal)
// Exemple (navigateur)
const publicKey = await fetch(`${BASE_API}/push/devices/vapid-key`).then(r => r.json()).then(d => d.publicKey);
const registration = await navigator.serviceWorker.register('/sw.js');
const subscription = await registration.pushManager.subscribe({
  userVisibleOnly: true,
  applicationServerKey: urlBase64ToUint8Array(publicKey)
});
// Récupération des clés pour l'enregistrement serveur
const p256dhKey = btoa(String.fromCharCode(...new Uint8Array(subscription.getKey('p256dh'))));
const authKey = btoa(String.fromCharCode(...new Uint8Array(subscription.getKey('auth'))));
    Étape 3 : Enregistrer l'appareil
POST push/devices/register
Content-Type: application/json
{
  "userId": "user123",
  "platform": "web_chrome", // ou "web_firefox"
  "deviceInfo": {
    "userAgent": "Mozilla/5.0 ...",
    "locale": "fr-FR",
    "webPushSubscription": {
      "endpoint": "https://fcm.googleapis.com/fcm/send/abc123",
      "keys": {
        "p256dh": "P256DH_KEY",
        "auth": "AUTH_KEY"
      }
    }
  }
}
    Les appareils Backoffice sont enregistrés sur un endpoint dédié et sont automatiquement exclus des broadcasts généraux.
POST push/devices/register/backoffice-device
Content-Type: application/json
{
  "userId": "admin_user_123",
  "deviceInfo": {
    "webPushSubscription": {
      "endpoint": "https://fcm.googleapis.com/fcm/send/abc123",
      "keys": {
        "p256dh": "P256DH_KEY",
        "auth": "AUTH_KEY"
      }
    }
  },
  "isBackoffice": true
}
    Pour vous désabonner des notifications, utilisez les routes suivantes. Vous pouvez cibler un deviceId précis ou utiliser la route générique qui accepte token ou deviceId.
DELETE push/devices/{deviceId}
    Permet de se désinscrire en envoyant soit le token de l'appareil, soit le deviceId (la résolution du token est faite côté serveur).
DELETE push/devices/unregister?token=DEVICE_TOKEN
    DELETE push/devices/unregister?deviceId=DEVICE_ID
    Pour chaque service, vous pouvez obtenir des statistiques précises :
GET https://services-innov.com/push/push/stats
    Service email: GET https://services-innov.com/email/email/stats
    Service sms: GET https://services-innov.com/sms/sms/stats
    GET https://services-innov.com/push/push/stats/details
    Service email: GET https://services-innov.com/email/email/stats/details
    Service sms: GET https://services-innov.com/sms/sms/stats/details
    https://services-innov.com/push/
            https://services-innov.com/push/api/docshttps://services-innov.com/email/
            https://services-innov.com/email/api/docshttps://services-innov.com/sms/
            https://services-innov.com/sms/api/docs