🚀 API Documentation

Association étudiante BDA-Igensia

Version 1.0.0
Environnement: [object Object]

📋 Informations gĂ©nĂ©rales

Base URL

http://www.api.bda-igensia-lyon.fr/api

Format de réponse

application/json

🔐 Authentification

SystÚme d'authentification par JWT avec sécurité renforcée

En-tĂȘtes requis

Authorization: Bearer <votre-token-jwt>
Content-Type: application/json

Fonctionnalités de sécurité

  • Tokens JWT avec expiration configurable
  • Cookies httpOnly pour stockage sĂ©curisĂ©
  • Rate limiting sur les tentatives de connexion
  • Hachage des mots de passe avec bcrypt + salt + pepper
  • Validation de la force des mots de passe
  • Protection contre les mots de passe communs

RĂŽles utilisateur

member

Utilisateur standard

admin

Administrateur avec droits de gestion

superadmin

Super administrateur avec tous les droits

📡 Gestion de l'authentification et des utilisateurs

Base URL: /auth

POST /auth/register Public
Inscription d'un nouvel utilisateur
Corps de la requĂȘte
username: string (requis)
email: string (requis)
password: string (requis, min 8 caractĂšres)
first_name: string (requis)
last_name: string (requis)
Réponse
Token JWT + informations utilisateur
POST /auth/login Public
Connexion d'un utilisateur
Rate Limiting
5 tentatives par 2 minutes
Corps de la requĂȘte
email: string (requis)
password: string (requis)
Réponse
Token JWT + informations utilisateur
POST /auth/logout Public
Déconnexion d'un utilisateur
Réponse
Message de confirmation
GET /auth/profile Auth requise
Récupérer le profil de l'utilisateur connecté
Réponse
Informations du profil utilisateur
PUT /auth/profile Auth requise
Mettre à jour le profil de l'utilisateur connecté
Corps de la requĂȘte
first_name: string (optionnel)
last_name: string (optionnel)
username: string (optionnel)
Réponse
Profil utilisateur mis Ă  jour

📡 Gestion des utilisateurs (accùs administrateur requis)

Base URL: /users

GET /users/ Auth requise admin
Récupérer la liste des utilisateurs
ParamĂštres de requĂȘte
role: string (optionnel) - filtrer par rĂŽle
limit: number (optionnel, défaut: 20)
offset: number (optionnel, défaut: 0)
Réponse
Liste paginée des utilisateurs
GET /users/:id Auth requise admin
Récupérer un utilisateur spécifique
Réponse
Informations de l'utilisateur
PUT /users/:id Auth requise admin
Mettre Ă  jour un utilisateur
Corps de la requĂȘte
username: string (optionnel)
email: string (optionnel)
first_name: string (optionnel)
last_name: string (optionnel)
role: string (optionnel)
password: string (optionnel)
Réponse
Utilisateur mis Ă  jour
DELETE /users/:id Auth requise superadmin
Supprimer un utilisateur
Réponse
Message de confirmation
GET /users/stats/overview Auth requise admin
Statistiques des utilisateurs
Réponse
Statistiques par rĂŽle et total

📡 Gestion des Ă©vĂ©nements

Base URL: /events

GET /events/ Public
Récupérer la liste des événements
ParamĂštres de requĂȘte
category: string (optionnel)
status: string (optionnel)
limit: number (optionnel)
offset: number (optionnel)
Réponse
Liste paginée des événements
GET /events/:id Public
Récupérer un événement spécifique
Réponse
Détails de l'événement
POST /events/ Auth requise admin
Créer un nouvel événement
Corps de la requĂȘte
title: string (requis)
description: string (requis)
date: datetime (requis)
location: string (requis)
category: string (requis)
status: string (optionnel, défaut: 'draft')
helloasso_link: string (optionnel)
Réponse
ÉvĂ©nement créé
PUT /events/:id Auth requise admin
Mettre à jour un événement
Réponse
ÉvĂ©nement mis Ă  jour
DELETE /events/:id Auth requise admin
Supprimer un événement
Réponse
Message de confirmation

📡 Gestion des articles de presse

Base URL: /news

GET /news/ Public
Récupérer la liste des articles
ParamĂštres de requĂȘte
category: string (optionnel)
status: string (optionnel)
limit: number (optionnel)
offset: number (optionnel)
Réponse
Liste paginée des articles
GET /news/:id Public
Récupérer un article spécifique
Réponse
Détails de l'article
POST /news/ Auth requise admin
Créer un nouvel article
Corps de la requĂȘte
title: string (requis)
content: string (requis)
summary: string (requis)
category: string (requis)
status: string (optionnel, défaut: 'draft')
Réponse
Article créé
PUT /news/:id Auth requise admin
Mettre Ă  jour un article
Réponse
Article mis Ă  jour
DELETE /news/:id Auth requise admin
Supprimer un article
Réponse
Message de confirmation

