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 https://hubmix.dealmood-solutions.com/v1/public/privacy-notice \
-H "Authorization: Bearer $GASPARD_API_KEY"{
"version": "2026-10-08",
"text": "Gaspard est l’assistant de Valais Connect. Vos messages et ses réponses sont enregistrés…",
"retention_days": 365
}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 https://hubmix.dealmood-solutions.com/v1/public/assistant \
-H "Authorization: Bearer $GASPARD_API_KEY"{
"product_name": "…",
"welcome": "…",
"suggestions": [
"…"
],
"enabled": true,
"mode": "text",
"avatar": {
"character": "…",
"style": "…"
}
}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 -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"}'{
"region": "…",
"token": "…",
"expires_in": 1,
"ice_servers": [
{
"urls": [
"…"
],
"username": "…",
"credential": "…"
}
],
"character": "…",
"style": "…",
"voice": "…",
"language": "fr",
"custom": false
}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 -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}'{
"token": "vst_…",
"expires_at": "2026-10-14T09:30:00Z",
"visitor_id": "vis_…",
"consent": {
"version": "2026-10-08",
"text": "Gaspard est l’assistant de Valais Connect. Vos messages et ses réponses sont enregistrés…",
"retention_days": 365
},
"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 -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"}'{
"id": "con_…",
"channel": "partner",
"locale": "fr",
"page": "admissions",
"started_at": "2026-10-14T09:30:00Z",
"last_message_at": "2026-10-14T09:30:00Z",
"message_count": 0,
"remaining_messages": 60
}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 https://hubmix.dealmood-solutions.com/v1/public/gaspard/conversations/cnv_123 \
-H "Authorization: Bearer $GASPARD_API_KEY"{
"conversation": {
"id": "con_…",
"channel": "partner",
"locale": "fr",
"page": "admissions",
"started_at": "2026-10-14T09:30:00Z",
"last_message_at": "2026-10-14T09:30:00Z",
"message_count": 0,
"remaining_messages": 60
},
"messages": [
{
"id": "sto_…",
"role": "user",
"text": "Écrivez-moi à [e-mail]",
"created_at": "2026-10-14T09:30:00Z",
"pages": [
"…"
],
"sources": [
{
"name": "Wikipédia",
"url": "https://fr.wikipedia.org/wiki/Lyon",
"licence": null
}
],
"listings": [
{
"kind": "event",
"title": "Marché de la vieille ville",
"url": "https://www.visiterlyon.com/…",
"source_name": "ONLYLYON Tourisme",
"attribution": {},
"redistribution": {},
"city": "Lyon",
"country_code": {},
"organisation": {},
"starts_at": {},
"deadline": {},
"price": {},
"detail": {},
"summary": {}
}
],
"rating": "up"
}
]
}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 -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":"…"}'{
"conversation_id": "cnv_…",
"question_id": "msg_…",
"message_id": "msg_…",
"text": "Ce week-end à Lyon, montez à Fourvière pour la vue sur la ville…",
"pages": [
"/events"
],
"sources": [
{
"name": "Wikipédia",
"url": "https://fr.wikipedia.org/wiki/Lyon",
"licence": null
}
],
"listings": [
{
"kind": "event",
"title": "Marché de la vieille ville",
"url": "https://www.visiterlyon.com/…",
"source_name": "ONLYLYON Tourisme",
"attribution": "Source : Comptoir Immobilier",
"redistribution": "internal",
"city": "Lyon",
"country_code": "…",
"organisation": "…",
"starts_at": "2026-10-14T09:30:00Z",
"deadline": "…",
"price": "…",
"detail": "…",
"summary": "…"
}
],
"remaining_messages": 58
}event: delta
data: {"text": "Bonjour"}
event: answer
data: {"conversation_id": "cnv_…", "question_id": "msg_…", "message_id": "msg_…", "text": "Bonjour…", "pages": [], "sources": [], "listings": [], "remaining_messages": 58}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 -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 !"}'{
"message_id": "msg_…",
"rating": "up"
}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 https://hubmix.dealmood-solutions.com/v1/public/visitors/me/data \
-H "Authorization: Bearer $GASPARD_API_KEY"{
"visitor_id": "vis_…",
"locale": "fr",
"first_seen": "2026-10-14T09:30:00Z",
"last_seen": "2026-10-14T09:30:00Z",
"consents": [
{
"version": "…",
"allow_training": false,
"granted_at": "2026-10-14T09:30:00Z",
"withdrawn_at": "2026-10-14T09:30:00Z"
}
],
"conversations": [
{
"conversation": {
"id": "con_…",
"channel": "partner",
"locale": "fr",
"page": "admissions",
"started_at": "2026-10-14T09:30:00Z",
"last_message_at": "2026-10-14T09:30:00Z",
"message_count": 0,
"remaining_messages": 60
},
"messages": [
{
"id": {},
"role": {},
"text": "Écrivez-moi à [e-mail]",
"created_at": {},
"pages": {},
"sources": {},
"listings": {},
"rating": {}
}
]
}
]
}Erreurs possibles : 401 403 404 409 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.
Lire le consentement #
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 https://hubmix.dealmood-solutions.com/v1/public/visitors/me/consent \
-H "Authorization: Bearer $GASPARD_API_KEY"{
"given": true,
"version": "…",
"allow_training": false,
"granted_at": "2026-10-14T09:30:00Z",
"notice_version": "…",
"up_to_date": true
}Erreurs possibles : 401 403 404 409 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.
Enregistrer le consentement #
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 -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}'{
"given": true,
"version": "…",
"allow_training": false,
"granted_at": "2026-10-14T09:30:00Z",
"notice_version": "…",
"up_to_date": true
}Erreurs possibles : 401 403 404 409 422 429 503 — codes et conduite à tenir dans Erreurs, limites et quotas.
Retirer le consentement #
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 -X DELETE https://hubmix.dealmood-solutions.com/v1/public/visitors/me/consent \
-H "Authorization: Bearer $GASPARD_API_KEY"{
"given": true,
"version": "…",
"allow_training": false,
"granted_at": "2026-10-14T09:30:00Z",
"notice_version": "…",
"up_to_date": true
}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 -X DELETE https://hubmix.dealmood-solutions.com/v1/public/visitors/me \
-H "Authorization: Bearer $GASPARD_API_KEY"{
"erased": true,
"conversations": 2,
"messages": 14,
"feedback": 1
}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 -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"]}'{
"passages": [
{
"id": "pas_…",
"title": "Lyon > Patrimoine",
"text": "Les traboules sont des passages qui traversent les immeubles du Vieux-Lyon…",
"language": "fr",
"topic": "app",
"source": {
"name": "Wikipédia",
"url": "https://fr.wikipedia.org/wiki/Lyon",
"licence": null
},
"score": 0.82,
"redistribution": "internal"
}
]
}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 https://hubmix.dealmood-solutions.com/v1/public/products \
-H "Authorization: Bearer $GASPARD_API_KEY"{
"products": [
{
"id": "pro_…",
"name": "…",
"tagline": "…",
"description": "…",
"scopes": [
"…"
],
"unit": "…",
"unit_label": "…",
"client_kinds": [
"…"
],
"routes": [
{
"method": {},
"path": {}
}
],
"docs_url": "…",
"status": "…"
}
]
}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 -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]}'{
"text": "…",
"follow_ups": [
"…"
],
"usage": {
"model": "…",
"prompt_tokens": 1,
"completion_tokens": 1,
"duration_ms": 1
}
}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 -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"]}'{
"questions": [
{
"kind": "single_choice",
"prompt": "…",
"choices": [
{
"id": {},
"text": {}
}
],
"correct_choice_ids": [
"…"
],
"expected_answer": "…",
"explanation": "…"
}
],
"usage": {
"model": "…",
"prompt_tokens": 1,
"completion_tokens": 1,
"duration_ms": 1
}
}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 -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":"…"}}'{
"cards": [
{
"front": "…",
"back": "…"
}
],
"usage": {
"model": "…",
"prompt_tokens": 1,
"completion_tokens": 1,
"duration_ms": 1
}
}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 -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":"…"}'{
"score": 0.5,
"verdict": "correct",
"feedback": "…",
"usage": {
"model": "…",
"prompt_tokens": 1,
"completion_tokens": 1,
"duration_ms": 1
}
}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 -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":"…"}]}'{
"version": "…",
"assessments": [
{
"risk_score": 1,
"level": "low",
"withheld": true,
"findings": [
{
"signal": {},
"weight": {},
"evidence": {}
}
],
"quality_flags": [
"rent_far_below_median"
]
}
]
}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 -X POST https://hubmix.dealmood-solutions.com/v1/public/embeddings \
-H "Authorization: Bearer $GASPARD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"texts":["…"]}'{
"model": "…",
"dimensions": 1,
"embeddings": [
[
0.5
]
]
}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 -X POST https://hubmix.dealmood-solutions.com/v1/public/mcp \
-H "Authorization: Bearer $GASPARD_API_KEY"nullremix #
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 -X POST https://hubmix.dealmood-solutions.com/v1/public/remix/chat/completions \
-H "Authorization: Bearer $GASPARD_API_KEY"nullErreurs 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 -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"}'nullErreurs 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 -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":{}}'nullErreurs 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 https://hubmix.dealmood-solutions.com/v1/public/remix/agent/approvals/approval_id \
-H "Authorization: Bearer $GASPARD_API_KEY"nullErreurs 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 -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":""}'nullErreurs 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 -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":""}'nullErreurs 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 -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":["…"]}'nullErreurs 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 https://hubmix.dealmood-solutions.com/v1/public/remix/edge/policies \
-H "Authorization: Bearer $GASPARD_API_KEY"nullErreurs 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 -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":[{}]}'nullErreurs 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 -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":""}'nullErreurs 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 https://hubmix.dealmood-solutions.com/v1/public/remix/edge/approvals/app_id/approval_id \
-H "Authorization: Bearer $GASPARD_API_KEY"nullErreurs 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 [] |