🔌 API Reference - Vue d'ensemble
FreeTrade expose une API REST complète avec 163 endpoints organisés en modules logiques pour une utilisation intuitive.
🎯 Caractéristiques de l'API
Standards respectés
- REST : Architecture RESTful avec verbes HTTP appropriés
- JSON : Format d'échange standardisé
- HTTP Status Codes : Codes de statut sémantiques
- Pagination : Pagination standardisée sur toutes les listes
- Filtering : Filtres avancés et recherche textuelle
Authentification
- JWT Bearer Token : Authentification sécurisée
- Cache intelligent : Performance optimisée
- Gestion des erreurs : Messages d'erreur explicites
- Audit trail : Traçabilité complète
📊 Structure de l'API
Base URL
https://api.freetrade.cm
# ou en développement
http://localhost:3004
Format de réponse standardisé
Réponse de succès
{
"success": true,
"message": "Opération réussie",
"result": {
"data": [...],
"meta": {
"total": 100,
"current_page": 1,
"total_pages": 10,
"limit": 10
}
},
"errors": null,
"except": null
}
Réponse d'erreur
{
"success": false,
"message": "Message d'erreur descriptif",
"result": null,
"errors": ["Détails des erreurs de validation"],
"except": "Exception technique (si applicable)"
}
🔐 Authentification
Obtenir un token
POST /auth/login
Content-Type: application/json
{
"username": "user@example.com",
"password": "password123"
}
Utiliser le token
Authorization: Bearer <access_token>
Endpoints d'authentification
POST /auth/login- Connexion utilisateurGET /auth/profile- Profil utilisateur authentifié
📋 Modules disponibles
👨💼 Modules Admin (115 endpoints)
👥 Actors (25 endpoints)
Gestion centralisée des acteurs du système
- Admins :
/admin/actors/admins/* - Agents :
/admin/actors/agents/* - Customers :
/admin/actors/customers/* - Statistiques :
/admin/actors/stats
👤 Users (12 endpoints)
Gestion des utilisateurs et sessions
- CRUD :
/admin/users/* - Sessions :
/admin/users/sessions/* - Mots de passe :
/admin/users/{id}/password
🏢 Organizations (5 endpoints)
Gestion des organisations
- CRUD :
/admin/organizations/* - Hiérarchie : Support parent-enfant
📋 Complaints (9 endpoints)
Système de gestion des plaintes
- CRUD :
/admin/complaints/* - Statistiques :
/admin/complaints/stats - Statuts :
/admin/complaints/{id}/status
🚛 Transports (8 endpoints)
Gestion des transports et véhicules
- CRUD :
/admin/transports/* - Attribution :
/admin/transports/{id}/assign-customer - Statistiques :
/admin/transports/stats
💬 Forum (6 endpoints)
Modération du forum communautaire
- Messages signalés :
/admin/forum/reported-messages/* - Modération :
/admin/forum/*/moderate - Statistiques :
/admin/forum/stats
⚙️ Configurations (42 endpoints)
Gestion centralisée des configurations
- Catégories :
/admin/configurations/categories/* - Types de plaintes :
/admin/configurations/complaint-types/* - Rôles :
/admin/configurations/roles/* - Tags :
/admin/configurations/tags/* - Types de véhicules :
/admin/configurations/vehicle-types/* - Pays/États :
/admin/configurations/countries/*,/admin/configurations/states/*
📢 Announcements (8 endpoints)
Gestion des annonces système
- CRUD :
/admin/announcements/* - Publication :
/admin/announcements/{id}/publish - Actions en lot :
/admin/announcements/bulk-action
🚀 Modules Trade (46 endpoints)
📋 Trade Complaints (8 endpoints)
Plaintes côté utilisateur
- CRUD :
/trade/complaints/* - Types :
/trade/complaints/types - Upload :
/trade/complaints/upload
🚛 Trade Transports (7 endpoints)
Création et gestion des transports
- CRUD :
/trade/transports/* - Types de véhicules :
/trade/transports/vehicle-types - Upload :
/trade/transports/upload
💬 Trade Forum (21 endpoints)
Forum communautaire complet
- Topics :
/trade/forum/topics/* - Messages :
/trade/forum/messages/* - Catégories :
/trade/forum/categories/* - Tags :
/trade/forum/tags/* - Interactions : Likes, signalements
📢 Trade Announcements (5 endpoints)
Annonces utilisateur
- CRUD :
/trade/announcements/*
📚 Trade Tutorials (5 endpoints)
Tutoriels et guides
- CRUD :
/trade/tutorials/*
🔍 Paramètres de requête communs
Pagination
GET /admin/users?page=1&limit=10
Recherche
GET /admin/users?search=john
Filtres
GET /admin/complaints?status=PENDING&countryId=1&startDate=2024-01-01
Tri
GET /admin/announcements?sortBy=createdAt&sortOrder=DESC
📝 Exemples d'utilisation
Créer un utilisateur
curl -X POST http://localhost:3004/admin/users \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"username": "john.doe",
"email": "john@example.com",
"firstName": "John",
"lastName": "Doe",
"password": "password123",
"confirmPassword": "password123",
"roleId": 1
}'
Lister les transports avec filtres
curl -H "Authorization: Bearer $TOKEN" \
"http://localhost:3004/admin/transports?page=1&limit=5&vehicleTypeId=1&loadingPoint=Douala"
Créer une plainte
curl -X POST http://localhost:3004/trade/complaints \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"transportId": 123,
"complaintTypeId": 1,
"label": "Retard de livraison",
"description": "Transport en retard de 3 heures",
"location": "Yaoundé"
}'
🚨 Gestion des erreurs
Codes de statut HTTP
- 200 OK : Opération réussie
- 201 CREATED : Ressource créée
- 400 BAD REQUEST : Données invalides
- 401 UNAUTHORIZED : Non authentifié
- 403 FORBIDDEN : Accès refusé
- 404 NOT FOUND : Ressource non trouvée
- 409 CONFLICT : Conflit (ex: email déjà utilisé)
- 500 INTERNAL SERVER ERROR : Erreur serveur
Exemples d'erreurs
Erreur de validation
{
"success": false,
"message": "Données de validation invalides",
"errors": [
"email must be an email",
"password must be longer than or equal to 6 characters"
]
}
Erreur d'authentification
{
"success": false,
"message": "Token invalide ou expiré",
"errors": ["UNAUTHORIZED"]
}
📊 Limites et quotas
Rate Limiting
- Authentifié : 1000 requêtes/heure
- Non authentifié : 100 requêtes/heure
- Admin : 5000 requêtes/heure
Taille des requêtes
- JSON : 10 MB maximum
- Upload de fichiers : 50 MB maximum
- Pagination : 100 éléments maximum par page
🔧 Outils de développement
Collection Postman
Téléchargez la collection complète : FreeTrade API Collection
SDK et clients
- JavaScript/TypeScript : Client officiel disponible
- Python : Wrapper en développement
- cURL : Exemples dans chaque section
Environnements
- Développement :
http://localhost:3004 - Staging :
https://staging-api.freetrade.cm - Production :
https://api.freetrade.cm
Explorez les sections détaillées :