feat(api): Améliorer la documentation Swagger pour les routes de l'API, ajout de descriptions détaillées et de schémas pour les entités Project, Measurement, Video, Camera, et Error.
All checks were successful
SSH Backend Deploy / ssh-deploy (push) Successful in 10s
All checks were successful
SSH Backend Deploy / ssh-deploy (push) Successful in 10s
This commit is contained in:
@@ -7,12 +7,21 @@ const VideoController = require('../controllers/videoController');
|
||||
* @swagger
|
||||
* /videos:
|
||||
* get:
|
||||
* tags:
|
||||
* - Vidéos
|
||||
* summary: Récupère toutes les vidéos
|
||||
* description: Retourne la liste complète des vidéos de tous les projets
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Liste de toutes les vidéos
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: array
|
||||
* items:
|
||||
* $ref: '#/components/schemas/Video'
|
||||
* 500:
|
||||
* description: Erreur serveur
|
||||
* $ref: '#/components/responses/ServerError'
|
||||
*/
|
||||
router.get('/videos', VideoController.getAllVideos);
|
||||
|
||||
@@ -20,7 +29,10 @@ router.get('/videos', VideoController.getAllVideos);
|
||||
* @swagger
|
||||
* /videos/{id}:
|
||||
* get:
|
||||
* tags:
|
||||
* - Vidéos
|
||||
* summary: Récupère une vidéo par ID
|
||||
* description: Retourne les détails d'une vidéo spécifique
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: id
|
||||
@@ -31,12 +43,16 @@ router.get('/videos', VideoController.getAllVideos);
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Détails de la vidéo
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* $ref: '#/components/schemas/Video'
|
||||
* 400:
|
||||
* description: ID de vidéo invalide
|
||||
* $ref: '#/components/responses/BadRequest'
|
||||
* 404:
|
||||
* description: Vidéo non trouvée
|
||||
* $ref: '#/components/responses/NotFound'
|
||||
* 500:
|
||||
* description: Erreur serveur
|
||||
* $ref: '#/components/responses/ServerError'
|
||||
*/
|
||||
router.get('/videos/:id', VideoController.getVideoById);
|
||||
|
||||
@@ -44,7 +60,10 @@ router.get('/videos/:id', VideoController.getVideoById);
|
||||
* @swagger
|
||||
* /videos:
|
||||
* post:
|
||||
* tags:
|
||||
* - Vidéos
|
||||
* summary: Crée une nouvelle vidéo
|
||||
* description: Crée une nouvelle vidéo à partir d'une liste de mesures et démarre le processus de rendu
|
||||
* requestBody:
|
||||
* required: true
|
||||
* content:
|
||||
@@ -54,17 +73,21 @@ router.get('/videos/:id', VideoController.getVideoById);
|
||||
* properties:
|
||||
* project_id:
|
||||
* type: integer
|
||||
* description: ID du projet
|
||||
* measurement_ids:
|
||||
* type: string
|
||||
* description: JSON array of measurement IDs
|
||||
* description: Tableau JSON d'IDs de mesures
|
||||
* example: "[1,2,3,4,5]"
|
||||
* name:
|
||||
* type: string
|
||||
* description: Nom de la vidéo
|
||||
* resolution:
|
||||
* type: string
|
||||
* description: Résolution de la vidéo (format LARGEURxHAUTEUR)
|
||||
* example: "1920x1080"
|
||||
* duration:
|
||||
* type: integer
|
||||
* description: Duration in seconds
|
||||
* description: Durée souhaitée en secondes
|
||||
* required:
|
||||
* - project_id
|
||||
* - measurement_ids
|
||||
@@ -73,11 +96,22 @@ router.get('/videos/:id', VideoController.getVideoById);
|
||||
* - duration
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Vidéo créée avec succès
|
||||
* description: Vidéo créée avec succès et rendu démarré
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* message:
|
||||
* type: string
|
||||
* example: Vidéo créée avec succès et le rendu a démarré
|
||||
* id:
|
||||
* type: integer
|
||||
* example: 42
|
||||
* 400:
|
||||
* description: Paramètres invalides
|
||||
* $ref: '#/components/responses/BadRequest'
|
||||
* 500:
|
||||
* description: Erreur serveur
|
||||
* $ref: '#/components/responses/ServerError'
|
||||
*/
|
||||
router.post('/videos', VideoController.createVideo);
|
||||
|
||||
@@ -85,23 +119,34 @@ router.post('/videos', VideoController.createVideo);
|
||||
* @swagger
|
||||
* /videos/{id}:
|
||||
* delete:
|
||||
* tags:
|
||||
* - Vidéos
|
||||
* summary: Supprime une vidéo
|
||||
* description: Supprime une vidéo et le fichier vidéo associé
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: id
|
||||
* required: true
|
||||
* schema:
|
||||
* type: integer
|
||||
* description: ID de la vidéo
|
||||
* description: ID de la vidéo à supprimer
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Vidéo supprimée avec succès
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* message:
|
||||
* type: string
|
||||
* example: Vidéo supprimée avec succès
|
||||
* 400:
|
||||
* description: ID de vidéo invalide
|
||||
* $ref: '#/components/responses/BadRequest'
|
||||
* 404:
|
||||
* description: Vidéo non trouvée
|
||||
* $ref: '#/components/responses/NotFound'
|
||||
* 500:
|
||||
* description: Erreur serveur
|
||||
* $ref: '#/components/responses/ServerError'
|
||||
*/
|
||||
router.delete('/videos/:id', VideoController.deleteVideo);
|
||||
|
||||
@@ -109,7 +154,10 @@ router.delete('/videos/:id', VideoController.deleteVideo);
|
||||
* @swagger
|
||||
* /videos/file/{video_id}:
|
||||
* get:
|
||||
* tags:
|
||||
* - Vidéos
|
||||
* summary: Récupère le fichier vidéo
|
||||
* description: Télécharge ou diffuse le fichier vidéo avec support du streaming HTTP
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: video_id
|
||||
@@ -120,14 +168,19 @@ router.delete('/videos/:id', VideoController.deleteVideo);
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Fichier vidéo (stream)
|
||||
* content:
|
||||
* video/mp4:
|
||||
* schema:
|
||||
* type: string
|
||||
* format: binary
|
||||
* 206:
|
||||
* description: Fichier vidéo partiel (range request)
|
||||
* 400:
|
||||
* description: Vidéo pas encore produite
|
||||
* $ref: '#/components/responses/BadRequest'
|
||||
* 404:
|
||||
* description: Vidéo non trouvée
|
||||
* $ref: '#/components/responses/NotFound'
|
||||
* 500:
|
||||
* description: Erreur serveur
|
||||
* $ref: '#/components/responses/ServerError'
|
||||
*/
|
||||
router.get('/videos/file/:video_id', VideoController.getVideoFile);
|
||||
|
||||
@@ -135,7 +188,10 @@ router.get('/videos/file/:video_id', VideoController.getVideoFile);
|
||||
* @swagger
|
||||
* /videos/progress/{video_id}:
|
||||
* get:
|
||||
* tags:
|
||||
* - Vidéos
|
||||
* summary: Récupère la progression du rendu d'une vidéo
|
||||
* description: Donne des informations sur l'état actuel du rendu d'une vidéo
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: video_id
|
||||
@@ -153,16 +209,24 @@ router.get('/videos/file/:video_id', VideoController.getVideoFile);
|
||||
* properties:
|
||||
* progress:
|
||||
* type: number
|
||||
* description: Pourcentage de progression (0-100)
|
||||
* example: 45.2
|
||||
* elapsed:
|
||||
* type: number
|
||||
* description: Temps écoulé depuis le début du rendu (secondes)
|
||||
* example: 120
|
||||
* eta:
|
||||
* type: number
|
||||
* description: Temps estimé restant (secondes)
|
||||
* example: 150
|
||||
* status:
|
||||
* type: string
|
||||
* description: État actuel du rendu
|
||||
* example: En cours
|
||||
* 404:
|
||||
* description: Vidéo non trouvée
|
||||
* $ref: '#/components/responses/NotFound'
|
||||
* 500:
|
||||
* description: Erreur serveur
|
||||
* $ref: '#/components/responses/ServerError'
|
||||
*/
|
||||
router.get('/videos/progress/:video_id', VideoController.getVideoProgress);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user