HubMix

Documentation

Référence de l’API REST

Chaque route de l’API publique /v1/public : paramètres, corps, réponses et exemples, générés depuis le document OpenAPI.

Adresse de base : https://hubmix.dealmood-solutions.com/v1/public · version 1.1.0 · JSON en UTF-8.

Cette page est générée à partir du document OpenAPI de l’API, exporté du service lui-même : elle suit toujours le code. Le même document est servi sur /v1/public/openapi.json.

Authentification #

Appelant En-têtes
Votre serveur Authorization: Bearer vck_live_…, et X-End-User: <id> facultatif (seul un hachage à clé est stocké)
Navigateur, application X-Gaspard-Key: vcp_live_… depuis une origine autorisée (Origin), puis Authorization: Bearer vst_… après POST /sessions

Détails et bonnes pratiques : Authentification et clés.

En-têtes communs #

En-tête Sens
Accept: text/event-stream Réponse en flux pour POST …/messages
X-Request-Id Votre identifiant de requête (8 à 64 caractères [A-Za-z0-9._-]), renvoyé dans la réponse ; sinon le service en crée un
RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset Quota de la fenêtre la plus proche de sa limite (réponse)
Retry-After Secondes à attendre, sur 429 et 503 (réponse)

Les corps sont limités à 32 Ko (413 payload_too_large). Toutes les erreurs ont la même forme : voir Erreurs, limites et quotas.

Avis de confidentialité et sessions #

Avant de parler à Gaspard depuis un navigateur ou une application, le visiteur accepte l’avis de confidentialité ; une session visiteur est alors ouverte.

Lire l’avis de confidentialité #

GET/privacy-notice

Le texte à montrer, et à faire accepter, avant d’ouvrir une session visiteur ou d’enregistrer le consentement d’un utilisateur. Sa version est celle à renvoyer avec le consentement.

Authentification : clé serveur (Authorization: Bearer vck_live_…) ou clé widget (X-Gaspard-Key: vcp_live_…) depuis une origine autorisée, sans jeton visiteur.

  • Avec une clé widget, cette lecture ne demande pas encore de jeton visiteur et ne compte pas dans les sessions par adresse.

Paramètres

Nom Dans Type Requis Description
locale requête enum fr · de · en non défaut : "fr"

Réponse 200 : PrivacyNoticeResponse

cURL
curl https://hubmix.dealmood-solutions.com/v1/public/privacy-notice \
  -H "Authorization: Bearer $GASPARD_API_KEY"

Erreurs possibles : 401 403 404 409 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

Assistant Profile #

GET/assistant

Who Gaspard is on this application: the product's name, the widget's welcome and its suggested questions when the product gave him its context; product_name is null when he is Valais Connect's general assistant. enabled false: the console turned the product's assistant off. mode avatar: a talking avatar (when the avatars' speech service is configured; otherwise the written chat).

Authentification : clé serveur (Authorization: Bearer vck_live_…), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Réponse 200 : AssistantProfileResponse

cURL
curl https://hubmix.dealmood-solutions.com/v1/public/assistant \
  -H "Authorization: Bearer $GASPARD_API_KEY"

Erreurs possibles : 401 403 404 409 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

Avatar Session #

POST/assistant/avatar

Widgets in avatar mode: a 10-minute Azure AI Speech token and the video relay's credentials, for the browser to show the talking avatar and recognise the visitor's speech. The service's key never leaves the server. 403 avatar_not_offered when this application's assistant is not an avatar; 503 avatar_unavailable otherwise.

Authentification : clé serveur (Authorization: Bearer vck_live_…, avec X-End-User pour vos utilisateurs), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Corps de la requête

Champ Type Requis Description
locale enum fr · de · en non défaut : "fr"

Réponse 200 : AvatarSessionResponse

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/assistant/avatar \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"locale":"fr"}'

Erreurs possibles : 401 403 404 409 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

Ouvrir une session visiteur #

POST/sessions

Clés widget seulement : ouvre (ou renouvelle) la session d’un visiteur qui a accepté l’avis. Le token renvoyé (vst_…, valable 30 jours) accompagne ensuite chaque requête dans Authorization: Bearer.

Authentification : clé serveur (Authorization: Bearer vck_live_…) ou clé widget (X-Gaspard-Key: vcp_live_…) depuis une origine autorisée, sans jeton visiteur.

  • Envoyez le jeton actuel s’il existe : le visiteur reste le même. Un jeton expiré ou effacé donne simplement un nouveau visiteur.
  • Limité par adresse IP (20 sessions par heure par défaut ; l’adresse n’est jamais stockée, seulement comptée sous forme hachée). Une clé serveur reçoit 422 sessions_for_widgets_only.

Corps de la requête

