Documentation

Référence API — Pixel Night

La documentation interactive complète est disponible sur /docs — rendue par Redoc à partir de la route dynamique /api/openapi.

Accès rapide

MéthodeEndpointAuthDescription
POST/api/soirees/{id}/vote-themeNonVoter pour un thème
POST/api/soirees/{id}/vote-filmNonVoter pour un film
POST/api/soirees/{id}/propose-filmNonProposer un film
GET/api/soirees/{id}/proposalsNonLister les propositions
POST/api/soirees/{id}/finalize-themeDésigner le thème gagnant
POST/api/soirees/{id}/finalize-filmDésigner le film gagnant + appliquer l'exclusion
POST/api/soirees/{id}/fetch-filmsRécupérer les films (mots-clés TMDb)
POST/api/soirees/{id}/fetch-films-discoverRécupérer les films (genres TMDb Discover)
GET/api/soirees/{id}/filmsLister les films de la soirée
POST/api/soirees/{id}/filmsAjouter un film manuellement (curation)
DELETE/api/soirees/{id}/filmsSupprimer un film (curation)
POST/api/soirees/{id}/start-proposalsOuvrir la phase propositions
POST/api/soirees/{id}/close-proposalsClore les propositions
POST/api/soirees/{id}/cancelAnnuler la soirée
DELETE/api/soirees/{id}/deleteSupprimer la soirée
GET/api/tmdb/search?query=NonRechercher des films
GET/api/tmdb/movie/{tmdbId}NonDétails d'un film
GET/api/tmdb/statusNonStatut config TMDb
PATCH/api/soirees/{id}/update-settingsMettre à jour le nombre de films avant le vote

Authentification

Les routes marquées ✅ requièrent une session organisateur (cookie Supabase sb-access-token posé automatiquement après connexion sur /auth/login).

Réponse en cas d'accès non authentifié :

HTTP 401
{ "error": "Non autorise" }

Détail des routes de curation films

POST /api/soirees/{id}/fetch-films-discover

Récupère des films depuis TMDb Discover en utilisant les genre_ids du thème gagnant.

  • Interroge /discover/movie avec les genres + vote_count.gte=100 + vote_average.gte=6
  • Récupère 5 pages aléatoires parmi les 10 premières pour de la variété
  • Repli automatique sur la recherche par mots-clés si aucun genre n'est configuré
  • Enrichit chaque film (réalisateur, durée, bande-annonce YouTube)

Réponse :

{ "success": true, "count": 18, "used_discover": true }

POST /api/soirees/{id}/films

Ajoute un film manuellement à la liste. Bloqué si des votes existent déjà.

Corps :

{ "tmdb_id": 550 }

Codes : 200 succès · 409 votes déjà enregistrés · 404 film introuvable sur TMDb

DELETE /api/soirees/{id}/films

Supprime un film de la liste. Bloqué si des votes existent déjà.

Corps :

{ "film_id": "uuid-de-sp_soiree_films" }

Codes : 200 succès · 409 votes déjà enregistrés

Format des erreurs

Toutes les erreurs suivent le format :

{ "error": "Description de l'erreur" }

Codes de statut utilisés

CodeSignification
200Succès
400Paramètres invalides ou phase incorrecte
401Non authentifié
404Ressource introuvable
409Conflit (doublon de vote, limite atteinte, votes déjà présents)
500Erreur serveur interne
502Erreur lors de l'appel TMDb

Voir la documentation complète

Ouvrir la documentation interactive Redoc

Le fichier source OpenAPI est openapi.yaml à la racine du projet. La version y est injectée automatiquement depuis package.json au moment de la requête via GET /api/openapi.