Documentation API
Cette application mobile a été développée avec Flutter selon les maquettes disponibles sur Figma.
Champ Lexical
Champ Lexical
Bilan
Un premier bilan est obligatoire pour tous les utilisateurs chez HTC Santé. Ce bilan initial marque le début du parcours utilisateur et permet d'évaluer l'état de santé, définir les objectifs et recommander une cure adaptée. Tous les utilisateurs de l'application ont obligatoirement réalisé ce premier bilan avant d'accéder aux autres services.
Assessment
A first assessment is mandatory for all HTC Santé users. This initial assessment is the starting point of the user journey, evaluating health status, defining goals, and recommending a suitable treatment plan. All users in the application must have completed this assessment before accessing other services.
Cure
Un programme de santé personnalisé comprenant plusieurs séances. Les cures visent des objectifs spécifiques, comme la perte de poids ou l'amélioration des performances physiques. Chaque cure est structurée autour d'un nombre défini de séances.
Treatment Plan
A personalized health program consisting of several sessions. Treatment plans target specific goals, such as weight loss or improved physical performance. Each treatment plan is structured with a defined number of sessions.
Rendez-vous Flash
Un type de rendez-vous rapide, indépendant des bilans et des cures. Ce rendez-vous est souvent utilisé pour des besoins ponctuels. Il est payant, non annulable et non replanifiable, et son paiement est traité via Stripe en frontend.
Flash Appointment
A quick type of appointment, independent of assessments and treatment plans. This appointment is often used for specific needs. It is paid, non-cancelable, and non-reschedulable, with payments processed via Stripe in the frontend.
Séance
Une consultation individuelle qui fait partie d'une cure spécifique. Une séance est exclusivement liée à une cure et ne peut pas être réservée indépendamment.
Session
An individual consultation that is part of a specific treatment plan. A session is exclusively linked to a treatment plan and cannot be booked independently.
Pôle utilisateur
Le pôle représente le centre ou la région de référence auquel un utilisateur est associé (exemple : "Epinal"). Chaque utilisateur est attaché à un pôle fixe dès son inscription, et cette information ne peut pas être modifiée par l'utilisateur. Ce pôle sert à personnaliser les services et à déterminer les disponibilités pour les rendez-vous.
User Pole
The pole represents the center or region of reference to which a user is linked (e.g., "Epinal"). Each user is associated with a fixed pole at the time of registration, and this information cannot be modified by the user. The pole personalizes services and determines appointment availabilities.
Profil utilisateur
Les informations personnelles de l'utilisateur, comme le nom, prénom, pôle, date de naissance. Ces informations sont utilisées pour personnaliser l'expérience dans l'application.
User Profile
Personal information about the user, such as name, first name, pole, and date of birth. This information is used to personalize the user experience within the application.
Statistiques
Données relatives à l'évolution de l'utilisateur, comme le poids, l'IMC, la masse musculaire, etc. Elles permettent de suivre l'impact des cures et des programmes dans le temps.
Statistics
Data related to the user's progress, such as weight, BMI, muscle mass, etc. They allow tracking the impact of treatment plans and programs over time.
Programme
Une série d'objectifs ou de documents PDF attribués à l'utilisateur pour un suivi personnalisé. Chaque programme est accompagné d'un fichier PDF consultable et est conçu pour compléter les séances et les bilans.
Program
A series of goals or PDF documents assigned to the user for personalized follow-up. Each program comes with a viewable PDF file designed to complement sessions and assessments.
1. Authentification et gestion des comptes
/api/auth/login
1.1 Connexion Email
Permet à un utilisateur de se connecter en utilisant son e-mail et son mot de passe.
Corps de la requête
{
"adresse_email": "",
"mot_de_passe": ""
}
Réponse
{
"statut": true,
"message": "Connexion réussie",
"id_utilisateur": "12345"
}
/api/auth/login/sms
1.2 Connexion SMS
Connexion via un numéro de téléphone en recevant un OTP via Octopush.
Corps de la requête
{
"numero_telephone": ""
}
Réponse
{
"statut": true,
"message": "OTP envoyé avec succès",
"id_utilisateur": "12345"
}
/api/auth/reset-password
1.3 Réinitialisation MDP
Réinitialisation du mot de passe via un lien sécurisé ou un mot de passe temporaire envoyé par e-mail ou SMS.
Corps de la requête
{
"adresse_email": "",
"numero_telephone": ""
}
Réponse
{
"statut": true,
"message": "Lien de réinitialisation envoyé ou mot de passe temporaire attribué"
}
2. Gestion du profil utilisateur
/api/users/{id_utilisateur}
2.1 Récupérer Profil
Récupère les détails du profil utilisateur incluant la date d'inscription.
Réponse
{
"id_utilisateur": "12345",
"prenom": "John",
"nom": "Doe",
"date_naissance": "1990-01-01",
"genre": "Homme",
"photo_profil": "https://example.com/image.jpg",
"pole": "Epinal",
"date_inscription": "2024-01-15"
}
/api/users/{id_utilisateur}
2.2 Mettre à jour Profil
Met à jour les informations du profil utilisateur (sauf le pôle). Permet également de changer le mot de passe sans vérification de l'ancien mot de passe.
Corps de la requête
{
"prenom": "John",
"nom": "Smith",
"date_naissance": "1989-12-31",
"genre": "Homme",
"photo_profil": "https://example.com/image.jpg",
"nouveau_mot_de_passe": "nouveau_mdp_123"
}
Réponse
{
"statut": true,
"message": "Profil mis à jour avec succès"
}
3. Gestion des rendez-vous
/api/users/{id_utilisateur}/appointments
3.1 Liste des RDV
Récupère la liste des rendez-vous en cours de l'utilisateur.
Réponse
{
"rendez_vous": [
{
"id_rendezvous": "12345",
"date": "2024-02-15",
"heure": "14:30",
"type": "cure",
"id_cure": "789",
"praticien": {
"nom": "Dr. Smith",
"photo": "https://example.com/photo.jpg"
},
"annulable": true,
"replanifiable": true
}
]
}
/api/appointments/availability
3.2 Disponibilités
Récupère les disponibilités sur une période de 30 jours pour une cure ou un bilan.
Corps de la requête
{
"type": "cure",
"pole": "Epinal",
"id_cure": "789"
}
Réponse
{
"disponibilites": [
{
"date": "2025-01-15",
"heure": "10:00"
}
],
"details_cure": {
"id_cure": "789",
"nom": "Programme perte de poids",
"seances_realisees": 5,
"seances_restantes": 3
}
}
/api/cures/{id_cure}/appointments
3.3 RDV Cure
Planifie un rendez-vous pour une cure en cours.
Corps de la requête
{
"date": "2025-01-15",
"heure": "10:00",
"pole": "Epinal"
}
Réponse
{
"id_rendezvous": "67890",
"message": "Rendez-vous confirmé"
}
/api/appointments/bilan
3.4 RDV Bilan
Prend un rendez-vous pour un bilan si aucune cure n'est active.
Corps de la requête
{
"date": "2025-01-20",
"heure": "14:00",
"pole": "Epinal",
"type": "HTC"
}
Réponse
{
"id_rendezvous": "67891",
"message": "Rendez-vous bilan confirmé"
}
/api/appointments/{id_rendezvous}/modification
3.5 Vérifier Modification
Vérifie si un rendez-vous est modifiable.
Réponse
{
"annulable": true,
"replanifiable": true,
"message": "Rendez-vous modifiable"
}
/api/appointments/{id_rendezvous}
3.6 Modifier RDV
Modifie un rendez-vous si celui-ci est modifiable.
Corps de la requête
{
"nouvelle_date": "2025-01-16",
"nouvelle_heure": "11:00",
"pole": "Epinal"
}
Réponse
{
"statut": true,
"message": "Rendez-vous reprogrammé avec succès"
}
/api/appointments/flash
3.7 RDV Flash
Permet de prendre un rendez-vous flash. Ce type de rendez-vous est indépendant des bilans et cures, non annulable et non replanifiable.
Corps de la requête
{
"type": "HTC",
"pole": "Epinal"
}
Réponse
{
"options": [
{
"id": "flash_001",
"date": "2025-01-21",
"heure": "10:00",
"prix": 50
},
{
"id": "flash_002",
"date": "2025-01-22",
"heure": "14:00",
"prix": 60
}
]
}
/api/appointments/flash/confirm
3.8 Confirmer Paiement
Confirme le paiement d'un rendez-vous flash via Stripe. Le statut peut être 'confirme' ou 'en_attente'.
Corps de la requête
{
"options_id": [
"flash_001",
"flash_002"
],
"statut_paiement": "en_attente"
}
Réponse
{
"statut": true,
"message": "Paiement en attente de confirmation",
"details_paiement": {
"statut": "en_attente",
"montant_total": 110,
"options_en_attente": [
"flash_001",
"flash_002"
]
}
}
4. Gestion des cures
/api/users/{id_utilisateur}/cures
4.1 Détails Cures
Récupère les informations sur les cures en cours et passées.
Réponse
{
"cures": [
{
"id_cure": "001",
"nom": "Programme perte de poids",
"seances_realisees": 5,
"seances_restantes": 3,
"date_debut": "2025-01-01",
"date_fin": "2025-03-01",
"taux_observance": 85,
"actif": true
}
]
}
5. Gestion des programmes
/api/users/{id_utilisateur}/programs
5.1 Programmes Assignés
Récupère la liste des programmes assignés à l'utilisateur.
Réponse
{
"programmes": [
{
"id_programme": "001",
"titre": "Programme perte de poids",
"date_attribution": "2025-01-10",
"image": "https://example.com/screenshot.jpg",
"url_pdf": "https://example.com/program.pdf",
"consultation_statut": false
}
]
}
/api/users/{id_utilisateur}/programs/{id_programme}/opened
5.2 Marquer Consulté
Enregistre que le programme a été consulté par l'utilisateur.
Réponse
{
"statut": true,
"message": "Programme marqué comme consulté"
}
6. Statistiques utilisateur
/api/users/{id_utilisateur}/stats
6.1 Stats Utilisateur
Récupère les statistiques de santé de l'utilisateur, triées par date (plus récentes en premier).
Réponse
{
"statistiques": [
{
"date": "2025-01-01",
"poids_kg": 70,
"imc": 22.5,
"masse_grasse_kg": 15,
"masse_musculaire_kg": 55,
"masse_hydrique_kg": 50,
"masse_extracellulaire_pourcentage": 45,
"angle_phase_degre": 5.5,
"graisse_viscerale": 12,
"mesures": {
"bras_cm": 32,
"estomac_cm": 85,
"taille_cm": 80,
"nombril_cm": 82,
"hanche_cm": 95,
"cuisse_cm": 60,
"genou_cm": 40,
"mollet_cm": 38
}
}
]
}
7. Simplification des contraintes de sécurité
/api/security
7. Contraintes de sécurité
Authentification via JWT avec des tokens qui n'expirent jamais.
Réponse
{
"authentification": "JWT",
"expiration": "none",
"codes_erreur": {
"200": "Requête réussie",
"400": "Erreur dans la requête",
"500": "Erreur serveur imprévue"
}
}
Équipe HTC Santé
Olivier DELABAS
PSG groupe HTC Santé
Baptiste Jamme
Responsable projet

Équipe de développement
Benjamin Bueno
Chef de Projet
Anthony Aiache
Responsable Client
Grabié Milo
Consultant
YumeSolution
ADIER Didier
Responsable API Backend
OpenInformatique
Dominique MORANO
PDG
OpenInformatique Backend