Champ Type Requis Description
locale enum fr · de · en non Langue du visiteur. défaut : "fr"
consent boolean oui Le visiteur a accepté l’avis de confidentialité. Obligatoire : sans lui, aucune session (403 consent_required).
allow_training boolean non Le visiteur accepte aussi que ses conversations masquées aident à améliorer Gaspard (facultatif, non par défaut). défaut : false

Réponse 201 : SessionResponse

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/sessions \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"locale":"fr","consent":true,"allow_training":false}'

Erreurs possibles : 401 403 404 409 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

Conversations #

Commencer une conversation, poser des questions (réponse complète ou en flux), relire la conversation et noter les réponses.

Commencer une conversation #

POST/gaspard/conversations

Une conversation garde le fil des questions ; elle accepte 60 messages (questions et réponses), puis il faut en commencer une autre.

Authentification : clé serveur (Authorization: Bearer vck_live_…, avec X-End-User pour vos utilisateurs), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Corps de la requête

Champ Type Requis Description
locale enum fr · de · en non Langue de la conversation. défaut : "fr"
page string ou null non Où se trouve l’utilisateur, en texte libre (par exemple admissions), 80 caractères au plus. 80 caractères au plus

Réponse 201 : ConversationResponse

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/gaspard/conversations \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"locale":"fr","page":"admissions"}'

Erreurs possibles : 401 403 404 409 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

Relire une conversation #

GET/gaspard/conversations/{conversation_id}

La conversation et ses messages, tels qu’ils sont enregistrés : les données personnelles y sont masquées (« [e-mail] », « [téléphone] »…).

Authentification : clé serveur (Authorization: Bearer vck_live_…, avec X-End-User pour vos utilisateurs), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Paramètres

Nom Dans Type Requis Description
conversation_id chemin string oui

Réponse 200 : ConversationThreadResponse

cURL
curl https://hubmix.dealmood-solutions.com/v1/public/gaspard/conversations/cnv_123 \
  -H "Authorization: Bearer $GASPARD_API_KEY"

Erreurs possibles : 401 403 404 409 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

Poser une question #

POST/gaspard/conversations/{conversation_id}/messages

Gaspard répond avec le texte, les sources citées, les pages de Valais Connect utiles et les annonces trouvées (emplois, logements, événements, ressources). La question et la réponse sont enregistrées après masquage des données personnelles.

Authentification : clé serveur (Authorization: Bearer vck_live_…, avec X-End-User pour vos utilisateurs), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

  • Avec Accept: text/event-stream, la réponse arrive en flux : voir Réponses en flux.
  • Reposer une question après une erreur est sans risque : un échange n’est enregistré qu’avec sa réponse.

Paramètres

Nom Dans Type Requis Description
conversation_id chemin string oui

Corps de la requête

Champ Type Requis Description
text string oui La question. 1 à 2000 caractères
first_name string ou null non Prénom de la personne, pour une réponse personnelle. Jamais envoyé à un fournisseur externe. 60 caractères au plus
locality string ou null non Where the asker is (their town, any language: « Lyon », « Genf »): jobs, rooms and events are then picked near them. 80 caractères au plus
country_code string ou null non The asker's country (ISO 3166-1 alpha-2): listings from that country when their town is unknown or has none nearby.

Réponse 200 : AnswerResponse

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/gaspard/conversations/cnv_123/messages \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"Que faire à Lyon ce week-end ?","first_name":"Léa","locality":"…","country_code":"…"}'

Erreurs possibles : 401 403 404 409 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

Noter une réponse #

POST/gaspard/messages/{message_id}/feedback

👍 ou 👎 sur une réponse de Gaspard, avec un commentaire facultatif. Une nouvelle note remplace la précédente.

Authentification : clé serveur (Authorization: Bearer vck_live_…, avec X-End-User pour vos utilisateurs), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Paramètres

Nom Dans Type Requis Description
message_id chemin string oui

Corps de la requête

Champ Type Requis Description
rating up · down oui up (utile) ou down (pas utile).
comment string ou null non Commentaire facultatif, 500 caractères au plus. 500 caractères au plus

Réponse 200 : FeedbackResponse

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/gaspard/messages/msg_123/feedback \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"rating":"up","comment":"Très utile, merci !"}'

Erreurs possibles : 401 403 404 409 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

Consentement et droits des personnes #

Le consentement en vigueur, l’export des données (droit d’accès) et leur effacement. Avec une clé serveur, ces routes concernent l’utilisateur indiqué par X-End-User.

Exporter les données #

GET/visitors/me/data

Tout ce qui est conservé sur la personne : consentements et conversations (droit d’accès, nLPD).

Authentification : clé serveur (Authorization: Bearer vck_live_…, avec X-End-User pour vos utilisateurs), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Réponse 200 : VisitorDataResponse

