# Exemples d'Utilisation de l'API Akompta ## 🔐 Authentification ### Inscription (Compte Personnel) ```bash curl -X POST http://localhost:8000/api/auth/register/ \ -H "Content-Type: application/json" \ -d '{ "email": "user@example.com", "password": "SecurePass123!", "password2": "SecurePass123!", "first_name": "John", "last_name": "Doe", "phone_number": "+22890123456", "account_type": "personal", "agreed": true }' ``` **Réponse :** ```json { "user": { "id": 1, "email": "user@example.com", "first_name": "John", "last_name": "Doe", "account_type": "personal", "is_premium": false }, "tokens": { "refresh": "eyJ0eXAiOiJKV1QiLCJhbGc...", "access": "eyJ0eXAiOiJKV1QiLCJhbGc..." } } ``` ### Inscription (Compte Business) ```bash curl -X POST http://localhost:8000/api/auth/register/ \ -H "Content-Type: application/json" \ -d '{ "email": "business@example.com", "password": "SecurePass123!", "password2": "SecurePass123!", "first_name": "Jane", "last_name": "Smith", "phone_number": "+22890987654", "account_type": "business", "business_name": "AgriTech Solutions", "sector": "Agriculture", "location": "Lomé, Togo", "ifu": "1234567890123", "agreed": true, "businessAgreed": true }' ``` ### Connexion ```bash curl -X POST http://localhost:8000/api/auth/login/ \ -H "Content-Type: application/json" \ -d '{ "email": "user@example.com", "password": "SecurePass123!" }' ``` ### Rafraîchir le Token ```bash curl -X POST http://localhost:8000/api/auth/token/refresh/ \ -H "Content-Type: application/json" \ -d '{ "refresh": "eyJ0eXAiOiJKV1QiLCJhbGc..." }' ``` ### Récupérer le Profil ```bash curl -X GET http://localhost:8000/api/auth/me/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" ``` ### Modifier le Profil ```bash curl -X PATCH http://localhost:8000/api/auth/me/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "phone_number": "+22890999888", "dark_mode": true }' ``` ### Changer le Mot de Passe ```bash curl -X POST http://localhost:8000/api/auth/change-password/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "old_password": "SecurePass123!", "new_password": "NewSecurePass456!", "new_password2": "NewSecurePass456!" }' ``` ## 📦 Produits ### Créer un Produit ```bash curl -X POST http://localhost:8000/api/products/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Tomates", "description": "Tomates fraîches de qualité", "price": "800.00", "unit": "Kg", "category": "vente", "stock_status": "ok" }' ``` ### Créer un Produit avec Image ```bash curl -X POST http://localhost:8000/api/products/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -F "name=Tomates" \ -F "description=Tomates fraîches" \ -F "price=800.00" \ -F "unit=Kg" \ -F "category=vente" \ -F "stock_status=ok" \ -F "image=@/path/to/image.jpg" ``` ### Lister les Produits ```bash # Tous les produits curl -X GET http://localhost:8000/api/products/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" # Filtrer par catégorie curl -X GET "http://localhost:8000/api/products/?category=vente" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" # Rechercher curl -X GET "http://localhost:8000/api/products/?search=tomate" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" # Pagination curl -X GET "http://localhost:8000/api/products/?page=2" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" ``` ### Modifier un Produit ```bash curl -X PUT http://localhost:8000/api/products/1/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Tomates Premium", "price": "1000.00", "stock_status": "low" }' ``` ### Supprimer un Produit ```bash curl -X DELETE http://localhost:8000/api/products/1/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" ``` ### Exporter les Produits en CSV ```bash curl -X GET http://localhost:8000/api/products/export/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -o products.csv ``` ## 💰 Transactions ### Créer une Transaction ```bash curl -X POST http://localhost:8000/api/transactions/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Vente de tomates", "amount": "5000.00", "type": "income", "category": "Ventes", "date": "2024-11-27T10:30:00Z", "currency": "FCFA" }' ``` ### Lister les Transactions ```bash # Toutes les transactions curl -X GET http://localhost:8000/api/transactions/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" # Filtrer par type curl -X GET "http://localhost:8000/api/transactions/?type=income" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" # Filtrer par période curl -X GET "http://localhost:8000/api/transactions/?date_range=week" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" # Trier par date décroissante curl -X GET "http://localhost:8000/api/transactions/?ordering=-date" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" # Rechercher curl -X GET "http://localhost:8000/api/transactions/?search=vente" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" ``` ### Résumé des Transactions (Dashboard) ```bash curl -X GET http://localhost:8000/api/transactions/summary/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" ``` **Réponse :** ```json { "balance": "125000.00", "income_24h": "15000.00", "expenses_24h": "8000.00", "income_variation": 12.5, "expenses_variation": -5.3 } ``` ## 📊 Analytics ### Overview (Graphique en Barres) ```bash curl -X GET http://localhost:8000/api/analytics/overview/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" ``` **Réponse :** ```json [ { "month": "Oct 2024", "income": "85000.00", "expenses": "45000.00" }, { "month": "Nov 2024", "income": "120000.00", "expenses": "65000.00" } ] ``` ### Breakdown (Graphique Camembert) ```bash curl -X GET http://localhost:8000/api/analytics/breakdown/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" ``` **Réponse :** ```json [ { "category": "Transport", "amount": "25000.00", "percentage": 38.5 }, { "category": "Loyer", "amount": "40000.00", "percentage": 61.5 } ] ``` ### KPIs ```bash curl -X GET http://localhost:8000/api/analytics/kpi/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" ``` **Réponse :** ```json { "average_basket": "12500.00", "estimated_mrr": "120000.00", "cac": "5000.00" } ``` ## 🎯 Budgets ### Créer un Budget ```bash curl -X POST http://localhost:8000/api/budgets/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "category": "Transport", "limit": "50000.00", "color": "#3B82F6" }' ``` ### Lister les Budgets ```bash curl -X GET http://localhost:8000/api/budgets/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" ``` **Réponse :** ```json { "count": 3, "results": [ { "id": 1, "category": "Transport", "limit": "50000.00", "color": "#3B82F6", "spent_amount": "32500.00", "percentage": 65.0 } ] } ``` ### Modifier un Budget ```bash curl -X PUT http://localhost:8000/api/budgets/1/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "limit": "75000.00" }' ``` ### Supprimer un Budget ```bash curl -X DELETE http://localhost:8000/api/budgets/1/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" ``` ## 📢 Annonces ### Lister les Annonces (Public) ```bash curl -X GET http://localhost:8000/api/ads/ ``` ### Créer une Annonce ```bash curl -X POST http://localhost:8000/api/ads/ \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -F "product_name=Engrais Bio" \ -F "owner_name=FertiTogo" \ -F "description=Engrais biologique de qualité" \ -F "whatsapp=+22890123456" \ -F "location=Lomé, Togo" \ -F "website=https://fertitogo.com" \ -F "image=@/path/to/image.jpg" ``` ### Rechercher des Annonces ```bash curl -X GET "http://localhost:8000/api/ads/?search=engrais" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" ``` ## ⚠️ Gestion des Erreurs ### Erreur de Validation ```json { "type": "validation_error", "errors": { "email": ["Cet email existe déjà."], "ifu": ["Ce champ est obligatoire pour les comptes professionnels."] } } ``` ### Erreur d'Authentification ```json { "type": "authentication_error", "message": "Token invalide ou expiré" } ``` ### Erreur de Permission ```json { "type": "permission_error", "message": "Vous n'avez pas la permission d'effectuer cette action" } ``` ## 📝 Notes Importantes 1. **Toujours inclure le token** dans l'en-tête `Authorization: Bearer YOUR_TOKEN` 2. **Les dates** doivent être au format ISO 8601 : `2024-11-27T10:30:00Z` 3. **Les montants** sont en format décimal avec 2 décimales : `"1000.00"` 4. **Pagination** : Paramètres `?page=2&page_size=20` 5. **Upload de fichiers** : Utiliser `multipart/form-data` avec `-F` ## 🔄 Exemple Complet de Workflow ```bash # 1. S'inscrire TOKEN=$(curl -X POST http://localhost:8000/api/auth/register/ \ -H "Content-Type: application/json" \ -d '{"email":"test@example.com","password":"Test123!","password2":"Test123!","first_name":"Test","last_name":"User","account_type":"personal","agreed":true}' \ | jq -r '.tokens.access') # 2. Créer un produit curl -X POST http://localhost:8000/api/products/ \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"Tomates","price":"800.00","unit":"Kg","category":"vente","stock_status":"ok"}' # 3. Ajouter une transaction curl -X POST http://localhost:8000/api/transactions/ \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"Vente tomates","amount":"5000.00","type":"income","category":"Ventes","date":"2024-11-27T10:00:00Z"}' # 4. Voir le résumé curl -X GET http://localhost:8000/api/transactions/summary/ \ -H "Authorization: Bearer $TOKEN" ```