🔐 Authentification
Les routes protégées nécessitent un token JWT dans le header
Authorization.🔑 JWT Bearer Token
Obtenez un token JWT via votre système d'authentification, puis incluez-le dans chaque requête protégée.
// Header HTTP
Authorization: Bearer <votre_token_jwt>
// Socket.IO
const socket = io('https://api.acti-informatique.com', {
auth: { token: '<votre_token_jwt>' }
});
🌐 Clients autorisés
L'API accepte les requêtes des origines suivantes via CORS.
🖥️ Panel / Support
support.acti-informatique.com
💬 Site public
acti-informatique.com
📧 Webmail
mail.acti-informatique.com
💻 App Electron
capacitor://localhost
⚠️ Codes d'erreur
| Code | Signification | Action recommandée |
|---|---|---|
400 | Données invalides ou manquantes | Vérifier les paramètres envoyés |
401 | Token JWT manquant ou invalide | Se reconnecter et obtenir un nouveau token |
403 | Accès refusé (rôle insuffisant) | Vérifier les permissions du compte |
404 | Route ou ressource introuvable | Vérifier l'URL et la méthode HTTP |
429 | Trop de requêtes (rate limit) | Attendre avant de réessayer |
500 | Erreur serveur interne | Contacter le support si persistant |
⚙️ Système Public
GET
/health
Statut du serveur
Public
▼
Réponse
{ "status": "ok", "uptime": 3600, "env": "production" }
GET
/push/vapid-public-key
Clé publique VAPID pour les push notifications
Public
▼
Réponse
{ "success": true, "publicKey": "BHd2pMht6Ds3..." }
💬 Feedback Public
POST
/feedback/uninstall
Enregistrer un feedback de désinstallation
Public
▼
| Paramètre | Type | Requis | Description |
|---|---|---|---|
reason | string | Oui | Raison de désinstallation (max 200 car.) |
rating | number | Oui | Note de 0 à 5 |
comment | string | Non | Commentaire libre (max 1000 car.) |
email | string | Non | Email de contact |
version | string | Non | Version de l'application |
Rate limit
20 requêtes / 5 minutes par IP
🎥 WebRTC — Contrôle à distance JWT requis
Sessions de contrôle à distance entre agents support et clients via l'application Electron.
POST
/webrtc/session/create
Créer une session de contrôle à distance
🔐 JWT
▼
| Paramètre | Type | Requis | Description |
|---|---|---|---|
conversationId | string | Oui | ID de la conversation support associée |
agentEmail | string | Oui | Email de l'agent qui initie la session |
Réponse
{ "success": true, "sessionId": "remote_1234567890_abc123" }
POST
/webrtc/session/end
Terminer une session WebRTC
🔐 JWT
▼
| Paramètre | Type | Requis | Description |
|---|---|---|---|
sessionId | string | Oui | ID de la session à terminer |
POST
/webrtc/session/resolve-code
Résoudre un code 6 chiffres en sessionId
🔐 JWT
▼
| Paramètre | Type | Requis | Description |
|---|---|---|---|
code | string | Oui | Code format 123-456 affiché au client |
GET
/webrtc/stats
Sessions actives — admin seulement
🔐 JWT
👑 Admin
▼
Réponse
{ "activeSessions": 2, "sessions": [...] }
GET
/webrtc/session/:sessionId/logs
Logs d'une session — admin seulement
🔐 JWT
👑 Admin
▼
| Query | Type | Requis | Description |
|---|---|---|---|
limit | number | Non | Nombre de logs à retourner (défaut 100, max 500) |
🔔 Push Notifications JWT requis
Notifications web push via le protocole Web Push (VAPID). Compatible Chrome, Firefox, Edge, Safari.
POST
/push/subscribe
S'abonner aux notifications push
🔐 JWT
▼
| Paramètre | Type | Requis | Description |
|---|---|---|---|
userId | string | Oui | ID de l'utilisateur (doit correspondre au token JWT) |
subscription | object | Oui | Objet PushSubscription obtenu via registration.pushManager.subscribe() |
POST
/push/unsubscribe
Se désabonner des notifications push
🔐 JWT
▼
| Paramètre | Type | Requis | Description |
|---|---|---|---|
userId | string | Oui | ID de l'utilisateur à désabonner |
POST
/push/send
Envoyer une notification à un utilisateur
🔐 JWT
▼
| Paramètre | Type | Requis | Description |
|---|---|---|---|
userId | string | Oui | Destinataire |
title | string | Oui | Titre de la notification (max 100 car.) |
body | string | Oui | Corps du message (max 300 car.) |
data | object | Non | Données supplémentaires (URL, action…) |
Rate limit
10 requêtes / minute par token
POST
/push/broadcast
Envoyer à plusieurs utilisateurs — admin seulement
🔐 JWT
👑 Admin
▼
| Paramètre | Type | Requis | Description |
|---|---|---|---|
userIds | array | Oui | Liste d'IDs destinataires (max 1000) |
title | string | Oui | Titre (max 100 car.) |
body | string | Oui | Corps (max 300 car.) |
data | object | Non | Données supplémentaires |
GET
/push/stats
Nombre d'abonnements actifs — admin seulement
🔐 JWT
👑 Admin
▼
Réponse
{ "totalSubscriptions": 42 }
⚡ Socket.IO — Événements temps réel
Connexion WebSocket avec authentification JWT obligatoire. Toutes les connexions sans token valide sont rejetées.
📡 Connexion
const socket = io('https://api.acti-informatique.com', {
auth: { token: '<jwt>' },
transports: ['websocket', 'polling']
});
| Événement | Direction | Description |
|---|---|---|
authenticate | → serveur | S'identifier avec userId, username, avatar |
startConversation | → serveur | Rejoindre une salle de conversation |
typing | → serveur | Indiquer l'état de frappe (agent/client) |
typingStatus | ← serveur | Diffusion de l'état de frappe |
user:connected | ← serveur | Notification de connexion d'un utilisateur |
user:disconnected | ← serveur | Notification de déconnexion |
webrtc:join | → serveur | Rejoindre une session WebRTC (role: agent|client) |
webrtc:signal | ↔ relayé | Signaux WebRTC (offer, answer, ICE candidates) |
webrtc:peer-connected | ← serveur | L'autre partie a rejoint la session |
chat:message | ↔ relayé | Message de tchat dans une session WebRTC |
push:register | → serveur | Enregistrer un abonnement push via socket |
push:notify | → serveur | Envoyer une notification push via socket |