cURL
curl https://hubmix.dealmood-solutions.com/v1/public/visitors/me/data \
  -H "Authorization: Bearer $GASPARD_API_KEY"

Erreurs possibles : 401 403 404 409 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

GET/visitors/me/consent

Le consentement en vigueur, et s’il porte sur la version actuelle de l’avis (up_to_date).

Authentification : clé serveur (Authorization: Bearer vck_live_…, avec X-End-User pour vos utilisateurs), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Réponse 200 : ConsentResponse

cURL
curl https://hubmix.dealmood-solutions.com/v1/public/visitors/me/consent \
  -H "Authorization: Bearer $GASPARD_API_KEY"

Erreurs possibles : 401 403 404 409 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

PUT/visitors/me/consent

Enregistre l’accord de la personne à l’avis en vigueur et, si elle le souhaite, à l’amélioration de Gaspard. Avec une clé serveur : montrez d’abord l’avis à votre utilisateur, puis appelez cette route avec X-End-User.

Authentification : clé serveur (Authorization: Bearer vck_live_…, avec X-End-User pour vos utilisateurs), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

  • 422 notice_outdated : l’avis a changé depuis que la personne l’a lu ; montrez la nouvelle version.

Corps de la requête

Champ Type Requis Description
notice_version string oui La version de l’avis que la personne a acceptée ; ce doit être celle en vigueur (422 notice_outdated). 40 caractères au plus
allow_training boolean non La personne accepte aussi que ses conversations masquées aident à améliorer Gaspard. défaut : false

Réponse 200 : ConsentResponse

cURL
curl -X PUT https://hubmix.dealmood-solutions.com/v1/public/visitors/me/consent \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"notice_version":"2026-10-08","allow_training":false}'

Erreurs possibles : 401 403 404 409 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

DELETE/visitors/me/consent

Plus aucune utilisation pour l’entraînement à partir de maintenant ; un visiteur de widget doit accepter l’avis à nouveau pour continuer. Pour effacer aussi les données, utilisez DELETE /visitors/me.

Authentification : clé serveur (Authorization: Bearer vck_live_…, avec X-End-User pour vos utilisateurs), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Réponse 200 : ConsentResponse

cURL
curl -X DELETE https://hubmix.dealmood-solutions.com/v1/public/visitors/me/consent \
  -H "Authorization: Bearer $GASPARD_API_KEY"

Erreurs possibles : 401 403 404 409 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

Effacer les données #

DELETE/visitors/me

Efface la personne et toutes ses conversations (droit à l’effacement). Son jeton visiteur cesse de fonctionner.

Authentification : clé serveur (Authorization: Bearer vck_live_…, avec X-End-User pour vos utilisateurs), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Réponse 200 : ErasureResponse

cURL
curl -X DELETE https://hubmix.dealmood-solutions.com/v1/public/visitors/me \
  -H "Authorization: Bearer $GASPARD_API_KEY"

Erreurs possibles : 401 403 404 409 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

Base de connaissances #

Chercher directement dans la base de connaissances de Gaspard, avec les sources de chaque passage.

Chercher dans la base de connaissances #

POST/knowledge/search

Les passages de la base de connaissances de Gaspard les plus proches de la requête, avec leur source et leur score (scope knowledge:search, inclus dans l’offre gratuite).

Authentification : clé serveur (Authorization: Bearer vck_live_…, avec X-End-User pour vos utilisateurs), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Corps de la requête

Champ Type Requis Description
query string oui Ce que l’on cherche. 2 à 300 caractères
limit integer non Nombre de passages. de 1 à 10, défaut : 5
topics enum app · geography · history · culture · institutions · education · practical · transport · economy · nature · tourism [] non Limiter la recherche à ces thèmes. 11 éléments au plus

Réponse 200 : KnowledgeSearchResponse

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/knowledge/search \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"Lyon traboules","limit":3,"topics":["geography","history"]}'

Erreurs possibles : 401 403 404 409 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

products #

The hub's products (no key needed).

List Products #

GET/products

The hub's products: what each does, the scope it needs, its routes and what it counts. No key needed.

Authentification : clé serveur (Authorization: Bearer vck_live_…), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Réponse 200 : ProductsResponse

cURL
curl https://hubmix.dealmood-solutions.com/v1/public/products \
  -H "Authorization: Bearer $GASPARD_API_KEY"

Erreurs possibles : 401 403 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

tutor #

Explanations, quizzes, flashcards, grading.

Tutor Explanation #

POST/tutor/explanations

