Assistant — chat public
Endpoints anonymes du chat citoyen (Assistant Wast'O), préfixe /public/chat.
Gating : module console ASSIST'O sur le cityGroup de la ville. Distinct de MCP.
Guide opérateur : L'Assistant.
SDK : client.public.chat.* — Client SDK.
Disponibilité
GET /public/chat/availability?cityId={uuid}
GET /public/chat/availability?cityGroupId={uuid}
Réponse typique : { "enabled": true|false, "cityGroupId": "…", "reason": "…" }.
Sans cityId ni cityGroupId → enabled: false.
SDK : client.public.chat.getAvailability({ cityId }) (accepte aussi une string cityId seule).
Conversations
Créer
POST /public/chat/conversations
Content-Type: application/json
{
"deviceId": "uuid-appareil",
"cityId": "uuid-ville",
"cityGroupId": "uuid-groupement"
}
deviceId est obligatoire (identifiant client local). cityId / cityGroupId recommandés pour le gating ASSIST'O.
Localisation
PATCH /public/chat/conversations/:id/location
Content-Type: application/json
{ "cityId": "uuid-ville", "placeId": "uuid-secteur" }
Lister par appareil
GET /public/chat/conversations/:deviceId?page=1&pageSize=20
Réponse paginée (data + meta).
Messages d’une conversation
GET /public/chat/conversations/:id/messages
Envoyer un message
POST /public/chat/conversations/:id/messages
Content-Type: application/json
{
"content": "Quand est la prochaine collecte ?",
"actionOptionId": null,
"placeId": "uuid-secteur-optionnel"
}
Le serveur enregistre le message USER, exécute le pipeline (arbre → RAG → LLM optionnel), puis renvoie la réponse assistant (et métadonnées éventuelles : llmUsed, groundingHits, confidence).
Rate limiting
≈ 20 requêtes / minute par deviceId (ou IP) sur création de conversation et envoi de messages.
Dépassement → HTTP 429 avec message FR (« Trop de messages — réessayez dans une minute. »).
Routes console (JWT)
Préfixe /chat — JWT console + permission CHAT_CONVERSATIONS (pas l’API publique) :
| Méthode | Path | Notes |
|---|---|---|
| GET | /chat/conversations | Inbox agents |
| GET | /chat/conversations/:id | Détail |
| POST | /chat/conversations/:id/assign | Assigner un agent |
| POST | /chat/conversations/:id/messages | Réponse agent |
| PATCH | /chat/conversations/:id/status | Statut conversation |
| POST | /chat/conversations/:id/create-ticket | Ticket depuis le chat |
| GET | /chat/llm-usage | Snapshot tokens (ADMIN) |
| GET | /chat/llm-usage/city-group?cityGroupId= | Conso groupement |
Ces routes ne sont pas destinées aux intégrateurs site : elles alimentent la console Assistant IA.