Ressources
Connecter le WhatsApp d'une boutique
Flux de connexion par QR code, interrogation (polling) et déconnexion de la session WhatsApp d'une boutique.
| Méthode | Chemin | Permission | Objet |
|---|---|---|---|
| GET | /shops/{idOrName}/channels/whatsapp | whatsapp.read | état du canal stocké + session en direct |
| POST | /shops/{idOrName}/channels/whatsapp/connect | whatsapp.connect | démarrer la connexion ; renvoie un QR ou connected |
| GET | /shops/{idOrName}/channels/whatsapp/connect | whatsapp.connect | interroger jusqu'à connected (dernier QR à chaque appel) |
| POST | /shops/{idOrName}/channels/whatsapp/disconnect | whatsapp.connect | arrêter la session, garder la configuration |
Flux
POST …/channels/whatsapp/connect
→ { "status": "qr_waiting", "qr": "<raw>",
"qrImageDataUrl": "data:image/png;base64,…",
"expiresAt": "…", "pollAfterMs": 3000, "channelConfigId": "…" }
GET …/channels/whatsapp/connect (à chaque pollAfterMs)
→ { "status": "qr_waiting", … } (le QR change toutes les ~20–60 s — affichez toujours le dernier)
→ { "status": "connected", "phone": "24177000000", … }
Autres statuts : starting (le bot démarre — réessayez) et disconnected (la session s'est interrompue — refaites un POST connect). Interroger avant tout POST renvoie 409 WHATSAPP_NOT_CONFIGURED.
Dès que connected arrive, l'API enregistre exactement ce que fait la fenêtre modale QR du tableau de bord elle-même (état du canal, channelStatus.whatsapp de la boutique, le numéro de notification du propriétaire). Les identifiants de session WhatsApp eux-mêmes sont stockés chiffrés par le bot à l'instant même où le téléphone scanne le code — ils ne transitent jamais par cette API.
Déconnexion
POST …/channels/whatsapp/disconnect arrête la session en direct mais conserve la configuration du canal, de sorte qu'un connect ultérieur la réutilise (avec son créneau de quota) plutôt que de repartir de zéro. Renvoie 404 WHATSAPP_NOT_CONFIGURED si la boutique n'a jamais eu de canal WhatsApp du tout.