Gaspard explains a lesson in a conversation (oldest message first, the learner's last). Scope tutor; counted in tokens.

Authentification : clé serveur (Authorization: Bearer vck_live_…, avec X-End-User pour vos utilisateurs), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Corps de la requête

Champ Type Requis Description
locale enum fr · de · en non défaut : "fr"
learner LearnerSchema non
lesson LessonSchema oui
mode enum explain · socratic · exam_prep non défaut : "explain"
messages any [] oui 24 éléments au plus

Réponse 200 : TutorReplyResponse

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/tutor/explanations \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"locale":"fr","learner":{"first_name":"…","level":"secondary","school":"…","program":"…","study_year":1,"country_code":"…"},"lesson":{"course_title":"…","title":"…","objectives":["…"],"content":""},"mode":"explain","messages":[null]}'

Erreurs possibles : 401 403 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

Tutor Quiz #

POST/tutor/quizzes

A quiz on a lesson (single or multiple choice, true/false, short answers).

Authentification : clé serveur (Authorization: Bearer vck_live_…, avec X-End-User pour vos utilisateurs), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Corps de la requête

Champ Type Requis Description
locale enum fr · de · en non défaut : "fr"
learner LearnerSchema non
lesson LessonSchema oui
count integer non de 1 à 10, défaut : 5
difficulty enum easy · medium · hard non défaut : "medium"
kinds enum single_choice · multiple_choice · true_false · short_answer [] non 4 éléments au plus

Réponse 200 : QuizResponse

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/tutor/quizzes \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"locale":"fr","learner":{"first_name":"…","level":"secondary","school":"…","program":"…","study_year":1,"country_code":"…"},"lesson":{"course_title":"…","title":"…","objectives":["…"],"content":""},"count":5,"difficulty":"easy","kinds":["single_choice"]}'

Erreurs possibles : 401 403 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

Tutor Flashcards #

POST/tutor/flashcards

Revision cards (front, back) from a lesson.

Authentification : clé serveur (Authorization: Bearer vck_live_…, avec X-End-User pour vos utilisateurs), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Corps de la requête

Champ Type Requis Description
locale enum fr · de · en non défaut : "fr"
lesson LessonSchema oui
count integer non de 1 à 20, défaut : 10
learner LearnerSchema non

Réponse 200 : FlashcardsResponse

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/tutor/flashcards \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"locale":"fr","lesson":{"course_title":"…","title":"…","objectives":["…"],"content":""},"count":10,"learner":{"first_name":"…","level":"secondary","school":"…","program":"…","study_year":1,"country_code":"…"}}'

Erreurs possibles : 401 403 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

Tutor Grade #

POST/tutor/grades

Grades a free answer against the expected one: a score, a verdict and a kind feedback.

Authentification : clé serveur (Authorization: Bearer vck_live_…, avec X-End-User pour vos utilisateurs), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Corps de la requête

Champ Type Requis Description
locale enum fr · de · en non défaut : "fr"
lesson GradedLessonSchema oui
question GradedQuestionSchema oui
answer string oui 1 à 2000 caractères
country_code string ou null non Optional (additive, world opening): where the learner lives, ISO 3166-1 alpha-2 (users.country_code). Sets the regional forms (« septante » in CH/LI and BE, « soixante-dix » elsewhere; « ss » in CH/LI, « ß » elsewhere) and the emergency numbers. Default: Swiss forms.

Réponse 200 : GradeResponse

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/tutor/grades \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"locale":"fr","lesson":{"title":"…","content":"…"},"question":{"prompt":"…","expected_answer":"…","explanation":"…"},"answer":"…","country_code":"…"}'

Erreurs possibles : 401 403 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

trust #

Scam and quality signals of listings.

Trust Assessments #

POST/trust/assessments

Scam and quality signals of 1 to 50 listings (housing, opportunities, marketplace), in the order received: a risk score from 0 to 100, a level and the words found. Rules only, nothing stored. Scope trust:assess; counted in listings.

Authentification : clé serveur (Authorization: Bearer vck_live_…, avec X-End-User pour vos utilisateurs), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Corps de la requête

Champ Type Requis Description
listings TrustListing [] oui 50 éléments au plus

Réponse 200 : TrustResponse

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/trust/assessments \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"listings":[{"kind":"housing","title":"…","description":"","country_code":"…","city":"…","currency":"…","price_amount":0.5,"housing_type":"room","rooms":0.5,"photos":0,"address":"…"}]}'

Erreurs possibles : 401 403 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

embeddings #

Vectors of short texts.

Embeddings #

POST/embeddings

Vectors of 1 to 32 short texts (multilingual model, unit length). Nothing stored. Scope embeddings; counted in texts.

Authentification : clé serveur (Authorization: Bearer vck_live_…, avec X-End-User pour vos utilisateurs), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Corps de la requête

