v1.0 API opérationnelle api.novaapp.dev/v1

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.

Django REST Framework
PostgreSQL
JWT Auth
OpenAPI 3.0
Swagger UI

Authentification JWT

Inscription
Connexion
Token JWT
Accès API

Incluez le token dans l'en-tête de chaque requête protégée :

HTTP Header
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJleHAiOjE3MTk5OTk5OTl9.xxxxx
POST /auth/register Créer un compte utilisateur
Informations
Tester

Crée un nouveau compte utilisateur. Retourne un access token et un refresh token JWT à la création.

Corps de la requête

ChampTypeRequisDescription
usernamestringOuiNom d'utilisateur unique (3-30 chars)
emailstringOuiAdresse email valide
passwordstringOuiMinimum 8 caractères
first_namestringNonPrénom
Exemple JSON
{
  "username": "sidi_tall",
  "email": "sidi@example.com",
  "password": "MonMotDePasse123!",
  "first_name": "Sidi"
}
201Utilisateur créé — retourne access_token et refresh_token
400Données invalides ou email/username déjà utilisé
422Erreur de validation (format email, mot de passe trop court...)
Tester l'endpoint
Corps (JSON)
POST /auth/login Connexion utilisateur
Informations
Tester

Authentifie un utilisateur et retourne une paire de tokens JWT (access + refresh).

Requête
{
  "username": "sidi_tall",
  "password": "MonMotDePasse123!"
}
Réponse 200
{
  "access":  "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "refresh": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "user": {
    "id": 1,
    "username": "sidi_tall",
    "email": "sidi@example.com",
    "role": "user"
  }
}
200Succès — retourne access + refresh tokens
401Identifiants incorrects
Tester l'endpoint
Corps (JSON)
POST /auth/refresh Renouveler le token
Informations
Tester

Génère un nouveau access token à partir d'un refresh token valide. L'access token expire après 15 minutes.

Requête
{ "refresh": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." }
200Nouveau access token généré
401Refresh token expiré ou invalide
Tester
Corps
GET /users Liste des utilisateurs
Informations
Tester

Retourne la liste paginée des utilisateurs. Requiert le rôle admin.

Paramètres de requête

ParamètreTypeRequisDescription
pageintegerNonNuméro de page (défaut: 1)
limitintegerNonRésultats par page, max 100 (défaut: 20)
searchstringNonRecherche par username ou email
Réponse 200
{
  "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" }
  ]
}
200Liste paginée des utilisateurs
401Token manquant ou invalide
403Accès refusé — rôle admin requis
Tester
Authorization Token
Paramètres (optionnel)
GET /users/{id} Détail d'un utilisateur
Informations
Tester

Retourne le profil complet d'un utilisateur par son ID.

Réponse 200
{
  "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"
}
200Données de l'utilisateur
404Utilisateur introuvable
Tester
User ID
PUT /users/{id} Mettre à jour un utilisateur
Informations

Met à jour les informations d'un utilisateur. Un utilisateur peut modifier son propre profil ; seul un admin peut modifier le rôle.

200Utilisateur mis à jour
400Données invalides
403Modification non autorisée
DEL /users/{id} Supprimer un utilisateur
Informations

Supprime définitivement un utilisateur. Rôle admin requis.

204Utilisateur supprimé (No Content)
404Utilisateur introuvable
403Accès refusé
GET /products Liste des produits
Informations
Tester

Retourne la liste paginée et filtrable des produits. Endpoint public — aucun token requis.

ParamètreTypeRequisDescription
categorystringNonFiltrer par catégorie
min_pricenumberNonPrix minimum
max_pricenumberNonPrix maximum
in_stockbooleanNonUniquement les produits en stock
200Liste paginée des produits
Tester
Paramètres
POST /products Créer un produit
Informations
Tester

Crée un nouveau produit. Rôle admin ou vendeur requis.

Requête
{
  "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"
}
201Produit créé avec son ID
400Données manquantes ou invalides
Tester
Corps (JSON)
GET /products/{id} Détail d'un produit
Informations
Tester

Retourne le détail complet d'un produit par son ID. Endpoint public.

200Données complètes du produit
404Produit introuvable
Tester
Product ID
GET /orders Mes commandes
Informations

Retourne les commandes de l'utilisateur connecté. Un admin voit toutes les commandes.

200Liste des commandes
401Authentification requise
POST /orders Passer une commande
Informations
Tester

Crée une nouvelle commande pour l'utilisateur connecté. Décrémente automatiquement le stock.

Requête
{
  "items": [
    { "product_id": 1, "quantity": 2 },
    { "product_id": 3, "quantity": 1 }
  ],
  "shipping_address": "Secteur 10, Ouagadougou, Burkina Faso",
  "payment_method": "orange_money"
}
201Commande créée avec numéro de suivi
400Stock insuffisant ou produit invalide
Tester
Corps