🚀 API YGG v1.0.0

Documentation complète de l'API REST Express.js

📖 Introduction

Bienvenue dans la documentation de l'API YGG ! Cette API RESTful vous permet de gérer les profils utilisateurs, les torrents et les commentaires de votre application YGG.

🔗 URL de base http://localhost:3000/api

✨ Fonctionnalités

🚀 Démarrage Rapide

1

Installer

Installez les dépendances avec npm install

2

Configurer

Créez le fichier .env avec vos paramètres

3

Démarrer

Lancez l'API avec npm run dev

4

Tester

Utilisez les endpoints avec votre client HTTP

⚠️ Configuration importante Assurez-vous que SECRET_KEY dans votre fichier .env correspond à celui de votre application CodeIgniter pour que l'authentification fonctionne correctement.

Installation

Terminal
cd ygg-api npm install npm run dev

🔐 Authentification

L'API utilise JWT (JSON Web Tokens) pour sécuriser les endpoints. Vous devez inclure le token dans le header Authorization de vos requêtes.

Obtenir un token

POST /api/auth/login

Connectez-vous pour obtenir un token JWT

Requête :
JSON Body
{ "nickname": "votre_pseudo", "password": "votre_mot_de_passe" }
Réponse (200) :
JSON Response
{ "success": true, "message": "Connexion réussie", "data": { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "user": { "id": 123, "nickname": "votre_pseudo", "rank": 0, "email": "email@example.com" } } }

Utiliser le token

Incluez le token dans le header Authorization de toutes vos requêtes authentifiées :

HTTP Header
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
ℹ️ Expiration du token Les tokens JWT expirent après 24 heures par défaut. Utilisez l'endpoint /api/auth/refresh pour obtenir un nouveau token.

📡 Endpoints

Authentification

GET /api/auth/me 🔒 Auth requise

Récupère les informations de l'utilisateur connecté

cURL
curl http://localhost:3000/api/auth/me \ -H "Authorization: Bearer VOTRE_TOKEN"
POST /api/auth/refresh 🔒 Auth requise

Rafraîchit le token JWT

Profils Utilisateurs

GET /api/users/profile 🔒 Auth requise

Récupère le profil complet de l'utilisateur connecté avec toutes les statistiques

Réponse (200) :
JSON Response
{ "success": true, "data": { "id": 123, "nickname": "pseudo", "avatar": "avatar.jpg", "rank": 0, "rankName": "Utilisateur", "stats": { "uploaded": 1073741824, "uploadedFormatted": "1 GB", "downloaded": 536870912, "downloadedFormatted": "512 MB", "ratio": "2.00", "torrentsCount": 10, "commentsCount": 25 } } }
GET /api/users/profile/:id 📖 Public

Récupère le profil public d'un utilisateur par son ID

Paramètres :
Paramètre Type Description
id number ID de l'utilisateur
ℹ️ Note Certaines informations sensibles (email, torrent pass) sont masquées pour les profils publics.
PUT /api/users/profile 🔒 Auth requise

Met à jour les informations du profil utilisateur

Champs modifiables :
Champ Type Description
age number Âge de l'utilisateur
gender string "male" ou "female"
country string Pays de l'utilisateur
profile_desc string Description du profil
JSON Body
{ "age": 26, "gender": "male", "country": "France", "profile_desc": "Ma nouvelle description" }

Torrents

GET /api/users/torrents 🔒 Auth requise

Liste les torrents uploadés par l'utilisateur connecté

Query Parameters :
Paramètre Type Par défaut Description
limit number 50 Nombre de résultats par page
offset number 0 Décalage pour la pagination
Exemple
GET /api/users/torrents?limit=10&offset=0
GET /api/users/torrents/:id 📖 Public

Liste les torrents uploadés par un utilisateur spécifique

Commentaires

GET /api/users/comments 🔒 Auth requise

Liste les commentaires de l'utilisateur connecté

Query Parameters :
Paramètre Type Par défaut Description
limit number 15 Nombre de résultats par page
offset number 0 Décalage pour la pagination
GET /api/users/comments/:id 📖 Public

Liste les commentaires d'un utilisateur spécifique

⚠️ Gestion des Erreurs

L'API retourne des codes HTTP standards et des messages d'erreur au format JSON.

Codes HTTP

Code Signification Description
200 OK Requête réussie
400 Bad Request Paramètres invalides
401 Unauthorized Token manquant ou invalide
403 Forbidden Accès refusé
404 Not Found Ressource non trouvée
429 Too Many Requests Rate limit dépassé
500 Internal Server Error Erreur serveur

Format de réponse d'erreur

JSON Error Response
{ "success": false, "message": "Description de l'erreur" }

Rate Limiting

⚠️ Limite de requêtes L'API est limitée à 100 requêtes par 15 minutes par adresse IP. Si vous dépassez cette limite, vous recevrez une erreur 429.

💡 Exemples Complets

JavaScript / Fetch API

JavaScript
const API_URL = 'http://localhost:3000/api'; // 1. Connexion async function login(nickname, password) { const response = await fetch(`${API_URL}/auth/login`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ nickname, password }) }); const data = await response.json(); if (data.success) { localStorage.setItem('token', data.data.token); return data.data.token; } throw new Error(data.message); } // 2. Récupérer le profil async function getProfile() { const token = localStorage.getItem('token'); const response = await fetch(`${API_URL}/users/profile`, { headers: { 'Authorization': `Bearer ${token}` } }); return await response.json(); } // 3. Utilisation (async () => { const token = await login('pseudo', 'password'); const profile = await getProfile(); console.log(profile); })();

Python / Requests

Python
import requests API_URL = 'http://localhost:3000/api' # 1. Connexion def login(nickname, password): response = requests.post( f'{API_URL}/auth/login', json={'nickname': nickname, 'password': password} ) data = response.json() if data['success']: return data['data']['token'] raise Exception(data['message']) # 2. Récupérer le profil def get_profile(token): response = requests.get( f'{API_URL}/users/profile', headers={'Authorization': f'Bearer {token}'} ) return response.json() # 3. Utilisation token = login('pseudo', 'password') profile = get_profile(token) print(profile)

cURL

Shell
# 1. Connexion curl -X POST http://localhost:3000/api/auth/login \ -H "Content-Type: application/json" \ -d '{"nickname":"pseudo","password":"password"}' # 2. Récupérer le profil (remplacez TOKEN) curl http://localhost:3000/api/users/profile \ -H "Authorization: Bearer TOKEN" # 3. Mettre à jour le profil curl -X PUT http://localhost:3000/api/users/profile \ -H "Authorization: Bearer TOKEN" \ -H "Content-Type: application/json" \ -d '{"age":26,"country":"France"}'
✅ Testez avec Postman Importez le fichier YGG_API.postman_collection.json dans Postman pour tester facilement tous les endpoints !