Champ Type Requis Description
texts string [] oui 1 to 32 texts of at most 2000 characters, 32000 in all. 32 éléments au plus

Réponse 200 : PublicEmbeddingsResponse

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/embeddings \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"texts":["…"]}'

Erreurs possibles : 401 403 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.

mcp #

Mcp #

POST/mcp

Model Context Protocol endpoint (Streamable HTTP): initialize, tools/list, tools/call, ping. Server keys only (a widget's key is refused).

Authentification : clé serveur (Authorization: Bearer vck_live_…, avec X-End-User pour vos utilisateurs), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Réponse 200 : any

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/mcp \
  -H "Authorization: Bearer $GASPARD_API_KEY"

remix #

Chat Completions #

POST/remix/chat/completions

Authentification : clé serveur (Authorization: Bearer vck_live_…), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Paramètres

Nom Dans Type Requis Description
authorization header string ou null non
X-Remix-User header string ou null non 256 caractères au plus

Réponse 200 : any

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/remix/chat/completions \
  -H "Authorization: Bearer $GASPARD_API_KEY"

Erreurs possibles : 422 — codes et conduite à tenir dans Erreurs, limites et quotas.

Inspect Text #

POST/remix/inspect

Authentification : clé serveur (Authorization: Bearer vck_live_…), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Paramètres

Nom Dans Type Requis Description
authorization header string ou null non
X-Remix-User header string ou null non 256 caractères au plus

Corps de la requête

Champ Type Requis Description
text string oui 200000 caractères au plus
direction input · output non défaut : "input"

Réponse 200 : any

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/remix/inspect \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"…","direction":"input"}'

Erreurs possibles : 422 — codes et conduite à tenir dans Erreurs, limites et quotas.

Check Tool #

POST/remix/agent/check

Authentification : clé serveur (Authorization: Bearer vck_live_…), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Paramètres

Nom Dans Type Requis Description
authorization header string ou null non
X-Remix-User header string ou null non 256 caractères au plus

Corps de la requête

Champ Type Requis Description
tool string oui 128 caractères au plus
arguments object non

Réponse 200 : any

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/remix/agent/check \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tool":"…","arguments":{}}'

Erreurs possibles : 422 — codes et conduite à tenir dans Erreurs, limites et quotas.

Approval Status #

GET/remix/agent/approvals/{approval_id}

Authentification : clé serveur (Authorization: Bearer vck_live_…), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Paramètres

Nom Dans Type Requis Description
approval_id chemin string oui
authorization header string ou null non

Réponse 200 : any

cURL
curl https://hubmix.dealmood-solutions.com/v1/public/remix/agent/approvals/approval_id \
  -H "Authorization: Bearer $GASPARD_API_KEY"

Erreurs possibles : 422 — codes et conduite à tenir dans Erreurs, limites et quotas.

Decide Approval #

POST/remix/agent/approvals/{approval_id}/decision

Authentification : clé serveur (Authorization: Bearer vck_live_…), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Paramètres

Nom Dans Type Requis Description
approval_id chemin string oui
authorization header string ou null non

Corps de la requête

Champ Type Requis Description
approve boolean oui
by string non 120 caractères au plus, défaut : ""
note string non 500 caractères au plus, défaut : ""

Réponse 200 : any

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/remix/agent/approvals/approval_id/decision \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"approve":true,"by":"","note":""}'

Erreurs possibles : 422 — codes et conduite à tenir dans Erreurs, limites et quotas.

Inspect Document #

POST/remix/documents/inspect

Authentification : clé serveur (Authorization: Bearer vck_live_…), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Paramètres

Nom Dans Type Requis Description
authorization header string ou null non
X-Remix-User header string ou null non 256 caractères au plus

Corps de la requête

Champ Type Requis Description
text string oui 2000000 caractères au plus
name string non 300 caractères au plus, défaut : ""

Réponse 200 : any

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/remix/documents/inspect \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"…","name":""}'

Erreurs possibles : 422 — codes et conduite à tenir dans Erreurs, limites et quotas.

Filter Retrieval #

POST/remix/retrieval/filter

Authentification : clé serveur (Authorization: Bearer vck_live_…), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Paramètres

Nom Dans Type Requis Description
authorization header string ou null non
X-Remix-User header string ou null non 256 caractères au plus

Corps de la requête

Champ Type Requis Description
chunks ChunkSchema [] oui 200 éléments au plus
groups string [] non 50 éléments au plus

Réponse 200 : any

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/remix/retrieval/filter \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"chunks":[{"id":"chu_…","text":"…","groups":["…"]}],"groups":["…"]}'

Erreurs possibles : 422 — codes et conduite à tenir dans Erreurs, limites et quotas.

Edge Policies #

GET/remix/edge/policies

