# Le Pain Matinal API Gateway Ce dépôt contient la documentation de l'API Gateway "Le Pain Matinal". Cette documentation a été générée à partir d'une collection Insomnia et comprend une interface Swagger UI pour tester l'API. ## Table des matières - [Vue d'ensemble](#vue-densemble) - [Authentification](#authentification) - [Endpoints disponibles](#endpoints-disponibles) - [Authentification](#endpoints-authentification) - [Administration](#endpoints-administration) - [Autres services](#endpoints-autres-services) - [Utilisation de Swagger UI](#utilisation-de-swagger-ui) - [Scripts de test](#scripts-de-test) ## Vue d'ensemble L'API Gateway "Le Pain Matinal" sert d'interface unifiée pour accéder à différents services backend. L'API est sécurisée via deux mécanismes d'authentification : 1. baseUrl (`baseUrl`) requise pour tous les endpoints 2. Clé API (`x-gateway-key`) requise pour tous les endpoints 3. Authentification par token JWT pour les endpoints protégés ## Authentification ### Clé API Gateway Toutes les requêtes à l'API nécessitent une clé d'API spécifiée dans l'en-tête HTTP `x-gateway-key`. Exemple : ```bash x-gateway-key: xxxxxxxxxxxxx ``` ### Authentification utilisateur Pour les endpoints protégés, un token JWT est également requis dans l'en-tête HTTP `Authorization`. Exemple : ```bash Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... ``` ## Endpoints disponibles ### Endpoints Authentification | Méthode | Endpoint | Description | Authentification | |---------|----------|-------------|------------------| | POST | `/auth/register` | Inscription d'un nouvel utilisateur | x-gateway-key | | POST | `/auth/verify-otp` | Vérification du code OTP | x-gateway-key | | POST | `/auth/activate-account` | Activation du compte | x-gateway-key | | POST | `/auth/login` | Connexion et obtention du token JWT | x-gateway-key | | POST | `/auth/verify-auth` | Vérification du token d'authentification | x-gateway-key + JWT | | POST | `/auth/refresh-token` | Rafraîchissement du token JWT | x-gateway-key + JWT | | POST | `/auth/forgot-password` | Demande de réinitialisation de mot de passe | x-gateway-key | | PUT | `/auth/reset-password` | Réinitialisation du mot de passe | x-gateway-key | ### Endpoints Administration | Méthode | Endpoint | Description | Authentification | |---------|----------|-------------|------------------| | GET | `/admin/logs/filters` | Récupération des logs avec filtres | x-gateway-key + JWT | | GET | `/logs/filters/:id` | Récupération d'un log par son ID | x-gateway-key + JWT | | GET | `/logs/filters/user/:id` | Récupération des logs par utilisateur | x-gateway-key + JWT | | GET | `/admin/x-api-key/find` | Récupération des clés API | x-gateway-key + JWT | ### Autres services | Méthode | Endpoint | Description | Authentification | |---------|----------|-------------|------------------| | GET | `/welcom` | Page d'accueil | x-gateway-key | | GET | `/app/books` | Récupération des livres | x-gateway-key | ## Utilisation de Swagger UI 1. Ouvrez le fichier `index.html` dans votre navigateur 2. Configurez les paramètres d'authentification : - Base URL : URL de base de l'API (ex: http://localhost:3000) - x-gateway-key : Clé d'accès à l'API Gateway - Authorization Token : Token JWT obtenu après connexion 3. Cliquez sur "Authorize" pour appliquer ces paramètres 4. Testez les différents endpoints disponibles ## Scripts de test La collection Insomnia inclut plusieurs scripts de test pour valider les réponses de l'API : ### Inscription (`/auth/register`) Ce script vérifie la réponse 201 et stocke l'email et le code OTP pour les étapes suivantes. ### Connexion (`/auth/login`) Ce script vérifie la réponse 200 et stocke les tokens d'authentification et de rafraîchissement. ### Rafraîchissement du token (`/auth/refresh-token`) Ce script vérifie la réponse 200 et met à jour le token d'authentification stocké. ## Workflow d'authentification 1. **Inscription** - Endpoint: `/auth/register` - Fournir email, mot de passe et rôle - Récupérer le code OTP 2. **Vérification OTP** - Endpoint: `/auth/verify-otp` - Fournir email et code OTP 3. **Activation du compte** - Endpoint: `/auth/activate-account` - Fournir email et code OTP 4. **Connexion** - Endpoint: `/auth/login` - Fournir email et mot de passe - Récupérer les tokens d'authentification et de rafraîchissement 5. **Utilisation des endpoints protégés** - Inclure le token JWT dans l'en-tête d'autorisation 6. **Rafraîchissement du token** - Endpoint: `/auth/refresh-token` - Fournir email et token de rafraîchissement - Récupérer un nouveau token JWT