📡 Gestion des galeries photo

Base URL: /galleries

GET /galleries/ Public
Récupérer la liste des galeries
Réponse
Liste des galeries
GET /galleries/:id Public
Récupérer une galerie spécifique
Réponse
Détails de la galerie et ses photos
POST /galleries/ Auth requise admin
Créer une nouvelle galerie
Réponse
Galerie créée
PUT /galleries/:id Auth requise admin
Mettre Ă  jour une galerie
Réponse
Galerie mise Ă  jour
DELETE /galleries/:id Auth requise admin
Supprimer une galerie
Réponse
Message de confirmation

📡 Gestion des membres du bureau

Base URL: /bureaus

GET /bureaus/ Public
Récupérer la liste des membres du bureau
Réponse
Liste des membres du bureau
POST /bureaus/ Auth requise admin
Ajouter un membre au bureau
Corps de la requĂȘte
name: string (requis)
position: string (requis)
bio: string (optionnel)
photo_url: string (optionnel)
Réponse
Membre ajouté
PUT /bureaus/:id Auth requise admin
Mettre Ă  jour un membre du bureau
Réponse
Membre mis Ă  jour
DELETE /bureaus/:id Auth requise admin
Supprimer un membre du bureau
Réponse
Message de confirmation

📡 Gestion des messages de contact

Base URL: /contact

POST /contact/ Public
Envoyer un message de contact
Rate Limiting
5 messages par 15 minutes
Corps de la requĂȘte
name: string (requis)
email: string (requis)
subject: string (requis)
message: string (requis)
Réponse
Message envoyé
GET /contact/ Auth requise admin
Récupérer les messages de contact
Réponse
Liste des messages
PUT /contact/:id/read Auth requise admin
Marquer un message comme lu
Réponse
Message marqué comme lu

📡 Gestion des fichiers uploadĂ©s

Base URL: /upload

POST /upload/image Auth requise admin
Uploader une image
Corps de la requĂȘte
image: file (requis) - formats: jpeg, png, gif, webp
maxSize: 10MB
Réponse
URL de l'image uploadée
POST /upload/file Auth requise admin
Uploader un fichier
Corps de la requĂȘte
file: file (requis)
maxSize: 10MB
Réponse
URL du fichier uploadé

📡 Outils d'administration avancĂ©s

Base URL: /admin

POST /admin/generate-password Auth requise admin
Générer un mot de passe sécurisé
Corps de la requĂȘte
length: number (optionnel, défaut: 12, min: 8, max: 50)
Réponse
Mot de passe généré + score de sécurité
POST /admin/validate-password Auth requise admin
Valider la force d'un mot de passe
Corps de la requĂȘte
password: string (requis)
Réponse
Score de sécurité + recommandations
POST /admin/reset-user-password/:userId Auth requise admin
Réinitialiser le mot de passe d'un utilisateur
Corps de la requĂȘte
newPassword: string (optionnel)
generateRandom: boolean (optionnel)
Réponse
Nouveau mot de passe (si généré automatiquement)
GET /admin/security-status Auth requise admin
Vérifier le statut de sécurité du systÚme
Réponse
Informations sur la configuration de sécurité

đŸ›Ąïž SĂ©curitĂ© & Rate Limiting

Rate Limiting

  • Global: 100 requĂȘtes par 15 minutes par IP
  • Connexion: 5 tentatives de connexion par 2 minutes par IP
  • Contact: 5 messages par 15 minutes par IP

Sécurité des mots de passe

  • Longueur minimale: 8 caractĂšres
  • Au moins une lettre majuscule
  • Au moins une lettre minuscule
  • Au moins un chiffre
  • Au moins un caractĂšre spĂ©cial
  • Pas de mots de passe communs
  • Hachage: bcrypt + salt automatique + pepper global

⚠ Gestion des erreurs

Codes de statut HTTP

200: SuccĂšs
201: Créé avec succÚs
400: Erreur de validation / RequĂȘte malformĂ©e
401: Non authentifié
403: Permission insuffisante
404: Ressource non trouvée
409: Conflit (ressource déjà existante)
429: Trop de requĂȘtes (rate limit atteint)
500: Erreur serveur interne

Format standard des erreurs

{ "message": "Description de l'erreur", "details": "Détails supplémentaires (optionnel)", "field": "Champ concerné (pour erreurs de validation)" }

🔧 Environnement systùme

Configuration actuelle

  • Environnement: production
  • Base de donnĂ©es: MySQL
  • Cache: Redis
  • Taille max fichier: 10485760

Santé de l'API

Vérifiez le statut en temps réel :

GET http://www.api.bda-igensia-lyon.fr/api/health