Authentification : clé serveur (Authorization: Bearer vck_live_…), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Paramètres

Nom Dans Type Requis Description
version requête string non défaut : ""
host requête string non défaut : ""
authorization header string ou null non

Réponse 200 : any

cURL
curl https://hubmix.dealmood-solutions.com/v1/public/remix/edge/policies \
  -H "Authorization: Bearer $GASPARD_API_KEY"

Erreurs possibles : 422 — codes et conduite à tenir dans Erreurs, limites et quotas.

Edge Events #

POST/remix/edge/events

Authentification : clé serveur (Authorization: Bearer vck_live_…), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Paramètres

Nom Dans Type Requis Description
authorization header string ou null non

Corps de la requête

Champ Type Requis Description
events object [] oui 500 éléments au plus

Réponse 200 : any

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/remix/edge/events \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"events":[{}]}'

Erreurs possibles : 422 — codes et conduite à tenir dans Erreurs, limites et quotas.

Edge Approval Request #

POST/remix/edge/approvals

Authentification : clé serveur (Authorization: Bearer vck_live_…), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Paramètres

Nom Dans Type Requis Description
authorization header string ou null non

Corps de la requête

Champ Type Requis Description
app_id string oui 64 caractères au plus
tool string oui 128 caractères au plus
arguments string non 20000 caractères au plus, défaut : ""
reason string non 200 caractères au plus, défaut : ""

Réponse 200 : any

cURL
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/remix/edge/approvals \
  -H "Authorization: Bearer $GASPARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"app_id":"…","tool":"…","arguments":"","reason":""}'

Erreurs possibles : 422 — codes et conduite à tenir dans Erreurs, limites et quotas.

Edge Approval #

GET/remix/edge/approvals/{app_id}/{approval_id}

Authentification : clé serveur (Authorization: Bearer vck_live_…), ou clé widget (X-Gaspard-Key) avec le jeton visiteur (Authorization: Bearer vst_…).

Paramètres

Nom Dans Type Requis Description
app_id chemin string oui
approval_id chemin string oui
authorization header string ou null non

Réponse 200 : any

cURL
curl https://hubmix.dealmood-solutions.com/v1/public/remix/edge/approvals/app_id/approval_id \
  -H "Authorization: Bearer $GASPARD_API_KEY"

Erreurs possibles : 422 — codes et conduite à tenir dans Erreurs, limites et quotas.

Modèles #

Les objets renvoyés par l’API. Les champs inconnus doivent être ignorés : l’API peut en ajouter sans changer de version.

AnswerResponse

Champ Type Description
conversation_id string
question_id string L’identifiant de la question enregistrée.
message_id string L’identifiant de la réponse (pour la noter).
text string La réponse de Gaspard (Markdown léger).
pages string [] Pages de Valais Connect que Gaspard propose d’ouvrir.
sources SourceSchema [] Les sources citées.
listings ListingSchema [] Annonces trouvées : emplois et stages, logements, événements, ressources.
remaining_messages integer Messages encore possibles dans cette conversation.

AssistantMessage

Champ Type Description
role string
content string 1 à 8000 caractères

AssistantProfileResponse

Champ Type Description
product_name string ou null The product Gaspard is the assistant of; null: Valais Connect's.
welcome string ou null The widget's first message.
suggestions string [] Questions to start with.
enabled boolean false: the product's assistant is turned off; hide the widget. défaut : true
mode text · avatar avatar: a talking avatar answers aloud (POST /assistant/avatar). défaut : "text"
avatar AvatarProfile ou null

AvatarProfile

Champ Type Description
character string Azure's avatar (lisa, harry…).
style string Its style (casual-sitting…).

AvatarSessionResponse

What the browser needs to talk with the avatar through Azure AI Speech (Speech SDK, AvatarSynthesizer over WebRTC); ask again before expires_in seconds.

Champ Type Description
region string
token string Azure speech token (SpeechConfig.fromAuthorizationToken).
expires_in integer
ice_servers IceServer []
character string
style string
voice string The Azure voice the avatar speaks with (fr-CH-…).
language string The language the visitor's speech is recognised in.
custom boolean A custom avatar (AvatarConfig.customized = true in the Speech SDK). défaut : false

ChoiceSchema

Champ Type Description
id string
text string

ChunkSchema

Champ Type Description
id string 200 caractères au plus
text string 50000 caractères au plus
groups string [] 50 éléments au plus

ConsentResponse

The consent in force for this visitor or partner user, if any.

Champ Type Description
given boolean
version string ou null
allow_training boolean défaut : false
granted_at string (date ISO 8601) ou null
notice_version string
up_to_date boolean Le consentement porte sur l’avis en vigueur.

ConsentSchema

