API LogeBenin
Guide Exhaustif pour l'Intégration Frontend
🛠 Informations Générales
Ce guide fournit toutes les spécifications techniques nécessaires pour intégrer l'API LogeBenin.
- Base URL (Local):
http://localhost:8000/api - Base URL (Production):
https://api.logebenin.com/api - Langue: Header
X-Locale: fr(défaut) ouen. - Headers obligatoires:
Accept: application/jsonContent-Type: application/jsonX-Locale: fr(Optionnel)
🔐 Authentification & Profil
L'authentification repose sur des tokens JWT sécurisés. Le token doit être envoyé dans le header Authorization: Bearer {token}.
1. Inscription
POST /auth/register
Description: Crée un nouveau compte utilisateur.
{
"firstname": "John",
"lastname": "Doe",
"username": "johndoe",
"email": "john@example.com",
"msisdn": "+22997000000",
"password": "SecretPassword123!",
"password_confirmation": "SecretPassword123!"
}
201 Created: Email de vérification envoyé.
422 Unprocessable Entity: Erreur de validation.
2. Vérification d'Email
GET /auth/register/verify/{token}
Description: Active le compte via le lien reçu par email.
200 OK: Compte activé avec succès.
3. Connexion
POST /auth/login
{
"email": "john@example.com",
"password": "SecretPassword123!"
}
200 OK: Retourne access_token, token_type, expires_in et l'objet user.
401 Unauthorized: Identifiants incorrects.
403 Forbidden: Compte non activé.
4. Rafraîchissement du Token
POST /auth/refresh
Auth: Bearer Token obligatoire.
200 OK: Nouveau token généré.
5. Mot de Passe Oublié (Flux OTP)
POST /auth/forgot-password (Body: {"email": "..."})
POST /auth/verify-reset-password-otp (Body: {"email": "...", "otp": "..."})
POST /auth/reset-password (Body: {"reset_token": "...", "password": "..."})
6. Session Utilisateur (Me)
GET /user
Description: Retourne les informations de l'utilisateur connecté.
Auth: Bearer Token obligatoire.
7. Gestion du Profil
PUT /profile
Description: Met à jour les informations de base (firstname, lastname, language, etc.).
POST /change-password
{
"current_password": "...",
"new_password": "...",
"new_password_confirmation": "..."
}
8. Social Auth
GET /auth/google/url: Récupère l'URL de connexion Google.
GET /auth/apple: Flux d'authentification Apple.
9. Déconnexion
POST /auth/logout
Auth: Bearer Token obligatoire.
200 OK: Token révoqué.
🌍 Gestion Multi-Langues
Les champs traduisibles sont des objets JSON. Vous devez toujours envoyer et recevoir l'objet complet pour préserver les traductions.
"title": {
"fr": "Villa de Luxe",
"en": "Luxury Villa"
}
✨ Caractéristiques (Features)
Gérez les équipements des propriétés (Piscine, Garage, etc.).
GET /features: Liste toutes les caractéristiques.
POST /features: Créer une caractéristique.
GET /features/{id}: Détails d'une caractéristique.
PUT /features/{id}: Modifier une caractéristique.
DELETE /features/{id}: Supprimer une caractéristique.
🏡 Module Propriétés
1. Liste & Filtres Avancés
GET /properties
| Paramètre | Type | Valeurs / Description |
|---|---|---|
| transaction_type | String | louer, acheter |
| category | String | résidentiel, commercial, terrain |
| type | String | Type spécifique (ex: Appartement, Villa) |
| city | String | Filtrer par ville |
| min_price / max_price | Number | Gamme de prix |
| min_surface / max_surface | Number | Surface en m² |
| bedrooms | Integer | Nombre min de chambres |
| bathrooms | Integer | Nombre min de salles de bain |
| features[] | Array | Tableau de noms de caractéristiques |
| sort_by | String | price_asc, price_desc, date_desc, date_asc |
200 OK: Liste paginée d'objets Propriétés.
2. Filtrer par ID de Caractéristiques
GET /properties/filter-by-features
Paramètre: featuresIds (Liste de UUID séparés par des virgules).
3. Détails d'une Propriété
GET /properties/{id}
200 OK: Retourne l'objet complet de la propriété.
4. Recherche Globale
GET /properties/search?q={query}
Description: Recherche par mot-clé dans les titres, villes et quartiers.
4. Création & Modification
POST /properties
PUT /properties/{id}
{
"property_type_id": "UUID",
"transaction_type": "BUY",
"category_id": "UUID",
"title": { "fr": "...", "en": "..." },
"price": 150000,
"currency": "XOF",
"surface": 85,
"city": "Cotonou",
"address": "Fidjrossè",
"status": "ACTIVE"
}
Auth: Bearer Token obligatoire.
📸 Gestion des Images
POST /properties/{id}/images
Format: multipart/form-data (image, is_main, position)
PATCH /property-images/{id}/set-main
Description: Définit une image comme image principale.
PATCH /property-images/reorder
Description: Réordonne les images via un tableau d'objets {id, position}.
DELETE /property-images/{id}
⭐ Favoris
Gérez les propriétés favorites de l'utilisateur.
GET /favorites: Liste des favoris (paginée).
POST /favorites: Ajouter aux favoris (Body: {"property_id": "UUID"}).
POST /favorites/toggle: Toggle favori.
DELETE /favorites/{property_id}: Retirer des favoris.
GET /favorites/check/{property_id}: Vérifie si une propriété est en favori.
💾 Recherches Sauvegardées
Permet aux utilisateurs de sauvegarder leurs filtres de recherche et d'activer des alertes.
GET /saved-searches: Liste les recherches sauvegardées.
POST /saved-searches: Créer une recherche sauvegardée.
DELETE /saved-searches/{id}: Supprimer.
📂 Catégories & Types
Récupérez les structures de données pour les formulaires et filtres.
GET /categories: Liste des catégories (Résidentiel, etc.).
GET /property-types: Liste des types (Appartement, Villa, etc.).
📄 Pages Statiques
Contenu géré via le CMS (À propos, CGU, etc.).
GET /static-pages: Liste toutes les pages.
POST /static-pages: Créer une page (Admin).
GET /static-pages/{slug}: Détails d'une page.
PUT /static-pages/{slug}: Modifier une page (Admin).
DELETE /static-pages/{slug}: Supprimer une page (Admin).
🔔 Notifications
Gérez les notifications push, base de données et SMS.
GET /notifications-sms: Liste des notifications utilisateur.
POST /notifications-sms: Envoyer une notification (Interne/Admin).
📧 Contact & Feedback
Formulaires de contact et systèmes de retour utilisateur.
POST /contacts: Formulaire de contact (Vente, Support, Expert).
POST /feedback: Envoyer un feedback ou signaler un bug.
🚨 Codes Erreurs
| Code | Signification | Description |
|---|---|---|
| 200/201 | Success | Requête traitée avec succès. |
| 401 | Unauthenticated | Token invalide, manquant ou expiré. |
| 403 | Forbidden | Accès refusé ou compte non activé/vérifié. |
| 404 | Not Found | La ressource demandée n'existe pas. |
| 422 | Validation Error | Données transmises invalides (renvoie un objet errors). |
| 500 | Server Error | Erreur interne du serveur. |
🛠 Outils Pratiques
- Swagger UI: Accédez à
/api/documentationpour tester l'API interactivement. - Debug OTP: En local, les codes OTP sont visibles dans
storage/logs/laravel.log. - JWT: Utilisez jwt.io pour décoder vos tokens.