Référence API
Documentation complète de l'API REST du système de réservation Book By Click.
Projet GitHub : https://github.com/TISEPSE/Book-By-Click.git
URL de base
Développement:
Production:
Format des données
- Content-Type:
application/x-www-form-urlencodedouapplication/jsonselon l'endpoint - Charset: UTF-8
Liste des endpoints disponibles
| Méthode | Endpoint | Description | Content-Type |
|---|---|---|---|
| POST | /register_form |
Inscription utilisateur | form-data |
| POST | /login_form |
Connexion utilisateur | form-data |
| POST | /teste |
Récupérer un utilisateur par nom | form-data |
| POST | /contact |
Envoyer un message de contact | JSON |
| GET | /api/services |
Autocomplétion des services | - |
| GET | /api/villes |
Autocomplétion des villes de France | - |
Endpoints
Authentification
POST /register_form
Inscription d'un nouvel utilisateur.
Content-Type: application/x-www-form-urlencoded
Paramètres (form-data):
| Paramètre | Type | Requis | Description |
|---|---|---|---|
email |
string | Oui | Adresse email de l'utilisateur |
password |
string | Oui | Mot de passe |
nom |
string | Oui | Nom de famille |
Exemple:
curl -X POST http://localhost:5000/register_form \
-d "email=utilisateur@example.com" \
-d "password=motdepasse123" \
-d "nom=Dupont"
Réponse: 200 OK
POST /login_form
Connexion d'un utilisateur existant.
Content-Type: application/x-www-form-urlencoded
Paramètres (form-data):
| Paramètre | Type | Requis | Description |
|---|---|---|---|
email |
string | Oui | Adresse email du compte |
password |
string | Oui | Mot de passe |
Exemple:
curl -X POST http://localhost:5000/login_form \
-d "email=utilisateur@example.com" \
-d "password=motdepasse123"
Réponse: 200 OK
!!! warning "Attention" Cette route retourne actuellement le mot de passe en clair. Elle est en cours de développement et ne doit pas être utilisée en production sans sécurisation appropriée.
Utilisateurs
POST /teste
Récupérer les informations d'un utilisateur par son nom.
Content-Type: application/x-www-form-urlencoded
Paramètres (form-data):
| Paramètre | Type | Requis | Description |
|---|---|---|---|
username |
string | Oui | Nom de l'utilisateur à rechercher |
Exemple:
Réponse: 200 OK
{
"id": 1,
"nom": "Dupont",
"prenom": "Jean",
"dateNaissance": "1990-05-15",
"email": "jean.dupont@example.com",
"motDePasseHash": "$2b$12$...",
"telephone": "0612345678"
}
Erreurs possibles:
| Code | Description |
|---|---|
| 404 | Utilisateur non trouvé |
| 500 | Erreur serveur (base de données indisponible) |
Contact
POST /contact
Envoyer un message de contact par email.
Content-Type: application/json
Paramètres (JSON):
| Paramètre | Type | Requis | Description |
|---|---|---|---|
name |
string | Oui | Nom de la personne |
email |
string | Oui | Email de contact |
phone |
string | Non | Numéro de téléphone (optionnel) |
message |
string | Oui | Message à envoyer |
Exemple:
curl -X POST http://localhost:5000/contact \
-H "Content-Type: application/json" \
-d '{
"name": "Jean Dupont",
"email": "jean.dupont@example.com",
"phone": "0612345678",
"message": "Je souhaite obtenir plus d'\''informations sur vos services."
}'
Réponse: 200 OK
Erreur: 400 Bad Request
Erreur: 500 Internal Server Error
Autocomplétion
GET /api/services
Récupérer la liste des services disponibles avec autocomplétion.
Paramètres de requête (Query):
| Paramètre | Type | Requis | Description |
|---|---|---|---|
q |
string | Non | Terme de recherche pour filtrer les services |
Exemples:
# Sans filtre
curl http://localhost:5000/api/services
# Avec recherche
curl "http://localhost:5000/api/services?q=dev"
Réponse: 200 OK
!!! note
Retourne maximum 20 résultats quand un filtre est appliqué. La liste est chargée depuis /Backend/src/data/services.json.
GET /api/villes
Récupérer la liste des villes de France avec autocomplétion.
Paramètres de requête (Query):
| Paramètre | Type | Requis | Description |
|---|---|---|---|
q |
string | Non | Terme de recherche pour filtrer les villes |
Exemples:
# Sans filtre (100 premières villes)
curl http://localhost:5000/api/villes
# Avec recherche (max 15 résultats)
curl "http://localhost:5000/api/villes?q=par"
Réponse sans filtre: 200 OK
Réponse avec filtre q=par: 200 OK (max 15 résultats)
!!! info "Performance"
- Les villes sont chargées depuis /Backend/src/data/communes-france-avec-polygon-2025.json
- Système de cache global pour optimiser les performances
- Filtrage côté serveur avec startswith() pour des résultats pertinents
Réservations
!!! warning "En cours de développement" Les endpoints suivants sont à implémenter selon le schéma de base de données.
Selon le modèle de base de données (voir Base de données), les endpoints de réservation utiliseront les tables:
reservation: Réservations des clientscreneau: Créneaux horaires disponiblesprestation: Services offerts par les entreprises
Notes techniques
Base de données
L'API utilise PostgreSQL 15 avec SQLAlchemy comme ORM.
Configuration par défaut:
Voir le fichier Backend/src/docker-compose.yml pour la configuration complète.
CORS
CORS est activé sur tous les endpoints via Flask-CORS.
Le système d'envoi d'emails utilise un serveur SMTP configuré via Docker (voir docker-compose.yml).
Configuration Gmail relay: - Host: smtp.gmail.com - Port: 587 - TLS activé
Développement futur
Endpoints à implémenter
Basé sur le schéma de base de données, voici les endpoints qui devraient être implémentés:
Entreprises
GET /api/entreprises- Liste des entreprisesGET /api/entreprises/{id}- Détails d'une entreprisePOST /api/entreprises- Créer une entreprise (pour les gérants)PUT /api/entreprises/{id}- Modifier une entrepriseGET /api/entreprises/{id}/creneaux- Créneaux d'une entreprise
Réservations
GET /api/reservations- Liste des réservationsPOST /api/reservations- Créer une réservationPUT /api/reservations/{id}- Modifier une réservationDELETE /api/reservations/{id}- Annuler une réservation
Prestations
GET /api/prestations- Liste des prestationsGET /api/entreprises/{id}/prestations- Prestations d'une entreprise
Événements
GET /api/evenements- Liste des événementsGET /api/entreprises/{id}/evenements- Événements d'une entreprise