Champ Type Description
version string
allow_training boolean
granted_at string (date ISO 8601)
withdrawn_at string (date ISO 8601) ou null

ConversationResponse

Champ Type Description
id string
channel string public (widget) ou partner (clé serveur).
locale enum fr · de · en
page string ou null
started_at string (date ISO 8601)
last_message_at string (date ISO 8601)
message_count integer
remaining_messages integer Messages encore possibles (60 par conversation).

ConversationThreadResponse

Champ Type Description
conversation ConversationResponse
messages StoredMessageSchema []

Difficulty

Valeurs : easy, medium, hard.

ErasureResponse

Champ Type Description
erased boolean défaut : true
conversations integer
messages integer
feedback integer

ErrorDetail

Champ Type Description
code string Code stable, à tester dans votre code.
message string Explication pour les développeurs (en anglais), susceptible de changer.

ErrorResponse

Every error has this shape; code is stable, message is for developers.

Champ Type Description
error ErrorDetail
request_id string ou null Identifiant de la requête, à citer au support.

FeedbackResponse

Champ Type Description
message_id string
rating up · down

FlashcardSchema

Champ Type Description
front string
back string

FlashcardsResponse

Champ Type Description
cards FlashcardSchema [] 20 éléments au plus
usage UsageSchema

GradeResponse

Champ Type Description
score number de 0 à 1
verdict enum correct · partial · incorrect
feedback string
usage UsageSchema

GradedLessonSchema

Champ Type Description
title string 1 à 160 caractères
content string ou null 16000 caractères au plus

GradedQuestionSchema

Champ Type Description
prompt string 1 à 1000 caractères
expected_answer string 1 à 1000 caractères
explanation string ou null 0 à 2000 caractères

HTTPValidationError

Champ Type Description
detail ValidationError []

HousingType

Valeurs : room, shared_flat, studio, apartment, sublet, student_residence.

IceServer

Champ Type Description
urls string []
username string
credential string

KnowledgeSearchResponse

Champ Type Description
passages PassageSchema []

KnowledgeTopic

Valeurs : app, geography, history, culture, institutions, education, practical, transport, economy, nature, tourism.

LearnerLevel

Valeurs : secondary, apprenticeship, bachelor, master, adult.

LearnerSchema

Champ Type Description
first_name string ou null 1 à 60 caractères
level enum secondary · apprenticeship · bachelor · master · adult défaut : "bachelor"
school string ou null 1 à 160 caractères
program string ou null 1 à 160 caractères
study_year integer ou null de 1 à 8
country_code string ou null Optional (additive, world opening): where the learner lives, ISO 3166-1 alpha-2 (users.country_code). Sets the regional forms (« septante » in CH/LI and BE, « soixante-dix » elsewhere; « ss » in CH/LI, « ß » elsewhere) and the emergency numbers. Default: Swiss forms.

LessonSchema

Champ Type Description
course_title string ou null 1 à 160 caractères
title string 1 à 160 caractères
objectives string [] 8 éléments au plus
content string 16000 caractères au plus, défaut : ""

ListingKind

Valeurs : housing, opportunity, marketplace, other.

ListingSchema

A collected job, room, event or learning resource, shown as a card under the answer.

What a card holds depends on its source's redistribution level (redistribution): at facts you get the facts only (no description, image, contact or street address), at full the summary too. Always show attribution linked to url, and do not keep a card longer than a day without asking again (see « Données des annonces et attribution » in the documentation).

Champ Type Description
kind opportunity · housing · event · resource opportunity (emploi, stage), housing, event ou resource.
title string
url string La page d’origine de l’annonce.
source_name string Le site qui a publié l’annonce.
attribution string Mandatory credit, to show with the card and link to url: « Source : <source_name> ».
redistribution internal · facts · full What the source allows to pass on: facts (title, kind, category, amount, rooms, surface, locality, dates, organisation, link) or full (also the summary). Third parties never receive internal sources.
city string ou null Locality (never the street).
country_code string ou null ISO 3166-1 alpha-2 country of the listing, when known.
organisation string ou null Employer, agency, organiser or provider (name only).
starts_at string (date ISO 8601) ou null
deadline string ou null Jobs: application deadline; housing: available from (ISO date).
price string ou null Rent, salary or ticket price, as an amount (« 1450 CHF/mois »).
detail string ou null Type, workload, rooms and surface, event category and venue, or a resource's kind, subject and level.
summary string ou null An excerpt of the description: only for sources at full.

Locale

Valeurs : fr, de, en.

PassageSchema

Champ Type Description
id string
title string
text string Empty when the source only allows facts: show the title and link to the source instead.
language string
topic enum app · geography · history · culture · institutions · education · practical · transport · economy · nature · tourism
source SourceSchema ou null
score number
redistribution internal · facts · full What the source allows to pass on (facts: no text).

