Nova REST API
API RESTful scalable construite avec Django REST Framework et PostgreSQL. Authentification JWT sécurisée, documentation complète et prête pour la production.
Authentification JWT
Incluez le token dans l'en-tête de chaque requête protégée :
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJleHAiOjE3MTk5OTk5OTl9.xxxxx
Crée un nouveau compte utilisateur. Retourne un access token et un refresh token JWT à la création.
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| username | string | Oui | Nom d'utilisateur unique (3-30 chars) |
| string | Oui | Adresse email valide | |
| password | string | Oui | Minimum 8 caractères |
| first_name | string | Non | Prénom |
{ "username": "sidi_tall", "email": "sidi@example.com", "password": "MonMotDePasse123!", "first_name": "Sidi" }
Authentifie un utilisateur et retourne une paire de tokens JWT (access + refresh).
{ "username": "sidi_tall", "password": "MonMotDePasse123!" }
{ "access": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "refresh": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "user": { "id": 1, "username": "sidi_tall", "email": "sidi@example.com", "role": "user" } }
Génère un nouveau access token à partir d'un refresh token valide. L'access token expire après 15 minutes.
{ "refresh": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." }
Retourne la liste paginée des utilisateurs. Requiert le rôle admin.
Paramètres de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| page | integer | Non | Numéro de page (défaut: 1) |
| limit | integer | Non | Résultats par page, max 100 (défaut: 20) |
| search | string | Non | Recherche par username ou email |
{ "count": 42, "next": "https://api.novaapp.dev/v1/users?page=2", "previous": null, "results": [ { "id":1, "username":"sidi_tall", "email":"sidi@example.com", "role":"admin", "created_at":"2025-01-15T10:30:00Z" } ] }
Retourne le profil complet d'un utilisateur par son ID.
{ "id": 1, "username": "sidi_tall", "email": "sidi@example.com", "first_name": "Sidi", "role": "admin", "is_active": true, "created_at": "2025-01-15T10:30:00Z", "last_login": "2026-06-05T09:12:00Z" }
Met à jour les informations d'un utilisateur. Un utilisateur peut modifier son propre profil ; seul un admin peut modifier le rôle.
Supprime définitivement un utilisateur. Rôle admin requis.
Retourne la liste paginée et filtrable des produits. Endpoint public — aucun token requis.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| category | string | Non | Filtrer par catégorie |
| min_price | number | Non | Prix minimum |
| max_price | number | Non | Prix maximum |
| in_stock | boolean | Non | Uniquement les produits en stock |
Crée un nouveau produit. Rôle admin ou vendeur requis.
{ "name": "Smartphone Nova Pro", "description": "Smartphone 6.7 pouces, 8Go RAM, 256Go stockage", "price": 299000, "category": "electronique", "stock": 50, "image_url": "https://cdn.example.com/products/nova-pro.jpg" }
Retourne le détail complet d'un produit par son ID. Endpoint public.
Retourne les commandes de l'utilisateur connecté. Un admin voit toutes les commandes.
Crée une nouvelle commande pour l'utilisateur connecté. Décrémente automatiquement le stock.
{ "items": [ { "product_id": 1, "quantity": 2 }, { "product_id": 3, "quantity": 1 } ], "shipping_address": "Secteur 10, Ouagadougou, Burkina Faso", "payment_method": "orange_money" }