669 lines
18 KiB
JavaScript
669 lines
18 KiB
JavaScript
// 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
|
|
* /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/{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
|
|
*/
|