veza/BACKEND_ENDPOINTS_EXHAUSTIVE_LIST.md

829 lines
25 KiB
Markdown
Raw Normal View History

2026-01-07 18:39:21 +00:00
# 🔌 Liste Exhaustive des Endpoints Backend API
> **Document de référence complet pour tous les endpoints de l'API Veza Backend**
>
> Ce document liste TOUS les endpoints disponibles dans l'API backend, organisés par domaine fonctionnel.
---
## 📊 Statistiques
- **Total Endpoints**: 150+
- **Endpoints Publics**: 25
- **Endpoints Protégés**: 125+
- **Endpoints Admin**: 15
- **Méthodes HTTP**: GET, POST, PUT, DELETE, PATCH
---
## 🔐 1. AUTHENTICATION & AUTHORIZATION
### 1.1 Registration & Login
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/auth/register` | ❌ Public | Inscription d'un nouvel utilisateur |
| `POST` | `/api/v1/auth/login` | ❌ Public | Connexion utilisateur (email + password) |
| `POST` | `/api/v1/auth/refresh` | ❌ Public | Rafraîchir le token JWT |
| `POST` | `/api/v1/auth/logout` | ✅ Protected | Déconnexion utilisateur |
| `GET` | `/api/v1/auth/me` | ✅ Protected | Obtenir les infos de l'utilisateur connecté |
**Rate Limiting:**
- Register: Limité (désactivé en dev)
- Login: Limité (actif)
---
### 1.2 Email Verification
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/auth/verify-email` | ❌ Public | Vérifier l'email avec le token |
| `POST` | `/api/v1/auth/resend-verification` | ❌ Public | Renvoyer l'email de vérification |
**Rate Limiting:**
- Verify Email: Limité
- Resend Verification: Limité
---
### 1.3 Password Reset
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/auth/password/reset-request` | ❌ Public | Demander réinitialisation mot de passe |
| `POST` | `/api/v1/auth/password/reset` | ❌ Public | Réinitialiser le mot de passe avec token |
**Rate Limiting:**
- Password Reset: Limité
---
### 1.4 Two-Factor Authentication (2FA)
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/auth/2fa/setup` | ✅ Protected | Configurer 2FA (génère QR code) |
| `POST` | `/api/v1/auth/2fa/verify` | ✅ Protected | Vérifier code 2FA |
| `POST` | `/api/v1/auth/2fa/disable` | ✅ Protected | Désactiver 2FA |
| `GET` | `/api/v1/auth/2fa/status` | ✅ Protected | Obtenir statut 2FA |
---
### 1.5 OAuth
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/auth/oauth/providers` | ❌ Public | Liste des providers OAuth disponibles |
| `GET` | `/api/v1/auth/oauth/:provider` | ❌ Public | Initier flow OAuth (Google, GitHub, Discord) |
| `GET` | `/api/v1/auth/oauth/:provider/callback` | ❌ Public | Callback OAuth après authentification |
**Providers supportés:**
- Google
- GitHub
- Discord
---
### 1.6 Username Validation
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/auth/check-username` | ❌ Public | Vérifier disponibilité username |
---
## 👤 2. USERS & PROFILES
### 2.1 User Management
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/users` | ❌ Public | Liste des utilisateurs (paginée) |
| `GET` | `/api/v1/users/:id` | ❌ Public | Obtenir profil utilisateur par ID |
| `GET` | `/api/v1/users/by-username/:username` | ❌ Public | Obtenir profil par username |
| `GET` | `/api/v1/users/search` | ❌ Public | Rechercher des utilisateurs |
| `PUT` | `/api/v1/users/:id` | ✅ Owner/Admin | Mettre à jour profil utilisateur |
| `DELETE` | `/api/v1/users/:id` | ✅ Owner/Admin | Supprimer utilisateur (soft delete) |
| `GET` | `/api/v1/users/:id/completion` | ✅ Protected | Obtenir % complétion profil |
---
### 2.2 Avatar Management
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/users/:id/avatar` | ✅ Owner/Admin | Upload avatar utilisateur |
| `DELETE` | `/api/v1/users/:id/avatar` | ✅ Owner/Admin | Supprimer avatar utilisateur |
---
### 2.3 Social Features
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/users/:id/follow` | ✅ Protected | Suivre un utilisateur |
| `DELETE` | `/api/v1/users/:id/follow` | ✅ Protected | Ne plus suivre un utilisateur |
| `POST` | `/api/v1/users/:id/block` | ✅ Protected | Bloquer un utilisateur |
| `DELETE` | `/api/v1/users/:id/block` | ✅ Protected | Débloquer un utilisateur |
---
### 2.4 User Roles
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/users/:id/roles` | ✅ Admin | Assigner un rôle à un utilisateur |
| `DELETE` | `/api/v1/users/:id/roles/:roleId` | ✅ Admin | Révoquer un rôle d'un utilisateur |
---
### 2.5 User Liked Tracks
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/users/:id/likes` | ✅ Protected | Obtenir les tracks likés par l'utilisateur |
---
### 2.6 Data Export (GDPR)
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/users/me/export` | ✅ Protected | Exporter toutes les données utilisateur (JSON) |
---
## 🎵 3. TRACKS & AUDIO
### 3.1 Track Management
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/tracks` | ❌ Public | Liste des tracks (paginée, filtrée) |
| `GET` | `/api/v1/tracks/:id` | ❌ Public | Obtenir détails d'une track |
| `POST` | `/api/v1/tracks` | ✅ Creator/Premium/Admin | Upload une nouvelle track |
| `PUT` | `/api/v1/tracks/:id` | ✅ Owner/Admin | Mettre à jour une track |
| `DELETE` | `/api/v1/tracks/:id` | ✅ Owner/Admin | Supprimer une track |
---
### 3.2 Track Search
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/tracks/search` | ❌ Public | Rechercher des tracks |
**Filtres supportés:**
- Query (titre, artiste, album)
- Genre
- Tags
- Date range
- Duration range
---
### 3.3 Track Stats & History
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/tracks/:id/stats` | ❌ Public | Statistiques d'une track |
| `GET` | `/api/v1/tracks/:id/history` | ❌ Public | Historique des versions |
---
### 3.4 Track Download
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/tracks/:id/download` | ❌ Public | Télécharger une track |
---
### 3.5 Track Sharing
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/tracks/shared/:token` | ❌ Public | Accéder à une track via lien de partage |
| `POST` | `/api/v1/tracks/:id/share` | ✅ Protected | Créer un lien de partage |
| `DELETE` | `/api/v1/tracks/share/:id` | ✅ Protected | Révoquer un lien de partage |
---
### 3.6 Chunked Upload
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/tracks/:id/status` | ✅ Protected | Statut d'upload d'une track |
| `POST` | `/api/v1/tracks/initiate` | ✅ Protected | Initier upload chunked |
| `POST` | `/api/v1/tracks/chunk` | ✅ Protected | Upload un chunk |
| `POST` | `/api/v1/tracks/complete` | ✅ Protected | Compléter upload chunked |
| `GET` | `/api/v1/tracks/quota/:id` | ✅ Protected | Obtenir quota d'upload |
| `GET` | `/api/v1/tracks/resume/:uploadId` | ✅ Protected | Reprendre un upload |
---
### 3.7 Batch Operations
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/tracks/batch/delete` | ✅ Protected | Supprimer plusieurs tracks |
| `POST` | `/api/v1/tracks/batch/update` | ✅ Protected | Mettre à jour plusieurs tracks |
---
### 3.8 Track Social
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/tracks/:id/like` | ✅ Protected | Liker une track |
| `DELETE` | `/api/v1/tracks/:id/like` | ✅ Protected | Unliker une track |
| `GET` | `/api/v1/tracks/:id/likes` | ✅ Protected | Obtenir les likes d'une track |
---
### 3.9 Track Versions
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/tracks/:id/versions/:versionId/restore` | ✅ Protected | Restaurer une version de track |
---
### 3.10 Track Analytics
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/tracks/:id/play` | ✅ Protected | Enregistrer une lecture de track |
---
### 3.11 HLS Streaming
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/tracks/:id/hls/info` | ❌ Public | Obtenir infos stream HLS |
| `GET` | `/api/v1/tracks/:id/hls/status` | ❌ Public | Obtenir statut stream HLS |
---
### 3.12 Track Comments
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/tracks/:id/comments` | ❌ Public | Obtenir commentaires d'une track |
| `POST` | `/api/v1/tracks/:id/comments` | ✅ Protected | Ajouter un commentaire |
| `DELETE` | `/api/v1/comments/:id` | ✅ Protected | Supprimer un commentaire |
---
## 📝 4. PLAYLISTS
### 4.1 Playlist Management
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/playlists` | ✅ Protected | Liste des playlists de l'utilisateur |
| `POST` | `/api/v1/playlists` | ✅ Protected | Créer une playlist |
| `GET` | `/api/v1/playlists/:id` | ✅ Protected | Obtenir détails d'une playlist |
| `PUT` | `/api/v1/playlists/:id` | ✅ Owner/Admin | Mettre à jour une playlist |
| `DELETE` | `/api/v1/playlists/:id` | ✅ Owner/Admin | Supprimer une playlist |
---
### 4.2 Playlist Search & Discovery
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/playlists/search` | ✅ Protected | Rechercher des playlists |
| `GET` | `/api/v1/playlists/recommendations` | ✅ Protected | Obtenir recommandations de playlists |
---
### 4.3 Playlist Tracks
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/playlists/:id/tracks` | ✅ Protected | Ajouter une track à la playlist |
| `DELETE` | `/api/v1/playlists/:id/tracks/:track_id` | ✅ Protected | Retirer une track de la playlist |
| `PUT` | `/api/v1/playlists/:id/tracks/reorder` | ✅ Protected | Réorganiser les tracks |
---
### 4.4 Playlist Collaborators
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/playlists/:id/collaborators` | ✅ Protected | Obtenir collaborateurs |
| `POST` | `/api/v1/playlists/:id/collaborators` | ✅ Owner/Admin | Ajouter un collaborateur |
| `PUT` | `/api/v1/playlists/:id/collaborators/:userId` | ✅ Owner/Admin | Modifier permissions collaborateur |
| `DELETE` | `/api/v1/playlists/:id/collaborators/:userId` | ✅ Owner/Admin | Retirer un collaborateur |
---
### 4.5 Playlist Sharing
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/playlists/:id/share` | ✅ Owner/Admin | Créer lien de partage |
---
## 🛒 5. MARKETPLACE
### 5.1 Products
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/marketplace/products` | ❌ Public | Liste des produits |
| `POST` | `/api/v1/marketplace/products` | ✅ Creator/Premium/Admin | Créer un produit |
| `PUT` | `/api/v1/marketplace/products/:id` | ✅ Owner/Admin | Mettre à jour un produit |
---
### 5.2 Orders
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/marketplace/orders` | ✅ Protected | Liste des commandes |
| `GET` | `/api/v1/marketplace/orders/:id` | ✅ Protected | Détails d'une commande |
| `POST` | `/api/v1/marketplace/orders` | ✅ Protected | Créer une commande |
---
### 5.3 Downloads
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/marketplace/download/:product_id` | ✅ Protected | Obtenir URL de téléchargement |
---
## 💬 6. CHAT & MESSAGING
### 6.1 Chat Token
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/chat/token` | ✅ Protected | Obtenir token pour chat en temps réel |
| `GET` | `/api/v1/chat/stats` | ✅ Protected | Statistiques du chat |
---
### 6.2 Conversations (Rooms)
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/conversations` | ✅ Protected | Liste des conversations |
| `POST` | `/api/v1/conversations` | ✅ Protected | Créer une conversation |
| `GET` | `/api/v1/conversations/:id` | ✅ Protected | Détails d'une conversation |
| `PUT` | `/api/v1/conversations/:id` | ✅ Protected | Mettre à jour une conversation |
| `DELETE` | `/api/v1/conversations/:id` | ✅ Protected | Supprimer une conversation |
| `GET` | `/api/v1/conversations/:id/history` | ✅ Protected | Historique des messages |
---
### 6.3 Participants
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/conversations/:id/members` | ✅ Protected | Ajouter un membre (legacy) |
| `POST` | `/api/v1/conversations/:id/participants` | ✅ Protected | Ajouter un participant |
| `DELETE` | `/api/v1/conversations/:id/participants/:userId` | ✅ Protected | Retirer un participant |
---
## 🔔 7. NOTIFICATIONS
### 7.1 Notification Management
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/notifications` | ✅ Protected | Liste des notifications |
| `POST` | `/api/v1/notifications/:id/read` | ✅ Protected | Marquer comme lu |
| `POST` | `/api/v1/notifications/read-all` | ✅ Protected | Tout marquer comme lu |
---
## 🎭 8. ROLES & PERMISSIONS
### 8.1 Roles
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/roles` | ✅ Protected | Liste des rôles |
| `GET` | `/api/v1/roles/:id` | ✅ Protected | Détails d'un rôle |
---
## 🔗 9. WEBHOOKS
### 9.1 Webhook Management
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/webhooks` | ✅ Protected | Liste des webhooks |
| `POST` | `/api/v1/webhooks` | ✅ Protected | Créer un webhook |
| `DELETE` | `/api/v1/webhooks/:id` | ✅ Protected | Supprimer un webhook |
| `GET` | `/api/v1/webhooks/stats` | ✅ Protected | Statistiques des webhooks |
| `POST` | `/api/v1/webhooks/:id/test` | ✅ Protected | Tester un webhook |
| `POST` | `/api/v1/webhooks/:id/regenerate-key` | ✅ Protected | Régénérer clé API webhook |
---
## 📊 10. ANALYTICS
### 10.1 Analytics Events
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/analytics/events` | ✅ Protected | Enregistrer un événement analytics |
| `GET` | `/api/v1/analytics/tracks/:id` | ✅ Protected | Dashboard analytics d'une track |
---
## 🔐 11. SESSIONS
### 11.1 Session Management
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/sessions` | ✅ Protected | Liste des sessions actives |
| `POST` | `/api/v1/sessions/logout` | ✅ Protected | Déconnexion session courante |
| `POST` | `/api/v1/sessions/logout-all` | ✅ Protected | Déconnexion toutes sessions |
| `DELETE` | `/api/v1/sessions/:session_id` | ✅ Protected | Révoquer une session |
| `GET` | `/api/v1/sessions/stats` | ✅ Protected | Statistiques des sessions |
| `POST` | `/api/v1/sessions/refresh` | ✅ Protected | Rafraîchir une session |
---
## 📤 12. UPLOADS
### 12.1 Upload Management
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/uploads` | ✅ Protected | Upload un fichier |
| `POST` | `/api/v1/uploads/batch` | ✅ Protected | Upload multiple fichiers |
| `GET` | `/api/v1/uploads/:id/status` | ✅ Protected | Statut d'un upload |
| `GET` | `/api/v1/uploads/:id/progress` | ✅ Protected | Progression d'un upload |
| `DELETE` | `/api/v1/uploads/:id` | ✅ Protected | Annuler/supprimer un upload |
| `GET` | `/api/v1/uploads/stats` | ✅ Protected | Statistiques des uploads |
---
### 12.2 Upload Info (Public)
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/upload/limits` | ❌ Public | Limites d'upload |
| `GET` | `/api/v1/upload/validate-type` | ❌ Public | Valider type de fichier |
---
## 📋 13. AUDIT & LOGS
### 13.1 Audit Logs
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/audit/logs` | ✅ Protected | Rechercher dans les logs |
| `GET` | `/api/v1/audit/logs/:id` | ✅ Protected | Détails d'un log |
| `GET` | `/api/v1/audit/stats` | ✅ Protected | Statistiques d'audit |
| `GET` | `/api/v1/audit/activity` | ✅ Protected | Activité utilisateur |
| `GET` | `/api/v1/audit/suspicious` | ✅ Protected | Détecter activité suspecte |
| `GET` | `/api/v1/audit/ip/:ip` | ✅ Protected | Activité par IP |
| `POST` | `/api/v1/audit/cleanup` | ✅ Protected | Nettoyer anciens logs |
---
## 🔒 14. SECURITY
### 14.1 CSRF Token
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/csrf-token` | ✅ Protected | Obtenir token CSRF |
---
## 📝 15. FRONTEND LOGS
### 15.1 Frontend Logging
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/logs/frontend` | ❌ Public | Envoyer logs frontend au backend |
---
## 🏥 16. HEALTH & MONITORING
### 16.1 Health Checks
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/health` | ❌ Public | Health check simple |
| `GET` | `/api/v1/healthz` | ❌ Public | Liveness probe (Kubernetes) |
| `GET` | `/api/v1/readyz` | ❌ Public | Readiness probe (Kubernetes) |
| `GET` | `/api/v1/status` | ❌ Public | Status complet du système |
**Legacy (deprecated):**
- `GET /health`
- `GET /healthz`
- `GET /readyz`
---
### 16.2 Metrics
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/metrics` | ❌ Public | Métriques Prometheus |
| `GET` | `/api/v1/metrics/aggregated` | ❌ Public | Métriques agrégées |
| `GET` | `/api/v1/system/metrics` | ❌ Public | Métriques système |
**Legacy (deprecated):**
- `GET /metrics`
- `GET /metrics/aggregated`
- `GET /system/metrics`
---
### 16.3 API Versioning
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/versions` | ❌ Public | Informations sur les versions API |
---
## 👨‍💼 17. ADMIN ENDPOINTS
### 17.1 Admin Audit
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/api/v1/admin/audit/logs` | ✅ Admin | Logs d'audit (admin) |
| `GET` | `/api/v1/admin/audit/stats` | ✅ Admin | Statistiques d'audit (admin) |
| `GET` | `/api/v1/admin/audit/suspicious` | ✅ Admin | Activité suspecte (admin) |
---
### 17.2 Admin Debugging
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `ANY` | `/api/v1/admin/debug/pprof/*path` | ✅ Admin | Profiling pprof (Go) |
---
## 🔧 18. INTERNAL ENDPOINTS
### 18.1 Stream Callbacks
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `POST` | `/api/v1/internal/tracks/:id/stream-ready` | 🔒 Internal | Callback stream ready (moderne) |
| `POST` | `/internal/tracks/:id/stream-ready` | 🔒 Internal | Callback stream ready (legacy, deprecated) |
---
## 📚 19. DOCUMENTATION
### 19.1 API Documentation
| Méthode | Endpoint | Auth | Description |
|---------|----------|------|-------------|
| `GET` | `/swagger/*any` | ❌ Public | Documentation Swagger UI |
| `GET` | `/docs` | ❌ Public | Documentation API (alias) |
| `GET` | `/docs/*any` | ❌ Public | Documentation API (alias) |
---
## 📊 RÉSUMÉ PAR CATÉGORIE
| Catégorie | Endpoints | Public | Protected | Admin |
|-----------|-----------|--------|-----------|-------|
| **Auth** | 17 | 12 | 5 | 0 |
| **Users** | 15 | 4 | 11 | 0 |
| **Tracks** | 35 | 10 | 25 | 0 |
| **Playlists** | 13 | 0 | 13 | 0 |
| **Marketplace** | 6 | 1 | 5 | 0 |
| **Chat** | 8 | 0 | 8 | 0 |
| **Notifications** | 3 | 0 | 3 | 0 |
| **Roles** | 2 | 0 | 2 | 0 |
| **Webhooks** | 6 | 0 | 6 | 0 |
| **Analytics** | 2 | 0 | 2 | 0 |
| **Sessions** | 6 | 0 | 6 | 0 |
| **Uploads** | 8 | 2 | 6 | 0 |
| **Audit** | 7 | 0 | 7 | 0 |
| **Security** | 1 | 0 | 1 | 0 |
| **Logs** | 1 | 1 | 0 | 0 |
| **Health** | 7 | 7 | 0 | 0 |
| **Admin** | 4 | 0 | 0 | 4 |
| **Internal** | 2 | 0 | 0 | 2 |
| **Docs** | 3 | 3 | 0 | 0 |
| **TOTAL** | **145** | **40** | **101** | **4** |
---
## 🔐 AUTHENTIFICATION & AUTORISATION
### Types d'Authentification
1. **❌ Public** - Aucune authentification requise
2. **✅ Protected** - JWT token requis
3. **✅ Owner/Admin** - JWT + ownership ou rôle admin
4. **✅ Creator/Premium/Admin** - JWT + rôle spécifique
5. **✅ Admin** - JWT + rôle admin uniquement
6. **🔒 Internal** - Endpoints internes (callbacks)
### Middlewares Appliqués
- **CORS** - Configuré via `CORS_ORIGINS`
- **CSRF** - Protection sur tous les POST/PUT/DELETE (nécessite Redis)
- **Rate Limiting** - Limites globales + endpoints spécifiques
- **Timeout** - Timeout global configurable
- **Security Headers** - HSTS, CSP, etc.
- **Request ID** - Traçabilité des requêtes
- **Metrics** - Prometheus metrics
- **Logging** - Structured logging
- **Error Handling** - Gestion centralisée des erreurs
---
## 🚀 FEATURES SPÉCIALES
### Rate Limiting
**Endpoints avec rate limiting spécifique:**
- `/api/v1/auth/register` - Limité
- `/api/v1/auth/login` - Limité
- `/api/v1/auth/verify-email` - Limité
- `/api/v1/auth/resend-verification` - Limité
- `/api/v1/auth/password/*` - Limité
- `/api/v1/uploads/*` - Limité (Redis requis)
### CSRF Protection
**Tous les endpoints avec méthodes:**
- `POST`
- `PUT`
- `DELETE`
- `PATCH`
**Exceptions:**
- Endpoints publics
- `/api/v1/csrf-token` (génération du token)
### Chunked Upload
**Support pour gros fichiers:**
1. `POST /api/v1/tracks/initiate` - Initier
2. `POST /api/v1/tracks/chunk` - Upload chunks
3. `POST /api/v1/tracks/complete` - Finaliser
### ClamAV Scanning
**Scan antivirus sur uploads:**
- Configurable via `ENABLE_CLAMAV`
- Configurable via `CLAMAV_REQUIRED`
- Appliqué sur tous les uploads de fichiers
---
## 📝 NOTES IMPORTANTES
### Versioning
- **Version actuelle**: `v1`
- **Base path**: `/api/v1`
- **Legacy paths**: Certains endpoints ont des versions deprecated (ex: `/health``/api/v1/health`)
### Deprecation
**Endpoints deprecated (avec warning):**
- `/health``/api/v1/health`
- `/healthz``/api/v1/healthz`
- `/readyz``/api/v1/readyz`
- `/metrics``/api/v1/metrics`
- `/internal/tracks/:id/stream-ready``/api/v1/internal/tracks/:id/stream-ready`
### Pagination
**Endpoints paginés:**
- `/api/v1/users`
- `/api/v1/tracks`
- `/api/v1/playlists`
- `/api/v1/marketplace/products`
- `/api/v1/marketplace/orders`
- `/api/v1/notifications`
- `/api/v1/audit/logs`
**Paramètres de pagination:**
- `page` - Numéro de page (défaut: 1)
- `limit` - Nombre d'éléments par page (défaut: 20)
- `sort` - Champ de tri
- `order` - Ordre (asc/desc)
### Filtrage
**Endpoints avec filtres:**
- `/api/v1/tracks` - Genre, tags, date, duration
- `/api/v1/users/search` - Query, role
- `/api/v1/tracks/search` - Query, genre, tags
- `/api/v1/playlists/search` - Query, public/private
- `/api/v1/marketplace/products` - Category, price range, seller
---
## 🔍 ENDPOINTS PAR MÉTHODE HTTP
### GET (Lecture)
- **Total**: 75 endpoints
- **Catégories**: Users, Tracks, Playlists, Marketplace, Health, etc.
### POST (Création)
- **Total**: 45 endpoints
- **Catégories**: Auth, Tracks, Playlists, Orders, Chat, etc.
### PUT (Mise à jour complète)
- **Total**: 10 endpoints
- **Catégories**: Users, Tracks, Playlists, Conversations
### DELETE (Suppression)
- **Total**: 15 endpoints
- **Catégories**: Users, Tracks, Playlists, Sessions, Webhooks
---
## 🎯 ENDPOINTS PRIORITAIRES POUR FRONTEND
### P0 - Critique (MVP)
**Auth:**
- `POST /api/v1/auth/register`
- `POST /api/v1/auth/login`
- `POST /api/v1/auth/logout`
- `GET /api/v1/auth/me`
**Users:**
- `GET /api/v1/users/:id`
- `PUT /api/v1/users/:id`
**Tracks:**
- `GET /api/v1/tracks`
- `GET /api/v1/tracks/:id`
- `POST /api/v1/tracks`
- `POST /api/v1/tracks/:id/like`
**Playlists:**
- `GET /api/v1/playlists`
- `POST /api/v1/playlists`
- `POST /api/v1/playlists/:id/tracks`
### P1 - Important
**Search:**
- `GET /api/v1/tracks/search`
- `GET /api/v1/users/search`
**Upload:**
- `POST /api/v1/tracks/initiate`
- `POST /api/v1/tracks/chunk`
- `POST /api/v1/tracks/complete`
**Notifications:**
- `GET /api/v1/notifications`
- `POST /api/v1/notifications/:id/read`
### P2 - Souhaitable
**Marketplace:**
- `GET /api/v1/marketplace/products`
- `POST /api/v1/marketplace/orders`
**Analytics:**
- `POST /api/v1/analytics/events`
- `GET /api/v1/analytics/tracks/:id`
**Webhooks:**
- `GET /api/v1/webhooks`
- `POST /api/v1/webhooks`
---
## 📖 DOCUMENTATION COMPLÈTE
Pour plus de détails sur chaque endpoint:
- **Swagger UI**: `/swagger/index.html`
- **Docs**: `/docs`
- **OpenAPI Spec**: Disponible via Swagger
---
**Version**: 1.0.0
**Dernière mise à jour**: 2026-01-05
**Auteur**: Veza Backend Team