GET/api/public/widget/history
Charge l'historique des messages d'une conversation Widget en cours, par ex. après un rechargement de page.
`GET /api/public/widget/history` charge l’historique des messages d’une conversation en cours dans le widget, par exemple après un rechargement de page. La requête nécessite le jeton d’intégration dans l’en-tête `X-Widget-Token` ainsi qu’une origine autorisée. Les paramètres de requête comprennent le `widget_code`, l’identifiant de session et les informations nécessaires pour rattacher la demande au bon visiteur. La route est idempotente et en lecture seule. Un appel répété avec les mêmes identifiants ne doit pas créer de nouveau message ni modifier l’état de la conversation. Le frontend peut l’utiliser au démarrage pour reconstruire l’affichage avant d’autoriser l’envoi d’un nouveau texte. Les messages doivent être présentés dans l’ordre fourni par le serveur, sans déduire un ordre différent uniquement à partir de l’heure locale du navigateur. Un jeton manquant, un code de widget invalide, une session inconnue ou une origine non autorisée doit être traité comme une erreur de configuration ou d’accès. La réponse `WIDGET_ORIGIN_DENIED` indique que le domaine chargé n’est pas présent dans la liste autorisée. Copier le code d’intégration vers un autre site ne suffit donc pas à rendre le widget opérationnel. Le client ne doit pas inventer une nouvelle session à partir de cette route. Si l’historique n’est plus disponible, il faut démarrer un flux de conversation propre selon la logique du widget. De même, cette route ne remplace pas le polling des nouveaux messages pendant un handover ; les réponses asynchrones sont récupérées par l’endpoint `poll`. Exemple : un visiteur échange plusieurs messages, recharge la page, puis le script récupère les identifiants conservés localement. Il appelle `history`, reçoit la conversation précédente et la réaffiche avant de réactiver la zone de saisie. Le jeton d’intégration et les identifiants de session ne doivent pas apparaître dans les journaux publics, les outils d’analyse ou les captures d’écran de support. La route sert exclusivement à restaurer le contexte visible du widget autorisé.
Authentification et sécurité
Jeton d'intégration du widget (en-tête X-Widget-Token) + liste d'origines autorisées
Idempotent: Oui
Paramètres
widget_code(query, string, requis)session_id(query, string, requis)visitor_id(query, string, requis)Exemple de réponse
{"ok":true,"data":{"messages":[{"role":"user","text":"Bonjour...","created_at":"..."},{"role":"assistant","text":"...","created_at":"..."}]}}Codes d'erreur
400 PARAMS_REQUIRED — session_id et/ou visitor_id sont manquants.Preuve de test en direct
Succès (200, historique de messages réel) et cas négatif (400) vérifiés en direct.