// Routes SWAGGER - Documentation API // Documentation: https://swagger.io/docs/specification/2-0/basic-structure/ // Les documentations sont volontairement séparées du code source pour des raisons de lisibilité et de maintenabilité. /** * @swagger * /projects/{id}: * delete: * summary: Supprimer un projet par son ID * description: Supprime un projet spécifique en utilisant son ID. * parameters: * - in: path * name: id * schema: * type: integer * required: true * description: ID du projet * responses: * 200: * description: Projet supprimé avec succès. * 400: * description: ID de projet invalide. * 500: * description: Erreur serveur. */ /** * @swagger * /projects: * get: * summary: Récupérer tous les projets * description: Récupère tous les projets disponibles. * responses: * 200: * description: Une liste de projets. * content: * application/json: * schema: * type: array * items: * type: object * 500: * description: Erreur serveur. */ /** * @swagger * /projects/{id}: * get: * summary: Récupérer un projet par ID * description: Récupère un projet spécifique en utilisant son ID. * parameters: * - in: path * name: id * schema: * type: integer * required: true * description: ID du projet * responses: * 200: * description: Un projet. * content: * application/json: * schema: * type: object * 400: * description: ID de projet invalide. * 500: * description: Erreur serveur. */ /** * @swagger * /projects/{id}/videos: * get: * summary: Récupérer les vidéos d'un projet par ID * description: Récupère les vidéos associées à un projet spécifique en utilisant son ID. * parameters: * - in: path * name: id * schema: * type: integer * required: true * description: ID du projet * responses: * 200: * description: Une liste de vidéos. * content: * application/json: * schema: * type: array * items: * type: object * 400: * description: ID de projet invalide. * 500: * description: Erreur serveur. */ /** * @swagger * /projects/{id}/measurements: * get: * summary: Récupérer les mesures d'un projet par ID * description: Récupère les mesures associées à un projet spécifique en utilisant son ID. * parameters: * - in: path * name: id * schema: * type: integer * required: true * description: ID du projet * responses: * 200: * description: Une liste de mesures. * content: * application/json: * schema: * type: array * items: * type: object * 400: * description: ID de projet invalide. * 500: * description: Erreur serveur. */ /** * @swagger * /projects: * post: * summary: Ajouter un nouveau projet * description: Ajoute un nouveau projet à la base de données. * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * name: * type: string * description: * type: string * responses: * 201: * description: Projet ajouté avec succès. * 400: * description: Le nom et la description sont requis. * 500: * description: Erreur serveur. */ /** * @swagger * /procedure/start/: * post: * summary: Start the capture procedure * description: Starts the capture procedure with the given project ID and interval. * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * projectId: * type: integer * description: The ID of the project to start capturing. * interval: * type: integer * description: The interval in minutes for the capture. * responses: * 200: * description: Capture procedure started successfully. * content: * application/json: * schema: * type: object * properties: * message: * type: string * example: "Procédure de capture démarrée avec succès, projet ID: 1, interval: 10 minutes." * 500: * description: Internal server error. */ /** * @swagger * /procedure/stop/: * post: * summary: Stop the capture procedure * description: Stops the capture procedure. * responses: * 200: * description: Capture procedure stopped successfully. * content: * application/json: * schema: * type: object * properties: * message: * type: string * example: "Procédure de capture arrêtée avec succès." * 500: * description: Internal server error. */ /** * @swagger * /smile: * get: * summary: Retrieve a smile image * responses: * 200: * description: A smile image * content: * image/jpeg: * schema: * type: string * format: binary * 404: * description: Image not found */ /** * @swagger * /images/{projectId}/{orderId}: * get: * summary: Retrieve an image by project and order ID * parameters: * - in: path * name: projectId * required: true * schema: * type: string * description: The project ID * - in: path * name: orderId * required: true * schema: * type: string * description: The order ID * responses: * 200: * description: An image file * content: * application/octet-stream: * schema: * type: string * format: binary * 404: * description: Image not found */ /** * @swagger * /images/{measurementId}: * get: * summary: Retrieve an image by measurement ID * parameters: * - in: path * name: measurementId * required: true * schema: * type: string * description: The measurement ID * responses: * 200: * description: An image file * content: * application/octet-stream: * schema: * type: string * format: binary * 404: * description: Image not found */ /** * @swagger * /preview/{projectId}/{orderId}: * get: * summary: Retrieve a preview of an image by project and order ID * parameters: * - in: path * name: projectId * required: true * schema: * type: string * description: The project ID * - in: path * name: orderId * required: true * schema: * type: string * description: The order ID * responses: * 200: * description: A resized preview of the image * content: * image/jpeg: * schema: * type: string * format: binary * 404: * description: Image not found * 500: * description: Internal Server Error */ /** * @swagger * /measurements: * get: * summary: Récupérer toutes les mesures * description: Récupère toutes les mesures de la base de données. * responses: * 200: * description: Une liste de mesures. * content: * application/json: * schema: * type: array * items: * type: object * properties: * id: * type: integer * project_id: * type: integer * timestamp: * type: string * format: date-time * image_path: * type: string * temperature: * type: number * humidity: * type: number * 500: * description: Erreur serveur. */ /** * @swagger * /measurements/{id}: * get: * summary: Récupérer une mesure par ID * description: Récupère une mesure spécifique en utilisant son ID. * parameters: * - in: path * name: id * schema: * type: integer * required: true * description: ID de la mesure * responses: * 200: * description: Une mesure. * content: * application/json: * schema: * type: object * properties: * id: * type: integer * project_id: * type: integer * timestamp: * type: string * format: date-time * image_path: * type: string * temperature: * type: number * humidity: * type: number * 400: * description: ID de mesure invalide. * 500: * description: Erreur serveur. */ /** * @swagger * /measurements/{projectId}/{orderId}: * get: * summary: Récupérer une mesure par project ID et order ID * description: Récupère une mesure spécifique en utilisant le project ID et order ID. * parameters: * - in: path * name: projectId * schema: * type: integer * required: true * description: ID du projet * - in: path * name: orderId * schema: * type: integer * required: true * description: ID de la commande * responses: * 200: * description: Une mesure. * content: * application/json: * schema: * type: object * properties: * id: * type: integer * project_id: * type: integer * timestamp: * type: string * format: date-time * image_path: * type: string * temperature: * type: number * humidity: * type: number * 400: * description: ID de projet ou de commande invalide. * 500: * description: Erreur serveur. */ /** * @swagger * /measurements: * post: * summary: Ajouter une nouvelle mesure * description: Ajoute une nouvelle mesure à la base de données. * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * project_id: * type: integer * timestamp: * type: string * format: date-time * image_path: * type: string * temperature: * type: number * humidity: * type: number * responses: * 201: * description: Mesure ajoutée avec succès. * 400: * description: Tous les champs sont requis. * 500: * description: Erreur serveur. */ /** * @swagger * /measurements/{id}: * delete: * summary: Supprimer une mesure par ID * description: Supprime une mesure spécifique en utilisant son ID. * parameters: * - in: path * name: id * schema: * type: integer * required: true * description: ID de la mesure * responses: * 200: * description: Mesure supprimée avec succès. * 400: * description: ID de mesure invalide. * 500: * description: Erreur serveur. */ /** * @swagger * /measurements/{projectId}/{orderId}: * delete: * summary: Supprimer une mesure par project ID et order ID * description: Supprime une mesure spécifique en utilisant le project ID et order ID. * parameters: * - in: path * name: projectId * schema: * type: integer * required: true * description: ID du projet * - in: path * name: orderId * schema: * type: integer * required: true * description: ID de la commande * responses: * 200: * description: Mesure supprimée avec succès. * 400: * description: ID de projet ou de commande invalide. * 500: * description: Erreur serveur. */ /** * @swagger * /uploadmeasurement: * post: * summary: Télécharger une mesure avec une image * description: Télécharge une mesure avec une image pour un projet spécifique. * requestBody: * content: * multipart/form-data: * schema: * type: object * properties: * image: * type: string * format: binary * description: Fichier image à télécharger * projectId: * type: integer * description: ID du projet * timestamp: * type: string * format: date-time * description: Horodatage de la mesure * temperature: * type: number * description: Température mesurée * humidity: * type: number * description: Humidité mesurée * responses: * 200: * description: Mesure téléchargée avec succès. * content: * application/json: * schema: * type: object * properties: * message: * type: string * path: * type: string * id: * type: integer * 400: * description: Tous les champs sont requis. * 500: * description: Erreur serveur. */ /** * @swagger * /videos: * get: * summary: Récupérer toutes les vidéos * description: Récupère toutes les vidéos de la base de données. * responses: * 200: * description: Une liste de vidéos. * content: * application/json: * schema: * type: array * items: * type: object * properties: * id: * type: integer * project_id: * type: integer * measurement_ids: * type: string * video_path: * type: string * start_timestamp: * type: string * end_timestamp: * type: string * image_count: * type: integer * resolution: * type: string * duration: * type: number * fps: * type: number * status: * type: integer * name: * type: string * 500: * description: Erreur serveur. */ /** * @swagger * /videos/{id}: * get: * summary: Récupérer une vidéo par ID * description: Récupère une vidéo spécifique en utilisant son ID. * parameters: * - in: path * name: id * schema: * type: integer * required: true * description: ID de la vidéo * responses: * 200: * description: Une vidéo. * content: * application/json: * schema: * type: object * properties: * id: * type: integer * project_id: * type: integer * measurement_ids: * type: string * video_path: * type: string * start_timestamp: * type: string * end_timestamp: * type: string * image_count: * type: integer * resolution: * type: string * duration: * type: number * fps: * type: number * status: * type: integer * name: * type: string * 400: * description: ID de vidéo invalide. * 500: * description: Erreur serveur. */ /** * @swagger * /videos: * post: * summary: Créer une nouvelle vidéo * description: Crée une nouvelle vidéo avec les informations fournies. * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * project_id: * type: integer * measurement_ids: * type: string * name: * type: string * resolution: * type: string * duration: * type: number * responses: * 200: * description: Vidéo créée avec succès. * content: * application/json: * schema: * type: object * properties: * message: * type: string * video: * type: object * properties: * project_id: * type: integer * measurement_ids: * type: string * name: * type: string * resolution: * type: string * duration: * type: number * 400: * description: Tous les champs sont requis. * 500: * description: Erreur serveur. */ /** * @swagger * /videos/{id}: * delete: * summary: Supprimer une vidéo par ID * description: Supprime une vidéo spécifique en utilisant son ID. * parameters: * - in: path * name: id * schema: * type: integer * required: true * description: ID de la vidéo * responses: * 200: * description: Vidéo supprimée avec succès. * 400: * description: ID de vidéo invalide. * 404: * description: Aucune vidéo trouvée avec cet ID. * 500: * description: Erreur serveur. */ /** * @swagger * /videos/file/{video_id}: * get: * summary: Retrieve a video by video ID * parameters: * - in: path * name: video_id * required: true * schema: * type: string * description: The video ID * responses: * 200: * description: A video file * content: * application/octet-stream: * schema: * type: string * format: binary * 404: * description: Video not found * 400: * description: Video not yet produced */ /** * @swagger * /cat: * get: * summary: Retrieve a cat video * responses: * 200: * description: A cat video * content: * application/octet-stream: * schema: * type: string * format: binary * 404: * description: Video not found */