Skip to content

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:

http://localhost:5000

Production:

https://api.book-by-click.example.com

Format des données

  • Content-Type: application/x-www-form-urlencoded ou application/json selon 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

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

{
  "email": "utilisateur@example.com",
  "password": "motdepasse123"
}

!!! 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:

curl -X POST http://localhost:5000/teste \
  -d "username=Dupont"

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

{
  "success": true,
  "message": "Votre message a été envoyé avec succès !"
}

Erreur: 400 Bad Request

{
  "success": false,
  "error": "Tous les champs sont requis"
}

Erreur: 500 Internal Server Error

{
  "success": false,
  "error": "Erreur lors de l'envoi du message"
}


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

[
  "Développement Web",
  "Développement Mobile",
  "Développement Logiciel",
  ...
]

!!! 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

[
  "Paris",
  "Marseille",
  "Lyon",
  "Toulouse",
  ...
]

Réponse avec filtre q=par: 200 OK (max 15 résultats)

[
  "Paris",
  "Paray-le-Monial",
  "Paray-Vieille-Poste",
  "Parcay-Meslay",
  ...
]

!!! 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 clients
  • creneau: Créneaux horaires disponibles
  • prestation: Services offerts par les entreprises

Notes techniques

Base de données

L'API utilise PostgreSQL 15 avec SQLAlchemy comme ORM.

Configuration par défaut:

postgresql://appuser:apppassword@localhost:5432/appdb

Voir le fichier Backend/src/docker-compose.yml pour la configuration complète.

CORS

CORS est activé sur tous les endpoints via Flask-CORS.

Email

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 entreprises
  • GET /api/entreprises/{id} - Détails d'une entreprise
  • POST /api/entreprises - Créer une entreprise (pour les gérants)
  • PUT /api/entreprises/{id} - Modifier une entreprise
  • GET /api/entreprises/{id}/creneaux - Créneaux d'une entreprise

Réservations

  • GET /api/reservations - Liste des réservations
  • POST /api/reservations - Créer une réservation
  • PUT /api/reservations/{id} - Modifier une réservation
  • DELETE /api/reservations/{id} - Annuler une réservation

Prestations

  • GET /api/prestations - Liste des prestations
  • GET /api/entreprises/{id}/prestations - Prestations d'une entreprise

Événements

  • GET /api/evenements - Liste des événements
  • GET /api/entreprises/{id}/evenements - Événements d'une entreprise

Ressources