https://github.com/yabafre/take-flight-api
API Nest for search travel by AI Agent
https://github.com/yabafre/take-flight-api
amadeus-api axios currency-converter express google-api nestjs openai passport-jwt passportjs prisma supabase typescript
Last synced: 3 months ago
JSON representation
API Nest for search travel by AI Agent
- Host: GitHub
- URL: https://github.com/yabafre/take-flight-api
- Owner: yabafre
- Created: 2024-05-13T01:12:45.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2025-05-12T06:36:47.000Z (about 1 year ago)
- Last Synced: 2025-05-12T07:38:23.687Z (about 1 year ago)
- Topics: amadeus-api, axios, currency-converter, express, google-api, nestjs, openai, passport-jwt, passportjs, prisma, supabase, typescript
- Language: TypeScript
- Homepage:
- Size: 81.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Une API qui s'intègre avec Supabase pour l'authentification, tout en utilisant des webhooks et l'ID token de Supabase pour gérer les autorisations au niveau de l'API, nous allons revoir la configuration des endpoints en mettant l'accent sur le fait que l'authentification est gérée côté client, et non par l'API elle-même.
### Gestion des Utilisateurs via Webhook
1. **Webhook pour la synchronisation des utilisateurs**:
- **POST /webhooks/supabase/users** : Endpoint qui recevra des notifications de Supabase lorsque des utilisateurs sont créés, mis à jour, ou supprimés. Cet endpoint traitera ces événements pour mettre à jour la base de données locale de votre API en fonction des informations d'utilisateur provenant de Supabase.
### Utilisation de l'ID Token pour l'Authentification dans l'API
L'API doit valider l'ID Token de Supabase envoyé par le client pour chaque requête nécessitant une authentification, avec un middleware d'authentification dans l'API qui effectue les opérations suivantes :
- Extraire l'ID Token du header `Authorization` des requêtes entrantes.
- Valider l'ID Token avec le service approprié de Supabase pour s'assurer qu'il est valide et récupérer les informations de l'utilisateur associé.
- Autoriser l'accès aux endpoints sécurisés si le token est valide, ou renvoyer une erreur si ce n'est pas le cas.
### Endpoints de l'API
Voici les endpoints révisés sans les fonctionnalités de connexion et d'inscription, en assumant que ces opérations sont gérées par Supabase :
- **GET /users/profile** : Récupérer le profil de l'utilisateur connecté, utilisant l'ID Token pour l'authentification.
- **PUT /users/profile** : Mettre à jour le profil utilisateur.
- **GET /users/preferences** : Obtenir les préférences de l'utilisateur.
- **POST /users/preferences** : Enregistrer ou mettre à jour les préférences d'un utilisateur.
- **GET /users/bookings** : Lister toutes les réservations de l'utilisateur.
- **GET /users/favorites** : Lister les favoris de l'utilisateur.
### Recherche et Planification
- **POST /search/flights** : Recherche de vols selon des critères spécifiques.
- **POST /search/hotels** : Recherche d'hôtels.
- **POST /search/activities** : Recherche d'activités dans une destination donnée.
- **POST /search/all-inclusive** : Recherche personnalisée tout inclus avec des recommandations basées sur des critères multiples.
### Réservations et Gestion des Itinéraires
- **POST /bookings** : Créer une nouvelle réservation comprenant vols, hôtels, et activités.
- **GET /bookings/{id}** : Récupérer les détails d'une réservation spécifique.
- **DELETE /bookings/{id}** : Annuler une réservation existante.
### Paiements
- **POST /payments/initialize** : Initialiser un paiement pour une réservation.
- **POST /payments/verify** : Vérifier le statut d'un paiement après son initiation.
### Points de Fidélité et Offres
- **GET /loyalty/points** : Afficher les points de fidélité de l'utilisateur.
- **POST /loyalty/redeem** : Utiliser les points de fidélité pour obtenir des réductions ou autres avantages.
### Favoris et Historique
- **POST /favorites** : Ajouter une destination, un hôtel ou une activité aux favoris.
- **DELETE /favorites/{id}** : Retirer un élément des favoris.
- **GET /history/searches** : Lister l'historique des recherches de l'utilisateur.
Utiliser efficacement Supabase pour la gestion de l'authentification et de synchroniser les données des utilisateurs entre Supabase et la base de données locale via des webhooks, tout en sécurisant l'accès aux fonctionnalités de l'API à l'aide de l'ID Token.