PrivacyNoticeResponse

Champ Type Description
version string
text string Le texte à montrer à la personne.
retention_days integer Durée de conservation des conversations, en jours.

ProductRouteSchema

Champ Type Description
method string
path string

ProductSchema

Champ Type Description
id string
name string
tagline string
description string
scopes string []
unit string
unit_label string
client_kinds string []
routes ProductRouteSchema []
docs_url string
status string

ProductsResponse

Champ Type Description
products ProductSchema []

PublicEmbeddingsResponse

Champ Type Description
model string
dimensions integer
embeddings number [] []

QualityFlag

Valeurs : rent_far_below_median, advance_payment_request, owner_abroad_story, missing_address, missing_rent, no_photos, short_description, identity_document_request, messaging_app_contact, foreign_currency, urgency_pressure.

QuestionKind

Valeurs : single_choice, multiple_choice, true_false, short_answer.

QuestionSchema

Champ Type Description
kind enum single_choice · multiple_choice · true_false · short_answer
prompt string
choices ChoiceSchema [] 6 éléments au plus
correct_choice_ids string []
expected_answer string ou null
explanation string

QuizResponse

Champ Type Description
questions QuestionSchema [] 10 éléments au plus
usage UsageSchema

RiskLevel

Valeurs : low, medium, high.

SessionResponse

Champ Type Description
token string Jeton visiteur : Authorization: Bearer vst_… sur les requêtes suivantes.
expires_at string (date ISO 8601) Fin de validité du jeton (30 jours).
visitor_id string
consent PrivacyNoticeResponse L’avis accepté.
allow_training boolean

SourceSchema

Champ Type Description
name string
url string ou null
licence string ou null Licence du contenu cité, quand elle est connue.

StoredMessageSchema

Champ Type Description
id string
role user · assistant
text string Tel qu’enregistré : les données personnelles sont masquées.
created_at string (date ISO 8601)
pages string [] défaut : []
sources SourceSchema [] défaut : []
listings ListingSchema [] défaut : []
rating up · down ou null

TrustAssessmentResult

Champ Type Description
risk_score integer de 0 à 100
level enum low · medium · high
withheld boolean Gaspard does not propose such a listing.
findings TrustFinding []
quality_flags enum rent_far_below_median · advance_payment_request · owner_abroad_story · missing_address · missing_rent · no_photos · short_description · identity_document_request · messaging_app_contact · foreign_currency · urgency_pressure [] The findings the ingest contract v1.1 knows (housing quality_flags).

TrustFinding

Champ Type Description
signal enum rent_far_below_median · advance_payment_request · owner_abroad_story · missing_address · missing_rent · no_photos · short_description · identity_document_request · messaging_app_contact · foreign_currency · urgency_pressure · fee_to_apply · money_or_parcel_relay · unrealistic_pay · crypto_investment
weight integer
evidence string ou null

TrustListing

Champ Type Description
kind enum housing · opportunity · marketplace · other
title string 1 à 300 caractères
description string 20000 caractères au plus, défaut : ""
country_code string ou null ISO 3166-1 alpha-2.
city string ou null 120 caractères au plus
currency string ou null ISO 4217 of price_amount; null: the country's own.
price_amount number ou null Housing: monthly rent; marketplace: price. de 0 à 1000000000
housing_type enum room · shared_flat · studio · apartment · sublet · student_residence ou null
rooms number ou null de 0 à 50
photos integer de 0 à 1000, défaut : 0
address string ou null 255 caractères au plus

TrustResponse

Champ Type Description
version string
assessments TrustAssessmentResult []

TrustSignal

Valeurs : rent_far_below_median, advance_payment_request, owner_abroad_story, missing_address, missing_rent, no_photos, short_description, identity_document_request, messaging_app_contact, foreign_currency, urgency_pressure, fee_to_apply, money_or_parcel_relay, unrealistic_pay, crypto_investment.

TutorMode

Valeurs : explain, socratic, exam_prep.

TutorReplyResponse

Champ Type Description
text string
follow_ups string [] 3 éléments au plus
usage UsageSchema

UsageSchema

Cost of the model calls behind this answer (0 when the model was not asked).

Champ Type Description
model string
prompt_tokens integer
completion_tokens integer
duration_ms integer

UserMessage

Champ Type Description
role string
content string 1 à 4000 caractères

ValidationError

Champ Type Description
loc string ou integer []
msg string
type string
input any
ctx object

Verdict

Valeurs : correct, partial, incorrect.

VisitorDataResponse

Champ Type Description
visitor_id string
locale string
first_seen string (date ISO 8601)
last_seen string (date ISO 8601)
consents ConsentSchema []
conversations ConversationThreadResponse []