--- title: Référence API description: Documentation détaillée de tous les points de terminaison de l'API Memegoat. --- ## 📖 Référence API Cette page documente tous les points de terminaison disponibles sur l'API Memegoat. L'URL de base de l'API est `https://api.memegoat.fr`. L'authentification est gérée via des **cookies HttpOnly sécurisés** (`iron-session`). Les tokens ne sont pas exposés dans le corps des réponses après connexion pour une sécurité maximale. ### 🔐 Authentification (`/auth`) Inscrit un nouvel utilisateur. **Corps de la requête (JSON) :** - `username` (string) : Nom d'utilisateur unique. - `email` (string) : Adresse email valide. - `password` (string) : Mot de passe (min. 8 caractères). ```json { "username": "goat_user", "email": "user@memegoat.fr", "password": "strong-password" } ``` Authentifie un utilisateur et retourne les jetons de session. Si la 2FA est activée, retourne un indicateur. **Corps de la requête :** - `email` (string) - `password` (string) **Réponse (Succès) :** ```json { "message": "User logged in successfully", "userId": "uuid-v4" } ``` *Note: L'access_token et le refresh_token sont stockés dans un cookie HttpOnly chiffré.* **Réponse (2FA requise) :** ```json { "message": "2FA required", "requires2FA": true, "userId": "uuid-v4" } ``` Finalise la connexion si la 2FA est requise. **Corps de la requête :** - `userId` (uuid) : ID de l'utilisateur. - `token` (string) : Code TOTP à 6 chiffres. Obtient un nouvel `access_token` à partir du `refresh_token` stocké dans la session. Met à jour automatiquement le cookie de session. Invalide la session actuelle. ### 👤 Utilisateurs (`/users`) Récupère les informations détaillées de l'utilisateur connecté. Requiert l'authentification. Extrait l'intégralité des données de l'utilisateur au format JSON (Conformité RGPD). Contient le profil, les contenus et les favoris. Met à jour les informations du profil. - `displayName` (string) Marque le compte pour suppression (Soft Delete). Les données sont définitivement purgées après un délai légal de 30 jours. - `POST /users/me/2fa/setup` : Génère un secret et QR Code. - `POST /users/me/2fa/enable` : Active après vérification du jeton. - `POST /users/me/2fa/disable` : Désactive avec jeton. Liste tous les utilisateurs. Réservé aux administrateurs. **Params :** `limit`, `offset`. ### 🖼️ Contenus (`/contents`) Recherche et filtre les contenus. Ces endpoints sont mis en cache (Redis + Navigateur). **Query Params :** - `sort` : `trend` | `recent` (uniquement sur `/explore`) - `tag` (string) - `category` (slug ou id) - `author` (username) - `query` (titre) - `favoritesOnly` (bool) Récupère un contenu par son ID ou son Slug. **Détection de Bots (SEO) :** Si l'User-Agent correspond à un robot d'indexation (Googlebot, Twitterbot, etc.), l'API retourne un rendu HTML minimal contenant les méta-tags **OpenGraph** et **Twitter Cards** pour un partage optimal. Pour les autres clients, les données sont retournées en JSON. Upload un fichier avec traitement automatique. **Type :** `multipart/form-data` **Champs :** - `file` (binary) : png, jpeg, webp, webm, gif. - `type` : `meme` | `gif` - `title` : string - `categoryId`? : uuid - `tags`? : string[] Incrémente les statistiques de vue ou d'utilisation. Supprime un contenu (Soft Delete). Doit être l'auteur. ### 📂 Catégories, ⭐ Favoris, 🚩 Signalements - `GET /categories` : Liste toutes les catégories. - `POST /categories` : Création (Admin uniquement). - `GET /favorites` : Liste les favoris de l'utilisateur. - `POST /favorites/:contentId` : Ajoute un favori. - `DELETE /favorites/:contentId` : Retire un favori. - `POST /reports` : Signale un contenu ou un tag. - `GET /reports` : Liste (Modérateurs). - `PATCH /reports/:id/status` : Gère le workflow. ### 🔑 Clés API & 🏷️ Tags - `POST /api-keys` : Génère une clé `{ name, expiresAt? }`. - `GET /api-keys` : Liste les clés actives. - `DELETE /api-keys/:id` : Révoque une clé. - `GET /tags` : Recherche de tags populaires ou récents. **Params :** `query`, `sort`, `limit`.