openapi: 3.0.0
info:
  title: Description de l'API Rest HP
  description: Description openAPI de l'API Rest d'Hyperplanning.
  version: 1.0.0
servers:
  - url: 'http://localhost/hpsw/api/v1/'
tags:
  - name: Baccalaureats
    description: API relative aux baccalauréats
  - name: Baccalaureat_specialites
    description: API relative aux spécialités du baccalauréat
  - name: Cours
    description: API relative aux cours
  - name: CoursAnnules
    description: API relative aux cours annulés
  - name: Cursus
    description: API relative aux cursus
  - name: Departements
    description: API relative aux départements
  - name: Enseignants
    description: API relative aux enseignants
  - name: Etablissement_Origine
    description: API relative aux établissements d'origine
  - name: Etudiants
    description: API relative aux étudiants
  - name: Familles
    description: API relative aux familles
  - name: Icals
    description: API relative aux icals
  - name: Matieres
    description: API relative aux matières
  - name: Modules
    description: API relative aux modules
  - name: MotifsAnnulation
    description: API relative aux motifs d'annulation
  - name: Parametres_Base
    description: API relative aux paramètres de la base
  - name: Parents
    description: API relative aux parents
  - name: Partitions
    description: API relative aux partitions
  - name: Ponderations
    description: API relative aux pondérations de cours
  - name: Promotions
    description: API relative aux promotions
  - name: Regroupements
    description: API relative aux regroupements
  - name: Rubriques
    description: API relative aux rubriques des familles
  - name: Salles
    description: API relative aux salles et groupes de salles
  - name: Semaines
    description: API relative aux semaines
  - name: Sites
    description: API relative aux sites
  - name: TDOptions
    description: API relative aux TD et options
  - name: TypeDernierDiplome
    description: API relative aux types du dernier diplôme
  - name: Types
    description: API relative aux types de cours
  - name: Version
    description: API relative à la version de l'application
        
paths:
    /cours:
        get:
            tags:
                - Cours
            summary: Liste de tous les cours.
            description: Tableau contenant les json des cours de la base, par défaut trié par clé.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - cle
                        - type
                        - place
                        - proprietaire
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                - in: query
                  name: cle
                  description: retourne seulement les cours ayant une de ces clés
                  required: false
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                - in: query
                  name: parente
                  description: retourne seulement les cours ayant une de ces parentés
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                - in: query
                  name: est_non_place
                  description: retourne seulement les cours placés ou non placés
                  schema:
                    type: boolean
                  style: form
                  explode: false
                - in: query
                  name: statut_place
                  description: retourne seulement les cours ayant un de ces statuts
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                - in: query
                  name: mobilite_seances
                  description: retourne seulement les cours ayant une de ces mobilités
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                - in: query
                  name: matiere
                  description: retourne seulement les cours ayant une de ces clés matières
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                - in: query
                  name: type
                  description: retourne seulement les cours ayant un de ces types
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                - in: query
                  name: reference
                  description: retourne seulement les cours ayant un de ces numéros de références (ne passer que le numéro, pas la chaine entière)
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false

            responses:
              '200':    # status code
                description: Tableau des JSON des cours
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Cours'
        post:
            tags:
                - Cours
            summary: Création d'un nouveau cours dans la base
            description: Création d'un nouveau cours dans la base et initialisation des champs à l'aide des paramètres passés dans le JSON.
            requestBody:
                description: Champs du JSON utilisé pour la création
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Cours'
            responses:
                '201':
                    description: Created            
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Cours'
                '400':
                  description: "Paramètres non valides : matière, durée, statut_place, mobilite_seances domaine ou domaine_potentiel obligatoires"
                '500':
                  description: 
                    Création ou modification d'au moins un des champs impossible 
    /cours_annules:
        get:
            tags:
                - CoursAnnules
            summary: Liste de tous les cours annulés.
            description: Tableau contenant les json des cours annulés de la base, par défaut trié par clé.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - cle
                        - type
                        - matiere
                        - motif_annulation
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de réponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de réponse
                - in: query
                  name: cle
                  description: retourne seulement les cours annulés ayant une de ces clés
                  required: false
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                - in: query
                  name: matiere
                  description: retourne seulement les cours annulés ayant une de ces clés matières
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                - in: query
                  name: type
                  description: retourne seulement les cours annulés ayant un de ces types 
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                - in: query
                  name: reference
                  description: retourne seulement les cours annulés ayant un de ces numéros de références (ne passer que le numéro, pas la chaine entière)
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                - in: query
                  name: date_debut
                  description: retourne seulement les cours annulés ayant lieu après cette date de debut. Si non renseigné, prend la premiere date de la base.
                  schema:
                    type: string
                  style: form
                  explode: false
                - in: query
                  name: date_fin
                  description: retourne seulement les cours annulés ayant lieu avant cette date de fin. Si non renseigné, prend la derniere date de la base.
                  schema:
                    type: string
                  style: form
                  explode: false
                - in: query
                  name: enseignants
                  description: retourne seulement les cours annulés de ces enseignants
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                - in: query
                  name: promotions
                  description: retourne seulement les cours annulés de ces promotions
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                - in: query
                  name: tdoptions
                  description: retourne seulement les cours annulés de ces td/options
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                - in: query
                  name: regroupements
                  description: retourne seulement les cours annulés de ces regroupements
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                - in: query
                  name: salles
                  description: retourne seulement les cours annulés de ces salles
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                - in: query
                  name: etudiants
                  description: retourne seulement les cours annulés de ces étudiants
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
            responses:
              '200':    # status code
                description: Tableau des JSON des cours annulés
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/CoursAnnules'
        post:
            tags:
                - CoursAnnules
            summary: Annulation d'un cours dans la base
            description: Annulation d'un cours dans la base à l'aide des paramètres passés dans le JSON.
            requestBody:
                description: Champs du JSON utilisé pour la création (cle_cours, domaine, motif et commentaire)
                required: true
                content:
                    application/json:
                        schema:
                            type: object
                            properties:
                                cle_cours:
                                    type: integer
                                    example: 388
                                domaine:
                                    type: array
                                    items:
                                        type: integer
                                    example: [10,12,14,15]
                                motif_annulation:
                                    type: string
                                    example: "Annulation"
                                commentaire:
                                    type: string
                                    example: "commentaire"
            responses:
                '204':
                  description: succès
                '400':
                  description: "Paramètres non valides : cle_cours obligatoire, cours protege ou verrouille"
                '500':
                  description: Annulation impossible 
    /cursus:
        get:
            tags:
                - Cursus
            summary: Liste de tous les cursus.
            description: Tableau contenant les json des cursus de la base, par défaut trié par nom puis code.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - cle
                        - nom
                        - code
                        - proprietaire
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - in: query
                  name: cle
                  description: Filtre sur les clés des cursus
                  required: false
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneIds:
                      summary: Exemple avec une seule clé souhaitée
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Exemple avec plusieurs clés souhaitées
                      value: [12, 24, 48]   # ?cle=12,24,48
                - in: query
                  name: nom
                  description: Filtre sur les noms des cursus
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul nom souhaité
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Exemple avec plusieurs noms souhaités
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - in: query
                  name: code
                  description: Filtre sur les codes des cursus
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul code souhaité
                      value: [mths]   # ?code=mths
                    multipleIds:
                      summary: Exemple avec plusieurs codes souhaités
                      value: [mths, fr, hist]   # ?code=mths,fr,hist
            responses:
              '200':    # status code
                description: Tableau des JSON des cursus
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Cursus'
        post:
            tags:
                - Cursus
            summary: Création d'un nouveau cursus
            description: Création d'un nouveau cursus dans la base et initialisation des champs à l'aide des paramètres passés dans le JSON.
            requestBody:
                description: Champs du JSON utilisés pour la création
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Cursus'
            responses:
                '201':
                    description: Created            
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Cursus'
                '400':
                  description: "Paramètres non valides : nom obligatoire, problème de taille"
                '500':
                  description: 
                    Création ou modification d'au moins un des champs impossible 
    /enseignants:
        get:
            tags:
                - Enseignants
            summary: Liste de tous les enseignants.
            description: Tableau contenant les json des enseignants de la base, par défaut trié par nom, prénom puis code.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - cle
                        - nom
                        - prenom
                        - code
                        - uid_identifiant
                        - proprietaire
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - in: query
                  name: cle
                  description: retourne seulement les enseignants ayant une de ces clés
                  required: false
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [12, 24, 48]   # ?cle=12,24,48
                - in: query
                  name: nom
                  description: retourne seulement les enseignants ayant un de ces noms
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul nom souhaité
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Exemple avec plusieurs noms souhaités
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - in: query
                  name: prenom
                  description: retourne seulement les enseignants ayant un de ces prenoms
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul prenom souhaité
                      value: [maths]   # ?prenom=maths
                    multipleIds:
                      summary: Exemple avec plusieurs prenoms souhaités
                      value: [maths, francais, histoire]   # ?prenom=maths,francais,histoire
                - in: query
                  name: code
                  description: retourne seulement les enseignants ayant un de ces codes
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul code souhaité
                      value: [mths]   # ?code=mths
                    multipleIds:
                      summary: Exemple avec plusieurs codes souhaités
                      value: [mths, fr, hist]   # ?code=mths,fr,hist
                - in: query
                  name: uid_identifiant
                  description: retourne seulement les enseignants ayant un de ces uid_identifiants
                  schema:
                    type: array
                    items:
                       type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul uid_identifiant souhaité
                      value: [mths]   # ?uid_identifiant=mths
                    multipleIds:
                      summary: Exemple avec plusieurs uid_identifiant souhaités
                      value: [mths, fr, hist]   # ?uid_identifiant=mths,fr,hist
            responses:

              '200':    # status code
                description: Tableau des JSON des enseignants
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Enseignants'
        post:
            tags:
                - Enseignants
            summary: Création d'un nouvel enseignant dans la base
            description: Création d'un nouvel enseignant dans la base et initialisation des champs à l'aide des paramètres passés dans le JSON.
            requestBody:
                description: Champs du JSON utilisé pour la création
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Enseignants'
            responses:
                '201':
                    description: Created            
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Enseignants'
                '400':
                  description: "Paramètres non valides : nom obligatoire, problème de taille"
                '500':
                  description: 
                    Création ou modification d'au moins un des champs impossible 
    /etudiants:
        get:
            tags:
                - Etudiants
            summary: Liste de tous les étudiants.
            description: Tableau contenant les json des étudiants de la base, par défaut trié par nom, prénom puis date de naissance.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - cle
                        - nom
                        - numero_ine
                        - numero_ordre
                        - uid_identifiant
                        - proprietaire
                        - civilite
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - in: query
                  name: cle
                  description: retourne seulement les étudiants ayant une de ces clés
                  required: false
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [12, 24, 48]   # ?cle=12,24,48
                - in: query
                  name: nom
                  description: retourne seulement les étudiants ayant un de ces noms
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul nom souhaité
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Exemple avec plusieurs noms souhaités
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - in: query
                  name: prenom
                  description: retourne seulement les étudiants ayant un de ces prenoms
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul prenom souhaité
                      value: [maths]   # ?prenom=maths
                    multipleIds:
                      summary: Exemple avec plusieurs prenoms souhaités
                      value: [maths, francais, histoire]   # ?prenom=maths,francais,histoire
                - in: query
                  name: date_naissance
                  description: retourne seulement les étudiants ayant une de ces dates de naissance
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec une seule date de naissance souhaitée
                      value: [mths]   # ?date_naissance=mths
                    multipleIds:
                      summary: Exemple avec plusieurs dates de naissance souhaitées
                      value: [mths, fr, hist]   # ?date_naissance=mths,fr,hist
                - in: query
                  name: uid_identifiant
                  description: retourne seulement les étudiants ayant un de ces uid_identifiants
                  schema:
                    type: array
                    items:
                       type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul uid_identifiant souhaité
                      value: [mths]   # ?uid_identifiant=mths
                    multipleIds:
                      summary: Exemple avec plusieurs uid_identifiant souhaités
                      value: [mths, fr, hist]   # ?uid_identifiant=mths,fr,hist
                - in: query
                  name: numero_ordre
                  description: retourne seulement les étudiants ayant un de ces numéros d'ordre
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul numéro d'ordre souhaité
                      value: [mths]   # ?numero_ordre=mths
                    multipleIds:
                      summary: Exemple avec plusieurs numéros d'ordre souhaités
                      value: [mths, fr, hist]   # ?numero_ordre=mths,fr,hist
                - in: query
                  name: numero_ine
                  description: retourne seulement les étudiants ayant un de ces numéros INE
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul numéro INE souhaité
                      value: [mths]   # ?numero_ine=mths
                    multipleIds:
                      summary: Exemple avec plusieurs numéros INE souhaités
                      value: [mths, fr, hist]   # ?numero_ine=mths,fr,hist
            responses:
              '200':    # status code
                description: Tableau des JSON des étudiants
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Etudiants'
        post:
            tags:
                - Etudiants
            summary: Création d'un nouvel étudiant dans la base
            description: Création d'un nouvel étudiant dans la base et initialisation des champs à l'aide des paramètres passés dans le JSON.
            requestBody:
                description: Champs du JSON utilisé pour la création
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Etudiants'
            responses:
                '201':
                    description: Created            
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Etudiants'
                '400':
                  description: "Paramètres non valides : nom obligatoire, problème de taille"
                '500':
                  description: 
                    Création ou modification d'au moins un des champs impossible 
    /matieres:
        get:
            tags:
                - Matieres
            summary: Liste de toutes les matières.
            description: Tableau contenant les json des matières de la base, par défaut trié par libelle puis code.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - cle
                        - libelle
                        - code
                        - libelle_long
                        - uid_identifiant
                        - couleur
                        - proprietaire
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [cle, libelle, code]   # ?select=cle,libelle,code
                - in: query
                  name: cle
                  description: retourne seulement les matières ayant une de ces clés
                  required: false
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [12, 24, 48]   # ?cle=12,24,48
                - in: query
                  name: libelle
                  description: retourne seulement les matières ayant un de ces libelles
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul libelle souhaité
                      value: [maths]   # ?libelle=maths
                    multipleIds:
                      summary: Exemple avec plusieurs libelles souhaités
                      value: [maths, francais, histoire]   # ?libelle=maths,francais,histoire
                - in: query
                  name: code
                  description: retourne seulement les matières ayant un de ces codes
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul code souhaité
                      value: [mths]   # ?code=mths
                    multipleIds:
                      summary: Exemple avec plusieurs codes souhaités
                      value: [mths, fr, hist]   # ?code=mths,fr,hist
                - in: query
                  name: uid_identifiant
                  description: retourne seulement les matières ayant un de ces uid_identifiants
                  schema:
                    type: array
                    items:
                       type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul uid_identifiant souhaité
                      value: [mths]   # ?uid_identifiant=mths
                    multipleIds:
                      summary: Exemple avec plusieurs uid_identifiant souhaités
                      value: [mths, fr, hist]   # ?uid_identifiant=mths,fr,hist
            responses:
              '200':    # status code
                description: Tableau des JSON des matières
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Matieres'
        post:
            tags:
                - Matieres
            summary: Création d'une nouvelle matière dans la base
            description: Création d'une nouvelle matière dans la base et initialisation des champs à l'aide des paramètres passés dans le JSON.
            requestBody:
                description: Champs du JSON utilisé pour la création
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Matieres'
            responses:
                '201':
                    description: Created            
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Matieres'
                '400':
                  description: "Paramètres non valides : libelle obligatoire, problème de taille"
                '500':
                  description: 
                    Création ou modification d'au moins un des champs impossible 
    /modules:
        get:
            tags:
                - Modules
            summary: Liste de tous les modules.
            description: Tableau contenant les json des modules de la base, par défaut trié par nom puis code.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - cle
                        - nom
                        - code
                        - proprietaire
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - in: query
                  name: cle
                  description: retourne seulement les modules ayant une de ces clés
                  required: false
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [12, 24, 48]   # ?cle=12,24,48
                - in: query
                  name: nom
                  description: retourne seulement les modules ayant un de ces noms
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul nom souhaité
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Exemple avec plusieurs noms souhaités
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - in: query
                  name: code
                  description: retourne seulement les modules ayant un de ces codes
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul code souhaité
                      value: [mths]   # ?code=mths
                    multipleIds:
                      summary: Exemple avec plusieurs codes souhaités
                      value: [mths, fr, hist]   # ?code=mths,fr,hist
            responses:
              '200':    # status code
                description: Tableau des JSON des modules
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Modules'
        post:
            tags:
                - Modules
            summary: Création d'un nouveau module dans la base
            description: Création d'un nouveau module dans la base et initialisation des champs à l'aide des paramètres passés dans le JSON.
            requestBody:
                description: Champs du JSON utilisé pour la création
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Modules'
            responses:
                '201':
                    description: Created            
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Modules'
                '400':
                  description: "Paramètres non valides : nom obligatoire, problème de taille"
                '500':
                  description: 
                    Création ou modification d'au moins un des champs impossible 
    /parents:
        get:
            tags:
                - Parents
            summary: Liste de tous les parents.
            description: Tableau contenant les json des parents de la base, par défaut trié par nom, prénom, adresse1 puis civilité.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - cle
                        - nom
                        - uid_identifiant
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - in: query
                  name: cle
                  description: retourne seulement les parents ayant une de ces clés
                  required: false
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [12, 24, 48]   # ?cle=12,24,48
                - in: query
                  name: nom
                  description: retourne seulement les parents ayant un de ces noms
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul nom souhaité
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Exemple avec plusieurs noms souhaités
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - in: query
                  name: prenom
                  description: retourne seulement les parents ayant un de ces prenoms
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul prenom souhaité
                      value: [maths]   # ?prenom=maths
                    multipleIds:
                      summary: Exemple avec plusieurs prenoms souhaités
                      value: [maths, francais, histoire]   # ?prenom=maths,francais,histoire
                - in: query
                  name: nom_naissance
                  description: retourne seulement les parents ayant un de ces noms de naissance
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec une seule date de naissance souhaitée
                      value: [mths]   # ?nom_naissance=mths
                    multipleIds:
                      summary: Exemple avec plusieurs dates de naissance souhaitées
                      value: [mths, fr, hist]   # ?nom_naissance=mths,fr,hist
                - in: query
                  name: uid_identifiant
                  description: retourne seulement les parents ayant un de ces uid_identifiants
                  schema:
                    type: array
                    items:
                       type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul uid_identifiant souhaité
                      value: [mths]   # ?uid_identifiant=mths
                    multipleIds:
                      summary: Exemple avec plusieurs uid_identifiant souhaités
                      value: [mths, fr, hist]   # ?uid_identifiant=mths,fr,hist
            responses:
              '200':    # status code
                description: Tableau des JSON des parents
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Parents'
        post:
            tags:
                - Parents
            summary: Création d'un nouveau parent dans la base
            description: Création d'un nouveau parent dans la base et initialisation des champs à l'aide des paramètres passés dans le JSON.
            requestBody:
                description: Champs du JSON utilisé pour la création
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Parents'
            responses:
                '201':
                    description: Created            
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Parents'
                '400':
                  description: "Paramètres non valides : nom obligatoire, problème de taille"
                '500':
                  description: 
                    Création ou modification d'au moins un des champs impossible 
    /partitions:
        get:
            tags:
                - Partitions
            summary: Liste de toutes les partitions.
            description: Tableau contenant les json des partitions de la base, par défaut trié par promotion et nom.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - cle
                        - nom
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - in: query
                  name: cle
                  description: retourne seulement les partitions ayant une de ces clés
                  required: false
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [12, 24, 48]   # ?cle=12,24,48
                - in: query
                  name: nom
                  description: retourne seulement les partitions ayant un de ces noms
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul nom souhaité
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Exemple avec plusieurs noms souhaités
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - in: query
                  name: promotion
                  description: retourne seulement les partitions ayant une de ces promotions
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul prenom souhaité
                      value: [12]   # ?promotion=12
                    multipleIds:
                      summary: Exemple avec plusieurs prenoms souhaités
                      value: [12, 15, 18]   # ?promotion=12,15,18
            responses:
              '200':    # status code
                description: Tableau des JSON des partitions
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Partitions'
        post:
            tags:
                - Partitions
            summary: Création d'une nouvelle partition dans la base
            description: Création d'une nouvelle partition dans la base et initialisation des champs à l'aide des paramètres passés dans le JSON.
            requestBody:
                description: Champs du JSON utilisé pour la création
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Partitions'
            responses:
                '201':
                    description: Created            
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Partitions'
                '400':
                  description: "Paramètres non valides : nom obligatoire, problème de taille"
                '500':
                  description: 
                    Création ou modification d'au moins un des champs impossible 
    /promotions:
        get:
            tags:
                - Promotions
            summary: Liste de toutes les promotions.
            description: Tableau contenant les json des promotions de la base, par défaut trié par nom puis code.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - cle
                        - nom
                        - code
                        - libelle_long
                        - uid_identifiant
                        - proprietaire
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - in: query
                  name: cle
                  description: retourne seulement les promotions ayant une de ces clés
                  required: false
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [12, 24, 48]   # ?cle=12,24,48
                - in: query
                  name: nom
                  description: retourne seulement les promotions ayant un de ces noms
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul nom souhaité
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Exemple avec plusieurs noms souhaités
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - in: query
                  name: code
                  description: retourne seulement les promotions ayant un de ces codes
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul code souhaité
                      value: [mths]   # ?code=mths
                    multipleIds:
                      summary: Exemple avec plusieurs codes souhaités
                      value: [mths, fr, hist]   # ?code=mths,fr,hist
                - in: query
                  name: uid_identifiant
                  description: retourne seulement les promotions ayant un de ces uid_identifiants
                  schema:
                    type: array
                    items:
                       type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul uid_identifiant souhaité
                      value: [mths]   # ?uid_identifiant=mths
                    multipleIds:
                      summary: Exemple avec plusieurs uid_identifiant souhaités
                      value: [mths, fr, hist]   # ?uid_identifiant=mths,fr,hist
            responses:
              '200':    # status code
                description: Tableau des JSON des promotions
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Promotions'
        post:
            tags:
                - Promotions
            summary: Création d'une nouvelle promotion dans la base
            description: Création d'une nouvelle promotion dans la base et initialisation des champs à l'aide des paramètres passés dans le JSON.
            requestBody:
                description: Champs du JSON utilisé pour la création
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Promotions'
            responses:
                '201':
                    description: Created            
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Promotions'
                '400':
                  description: "Paramètres non valides : nom obligatoire, problème de taille"
                '500':
                  description: 
                    Création ou modification d'au moins un des champs impossible 
    /regroupements:
        get:
            tags:
                - Regroupements
            summary: Liste de tous les regroupements.
            description: Tableau contenant les json des regroupements de la base, par défaut trié par nom puis code.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - cle
                        - nom
                        - code
                        - uid_identifiant
                        - proprietaire
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - in: query
                  name: cle
                  description: retourne seulement les regroupements ayant une de ces clés
                  required: false
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [12, 24, 48]   # ?cle=12,24,48
                - in: query
                  name: nom
                  description: retourne seulement les regroupements ayant un de ces noms
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul nom souhaité
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Exemple avec plusieurs noms souhaités
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - in: query
                  name: code
                  description: retourne seulement les regroupements ayant un de ces codes
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul code souhaité
                      value: [mths]   # ?code=mths
                    multipleIds:
                      summary: Exemple avec plusieurs codes souhaités
                      value: [mths, fr, hist]   # ?code=mths,fr,hist
                - in: query
                  name: uid_identifiant
                  description: retourne seulement les regroupements ayant un de ces uid_identifiants
                  schema:
                    type: array
                    items:
                       type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul uid_identifiant souhaité
                      value: [mths]   # ?uid_identifiant=mths
                    multipleIds:
                      summary: Exemple avec plusieurs uid_identifiant souhaités
                      value: [mths, fr, hist]   # ?uid_identifiant=mths,fr,hist
            responses:
              '200':    # status code
                description: Tableau des JSON des regroupements
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Regroupements'
        post:
            tags:
                - Regroupements
            summary: Création d'un nouveau regroupement dans la base
            description: Création d'un nouveau regroupement dans la base et initialisation des champs à l'aide des paramètres passés dans le JSON.
            requestBody:
                description: Champs du JSON utilisé pour la création
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Regroupements'
            responses:
                '201':
                    description: Created            
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Regroupements'
                '400':
                  description: "Paramètres non valides : nom obligatoire, problème de taille"
                '500':
                  description: 
                    Création ou modification d'au moins un des champs impossible 
    /salles:
        get:
            tags:
                - Salles
            summary: Liste de toutes les salles.
            description: Tableau contenant les json des salles de la base, par défaut trié par nom puis code.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - cle
                        - nom
                        - code
                        - uid_identifiant
                        - proprietaire
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - in: query
                  name: cle
                  description: retourne seulement les salles ayant une de ces clés
                  required: false
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [12, 24, 48]   # ?cle=12,24,48
                - in: query
                  name: nom
                  description: retourne seulement les salles ayant un de ces noms
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul nom souhaité
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Exemple avec plusieurs noms souhaités
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - in: query
                  name: code
                  description: retourne seulement les salles ayant un de ces codes
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul code souhaité
                      value: [mths]   # ?code=mths
                    multipleIds:
                      summary: Exemple avec plusieurs codes souhaités
                      value: [mths, fr, hist]   # ?code=mths,fr,hist
                - in: query
                  name: uid_identifiant
                  description: retourne seulement les salles ayant un de ces uid_identifiants
                  schema:
                    type: array
                    items:
                       type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul uid_identifiant souhaité
                      value: [mths]   # ?uid_identifiant=mths
                    multipleIds:
                      summary: Exemple avec plusieurs uid_identifiant souhaités
                      value: [mths, fr, hist]   # ?uid_identifiant=mths,fr,hist
            responses:
              '200':    # status code
                description: Tableau des JSON des salles
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Salles'
        post:
            tags:
                - Salles
            summary: Création d'une nouvelle salle dans la base
            description: Création d'une nouvelle salle dans la base et initialisation des champs à l'aide des paramètres passés dans le JSON.
            requestBody:
                description: Champs du JSON utilisé pour la création
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Salles'
            responses:
                '201':
                    description: Created            
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Salles'
                '400':
                  description: "Paramètres non valides : nom obligatoire, problème de taille"
                '500':
                  description: 
                    Création ou modification d'au moins un des champs impossible 
    /tdoptions:
        get:
            tags:
                - TDOptions
            summary: Liste de tous les TD/options.
            description: Tableau contenant les json des TD/options de la base, par défaut trié par nom puis code.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - cle
                        - nom
                        - code
                        - uid_identifiant
                        - proprietaire
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - in: query
                  name: cle
                  description: retourne seulement les TD/options ayant une de ces clés
                  required: false
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [12, 24, 48]   # ?cle=12,24,48
                - in: query
                  name: nom
                  description: retourne seulement les TD/options ayant un de ces noms
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul nom souhaité
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Exemple avec plusieurs noms souhaités
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - in: query
                  name: code
                  description: retourne seulement les TD/options ayant un de ces codes
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul code souhaité
                      value: [mths]   # ?code=mths
                    multipleIds:
                      summary: Exemple avec plusieurs codes souhaités
                      value: [mths, fr, hist]   # ?code=mths,fr,hist
                - in: query
                  name: uid_identifiant
                  description: retourne seulement les TD/options ayant un de ces uid_identifiants
                  schema:
                    type: array
                    items:
                       type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul uid_identifiant souhaité
                      value: [mths]   # ?uid_identifiant=mths
                    multipleIds:
                      summary: Exemple avec plusieurs uid_identifiant souhaités
                      value: [mths, fr, hist]   # ?uid_identifiant=mths,fr,hist
            responses:
              '200':    # status code
                description: Tableau des JSON des TD/options
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/TDOptions'
        post:
            tags:
                - TDOptions
            summary: Création d'un nouveau TD/option dans la base
            description: Création d'un nouveau TD/option dans la base et initialisation des champs à l'aide des paramètres passés dans le JSON.
            requestBody:
                description: Champs du JSON utilisé pour la création
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/TDOptions'
            responses:
                '201':
                    description: Created            
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/TDOptions'
                '400':
                  description: "Paramètres non valides : nom obligatoire, problème de taille"
                '500':
                  description: 
                    Création ou modification d'au moins un des champs impossible 
    /baccalaureats:
        get:
            tags:
                - Baccalaureats
            summary: Liste de tous les baccalauréats.
            description: Tableau contenant les json des baccalauréats de la base, par défaut trié par nom.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - nom
                        - code
                        - type
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [nom]   # ?select=nom
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [nom, code]   # ?select=nom,code
                - in: query
                  name: nom
                  description: retourne seulement les baccalauréats ayant un de ces noms
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul nom souhaité
                      value: [SCIENTIFIQUE]   # ?nom=SCIENTIFIQUE
                    multipleIds:
                      summary: Exemple avec plusieurs noms souhaités
                      value: [SCIENTIFIQUE, LITTÉRAIRE]   # ?nom=SCIENTIFIQUE,LITTÉRAIRE
                - in: query
                  name: code
                  description: retourne seulement les baccalauréats ayant un de ces codes
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul code souhaité
                      value: [S]   # ?code=S
                    multipleIds:
                      summary: Exemple avec plusieurs codes souhaités
                      value: [S, L]   # ?code=S,L
                - in: query
                  name: type
                  description: retourne seulement les baccalauréats ayant un de ces types
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul type souhaité
                      value: [Autre]   # ?code=Autre
                    multipleIds:
                      summary: Exemple avec plusieurs types souhaités
                      value: [Autre, Équivalence]   # ?code=Autre,Équivalence
            responses:
              '200':    # status code
                description: Tableau des JSON des baccalauréats
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Baccalaureats'
    /baccalaureat_specialites:
        get:
            tags:
                - Baccalaureat_specialites
            summary: Liste de toutes les spécialités du baccalauréat.
            description: Tableau contenant les json des spécialités du baccalauréat de la base, par défaut trié par nom.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - nom
                        - code
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [nom]   # ?select=nom
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [nom, code]   # ?select=nom,code
                - in: query
                  name: nom
                  description: retourne seulement les spécialités du baccalauréat ayant un de ces noms
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul nom souhaité
                      value: [MATHEMATIQUES]   # ?nom=MATHEMATIQUES
                    multipleIds:
                      summary: Exemple avec plusieurs noms souhaités
                      value: [MATHEMATIQUES, PHYSIQUE-CHIMIE]   # ?nom=MATHEMATIQUES,PHYSIQUE-CHIMIE
                - in: query
                  name: code
                  description: retourne seulement les spécialités du baccalauréat ayant un de ces codes
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul code souhaité
                      value: [MATHS]   # ?code=MATHS
                    multipleIds:
                      summary: Exemple avec plusieurs codes souhaités
                      value: [MATHS, PHY_CHI]   # ?code=MATHS,PHY_CHI
            responses:
              '200':    # status code
                description: Tableau des JSON des spécialités du baccalauréat
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Baccalaureat_specialites'
    /departements:
        get:
            tags:
                - Departements
            summary: Liste de tous les départements.
            description: Tableau contenant les json des départements de la base, par défaut trié par nom.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - nom
                        - code
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [nom]   # ?select=nom
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [nom, code]   # ?select=nom,code
                - in: query
                  name: nom
                  description: retourne seulement les départements ayant un de ces noms
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul nom souhaité
                      value: [Ain]   # ?nom=Ain
                    multipleIds:
                      summary: Exemple avec plusieurs noms souhaités
                      value: [Ain, Aisne, Allier]   # ?nom=Ain,Aisne,Allier
                - in: query
                  name: code
                  description: retourne seulement les départements ayant un de ces codes
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul code souhaité
                      value: [001]   # ?code=001
                    multipleIds:
                      summary: Exemple avec plusieurs codes souhaités
                      value: [001, 002, 003]   # ?code=001,002,003
            responses:
              '200':    # status code
                description: Tableau des JSON des départements
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Departements'
    /type_dernier_diplome:
        get:
            tags:
                - TypeDernierDiplome
            summary: Liste de tous les types de dernier diplome.
            description: Tableau contenant les json des types de dernier diplome de la base, par défaut trié par nom.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - nom
                        - code
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [nom]   # ?select=nom
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [nom, code]   # ?select=nom,code
                - in: query
                  name: nom
                  description: retourne seulement les types de dernier diplome ayant un de ces noms
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul nom souhaité
                      value: [BTS]   # ?nom=BTS
                    multipleIds:
                      summary: Exemple avec plusieurs noms souhaités
                      value: [BTS, DUT]   # ?nom=BTS,DUT
                - in: query
                  name: code
                  description: retourne seulement les types de dernier diplome ayant un de ces codes
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul code souhaité
                      value: [B]   # ?code=B
                    multipleIds:
                      summary: Exemple avec plusieurs codes souhaités
                      value: [B, C, A]   # ?code=B,C,A
            responses:
              '200':    # status code
                description: Tableau des JSON des types de dernier diplome
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/TypeDernierDiplome'
    /etablissement_origine:
        get:
            tags:
                - Etablissement_Origine
            summary: Liste de tous les établissements d'origine.
            description: Tableau contenant les json des établissements d'origine de la base, par défaut trié par nom.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - cle
                        - nom
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [cle, nom, email]   # ?select=cle,nom,email
                - in: query
                  name: cle
                  description: Filtre sur les clés des établissements d'origine 
                  required: false
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneIds:
                      summary: Exemple avec une seule clé souhaitée
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Exemple avec plusieurs clés souhaitées
                      value: [12, 24, 48]   # ?cle=12,24,48
                - in: query
                  name: nom
                  description: Filtre sur les noms des établissements d'origine 
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul nom souhaité
                      value: [Etab1]   # ?nom=Etab1
                    multipleIds:
                      summary: Exemple avec plusieurs noms souhaités
                      value: [Etab1, Etab2, Etab3]   # ?nom=Etab1,Etab2,Etab13
                - in: query
                  name: email
                  description: Filtre sur les emails des établissements d'origine 
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul email souhaité
                      value: [Etab1@email.fr]   # ?email=Etab1@email.fr
                    multipleIds:
                      summary: Exemple avec plusieurs emails souhaités
                      value: [Etab1@email.fr, Etab2@email.fr]   # ?email=Etab1@email.fr,Etab2@email.fr
            responses:
              '200':    # status email
                description: Tableau des JSON des établissements d'origine
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/EtablissementOrigine'
        post:
            tags:
                - Etablissement_Origine
            summary: Création d'un nouvel établissement d'origine
            description: Création d'un nouvel établissement d'origine dans la base et initialisation des champs à l'aide des paramètres passés dans le JSON.
            requestBody:
                description: Champs du JSON utilisés pour la création
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/EtablissementOrigine'
            responses:
                '201':
                    description: Created            
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/EtablissementOrigine'
                '400':
                  description: "Paramètres non valides : nom obligatoire, problème de taille"
                '500':
                  description: 
                    Création ou modification d'au moins un des champs impossible 
    /semaines:
        get:
            tags:
                - Semaines
            summary: Liste de toutes les semaines.
            description: Tableau contenant les json des semaines de la base, avec la semaine calendaire correspondante ainsi que la date de début de celle ci.
            parameters:
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [numero_semaine]   # ?select=numero_semaine
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [numero_semaine, numero_calendaire]   # ?select=numero_semaine,numero_calendaire
                - in: query
                  name: numero_semaine
                  description: retourne seulement les semaines ayant un de ces numéros
                  schema:
                    type: array
                    items:
                        type: integer
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul numero_semaine souhaité
                      value: [10]   # ?numero_semaine=10
                    multipleIds:
                      summary: Exemple avec plusieurs numero_semaine souhaités
                      value: [10, 14, 15]   # ?numero_semaine=10,14,16
                - in: query
                  name: numero_calendaire
                  description: retourne seulement les semaines ayant un de ces numéros calendaires
                  schema:
                    type: array
                    items:
                        type: integer
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul numero_calendaire souhaité
                      value: [1]   # ?numero_calendaire=1
                    multipleIds:
                      summary: Exemple avec plusieurs numero_calendaire souhaités
                      value: [1, 2, 3]   # ?numero_calendaire=1,2,3
            responses:
              '200':    # status code
                description: Tableau des JSON des semaines
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Semaines'
    /sites:
        get:
            tags:
                - Sites
            summary: Liste de tous les sites.
            description: Tableau contenant les json des sites de la base trié par nom.
            parameters:
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [nom]   # ?select=nom
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [nom, couleur]   # ?select=nom,couleur
                - in: query
                  name: nom
                  description: Filtre sur les noms des sites
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul nom souhaité
                      value: [site1]   # ?nom=site1
                    multipleIds:
                      summary: Exemple avec plusieurs noms souhaités
                      value: [site1, site2, site3]   # ?nom=site1,site2,site3
            responses:
              '200':    # status 
                description: Tableau des JSON des sites
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Sites'
              '405':
                description: "Droits insuffisants : Gestion des sites inactive"
    /types:
        get:
            tags:
                - Types
            summary: Liste de tous les types de cours.
            description: Tableau contenant les json des types de cours de la base trié par nom.
            parameters:
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [nom]   # ?select=nom
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [nom, couleur]   # ?select=nom,couleur
                - in: query
                  name: nom
                  description: Filtre sur les noms des types
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul nom souhaité
                      value: [cours]   # ?nom=cours
                    multipleIds:
                      summary: Exemple avec plusieurs noms souhaités
                      value: [cours, td, tp]   # ?nom=cours,td,tp
            responses:
              '200':    # status 
                description: Tableau des JSON des types
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Types'
    /ponderations:
        get:
            tags:
                - Ponderations
            summary: Liste de toutes les pondérations.
            description: Tableau contenant les json des pondérations de la base, par défaut trié par valeur.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - cle
                        - valeur
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [cle, numerateur, denominateur]   # ?select=cle,numerateur,denominateur
                - in: query
                  name: cle
                  description: retourne seulement les pondérations ayant une de ces clés
                  required: false
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneIds:
                      summary: Exemple avec une seule clé souhaitée
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Exemple avec plusieurs clés souhaitées
                      value: [12, 24, 48]   # ?cle=12,24,48
                - in: query
                  name: numerateur
                  description: retourne seulement les pondérations ayant un de ces numérateurs
                  schema:
                    type: array
                    items:
                        type: integer
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul numérateur souhaité
                      value: [10]   # ?numerateur=10
                    multipleIds:
                      summary: Exemple avec plusieurs numérateur souhaités
                      value: [10, 20, 30]   # ?numerateur=10,20,30
                - in: query
                  name: denominateur
                  description: retourne seulement les pondérations ayant un de ces dénominateurs
                  schema:
                    type: array
                    items:
                        type: integer
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul dénominateur souhaité
                      value: [20]   # ?denominateur=maths
                    multipleIds:
                      summary: Exemple avec plusieurs dénominateurs souhaités
                      value: [20, 40, 60]   # ?denominateur=20,40,60
            responses:
              '200':    # status code
                description: Tableau des JSON des pondérations
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Ponderations'
              '403':
                description: "Droits inssufisants"
        post:
            tags:
                - Ponderations
            summary: Création d'une nouvelle pondération dans la base
            description: Création d'une nouvelle pondération dans la base et initialisation des champs à l'aide des paramètres passés dans le JSON.
            requestBody:
                description: Champs du JSON utilisé pour la création
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Ponderations'
            responses:
                '201':
                    description: Created            
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Ponderations'
                '400':
                  description: "Paramètres non valides : numérateur et dénominateur obligatoires"
                '403':
                    description: "Droits inssufisants"
                '500':
                  description: 
                    Création impossible 
    /parametres_base:
        get:
            tags:
                - Parametres_Base
            summary: Json de certains paramètres de la base. Premier jour, devise, semaines verrouillées, jours ouvrés, durée d'un jour
            description: Json de certains paramètres de la base. Date du premier jour de la base, devise utilisée pour les coûts horaires, semaines verrouillée, durée d'un jour complet, jours ouvrés de la base.
            parameters:
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [premier_jour]   # ?select=premier_jour
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [premier_jour, domaine_verrouille]   # ?select=premier_jour,domaine_verrouille
            responses:
              '200':    # status 
                description: JSON de certains paramètres de la base
                content:
                  application/json:
                    schema: 
                      type: object
                      properties:
                        devise:
                            type: string                                    
                            example: "€"
                        premier_jour:
                            type: string
                            example: "2023-09-04"
                        domaine_verrouille:
                            type: array
                            items:
                                type: integer
                            example: [10,12,14,15]
                        duree_jour:
                            type: number
                            example: 0.5
                        jours_ouvres:
                            type: array
                            items:
                                type: string
                            example: ["lundi","mardi","mercredi","jeudi","vendredi","samedi"]
        post:
            tags:
                - Parametres_Base
            summary: Mise à jour de certains parametres de la base - devise.
            description: Modifie les champs des parametres de la base autorisés avec ceux passés dans le JSON au niveau du BODY.
            requestBody:
                description: JSON contenant les champs et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier et qui sont autorisé en modification.
                required: true
                content:
                    application/json:
                        schema: 
                            type: object
                            properties:
                                devise:
                                    type: string                                    
                                    example: "€"
            responses:
              '200':    # status code
                description: succès - JSON des paramètres de la base
                content:
                  application/json:
                    schema: 
                      type: object
                      properties:
                        devise:
                            type: string                                    
                            example: "€"
                        premier_jour:
                            type: string
                            example: "2023-09-04"
                        domaine_verrouille:
                            type: array
                            items:
                                type: integer
                            example: [10,12,14,15]
                        duree_jour:
                            type: number
                            example: 0.5
                        jours_ouvres:
                            type: array
                            items:
                                type: string
                            example: ["lundi","mardi","mercredi","jeudi","vendredi","samedi"]              
              '400':
                description: "Paramètres non valide"
              '500':
                description: "Modification d'au moins un des champs impossible"         
    /version:
        get:
            tags:
                - Version
            summary: Version d'Hyperplanning.
            description: Version de l'application Hyperplanning Service Web.
            parameters:
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [version]   # ?select=version
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [version, majeure]   # ?select=version,majeure
            responses:
              '200':    # status 
                description: JSON de la version
                content:
                  application/json:
                    schema: 
                      type: object
                      properties:
                        version:
                            type: string                                    
                            example: "Service web HYPERPLANNING 2024.0.3.0"
                        majeure:
                            type: integer
                            example: 2024
                        mineure:
                            type: integer
                            example: 0
                        release:
                            type: integer
                            example: 3
                        sous_release:
                            type: integer
                            example: 1
    /cours/{cle}:
        get:
            tags:
                - Cours
            summary: Json du cours de clé {cle}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du cours'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Cours'
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - Cours
            summary: Mise à jour partielle du cours de clé {cle}.
            description: Modifie les champs du cours de clé {cle} avec ceux passés dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du cours que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant les champs et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Cours'
            responses:
              '200':    # status code
                description: succès - JSON du cours modifié
                content:
                  application/json:
                    schema: 
                      $ref: '#/components/schemas/Cours'
              '400':
                description: "Paramètres non valide"
              '404':
                description: "Paramètre invalide : cours inexistant"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - Cours
            summary: Suppression du cours de clé {cle}.
            description: Permet de supprimer définitivement le cours de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé du cours à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /cours_annules/{cle}:
        get:
            tags:
                - CoursAnnules
            summary: Json du cours annulé de clé {cle}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du cours annulé'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/CoursAnnules'
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - CoursAnnules
            summary: Mise à jour partielle du cours annulés de clé {cle}.
            description: Modifie les champs motif_annulation et/ou commentaire du cours annulé de clé {cle} avec ceux passés dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du cours annulé que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant les champs (motif_annulation et/ou commentaire) et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/CoursAnnules'
            responses:
              '200':    # status code
                description: succès - JSON du cours modifié
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/CoursAnnules'
              '400':
                description: "Paramètres non valide"
              '404':
                description: "Paramètre invalide : cours annulé inexistant"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - CoursAnnules
            summary: Suppression du cours annulé de clé {cle}.
            description: Permet de supprimer définitivement le cours annulé de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé du cours annulé à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /cursus/{cle}:
        get:
            tags:
                - Cursus
            summary: Json du cursus de clé {cle}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du cursus'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Cursus'
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - Cursus
            summary: Mise à jour partielle du cursus de clé {cle}.
            description: Modifie les champs du cursus de clé {cle} avec ceux passés dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du cursus que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant les champs et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Cursus'
            responses:
              '200':    # status code
                description: succès - JSON du cursus modifié
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/Cursus'
              '400':
                description: "Paramètres non valide : libelle obligatoire, Problème de taille..."
              '404':
                description: "Paramètre invalide : partition inexistante"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - Cursus
            summary: Suppression du cursus de clé {cle}.
            description: Permet de supprimer définitivement le cursus de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé du cursus à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /enseignants/{cle}:
        get:
            tags:
                - Enseignants
            summary: Json de l'enseignant de clé {cle}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''enseignant'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Enseignants'
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - Enseignants
            summary: Mise à jour partielle de l'enseignant de clé {cle}.
            description: Modifie les champs de l'enseignant de clé {cle} avec ceux passés dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''enseignant que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant les champs et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Enseignants'
            responses:
              '200':    # status code
                description: succès - JSON de l'enseignant modifiée
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/Enseignants'
              '400':
                description: "Paramètres non valide : libelle obligatoire, Problème de taille..."
              '404':
                description: "Paramètre invalide : enseignant inexistant"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - Enseignants
            summary: Suppression de l'enseignant de clé {cle}.
            description: Permet de supprimer définitivement l'enseignant de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé de l'enseignant à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /etudiants/{cle}:
        get:
            tags:
                - Etudiants
            summary: Json de l'étudiant de clé {cle}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''étudiant'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Etudiants'
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - Etudiants
            summary: Mise à jour partielle de l'étudiant de clé {cle}.
            description: Modifie les champs de l'étudiant de clé {cle} avec ceux passés dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''étudiant que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant les champs et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Etudiants'
            responses:
              '200':    # status code
                description: succès - JSON de la matière modifiée
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/Etudiants'
              '400':
                description: "Paramètres non valide : libelle obligatoire, Problème de taille..."
              '404':
                description: "Paramètre invalide : étudiant inexistant"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - Etudiants
            summary: Suppression de l'étudiant de clé {cle}.
            description: Permet de supprimer définitivement l'étudiant de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé de l'étudiant à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /matieres/{cle}:
        get:
            tags:
                - Matieres
            summary: Json de la matière de clé {cle}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la matière'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Matieres'
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - Matieres
            summary: Mise à jour partielle de la matière de clé {cle}.
            description: Modifie les champs de la matière de clé {cle} avec ceux passés dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la matière que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant les champs et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Matieres'
            responses:
              '200':    # status code
                description: succès - JSON de la matière modifiée
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/Matieres'
              '400':
                description: "Paramètres non valide : libelle obligatoire, Problème de taille..."
              '404':
                description: "Paramètre invalide : matière inexistante"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - Matieres
            summary: Suppression de la matière de clé {cle}.
            description: Permet de supprimer définitivement la matière de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé de la matière à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /modules/{cle}:
        get:
            tags:
                - Modules
            summary: Json du module de clé {cle}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du module'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Modules'
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - Modules
            summary: Mise à jour partielle du module de clé {cle}.
            description: Modifie les champs du module de clé {cle} avec ceux passés dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du module que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant les champs et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Modules'
            responses:
              '200':    # status code
                description: succès - JSON du module modifié
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/Modules'
              '400':
                description: "Paramètres non valide : libelle obligatoire, Problème de taille..."
              '404':
                description: "Paramètre invalide : module inexistant"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - Modules
            summary: Suppression du module de clé {cle}.
            description: Permet de supprimer définitivement le module de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé du module à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /parents/{cle}:
        get:
            tags:
                - Parents
            summary: Json du parent de clé {cle}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du parent'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Parents'
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - Parents
            summary: Mise à jour partielle du parent de clé {cle}.
            description: Modifie les champs du parent de clé {cle} avec ceux passés dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du parent que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant les champs et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Parents'
            responses:
              '200':    # status code
                description: succès - JSON du parent modifié
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/Parents'
              '400':
                description: "Paramètres non valide : libelle obligatoire, Problème de taille..."
              '404':
                description: "Paramètre invalide : parent inexistant"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - Parents
            summary: Suppression du parent de clé {cle}.
            description: Permet de supprimer définitivement le parent de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé du parent à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /partitions/{cle}:
        get:
            tags:
                - Partitions
            summary: Json de la partition de clé {cle}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la partition'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Partitions'
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - Partitions
            summary: Mise à jour partielle de la partition de clé {cle}.
            description: Modifie les champs de la partition de clé {cle} avec ceux passés dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la partition que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant les champs et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Partitions'
            responses:
              '200':    # status code
                description: succès - JSON de la partition modifiée
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/Partitions'
              '400':
                description: "Paramètres non valide : libelle obligatoire, Problème de taille..."
              '404':
                description: "Paramètre invalide : partition inexistante"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - Partitions
            summary: Suppression de la partition de clé {cle}.
            description: Permet de supprimer définitivement la partition de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé de la partition à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /promotions/{cle}:
        get:
            tags:
                - Promotions
            summary: Json de la promotion de clé {cle}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la promotion'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Promotions'
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - Promotions
            summary: Mise à jour partielle de la promotion de clé {cle}.
            description: Modifie les champs de la promotion de clé {cle} avec ceux passés dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la promotion que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant les champs et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Promotions'
            responses:
              '200':    # status code
                description: succès - JSON de la promotion modifiée
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/Promotions'
              '400':
                description: "Paramètres non valide : libelle obligatoire, Problème de taille..."
              '404':
                description: "Paramètre invalide : promotion inexistante"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - Promotions
            summary: Suppression de la promotion de clé {cle}.
            description: Permet de supprimer définitivement la promotion de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé de la promotion à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /regroupements/{cle}:
        get:
            tags:
                - Regroupements
            summary: Json du regroupement de clé {cle}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du regroupement'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Regroupements'
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - Regroupements
            summary: Mise à jour partielle du regroupement de clé {cle}.
            description: Modifie les champs du regroupement de clé {cle} avec ceux passés dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du regroupement que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant les champs et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Regroupements'
            responses:
              '200':    # status code
                description: succès - JSON du regroupement modifié
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/Regroupements'
              '400':
                description: "Paramètres non valide : libelle obligatoire, Problème de taille..."
              '404':
                description: "Paramètre invalide : regroupement inexistant"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - Regroupements
            summary: Suppression du regroupement de clé {cle}.
            description: Permet de supprimer définitivement le regroupement de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé du regroupement à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /salles/{cle}:
        get:
            tags:
                - Salles
            summary: Json de la salle de clé {cle}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la salle'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Salles'
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - Salles
            summary: Mise à jour partielle de la salle de clé {cle}.
            description: Modifie les champs de la salle de clé {cle} avec ceux passés dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la salle que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant les champs et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Salles'
            responses:
              '200':    # status code
                description: succès - JSON de la salle modifiée
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/Salles'
              '400':
                description: "Paramètres non valide : libelle obligatoire, Problème de taille..."
              '404':
                description: "Paramètre invalide : salle inexistante"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - Salles
            summary: Suppression de la salle de clé {cle}.
            description: Permet de supprimer définitivement la salle de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé de la salle à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /tdoptions/{cle}:
        get:
            tags:
                - TDOptions
            summary: Json du TD/Option de clé {cle}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du TD/Option'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/TDOptions'
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - TDOptions
            summary: Mise à jour partielle du TD/Option de clé {cle}.
            description: Modifie les champs du TD/Option de clé {cle} avec ceux passés dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du TD/Option que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant les champs et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/TDOptions'
            responses:
              '200':    # status code
                description: succès - JSON du TD/Option modifié
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/TDOptions'
              '400':
                description: "Paramètres non valide : libelle obligatoire, Problème de taille..."
              '404':
                description: "Paramètre invalide : td/option inexistant"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - TDOptions
            summary: Suppression du TD/Option de clé {cle}.
            description: Permet de supprimer définitivement le TD/Option de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé du TD/Option à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /baccalaureats/{code}:
        get:
            tags:
                - Baccalaureats
            summary: Json du baccalauréat de code {code}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: code
                    in: path
                    description: 'code du baccalauréat'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Baccalaureats'
                '400':
                    description: "Paramètre invalide"
    /baccalaureat_specialites/{code}:
        get:
            tags:
                - Baccalaureat_specialites
            summary: Json de la spécialité du baccalauréat de code {code}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: code
                    in: path
                    description: 'code de la spécialité du baccalauréat'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Baccalaureat_specialites'
                '400':
                    description: "Paramètre invalide"
    /departements/{code}:
        get:
            tags:
                - Departements
            summary: Json du département de code {code}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: code
                    in: path
                    description: 'code du département'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Departements'
                '400':
                    description: "Paramètre invalide"
    /type_dernier_diplome/{code}:
        get:
            tags:
                - TypeDernierDiplome
            summary: Json du type du dernier diplome de code {code}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: code
                    in: path
                    description: 'code du type du dernier diplome'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/TypeDernierDiplome'
                '400':
                    description: "Paramètre invalide"
    /etablissement_origine/{cle}:
        get:
            tags:
                - Etablissement_Origine
            summary: Json de l'établissement d'origine de clé {cle}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''établissement d''origine'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/EtablissementOrigine'
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - Etablissement_Origine
            summary: Mise à jour partielle de l'établissement d'origine de clé {cle}.
            description: Modifie les champs de l'établissement d'origine de clé {cle} avec ceux passés dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''établissement d''origine que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant les champs et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/EtablissementOrigine'
            responses:
              '200':    # status code
                description: succès - JSON de l'établissement d'origine modifié
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/EtablissementOrigine'
              '400':
                description: "Paramètres non valide : libelle obligatoire, Problème de taille..."
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - Etablissement_Origine
            summary: Suppression de l'établissement d'origine de clé {cle}.
            description: Permet de supprimer définitivement l'établissement d'origine de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé de l'établissement d'origine à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /semaines/{numero_semaine}:
        get:
            tags:
                - Semaines
            summary: Json de la semaine de numéro {numero_semaine}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: numero_semaine
                    in: path
                    description: 'numéro de la semaine'
                    required: true
                    schema:
                        type: integer
                        example: 10
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Semaines'
                '400':
                    description: "Paramètre invalide : numéro de la semaine hors limite"
    /sites/{nom}:
        get:
            tags:
                - Sites
            summary: Json du site de nom {nom}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: nom
                    in: path
                    description: 'nom de site'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Sites'
                '404':
                    description: "Paramètre invalide"
                '405':
                    description: "Droits insuffisants : Gestion des sites inactive"
        post:
            tags:
                - Sites
            summary: Mise à jour partielle du site de nom {nom}.
            description: Modifie le champs couleur du site de nom {nom} avec celle passée dans le JSON au niveau du BODY.
            parameters:
                -   name: nom
                    in: path
                    description: 'nom du site que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant le champs couleur et sa valeur. Possibilite de modifier seulement la couleur d'un site via le Service Web.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Sites'
            responses:
              '200':    # status code
                description: succès - JSON du site modifié
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/Sites'
              '400':
                description: "Paramètres non valide : Problème de taille..."
              '405':
                description: "Droits insuffisants : Gestion des sites inactive"
              '500':
                description: "Modification d'au moins un des champs impossible"         
    /types/{nom}:
        get:
            tags:
                - Types
            summary: Json du type de cours de nom {nom}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: nom
                    in: path
                    description: 'nom du type de cours'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Types'
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - Types
            summary: Mise à jour partielle du type de cours de nom {nom}.
            description: Modifie le champs couleur, mode_appel du type de cours de nom {nom} avec celui passé dans le JSON au niveau du BODY.
            parameters:
                -   name: nom
                    in: path
                    description: 'nom du site que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant le champs couleur et sa valeur. Possibilite de modifier seulement la couleur d'un site via le Service Web.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Types'
            responses:
              '200':    # status code
                description: succès - JSON du site modifié
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/Types'
              '400':
                description: "Paramètres non valide"
              '404':
                description: "Not found : Le nom passé n'existe pas"
        delete:
            tags:
                - Types
            summary: Suppression du type de cours de nom {nom}.
            description: Permet de supprimer définitivement le type de cours de nom {nom} de la base.
            parameters:
                -   name: nom
                    in: path
                    description: nom du type de cours à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : Le nom passé n'existe pas"
    /ponderations/{cle}:
        get:
            tags:
                - Ponderations
            summary: Json de la pondération de clé {cle}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la pondération'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Ponderations'
                '404':
                    description: "Paramètre invalide"
                '403':
                    description: "Droits inssufisants"
        post:
            tags:
                - Ponderations
            summary: Mise à jour partielle de la pondération de clé {cle}.
            description: Modifie les champs de la pondération de clé {cle} avec ceux passés dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la pondération que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant les champs et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Ponderations'
            responses:
              '200':    # status code
                description: succès - JSON de la pondération modifiée
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/Ponderations'
              '400':
                description: "Paramètres non valide"
              '403':
                description: "Droits inssufisants"
              '404':
                description: "Paramètre invalide : pondération inexistante"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - Ponderations
            summary: Suppression de la pondération de clé {cle}.
            description: Permet de supprimer définitivement la pondération de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé de la pondération à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '403':
                    description: "Droits inssufisants"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /cours/supprimer:
        post:
            tags:
                - Cours
            summary: Suppression de plusieurs cours
            description: Suppression des cours dont la clé est passée en paramètre (?cles=1,5,7 ).
            parameters:
                - in: query
                  name: cles
                  description: une ou plusieurs clés des cours à supprimer
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                  style: form
                  explode: false
                  examples:
                    oneId:
                      summary: Exemple avec une seule clé
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Exemple avec plusieurs clé
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /cours_annules/supprimer:
        post:
            tags:
                - CoursAnnules
            summary: Suppression de plusieurs cours annulés
            description: Suppression des cours annulés dont la clé est passée en paramètre (?cles=1,5,7 ).
            parameters:
                - in: query
                  name: cles
                  description: une ou plusieurs clés des cours annulés à supprimer
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                  style: form
                  explode: false
                  examples:
                    oneId:
                      summary: Exemple avec une seule clé
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Exemple avec plusieurs clé
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '400':    # Bad request
                    description: "Bad request : on a pas pu tout supprimer"
                '403':    # forbidden
                    description: "Droits inssufisants"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /cursus/supprimer:
        post:
            tags:
                - Cursus
            summary: Suppression de plusieurs cursus
            description: Suppression des cursus dont la clé est passée en paramètre (?cles=1,5,7 ).
            parameters:
                - in: query
                  name: cles
                  description: une ou plusieurs clés des cursus à supprimer
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                  style: form
                  explode: false
                  examples:
                    oneId:
                      summary: Exemple avec une seule clé
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Exemple avec plusieurs clé
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /enseignants/supprimer:
        post:
            tags:
                - Enseignants
            summary: Suppression de plusieurs enseignants
            description: Suppression des enseignants dont la clé est passée en paramètre (?cles=1,5,7 ).
            parameters:
                - in: query
                  name: cles
                  description: une ou plusieurs clés des enseignants à supprimer
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                  style: form
                  explode: false
                  examples:
                    oneId:
                      summary: Exemple avec une seule clé
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Exemple avec plusieurs clé
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /etudiants/supprimer:
        post:
            tags:
                - Etudiants
            summary: Suppression de plusieurs étudiants
            description: Suppression des étudiants dont la clé est passée en paramètre (?cles=1,5,7 ).
            parameters:
                - in: query
                  name: cles
                  description: une ou plusieurs clés des étudiants à supprimer
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                  style: form
                  explode: false
                  examples:
                    oneId:
                      summary: Exemple avec une seule clé
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Exemple avec plusieurs clé
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /matieres/supprimer:
        post:
            tags:
                - Matieres
            summary: Suppression de plusieurs matières
            description: Suppression des matières dont la clé est passée en paramètre (?cles=1,5,7 ).
            parameters:
                - in: query
                  name: cles
                  description: une ou plusieurs clés des matières à supprimer
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                  style: form
                  explode: false
                  examples:
                    oneId:
                      summary: Exemple avec une seule clé
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Exemple avec plusieurs clé
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /modules/supprimer:
        post:
            tags:
                - Modules
            summary: Suppression de plusieurs modules
            description: Suppression des modules dont la clé est passée en paramètre (?cles=1,5,7 ).
            parameters:
                - in: query
                  name: cles
                  description: une ou plusieurs clés des modules à supprimer
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                  style: form
                  explode: false
                  examples:
                    oneId:
                      summary: Exemple avec une seule clé
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Exemple avec plusieurs clé
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /parents/supprimer:
        post:
            tags:
                - Parents
            summary: Suppression de plusieurs parents
            description: Suppression des parents dont la clé est passée en paramètre (?cles=1,5,7 ).
            parameters:
                - in: query
                  name: cles
                  description: une ou plusieurs clés des parents à supprimer
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                  style: form
                  explode: false
                  examples:
                    oneId:
                      summary: Exemple avec une seule clé
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Exemple avec plusieurs clé
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /partitions/supprimer:
        post:
            tags:
                - Partitions
            summary: Suppression de plusieurs partitions
            description: Suppression des partitions dont la clé est passée en paramètre (?cles=1,5,7 ).
            parameters:
                - in: query
                  name: cles
                  description: une ou plusieurs clés des partitions à supprimer
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                  style: form
                  explode: false
                  examples:
                    oneId:
                      summary: Exemple avec une seule clé
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Exemple avec plusieurs clé
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /promotions/supprimer:
        post:
            tags:
                - Promotions
            summary: Suppression de plusieurs promotions
            description: Suppression des promotions dont la clé est passée en paramètre (?cles=1,5,7 ).
            parameters:
                - in: query
                  name: cles
                  description: une ou plusieurs clés des promotions à supprimer
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                  style: form
                  explode: false
                  examples:
                    oneId:
                      summary: Exemple avec une seule clé
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Exemple avec plusieurs clé
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /regroupements/supprimer:
        post:
            tags:
                - Regroupements
            summary: Suppression de plusieurs regroupements
            description: Suppression des regroupements dont la clé est passée en paramètre (?cles=1,5,7 ).
            parameters:
                - in: query
                  name: cles
                  description: une ou plusieurs clés des regroupements à supprimer
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                  style: form
                  explode: false
                  examples:
                    oneId:
                      summary: Exemple avec une seule clé
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Exemple avec plusieurs clé
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /salles/supprimer:
        post:
            tags:
                - Salles
            summary: Suppression de plusieurs salles
            description: Suppression des salles dont la clé est passée en paramètre (?cles=1,5,7 ).
            parameters:
                - in: query
                  name: cles
                  description: une ou plusieurs clés des salles à supprimer
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                  style: form
                  explode: false
                  examples:
                    oneId:
                      summary: Exemple avec une seule clé
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Exemple avec plusieurs clé
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /tdoptions/supprimer:
        post:
            tags:
                - TDOptions
            summary: Suppression de plusieurs TD/options
            description: Suppression des TD/options dont la clé est passée en paramètre (?cles=1,5,7 ).
            parameters:
                - in: query
                  name: cles
                  description: une ou plusieurs clés des TD/options à supprimer
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                  style: form
                  explode: false
                  examples:
                    oneId:
                      summary: Exemple avec une seule clé
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Exemple avec plusieurs clé
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /etablissement_origine/supprimer:
        post:
            tags:
                - Etablissement_Origine
            summary: Suppression de plusieurs établissements d'origine
            description: Suppression des établissements d'origine dont la clé est passée en paramètre (?cles=1,5,7 ).
            parameters:
                - in: query
                  name: cles
                  description: une ou plusieurs clés des établissements d'origine à supprimer
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                  style: form
                  explode: false
                  examples:
                    oneId:
                      summary: Exemple avec une seule clé
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Exemple avec plusieurs clé
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /ponderations/supprimer:
        post:
            tags:
                - Ponderations
            summary: Suppression de plusieurs pondérations
            description: Suppression des pondérations dont la clé est passée en paramètre (?cles=1,5,7 ).
            parameters:
                - in: query
                  name: cles
                  description: une ou plusieurs clés des pondérations à supprimer
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                  style: form
                  explode: false
                  examples:
                    oneId:
                      summary: Exemple avec une seule clé
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Exemple avec plusieurs clé
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '403':
                    description: "Droits inssufisants"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /ical/matieres:
        post:
            tags:
                - Icals
            summary: Ical des matières 
            description: Ical des matières passées en paramètre dans le json du body
            requestBody:
                description: Champs du JSON utilisés pour parametrer l'ical
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Icals'
            responses:
                '200':
                  description: "succès - Tableau des icals"
                '400':
                  description: "Paramètres non valides : paramètre passé non valide"
                '404':
                  description: "Paramètres non valides : clé inexistante"
    /ical/matieres/{cle}:
        post:
            tags:
                - Icals
            summary: Ical de la matière de clé {cle}.
            description: Ical de la matière de clé {cle}, parametrable en passant les options dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la matière de l''ical souhaité'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: Champs du JSON à utiliser pour parametrer l'ical. 
                required: false
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Icals'
            responses:
              '200':    # status code
                description: succès - Ical de la matière 
                #content:
                #  application/json:
                #    schema: 
                #        $ref: '#/components/schemas/Matieres'
              '400':
                description: "Paramètres non valide : clé inexistante, paramètre passé non valide..."
    /ical/enseignants:
        post:
            tags:
                - Icals
            summary: Ical des enseignants 
            description: Ical des enseignants passés en paramètre dans le json du body
            requestBody:
                description: Champs du JSON utilisés pour parametrer l'ical
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Icals'
            responses:
                '200':
                  description: "succès - Tableau des icals"
                '400':
                  description: "Paramètres non valides : paramètre passé non valide"
                '404':
                  description: "Paramètres non valides : clé inexistante"
    /ical/enseignants/{cle}:
        post:
            tags:
                - Icals
            summary: Ical de l'enseignant de clé {cle}.
            description: Ical de l'enseignant de clé {cle}, parametrable en passant les options dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''enseignant de l''ical souhaité'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: Champs du JSON à utiliser pour parametrer l'ical. 
                required: false
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Icals'
            responses:
              '200':    # status code
                description: succès - Ical de l'enseignant
              '400':
                description: "Paramètres non valide : clé inexistante, paramètre passé non valide..."
    /ical/etudiants:
        post:
            tags:
                - Icals
            summary: Ical des étudiants 
            description: Ical des étudiants passés en paramètre dans le json du body
            requestBody:
                description: Champs du JSON utilisés pour parametrer l'ical
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Icals'
            responses:
                '200':
                  description: "succès - Tableau des icals"
                '400':
                  description: "Paramètres non valides : paramètre passé non valide"
                '404':
                  description: "Paramètres non valides : clé inexistante"
    /ical/etudiants/{cle}:
        post:
            tags:
                - Icals
            summary: Ical de l'étudiant de clé {cle}.
            description: Ical de l'étudiant de clé {cle}, parametrable en passant les options dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''étudiant de l''ical souhaité'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: Champs du JSON à utiliser pour parametrer l'ical. 
                required: false
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Icals'
            responses:
              '200':    # status code
                description: succès - Ical de l'étudiant
              '400':
                description: "Paramètres non valide : clé inexistante, paramètre passé non valide..."
    /ical/promotions:
        post:
            tags:
                - Icals
            summary: Ical des promotions 
            description: Ical des promotions passés en paramètre dans le json du body
            requestBody:
                description: Champs du JSON utilisés pour parametrer l'ical
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Icals'
            responses:
                '200':
                  description: "succès - Tableau des icals"
                '400':
                  description: "Paramètres non valides : paramètre passé non valide"
                '404':
                  description: "Paramètres non valides : clé inexistante"
    /ical/promotions/{cle}:
        post:
            tags:
                - Icals
            summary: Ical de la promotion de clé {cle}.
            description: Ical de la promotion de clé {cle}, parametrable en passant les options dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la promotion de l''ical souhaité'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: Champs du JSON à utiliser pour parametrer l'ical. 
                required: false
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Icals'
            responses:
              '200':    # status code
                description: succès - Ical de la promotion
              '400':
                description: "Paramètres non valide : clé inexistante, paramètre passé non valide..."
    /ical/tdoptions:
        post:
            tags:
                - Icals
            summary: Ical des TD/options 
            description: Ical des TD/options passés en paramètre dans le json du body
            requestBody:
                description: Champs du JSON utilisés pour parametrer l'ical
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Icals'
            responses:
                '200':
                  description: "succès - Tableau des icals"
                '400':
                  description: "Paramètres non valides : paramètre passé non valide"
                '404':
                  description: "Paramètres non valides : clé inexistante"
    /ical/tdoptions/{cle}:
        post:
            tags:
                - Icals
            summary: Ical du TD/option de clé {cle}.
            description: Ical du TD/option de clé {cle}, parametrable en passant les options dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du TD/option de l''ical souhaité'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: Champs du JSON à utiliser pour parametrer l'ical. 
                required: false
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Icals'
            responses:
              '200':    # status code
                description: succès - Ical du TD/option
              '400':
                description: "Paramètres non valide : clé inexistante, paramètre passé non valide..."
    /ical/salles:
        post:
            tags:
                - Icals
            summary: Ical des salles 
            description: Ical des salles passés en paramètre dans le json du body
            requestBody:
                description: Champs du JSON utilisés pour parametrer l'ical
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Icals'
            responses:
                '200':
                  description: "succès - Tableau des icals"
                '400':
                  description: "Paramètres non valides : paramètre passé non valide"
                '404':
                  description: "Paramètres non valides : clé inexistante"
    /ical/salles/{cle}:
        post:
            tags:
                - Icals
            summary: Ical de la salle de clé {cle}.
            description: Ical de la salle de clé {cle}, parametrable en passant les options dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la salle de l''ical souhaité'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: Champs du JSON à utiliser pour parametrer l'ical. 
                required: false
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Icals'
            responses:
              '200':    # status code
                description: succès - Ical de la salle
              '400':
                description: "Paramètres non valide : clé inexistante, paramètre passé non valide..."
    /cours/{cle}/cout:
        get:
            tags:
                - Cours
            summary: Coût du cours de clé {cle} sur un domaine.
            description: Coût du cours sur un domaine (coût de l'enseignant + coût de la salle). Si pas de paramètres, retourne le coût annuel, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du cours'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Cout'
                '400':
                    description: "Paramètre invalide : Dates hors limites, format incorrect"
                '404':
                    description: "Paramètre invalide : clé du cours incorrecte"
                '500':
                    description: "Droits inssufisants"
    /cours/cout:
        get:
            tags:
                - Cours
            summary: Coûts des cours sur un domaine.
            description: Coûts des cours sur un domaine. Si pas de paramètres, retourne le coût annuel de tous les cours, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des cours'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Couts'
                '400':
                    description: "Paramètre invalide : Dates hors limites, format incorrect"
                '404':
                    description: "Paramètre invalide : clé du cours incorrecte"
                '500':
                    description: "Droits inssufisants"
    /cours/{cle}/site:
        get:
            tags:
                - Cours
            summary: Site affecté au cours de clé {cle} sur un domaine.
            description: Site affecté au cours sur un domaine. Si pas de paramètres, retourne le site sur l'année complète.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du cours'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    domaine:
                                        type: array
                                        items:
                                            type: integer
                                        example: [10,12,14,15]
                                    site:
                                        type: string                                    
                                        example: "principal"
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé du cours incorrecte"
                '500':
                    description: "Droits inssufisants"
        post:
            tags:
                - Cours
            summary: Modifie le site du cours de clé {cle} sur un domaine.
            description: Modifie le site du cours de clé {cle} avec le libelle de site passe en paramètre. Prends l'année complète si pas de domaine en paramètres.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du cours'
                    required: true
                    schema:
                        type: integer
                -   name: site
                    in: query
                    description: 'libelle du site'
                    required: true
                    schema:
                        type: string
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array
                                items:
                                    type: integer
                '403':
                    description: "Droits inssufisants"
                '404':
                    description: "Paramètre invalide : clé de la salle incorrecte"
                '500':
                    description: "site inexistant"
    /cours/site:
        get:
            tags:
                - Cours
            summary: Site des cours sur un domaine.
            description: Site des cours sur un domaine. Si pas de paramètres, retourne le site de tous les cours sur l'année complète.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des cours'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    domaine:
                                        type: array
                                        items:
                                            type: integer
                                            example: 1
                                    site:
                                        type: array                                    
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                site:
                                                    type: string
                                                    example: "Principal"
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé du cours incorrecte"
                '500':
                    description: "Droits inssufisants"
    /cours/{cle}/contenus:
        get:
            tags:
                - Cours
            summary: Caracteristiques du contenu du cours sur une semaine.
            description: Caracteristiques du contenu du cours de clé {cle} sur une semaine. 
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du cours'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: semaine
                  description: 'numéro de la semaine'
                  required: true
                  schema:
                    type: integer
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    semaine:
                                        type: integer
                                        example: 1
                                    contenus:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                titre:
                                                    type: string
                                                description:
                                                    type: string
                                                delai_publication:
                                                    type: string
                                                sites_internet:
                                                    type: array
                                                    items:
                                                        type: string
                                                cours: 
                                                    type: integer
                '400':
                    description: "Paramètre invalide : Dates hors limites, format incorrect"
                '404':
                    description: "Paramètre invalide : clé du cours incorrecte"
                '500':
                    description: "Droits inssufisants"
        post:
            tags:
                - Cours
            summary: Modifier le titre, la description, les sites internet et/ou le délai de publication du contenu d'un cours pour une semaine.
            description: Modifier le titre, la description les sites internet et/ou le délai de publication du contenu pour le cours de clé {cle} pour la semaine passees en paramètre. Crée le contenu si le cours ne possède aucun contenu. Retourne une exception si le cours a déjà plusieurs contenus.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du cours'
                    required: true
                    schema:
                        type: integer
                        
            requestBody:
                description: Champs du JSON utilisé pour la création/modification
                required: true
                content:
                    application/json:
                        schema:
                            type: object
                            properties:
                                titre:
                                  type: string
                                  example: "Titre du contenu de la séance 1"
                                description: 
                                  type: string
                                  example: "description de la séance 1"    
                                  description: La description peut être une chaine HTML
                                sites_internet:
                                  type: array
                                  items:
                                    type: string
                                    example: "www.index-education.fr"    
                                  description: URLs des sites internet du contenu de ce cours pour cette séance. Si l'url n'existe pas, elle sera créée dans la base.
                                delai_publication: 
                                  type: string
                                  example: "Immédiatement"    
                                  description: ADelaiPublication correspond soit au nombre de jour avant le début de la séance (pour une publication personnalisée) soit à une valeur particulière donnée par les fonctions PublieImmediatement, PublieDesDebutSeance ou PublieDesFinSeance
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    semaine:
                                        type: integer
                                        example: 1
                                    contenus:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                titre:
                                                    type: string
                                                description:
                                                    type: string
                                                delai_publication:
                                                    type: string
                                                sites_internet:
                                                    type: array
                                                    items:
                                                        type: string
                                                cours: 
                                                    type: integer
                '400':
                    description: "Paramètre invalide : semaine obligatoire ou format delai non valide"
                '403':
                    description: "Paramètre invalide : séance inexistante pour cette semaine"
                '404':
                    description: "Paramètre invalide : Clé du cours incorrecte"
                '500':
                    description: "Modification impossible : plusieurs contenus sur cette séance ou modification d'un des champs impossible"
    /cours/{cle}/detail_seances_placees:
        get:
            tags:
                - Cours
            summary: Détail des séances placées du cours.
            description: "Détail des séances placées du cours de clé {cle}. Le cours doit être un cours placé. Si c'est un cours père, renvoie le détail de tous ses cours fils placés. Attention : aucune indication de fuseau horaire n'est renvoyée avec jour_heure_debut."
            
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du cours'
                    required: true
                    schema:
                        type: integer       
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array
                                items:
                                    type: object
                                    properties:
                                        cle:
                                            type: integer
                                            example: 12
                                        matiere:
                                            type: integer
                                            example: 10
                                        type:
                                            type: string
                                            example: TD
                                        duree:
                                            type: integer
                                            example: 0.125
                                        jour_heure_debut:
                                            type: string
                                            example: 2023-10-03T11:00
                                        ponderation_avant_apport:
                                            type: integer
                                            example: 1
                                        ponderation_apres_apport:
                                            type: integer
                                            example: 1
                                        enseignants:
                                            type: array
                                            items:
                                                type: integer
                                            example: [10,12,14,48]
                                        promotions:
                                            type: array
                                            items:
                                                type: integer
                                            example: [10,12,14,48]
                                        tdoptions:
                                            type: array
                                            items:
                                                type: integer
                                            example: [10,12,14,48]
                                        regroupements:
                                            type: array
                                            items:
                                                type: integer
                                            example: [10,12,14,48]
                                        salles:
                                            type: array
                                            items:
                                                type: integer
                                            example: [10,12,14,48]
                '400':
                    description: "Paramètre invalide : Cours non placé"
                '404':
                    description: "Paramètre invalide : Clé du cours incorrecte"
    /cours/detail_seances_placees:
        get:
            tags:
                - Cours
            summary: Détail des séances placées des cours.
            description: "Détail des séances placées des cours passés en paramètre. Les cours doivent être placés. Pour un cours père, renvoie le détail de tous ses cours fils placés. Si pas de paramètres, retourne les séances de tous les cours placés. Attention : aucune indication de fuseau horaire n'est renvoyée avec jour_heure_debut."
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des cours'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array
                                items:
                                    type: object
                                    properties:
                                        cle:
                                            type: integer
                                            example: 12
                                        matiere:
                                            type: integer
                                            example: 10
                                        type:
                                            type: string
                                            example: TD
                                        duree:
                                            type: integer
                                            example: 0.125
                                        jour_heure_debut:
                                            type: string
                                            example: 2023-10-03T11:00
                                        ponderation_avant_apport:
                                            type: integer
                                            example: 1
                                        ponderation_apres_apport:
                                            type: integer
                                            example: 1
                                        enseignants:
                                            type: array
                                            items:
                                                type: integer
                                            example: [10,12,14,48]
                                        promotions:
                                            type: array
                                            items:
                                                type: integer
                                            example: [10,12,14,48]
                                        tdoptions:
                                            type: array
                                            items:
                                                type: integer
                                            example: [10,12,14,48]
                                        regroupements:
                                            type: array
                                            items:
                                                type: integer
                                            example: [10,12,14,48]
                                        salles:
                                            type: array
                                            items:
                                                type: integer
                                            example: [10,12,14,48]
                '400':
                    description: "Paramètre invalide : Cours non placé"
                '404':
                    description: "Paramètre invalide : Clé du cours incorrecte"
    /cours_annules/{cle}/detail_seances_placees:
        get:
            tags:
                - CoursAnnules
            summary: Détail des séances placées du cours annulé.
            description: "Détail des séances placées du cours annulé de clé {cle}. Attention : aucune indication de fuseau horaire n'est renvoyée avec jour_heure_debut."
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du cours annulé'
                    required: true
                    schema:
                        type: integer       
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array
                                items:
                                    type: object
                                    properties:
                                        cle_cours:
                                            type: integer
                                            example: 12
                                            description: clé du cours concerné
                                        matiere:
                                            type: integer
                                            example: 10
                                        type:
                                            type: string
                                            example: TD
                                        duree:
                                            type: integer
                                            example: 0.125
                                        jour_heure_debut:
                                            type: string
                                            example: 2023-10-03T11:00
                                        ponderation_avant_apport:
                                            type: integer
                                            example: 1
                                        ponderation_apres_apport:
                                            type: integer
                                            example: 1
                                        enseignants:
                                            type: array
                                            items:
                                                type: integer
                                            example: [10,12,14,48]
                                        promotions:
                                            type: array
                                            items:
                                                type: integer
                                            example: [10,12,14,48]
                                        tdoptions:
                                            type: array
                                            items:
                                                type: integer
                                            example: [10,12,14,48]
                                        regroupements:
                                            type: array
                                            items:
                                                type: integer
                                            example: [10,12,14,48]
                                        salles:
                                            type: array
                                            items:
                                                type: integer
                                            example: [10,12,14,48]
                '404':
                    description: "Paramètre invalide : Clé du cours annulé incorrecte"
    /enseignants/{cle}/photo/{format}:
        get:
            tags:
                - Enseignants
            summary: Photo de format {format} de l'enseignant de clé {cle}.
            description: Flux de la photo de l'enseignant au format voulu (jpeg, png, gif ou bitmap).
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''enseignant'
                    required: true
                    schema:
                        type: string            
                -   name: format
                    in: path
                    description: 'Format de la photo'
                    required: true
                    schema:
                        type: string            
                        enum:
                            - jpeg
                            - png
                            - gif
                            - bitmap
                        
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Photos'
                '400':
                    description: "Paramètre invalide"
                            
    /enseignants/{cle}/photo:
        post:
            tags:
                - Enseignants
            summary: Mise à jour de la photo de l'enseignant de clé {cle}.
            description: Modifie la photo de l'enseignant de clé {cle} avec celle passée dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''enseignant que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant le champs format (jpeg, png, gif ou bitmap) et la photo.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Photos'
            responses:
              '200':    # status code
                description: succès - JSON de la photo de l'enseignant modifiée
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/Photos'
              '400':
                description: "Paramètres non valide"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - Enseignants
            summary: Suppression de la photo l'enseignant de clé {cle}.
            description: Permet d'effacer la photo l'enseignant de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé de l'enseignant
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"

    /etudiants/{cle}/photo/{format}:
        get:
            tags:
                - Etudiants
            summary: Photo de format {format} de l'étudiant de clé {cle}.
            description: Flux de la photo de l'étudiant au format voulu (jpeg, png, gif ou bitmap).
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''étudiant'
                    required: true
                    schema:
                        type: string            
                -   name: format
                    in: path
                    description: 'Format de la photo'
                    required: true
                    schema:
                        type: string            
                        enum:
                            - jpeg
                            - png
                            - gif
                            - bitmap
                        
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Photos'
                '400':
                    description: "Paramètre invalide"
                            
    /etudiants/{cle}/photo:
        post:
            tags:
                - Etudiants
            summary: Mise à jour de la photo de l'étudiant de clé {cle}.
            description: Modifie la photo de l'étudiant de clé {cle} avec celle passée dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''étudiant que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: integer            
            requestBody:
                description: JSON contenant le champs format (jpeg, png, gif ou bitmap) et la photo.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Photos'
            responses:
              '200':    # status code
                description: succès - JSON de la photo de l'étudiant modifiée
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/Photos'
              '400':
                description: "Paramètres non valide"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - Etudiants
            summary: Suppression de la photo l'étudiant de clé {cle}.
            description: Permet d'effacer la photo l'étudiant de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé de l'étudiant
                    required: true
                    schema:
                        type: integer
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /enseignants/{cle}/cours:
        get:
            tags:
                - Enseignants
            summary: Clés des cours de l'enseignant de clé {cle} entre 2 dates.
            description: Clés des cours de l'enseignant entre 2 dates. Si pas de paramètres, retourne la liste des cours sur tout le domaine.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''enseignant'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: date_debut
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
                - in: query
                  name: date_fin
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'

                        
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array 
                                items:
                                    type: integer
                '400':
                    description: "Paramètre invalide : Dates hors limites"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"
                            
    /enseignants/{cle_ens}/cours/{cle_cours}/domaine:
        get:
            tags:
                - Enseignants
            summary: Domaine de présence de l'enseignant de clé {cle_ens} dans le cours de clé {cle_cours}.
            description: Domaine de présence de l'enseignant de clé {cle_ens} pour le cours de clé {cle_cours}. Le domaine est vide si l'enseignant n'est pas dans le cours. 
            parameters:
                -   name: cle_ens
                    in: path
                    description: 'clé de l''enseignant'
                    required: true
                    schema:
                        type: integer
                -   name: cle_cours
                    in: path
                    description: 'clé du cours'
                    required: true
                    schema:
                        type: integer
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array
                                items:
                                    type: integer
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"
        post:
            tags:
                - Enseignants
            summary: Modifie le domaine de présence de l'enseignant de clé {cle_ens} dans le cours de clé {cle_cours}.
            description: Modifie le domaine de présence de l'enseignant de clé {cle_ens} pour le cours de clé {cle_cours}. Permet d'ajouter un enseignant à un cours ou l'enlever de ce cours. Le domaine peut être passé dans l'URL ?domaine=12,24,48. Par défaut, prend tout le domaine.
            parameters:
                -   name: cle_ens
                    in: path
                    description: 'clé de l''enseignant'
                    required: true
                    schema:
                        type: integer
                -   name: cle_cours
                    in: path
                    description: 'clé du cours'
                    required: true
                    schema:
                        type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 

                        
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array
                                items:
                                    type: integer
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"
    /enseignants/{cle}/cout:
        get:
            tags:
                - Enseignants
            summary: Coût de l'enseignant de clé {cle} entre 2 dates ou sur un domaine.
            description: Coût de l'enseignant entre 2 dates. Si pas de paramètres, retourne le coût sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''enseignant'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: date_debut
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
                - in: query
                  name: date_fin
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non

                        
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Cout'
                '400':
                    description: "Paramètre invalide : Dates hors limites, format incorrect"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"
                '500':
                    description: "Droits inssufisants"
        
    /enseignants/cout:
        get:
            tags:
                - Enseignants
            summary: Coûts des enseignants entre 2 dates ou sur un domaine.
            description: Coûts des enseignants entre 2 dates. Si pas de paramètres, retourne le coût de tous les enseignants sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des enseignants'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: date_debut
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
                - in: query
                  name: date_fin
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non

                        
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Couts'
                '400':
                    description: "Paramètre invalide : Dates hors limites, format incorrect"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"
                '500':
                    description: "Droits inssufisants"
        
    /enseignants/{cle}/duree_cours:
        get:
            tags:
                - Enseignants
            summary: Durée de cours de l'enseignant de clé {cle} sur un domaine.
            description: Durée des cours de l'enseignant sur le domaine. Si pas de paramètres, retourne la durée sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''enseignant'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non

                        
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/DureeCours'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"
        
    /enseignants/duree_cours:
        get:
            tags:
                - Enseignants
            summary: Durée du cours des enseignants sur un domaine.
            description: Durée des cours des enseignants sur le domaine. Si pas de paramètres, retourne la durée de tous les enseignants sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des enseignants'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/DureesCours'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"
        
    /enseignants/{cle}/duree_disponible:
        get:
            tags:
                - Enseignants
            summary: Durée disponible de l'enseignant de clé {cle} sur un domaine.
            description: Durée disponible de l'enseignant sur le domaine. Si pas de paramètres, retourne la durée sur tout le domaine avec les jours fériés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''enseignant'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non

                        
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema:
                                $ref: '#/components/schemas/DureeDisponible'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"
        
    /enseignants/duree_disponible:
        get:
            tags:
                - Enseignants
            summary: Durée disponible des enseignants sur un domaine.
            description: Durée disponible des enseignants sur le domaine. Si pas de paramètres, retourne la durée de tous les enseignants sur tout le domaine avec les jours fériés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des enseignants'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/DureesDisponible'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"
        
    /enseignants/{cle}/duree_ponderee_cours:
        get:
            tags:
                - Enseignants
            summary: Durée de cours ponderee de l'enseignant de clé {cle} sur un domaine.
            description: Durée de cours ponderee de l'enseignant sur le domaine. Si pas de paramètres, retourne la durée sur tout le domaine avec les jours fériés et les cours non placés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''enseignant'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non

                        
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema:
                                type: object
                                properties:
                                    domaine:
                                        type: array
                                        items:
                                            type: integer
                                    avec_jours_feries: 
                                        type: boolean
                                        example: true
                                    avec_cours_non_places: 
                                        type: boolean
                                        example: true
                                    duree_ponderee_cours: 
                                        type: number
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"
        
    /enseignants/duree_ponderee_cours:
        get:
            tags:
                - Enseignants
            summary: Durée de cours ponderee des enseignants sur un domaine.
            description: Durée de cours ponderee des enseignants sur le domaine. Si pas de paramètres, retourne la durée de tous les enseignants sur tout le domaine avec les jours fériés et les cours non placés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des enseignants'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
                  
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    domaine:
                                        type: array
                                        items:
                                            type: integer
                                    avec_jours_feries: 
                                        type: boolean
                                        example: true
                                    avec_cours_non_places: 
                                        type: boolean
                                        example: true
                                    duree_ponderee_cours: 
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                duree: 
                                                    type: number
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"

    /enseignants/{cle}/t1:
        get:
            tags:
                - Enseignants
            summary: T1 de l'enseignant de clé {cle} sur un domaine.
            description: T1 l'enseignant sur le domaine. Si pas de paramètres, retourne la durée sur tout le domaine avec les jours fériés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''enseignant'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema:
                                type: object
                                properties:
                                    domaine:
                                        type: array
                                        items:
                                            type: integer
                                    avec_jours_feries: 
                                        type: boolean
                                        example: true
                                    t1: 
                                        type: number
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"
        
    /enseignants/t1:
        get:
            tags:
                - Enseignants
            summary: T1 des enseignants sur un domaine.
            description: T1 des enseignants sur le domaine. Si pas de paramètres, retourne la durée de tous les enseignants sur tout le domaine avec les jours fériés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des enseignants'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    domaine:
                                        type: array
                                        items:
                                            type: integer
                                    avec_jours_feries: 
                                        type: boolean
                                        example: true
                                    t1: 
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                duree: 
                                                    type: number
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"
    /enseignants/{cle}/t2_conv:
        get:
            tags:
                - Enseignants
            summary: T2 conventionnel de l'enseignant de clé {cle} sur un domaine.
            description: T2 conventionnel l'enseignant sur le domaine. Si pas de paramètres, retourne la durée sur tout le domaine avec les jours fériés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''enseignant'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema:
                                type: object
                                properties:
                                    domaine:
                                        type: array
                                        items:
                                            type: integer
                                    avec_jours_feries: 
                                        type: boolean
                                        example: true
                                    t2_conv: 
                                        type: number
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"
        
    /enseignants/t2_conv:
        get:
            tags:
                - Enseignants
            summary: T2 conventionnel des enseignants sur un domaine.
            description: T2 conventionnel des enseignants sur le domaine. Si pas de paramètres, retourne la durée de tous les enseignants sur tout le domaine avec les jours fériés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des enseignants'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    domaine:
                                        type: array
                                        items:
                                            type: integer
                                    avec_jours_feries: 
                                        type: boolean
                                        example: true
                                    t2_conv: 
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                duree: 
                                                    type: number
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"
    /enseignants/{cle}/t2_real:
        get:
            tags:
                - Enseignants
            summary: T2 réalisé de l'enseignant de clé {cle} sur un domaine.
            description: T2 réalisé  l'enseignant sur le domaine. Si pas de paramètres, retourne la durée sur tout le domaine avec les jours fériés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''enseignant'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema:
                                type: object
                                properties:
                                    domaine:
                                        type: array
                                        items:
                                            type: integer
                                    avec_jours_feries: 
                                        type: boolean
                                        example: true
                                    t2_real: 
                                        type: number
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"
    /enseignants/t2_real:
        get:
            tags:
                - Enseignants
            summary: T2 réalisé des enseignants sur un domaine.
            description: T2 réalisé des enseignants sur le domaine. Si pas de paramètres, retourne la durée de tous les enseignants sur tout le domaine avec les jours fériés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des enseignants'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    domaine:
                                        type: array
                                        items:
                                            type: integer
                                    avec_jours_feries: 
                                        type: boolean
                                        example: true
                                    t2_real: 
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                duree: 
                                                    type: number
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"
    /enseignants/{cle}/t3:
        get:
            tags:
                - Enseignants
            summary: T3 de l'enseignant de clé {cle} sur un domaine.
            description: T3 l'enseignant sur le domaine. Si pas de paramètres, retourne la durée sur tout le domaine avec les jours fériés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''enseignant'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema:
                                type: object
                                properties:
                                    domaine:
                                        type: array
                                        items:
                                            type: integer
                                    avec_jours_feries: 
                                        type: boolean
                                        example: true
                                    t3: 
                                        type: number
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"
        
    /enseignants/t3:
        get:
            tags:
                - Enseignants
            summary: T3 des enseignants sur un domaine.
            description: T3 des enseignants sur le domaine. Si pas de paramètres, retourne la durée de tous les enseignants sur tout le domaine avec les jours fériés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des enseignants'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    domaine:
                                        type: array
                                        items:
                                            type: integer
                                    avec_jours_feries: 
                                        type: boolean
                                        example: true
                                    t3: 
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                duree: 
                                                    type: number
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant incorrecte"
    /etudiants/{cle}/regroupements:
        get:
            tags:
                - Etudiants
            summary: Clés des regroupements de l'étudiant de clé {cle} à une date ou entre 2 dates.
            description: Clés des regroupements de l'étudiant à une date ou entre 2 dates. Si pas de paramètres, retourne la liste des regroupements de l'étudiant à la date d'aujourd'hui.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''étudiant'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: date
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
                - in: query
                  name: date_debut
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
                - in: query
                  name: date_fin
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array 
                                items:
                                    type: integer
                '404':
                    description: "Paramètre invalide : clé de l'étudiant incorrecte"
                '405':
                    description: "Droits insuffisants"
    /etudiants/{cle}/promotions:
        get:
            tags:
                - Etudiants
            summary: Clés des promotions de l'étudiant de clé {cle} à une date ou entre 2 dates.
            description: Clés des promotions de l'étudiant à une date ou entre 2 dates. Si pas de paramètres, retourne la liste des promotions de l'étudiant à la date d'aujourd'hui.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''étudiant'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: date
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
                - in: query
                  name: date_debut
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
                - in: query
                  name: date_fin
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array 
                                items:
                                    type: integer
                '404':
                    description: "Paramètre invalide : clé de l'étudiant incorrecte"
                '405':
                    description: "Droits insuffisants"
    /etudiants/{cle_etu}/promotions/{cle_promo}/ajouter:
        post:
            tags:
                - Etudiants
            summary: Affecte l'étudiant de clé {cle_etu} à la promotion de clé {cle_promo} sur l'année ou à partir d'une date.
            description: Affecte l'étudiant à une promotion sur l'année par défaut. Pour affecter un étudiant à la promotion à partir d'une date, passer cette date en paramètre. Si pas de paramètres, affecte l'étudiant sur l'année.
            parameters:
                -   name: cle_etu
                    in: path
                    description: 'clé de l''étudiant'
                    required: true
                    schema:
                        type: integer       
                -   name: cle_promo
                    in: path
                    description: 'clé de la promotion'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: date
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array 
                                items:
                                    type: integer
                '404':
                    description: "Paramètre invalide : clé de l'étudiant ou de la promotion incorrecte"
                '405':
                    description: "Droits insuffisants"
    /etudiants/{cle_etu}/promotions/{cle_promo}/enlever:
        post:
            tags:
                - Etudiants
            summary: Enleve l'étudiant de clé {cle_etu} à la promotion de clé {cle_promo} sur l'année ou à partir d'une date.
            description: Enleve l'étudiant à une promotion sur l'année par défaut. Pour enlever un étudiant à la promotion à partir d'une date, passer cette date en paramètre. Si pas de paramètres, enleve l'étudiant sur l'année.
            parameters:
                -   name: cle_etu
                    in: path
                    description: 'clé de l''étudiant'
                    required: true
                    schema:
                        type: integer       
                -   name: cle_promo
                    in: path
                    description: 'clé de la promotion'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: date
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array 
                                items:
                                    type: integer
                '404':
                    description: "Paramètre invalide : clé de l'étudiant ou de la promotion incorrecte"
                '405':
                    description: "Droits insuffisants"
    /etudiants/{cle_etu}/promotions/{cle_promo}/dates_affectation:
        get:
            tags:
                - Etudiants
            summary: Dates d'affectation de l'étudiant dans la promotion.
            description: Dates d'affectation de l'étudiant de clé {cle_etu} dans la promotion de clé {cle_promo}.
            parameters:
                -   name: cle_etu
                    in: path
                    description: 'clé de l''étudiant'
                    required: true
                    schema:
                        type: integer       
                -   name: cle_promo
                    in: path
                    description: 'clé de la promotion'
                    required: true
                    schema:
                        type: integer       
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array 
                                items:
                                    type: object
                                    properties:
                                      du:
                                        type: string
                                      au:
                                        type: string
                '404':
                    description: "Paramètre invalide : clé de l'étudiant ou de la promotion incorrecte"
                '405':
                    description: "Droits insuffisants"
    /etudiants/{cle}/tdoptions:
        get:
            tags:
                - Etudiants
            summary: Clés des td/options de l'étudiant de clé {cle} à une date ou entre 2 dates.
            description: Clés des td/options de l'étudiant à une date ou entre 2 dates. Si pas de paramètres, retourne la liste des td/options de l'étudiant à la date d'aujourd'hui.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''étudiant'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: date
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
                - in: query
                  name: date_debut
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
                - in: query
                  name: date_fin
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array 
                                items:
                                    type: integer
                '404':
                    description: "Paramètre invalide : clé de l'étudiant incorrecte"
                '405':
                    description: "Droits insuffisants"
                            
    /etudiants/{cle_etu}/tdoptions/{cle_tdopt}/ajouter:
        post:
            tags:
                - Etudiants
            summary: Affecte l'étudiant de clé {cle_etu} au td/option de clé {cle_tdopt} sur l'année ou à partir d'une date.
            description: Affecte l'étudiant au td/option sur l'année par défaut. Pour affecter un étudiant au td/option à partir d'une date, passer cette date en paramètre. Si pas de paramètres, affecte l'étudiant sur l'année.
            parameters:
                -   name: cle_etu
                    in: path
                    description: 'clé de l''étudiant'
                    required: true
                    schema:
                        type: integer       
                -   name: cle_tdopt
                    in: path
                    description: 'clé du td/option'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: date
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array 
                                items:
                                    type: integer
                '404':
                    description: "Paramètre invalide : clé de l'étudiant ou du TD/option incorrecte"
                '405':
                    description: "Droits insuffisants"
    /etudiants/{cle_etu}/tdoptions/{cle_tdopt}/enlever:
        post:
            tags:
                - Etudiants
            summary: Enleve l'étudiant de clé {cle_etu} du TD/option de clé {cle_tdopt} sur l'année ou à partir d'une date.
            description: Enleve l'étudiant du TD/option sur l'année par défaut. Pour enlever un étudiant du TD/option à partir d'une date, passer cette date en paramètre. Si pas de paramètres, enleve l'étudiant sur l'année.
            parameters:
                -   name: cle_etu
                    in: path
                    description: 'clé de l''étudiant'
                    required: true
                    schema:
                        type: integer       
                -   name: cle_tdopt
                    in: path
                    description: 'clé du TD/option'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: date
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array 
                                items:
                                    type: integer
                '404':
                    description: "Paramètre invalide : clé de l'étudiant ou du TD/option incorrecte"
                '405':
                    description: "Droits insuffisants"

    /etudiants/{cle_etu}/tdoptions/{cle_tdopt}/dates_affectation:
        get:
            tags:
                - Etudiants
            summary: Dates d'affectation de l'étudiant dans le td/option.
            description: Dates d'affectation de l'étudiant de clé {cle_etu} dans le td/option de clé {cle_tdopt}.
            parameters:
                -   name: cle_etu
                    in: path
                    description: 'clé de l''étudiant'
                    required: true
                    schema:
                        type: integer       
                -   name: cle_tdopt
                    in: path
                    description: 'clé du td/option'
                    required: true
                    schema:
                        type: integer       
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array 
                                items:
                                    type: object
                                    properties:
                                      du:
                                        type: string
                                      au:
                                        type: string
                '404':
                    description: "Paramètre invalide : clé de l'étudiant ou du td/option incorrecte"
                '405':
                    description: "Droits insuffisants"
    /etudiants/{cle}/cours:
        get:
            tags:
                - Etudiants
            summary: Clés des cours de l'étudiant de clé {cle} entre 2 dates.
            description: Clés des cours de l'étudiant entre 2 dates. Si pas de paramètres, retourne la liste des cours de l'étudiant sur tout le domaine.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de l''étudiant'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: date_debut
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
                - in: query
                  name: date_fin
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'

                        
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array 
                                items:
                                    type: integer
                '400':
                    description: "Paramètre invalide : Dates hors limites"
                '404':
                    description: "Paramètre invalide : clé de l'étudiant incorrecte"
                '405':
                    description: "Droits insuffisants"
                            
    /promotions/{cle}/cours:
        get:
            tags:
                - Promotions
            summary: Clés des cours de la promotion de clé {cle} entre 2 dates.
            description: Clés des cours de la promotion entre 2 dates. Si pas de paramètres, retourne la liste des cours sur tout le domaine.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la promotion'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: date_debut
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
                - in: query
                  name: date_fin
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array 
                                items:
                                    type: integer
                '400':
                    description: "Paramètre invalide : Dates hors limites"
                '404':
                    description: "Paramètre invalide : clé de la promotion incorrecte"
                            
    /promotions/{cle_promo}/cours/{cle_cours}/domaine:
        get:
            tags:
                - Promotions
            summary: Domaine de présence de la promotion de clé {cle_promo} dans le cours de clé {cle_cours}.
            description: Domaine de présence de la promotion de clé {cle_promo} pour le cours de clé {cle_cours}. Le domaine est vide si la promotion n'est pas dans le cours. 
            parameters:
                -   name: cle_promo
                    in: path
                    description: 'clé de la promotion'
                    required: true
                    schema:
                        type: integer
                -   name: cle_cours
                    in: path
                    description: 'clé du cours'
                    required: true
                    schema:
                        type: integer
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array
                                items:
                                    type: integer
                '404':
                    description: "Paramètre invalide : clé de la promotion incorrecte"
        post:
            tags:
                - Promotions
            summary: Modifie le domaine de présence de la promotion de clé {cle_promo} dans le cours de clé {cle_cours}.
            description: Modifie le domaine de présence de la promotion de clé {cle_promo} pour le cours de clé {cle_cours}. Permet d'ajouter une promotion à un cours ou l'enlever de ce cours. Le domaine peut être passé dans l'URL ?domaine=12,24,48. Par défaut, prend tout le domaine.
            parameters:
                -   name: cle_promo
                    in: path
                    description: 'clé de la promotion'
                    required: true
                    schema:
                        type: integer
                -   name: cle_cours
                    in: path
                    description: 'clé du cours'
                    required: true
                    schema:
                        type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array
                                items:
                                    type: integer
                '404':
                    description: "Paramètre invalide : clé de la promotion incorrecte"
    /promotions/{cle}/cout:
        get:
            tags:
                - Promotions
            summary: Coût de la promotion de clé {cle} sur un domaine.
            description: Coût de la promotion sur un domaine. Si pas de paramètres, retourne le coût sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la promotion'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Cout'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de la promotion incorrecte"
    /promotions/cout:
        get:
            tags:
                - Promotions
            summary: Coûts des promotions sur un domaine.
            description: Coûts des promotions sur un domaine. Si pas de paramètres, retourne le coût de toutes les promotions sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des promotions'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Couts'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de la promotion incorrecte"
    /promotions/{cle}/duree_cours:
        get:
            tags:
                - Promotions
            summary: Durée de cours de la promotion de clé {cle} sur un domaine.
            description: Durée des cours de la promotion sur le domaine. Si pas de paramètres, retourne la durée sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la promotion'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/DureeCours'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de la promotion incorrecte"
    /promotions/duree_cours:
        get:
            tags:
                - Promotions
            summary: Durée du cours des promotions sur un domaine.
            description: Durée des cours des promotions sur le domaine. Si pas de paramètres, retourne la durée de toutes les promotions sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des promotions'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/DureesCours'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé d'une promotion incorrecte"
    /promotions/{cle}/duree_disponible:
        get:
            tags:
                - Promotions
            summary: Durée disponible de la promotion de clé {cle} sur un domaine.
            description: Durée disponible de la promotion sur le domaine. Si pas de paramètres, retourne la durée sur tout le domaine avec les jours fériés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la promotion'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema:
                                $ref: '#/components/schemas/DureeDisponible'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de la promotion incorrecte"
    /promotions/duree_disponible:
        get:
            tags:
                - Promotions
            summary: Durée disponible des promotions sur un domaine.
            description: Durée disponible des promotions sur le domaine. Si pas de paramètres, retourne la durée de toutes les promotions sur tout le domaine avec les jours fériés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des promotions'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/DureesDisponible'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé d'une promotion incorrecte"
    /tdoptions/{cle}/cours:
        get:
            tags:
                - TDOptions
            summary: Clés des cours du TD/option de clé {cle} entre 2 dates.
            description: Clés des cours du TD/option entre 2 dates. Si pas de paramètres, retourne la liste des cours sur tout le domaine.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du TD/option'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: date_debut
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
                - in: query
                  name: date_fin
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array 
                                items:
                                    type: integer
                '400':
                    description: "Paramètre invalide : Dates hors limites"
                '404':
                    description: "Paramètre invalide : clé du TD/option incorrecte"
    /tdoptions/{cle_TDOpt}/cours/{cle_cours}/domaine:
        get:
            tags:
                - TDOptions
            summary: Domaine de présence du TD/option de clé {cle_TDOpt} dans le cours de clé {cle_cours}.
            description: Domaine de présence du TD/option de clé {cle_TDOpt} pour le cours de clé {cle_cours}. Le domaine est vide si le TD/option n'est pas dans le cours. 
            parameters:
                -   name: cle_TDOpt
                    in: path
                    description: 'clé du TD/option'
                    required: true
                    schema:
                        type: integer
                -   name: cle_cours
                    in: path
                    description: 'clé du cours'
                    required: true
                    schema:
                        type: integer
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array
                                items:
                                    type: integer
                '404':
                    description: "Paramètre invalide : clé du TD/option incorrecte"
        post:
            tags:
                - TDOptions
            summary: Modifie le domaine de présence du TD/option de clé {cle_TDOpt} dans le cours de clé {cle_cours}.
            description: Modifie le domaine de présence du TD/option de clé {cle_TDOpt} pour le cours de clé {cle_cours}. Permet d'ajouter un TD/option à un cours ou l'enlever de ce cours. Le domaine peut être passé dans l'URL ?domaine=12,24,48. Par défaut, prend tout le domaine.
            parameters:
                -   name: cle_TDOpt
                    in: path
                    description: 'clé du TD/option'
                    required: true
                    schema:
                        type: integer
                -   name: cle_cours
                    in: path
                    description: 'clé du cours'
                    required: true
                    schema:
                        type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array
                                items:
                                    type: integer
                '404':
                    description: "Paramètre invalide : clé du TD/option incorrecte"
    /tdoptions/{cle}/cout:
        get:
            tags:
                - TDOptions
            summary: Coût du TD/option de clé {cle} sur un domaine.
            description: Coût du TD/option sur un domaine. Si pas de paramètres, retourne le coût sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du TD/option'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Cout'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé du TD/option incorrecte"
    /tdoptions/cout:
        get:
            tags:
                - TDOptions
            summary: Coûts des TD/options sur un domaine.
            description: Coûts des TD/options sur un domaine. Si pas de paramètres, retourne le coût de tous les TD/options sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des TD/options'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Couts'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé d'un TD/option incorrecte"
    /tdoptions/{cle}/duree_cours:
        get:
            tags:
                - TDOptions
            summary: Durée de cours du TD/option de clé {cle} sur un domaine.
            description: Durée des cours du TD/option sur le domaine. Si pas de paramètres, retourne la durée sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du TD/option'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/DureeCours'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé du TD/option incorrecte"
    /tdoptions/duree_cours:
        get:
            tags:
                - TDOptions
            summary: Durée du cours des TD/options sur un domaine.
            description: Durée des cours des TD/options sur le domaine. Si pas de paramètres, retourne la durée de tous les TD/options sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des TD/options'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/DureesCours'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé d'un TD/option incorrecte"
    /tdoptions/{cle}/duree_disponible:
        get:
            tags:
                - TDOptions
            summary: Durée disponible du TD/option de clé {cle} sur un domaine.
            description: Durée disponible du TD/option sur le domaine. Si pas de paramètres, retourne la durée sur tout le domaine avec les jours fériés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du TD/option'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema:
                                $ref: '#/components/schemas/DureeDisponible'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé du TD/option incorrecte"
    /tdoptions/duree_disponible:
        get:
            tags:
                - TDOptions
            summary: Durée disponible des TD/options sur un domaine.
            description: Durée disponible des TD/options sur le domaine. Si pas de paramètres, retourne la durée de tous les TD/options sur tout le domaine avec les jours fériés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des TD/options'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/DureesDisponible'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé d'un TD/option incorrecte"
    /regroupements/{cle}/cours:
        get:
            tags:
                - Regroupements
            summary: Clés des cours du regroupement de clé {cle} entre 2 dates.
            description: Clés des cours du regroupement entre 2 dates. Si pas de paramètres, retourne la liste des cours sur tout le domaine.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du regroupement'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: date_debut
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
                - in: query
                  name: date_fin
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array 
                                items:
                                    type: integer
                '400':
                    description: "Paramètre invalide : Dates hors limites"
                '404':
                    description: "Paramètre invalide : clé du regroupement incorrecte"
    /regroupements/{cle_regroup}/cours/{cle_cours}/domaine:
        get:
            tags:
                - Regroupements
            summary: Domaine de présence du regroupement de clé {cle_regroup} dans le cours de clé {cle_cours}.
            description: Domaine de présence du regroupement de clé {cle_regroup} pour le cours de clé {cle_cours}. Le domaine est vide si la promotion n'est pas dans le cours. 
            parameters:
                -   name: cle_regroup
                    in: path
                    description: 'clé du regroupement'
                    required: true
                    schema:
                        type: integer
                -   name: cle_cours
                    in: path
                    description: 'clé du cours'
                    required: true
                    schema:
                        type: integer
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array
                                items:
                                    type: integer
                '404':
                    description: "Paramètre invalide : clé du regroupement incorrecte"
        post:
            tags:
                - Regroupements
            summary: Modifie le domaine de présence du regroupement de clé {cle_regroup} dans le cours de clé {cle_cours}.
            description: Modifie le domaine de présence du regroupement de clé {cle_regroup} pour le cours de clé {cle_cours}. Permet d'ajouter un regroupement à un cours ou l'enlever de ce cours. Le domaine peut être passé dans l'URL ?domaine=12,24,48. Par défaut, prend tout le domaine.
            parameters:
                -   name: cle_regroup
                    in: path
                    description: 'clé du regroupement'
                    required: true
                    schema:
                        type: integer
                -   name: cle_cours
                    in: path
                    description: 'clé du cours'
                    required: true
                    schema:
                        type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array
                                items:
                                    type: integer
                '404':
                    description: "Paramètre invalide : clé du regroupement incorrecte"
    /regroupements/{cle}/cout:
        get:
            tags:
                - Regroupements
            summary: Coût du regroupement de clé {cle} sur un domaine.
            description: Coût du regroupement sur un domaine. Si pas de paramètres, retourne le coût sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du regroupement'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Cout'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé du regroupement incorrecte"
    /regroupements/cout:
        get:
            tags:
                - Regroupements
            summary: Coûts des regroupements sur un domaine.
            description: Coûts des regroupements sur un domaine. Si pas de paramètres, retourne le coût de tous les regroupements sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des regroupements'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Couts'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé du regroupement incorrecte"
    /regroupements/{cle}/duree_cours:
        get:
            tags:
                - Regroupements
            summary: Durée de cours du regroupement de clé {cle} sur un domaine.
            description: Durée des cours du regroupement sur le domaine. Si pas de paramètres, retourne la durée sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du regroupement'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/DureeCours'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé du regroupement incorrecte"
    /regroupements/duree_cours:
        get:
            tags:
                - Regroupements
            summary: Durée du cours des regroupements sur un domaine.
            description: Durée des cours des regroupements sur le domaine. Si pas de paramètres, retourne la durée de tous les regroupements sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des regroupements'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/DureesCours'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé d'un regroupement incorrecte"
    /regroupements/{cle}/duree_disponible:
        get:
            tags:
                - Regroupements
            summary: Durée disponible du regroupement de clé {cle} sur un domaine.
            description: Durée disponible du regroupement sur le domaine. Si pas de paramètres, retourne la durée sur tout le domaine avec les jours fériés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé du regroupement'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema:
                                $ref: '#/components/schemas/DureeDisponible'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé du regroupement incorrecte"
    /regroupements/duree_disponible:
        get:
            tags:
                - Regroupements
            summary: Durée disponible des regroupements sur un domaine.
            description: Durée disponible des regroupements sur le domaine. Si pas de paramètres, retourne la durée de tous les regroupements sur tout le domaine avec les jours fériés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des regroupements'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/DureesDisponible'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé d'un regroupement incorrecte"
    /salles/{cle}/cours:
        get:
            tags:
                - Salles
            summary: Clés des cours de la salle de clé {cle} entre 2 dates.
            description: Clés des cours de la salle entre 2 dates. Si pas de paramètres, retourne la liste des cours sur tout le domaine.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la salle'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: date_debut
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
                - in: query
                  name: date_fin
                  schema:
                    type: string
                  description: Date sous format chaine 'yyyy-mm-dd'
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array 
                                items:
                                    type: integer
                '400':
                    description: "Paramètre invalide : Dates hors limites"
                '404':
                    description: "Paramètre invalide : clé de la salle incorrecte"
    /salles/{cle_salle}/cours/{cle_cours}/domaine:
        get:
            tags:
                - Salles
            summary: Domaine de présence de la salle de clé {cle_salle} dans le cours de clé {cle_cours}.
            description: Domaine de présence de la salle de clé {cle_salle} pour le cours de clé {cle_cours}. Le domaine est vide si la salle n'est pas dans le cours. 
            parameters:
                -   name: cle_salle
                    in: path
                    description: 'clé de la salle'
                    required: true
                    schema:
                        type: integer
                -   name: cle_cours
                    in: path
                    description: 'clé du cours'
                    required: true
                    schema:
                        type: integer
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array
                                items:
                                    type: integer
                '404':
                    description: "Paramètre invalide : clé de la salle incorrecte"
        post:
            tags:
                - Salles
            summary: Modifie le domaine de présence de la salle de clé {cle_salle} dans le cours de clé {cle_cours}.
            description: Modifie le domaine de présence de la salle de clé {cle_salle} pour le cours de clé {cle_cours}. Permet d'ajouter une salle à un cours ou l'enlever de ce cours. Le domaine peut être passé dans l'URL ?domaine=12,24,48. Par défaut, prend tout le domaine.
            parameters:
                -   name: cle_salle
                    in: path
                    description: 'clé de la salle'
                    required: true
                    schema:
                        type: integer
                -   name: cle_cours
                    in: path
                    description: 'clé du cours'
                    required: true
                    schema:
                        type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array
                                items:
                                    type: integer
                '404':
                    description: "Paramètre invalide : clé de la salle incorrecte"
    /salles/{cle}/cout:
        get:
            tags:
                - Salles
            summary: Coût de la salle de clé {cle} sur un domaine.
            description: Coût de la salle sur un domaine. Si pas de paramètres, retourne le coût sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la salle'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Cout'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de la salle incorrecte"
    /salles/cout:
        get:
            tags:
                - Salles
            summary: Coûts des salles sur un domaine.
            description: Coûts des salles sur un domaine. Si pas de paramètres, retourne le coût de toutes les salles sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des salles'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Couts'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de la salle incorrecte"
    /salles/{cle}/duree_cours:
        get:
            tags:
                - Salles
            summary: Durée de cours de la salle de clé {cle} sur un domaine.
            description: Durée des cours de la salle sur le domaine. Si pas de paramètres, retourne la durée sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la salle'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/DureeCours'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de la salle incorrecte"
    /salles/duree_cours:
        get:
            tags:
                - Salles
            summary: Durée du cours des salles sur un domaine.
            description: Durée des cours des salles sur le domaine. Si pas de paramètres, retourne la durée de toutes les salles sur tout le domaine, avec les jours fériés et les cours non placés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des salles'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
                - in: query
                  name: avec_cours_non_places
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les cours non placés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/DureesCours'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé d'une salle incorrecte"
    /salles/{cle}/duree_disponible:
        get:
            tags:
                - Salles
            summary: Durée disponible de la salle de clé {cle} sur un domaine.
            description: Durée disponible de la salle sur le domaine. Si pas de paramètres, retourne la durée sur tout le domaine avec les jours fériés.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la salle'
                    required: true
                    schema:
                        type: integer       
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema:
                                $ref: '#/components/schemas/DureeDisponible'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé de la salle incorrecte"
    /salles/duree_disponible:
        get:
            tags:
                - Salles
            summary: Durée disponible des salles sur un domaine.
            description: Durée disponible des salles sur le domaine. Si pas de paramètres, retourne la durée de toutes les salles sur tout le domaine avec les jours fériés.
            parameters:
                -   name: cles
                    in: query
                    description: 'clés des salles'
                    required: true
                    schema:
                        type: array
                        items:
                            type: integer
                - in: query
                  name: domaine
                  schema:
                    type: array
                    items:
                        type: integer
                  description: Domaine (tableau des semaines) 
                - in: query
                  name: avec_jours_feries
                  schema:
                    type: boolean
                  description: Booleen indiquant si l'on souhaite prendre en compte les jours fériés ou non
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/DureesDisponible'
                '400':
                    description: "Paramètre invalide : format incorrect"
                '404':
                    description: "Paramètre invalide : clé d'une salle incorrecte"

    /familles:
        get:
            tags:
                - Familles
            summary: Liste de toutes les familles.
            description: Tableau contenant les json des familles de la base, par défaut trié par nom.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - cle
                        - proprietaire
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [cle, libelle, utilisee_pour]   # ?select=cle,libelle,utilisee_pour
                - in: query
                  name: cle
                  description: retourne seulement les familles ayant une de ces clés
                  required: false
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [12, 24, 48]   # ?cle=12,24,48
                - in: query
                  name: libelle
                  description: retourne seulement les familles ayant un de ces libelles
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul libelle souhaité
                      value: [maths]   # ?libelle=maths
                    multipleIds:
                      summary: Exemple avec plusieurs libelles souhaités
                      value: [maths, francais, histoire]   # ?libelle=maths,francais,histoire
                - in: query
                  name: mode
                  description: retourne seulement les familles de ce mode
                  schema:
                    type: string
                  style: form
                  explode: false
                - in: query
                  name: utilisee_pour
                  description: retourne seulement les familles utilisant un de ces genres
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
            responses:
              '200':    # status code
                description: Tableau des JSON des familles
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Familles'
        post:
            tags:
                - Familles
            summary: Création d'une nouvelle famille dans la base
            description: Création d'une nouvelle famille dans la base et initialisation des champs à l'aide des paramètres passés dans le JSON.
            requestBody:
                description: Champs du JSON utilisé pour la création
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Familles'
            responses:
                '201':
                    description: Created            
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Familles'
                '400':
                  description: "Paramètres non valides : nom, genre et mode obligatoire, problème de taille"
                '500':
                  description: 
                    Création ou modification d'au moins un des champs impossible 
    /familles/{cle}:
        get:
            tags:
                - Familles
            summary: Json de la famille de clé {cle}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la famille'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Familles'
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - Familles
            summary: Mise à jour partielle de la famille de clé {cle}.
            description: Modifie les champs de la famille de clé {cle} avec ceux passés dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la famille que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant les champs et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Familles'
            responses:
              '200':    # status code
                description: succès - JSON de la famille modifiée
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/Familles'
              '400':
                description: "Paramètres non valide : libelle obligatoire, Problème de taille..."
              '404':
                description: "Paramètre invalide : famille inexistante"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - Familles
            summary: Suppression de la famille de clé {cle}.
            description: Permet de supprimer définitivement la famille de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé de la famille à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    /familles/supprimer:
        post:
            tags:
                - Familles
            summary: Suppression de plusieurs familles
            description: Suppression des familles dont la clé est passée en paramètre (?cles=1,5,7 ).
            parameters:
                - in: query
                  name: cles
                  description: une ou plusieurs clés des familles à supprimer
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                  style: form
                  explode: false
                  examples:
                    oneId:
                      summary: Exemple avec une seule clé
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Exemple avec plusieurs clé
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    



    /familles/{cle}/rubriques:
        get:
            tags:
                - Familles
            summary: Rubriques de la famille de clé {cle}.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la famille'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: array
                                items:
                                    type: object
                                    properties:
                                        cle:
                                            type: integer
                                            example: 10
                                        nom:
                                            type: string
                                            example: "Rubrique1"                                                                                    
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - Familles
            summary: Ajoute une rubrique à la famille de clé {cle}.
            description: Ajoute une rubrique à la famille de clé {cle}, le nom etant passé dans le body.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la famille'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant le champs nom de la nouvelle rubrique et sa valeur.
                required: true
                content:
                    application/json:
                        schema: 
                            type: object
                            properties:
                                nom:
                                    type: string
                                    example: "Rubrique2"                                                                                    
            responses:
              '201':    # status code
                description: succès - JSON de la rubrique crée
                content:
                  application/json:
                    schema: 
                        type: object
                        properties:
                            cle:
                                type: integer
                                example: 11
                            nom:
                                type: string
                                example: "Rubrique2"                                                                                    
              '400':
                description: "Paramètres non valide : nom obligatoire, Problème de taille..."
              '404':
                description: "Paramètre invalide : famille inexistante"
              '500':
                description: "creation impossible"         
    /rubriques:
        get:
            tags:
                - Rubriques
            summary: Liste de toutes les rubriques.
            description: Tableau contenant les json des rubriques de la base, par défaut trié par nom.
            parameters:
                - in: query
                  name: sort
                  schema:
                    type: string
                    enum:
                        - cle
                  description: Choix de l'ordre de tri
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [cle, nom, famille]   # ?select=cle,nom,famille
                - in: query
                  name: cle
                  description: retourne seulement les rubriques ayant une de ces clés
                  required: false
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [12, 24, 48]   # ?cle=12,24,48
                - in: query
                  name: nom
                  description: retourne seulement les rubriques ayant un de ces noms
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec un seul nom souhaité
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Exemple avec plusieurs noms souhaités
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - in: query
                  name: famille
                  description: retourne seulement les rubriques des familles ayant une de ces clés
                  schema:
                    type: array
                    items:
                        type: string
                  style: form
                  explode: false
                  examples:
                    oneIds:
                      summary: Exemple avec une seule famille souhaitée
                      value: [12]   # ?famille=12
                    multipleIds:
                      summary: Exemple avec plusieurs familles souhaitées
                      value: [12, 24, 31]   # ?famille=12,24,31
            responses:
              '200':    # status code
                description: Tableau des JSON des rubriques
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Rubriques'
        post:
            tags:
                - Rubriques
            summary: Création d'une nouvelle rubrique dans la base
            description: Création d'une nouvelle rubrique dans la base et initialisation des champs à l'aide des paramètres passés dans le JSON.
            requestBody:
                description: Champs du JSON utilisé pour la création
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Rubriques'
            responses:
                '201':
                    description: Created            
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Rubriques'
                '400':
                  description: "Paramètres non valides : nom et clé de la famille obligatoire, problème de taille"
                '500':
                  description: 
                    Création ou modification d'au moins un des champs impossible 

    /rubriques/{cle}:
        get:
            tags:
                - Rubriques
            summary: Json de la rubrique de clé {cle}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la rubrique'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Rubriques'
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - Rubriques
            summary: Mise à jour partielle de la rubrique de clé {cle}.
            description: Modifie les champs de la rubrique de clé {cle} avec ceux passés dans le JSON au niveau du BODY.
            parameters:
                -   name: cle
                    in: path
                    description: 'clé de la rubrique que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant les champs et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Rubriques'
            responses:
              '200':    # status code
                description: succès - JSON de la rubrique modifiée
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/Rubriques'
              '400':
                description: "Paramètres non valide : nom obligatoire, Problème de taille..."
              '404':
                description: "Paramètre invalide : rubrique inexistante"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - Rubriques
            summary: Suppression de la rubrique de clé {cle}.
            description: Permet de supprimer définitivement la rubrique de clé {cle} de la base.
            parameters:
                -   name: cle
                    in: path
                    description: clé de la rubrique à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    
    
    /rubriques/supprimer:
        post:
            tags:
                - Rubriques
            summary: Suppression de plusieurs rubriques
            description: Suppression des rubriques dont la clé est passée en paramètre (?cles=1,5,7 ).
            parameters:
                - in: query
                  name: cles
                  description: une ou plusieurs clés des rubriques à supprimer
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                  style: form
                  explode: false
                  examples:
                    oneId:
                      summary: Exemple avec une seule clé
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Exemple avec plusieurs clé
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : La clé passée n'existe pas"
    
    /matieres/{cle_mat}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Matieres
            summary: Rubriques affectées à la matière pour la famille.
            description: Rubriques affectées à la matière de clé {cle_mat} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', 'rubrique_libre' permet d'obtenir la rubrique libre de cette famille. Dans le cas des 'rubriques prédéfinies', 'rubriques' permet d'obtenir le tableau (clé et nom) de toutes les rubriques affectées.
            parameters:
                -   name: cle_mat
                    in: path
                    description: clé de la matière
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer       
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    matiere:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé de la matière ou de la famille incorrecte"
        post:
            tags:
                - Matieres
            summary: Modification des ruriques affectées à la matière pour la famille.
            description: Modifie les rubriques affectées à la matière de clé {cle_mat} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', renseigner 'rubrique_libre' pour modifier la rubrique libre pour cette famille. Dans le cas des 'rubriques prédéfinies', renseigner 'rubriques' avec le tableau des clés des rubriques voulues.
            parameters:
                -   name: cle_mat
                    in: path
                    description: clé de la matière
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer    
                -   name: rubrique_libre
                    in: query
                    description: libellé de la rubrique libre. Dans le cas seulement d'une famille de rubriques libre.
                    required: true
                    schema:
                        type: string    
                -   name: rubriques
                    in: query
                    description: Tableau des clés des rubriques prédéfinies de la famille. Dans le cas seulement d'une famille de rubriques prédéfinies.
                    required: true
                    schema:
                        type: array    
                        items:
                            type: integer
                            example: 24
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    matiere:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé de la matière ou de la famille incorrecte"
                '500':
                    description: "'Modification impossible' ou 'Droits insufissants'"
    /enseignants/{cle_ens}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Enseignants
            summary: Rubriques affectées à l'enseignant pour la famille.
            description: Rubriques affectées à l'enseignant de clé {cle_ens} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', 'rubrique_libre' permet d'obtenir la rubrique libre de cette famille. Dans le cas des 'rubriques prédéfinies', 'rubriques' permet d'obtenir le tableau (clé et nom) de toutes les rubriques affectées.
            parameters:
                -   name: cle_ens
                    in: path
                    description: clé de l'enseignant
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer       
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    enseignant:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant ou de la famille incorrecte"
        post:
            tags:
                - Enseignants
            summary: Modification des ruriques affectées à l'enseignant pour la famille.
            description: Modifie les rubriques affectées à l'enseignant de clé {cle_ens} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', renseigner 'rubrique_libre' pour modifier la rubrique libre pour cette famille. Dans le cas des 'rubriques prédéfinies', renseigner 'rubriques' avec le tableau des clés des rubriques voulues.
            parameters:
                -   name: cle_ens
                    in: path
                    description: clé de l'enseignant
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer    
                -   name: rubrique_libre
                    in: query
                    description: libellé de la rubrique libre. Dans le cas seulement d'une famille de rubriques libre.
                    required: true
                    schema:
                        type: string    
                -   name: rubriques
                    in: query
                    description: Tableau des clés des rubriques prédéfinies de la famille. Dans le cas seulement d'une famille de rubriques prédéfinies.
                    required: true
                    schema:
                        type: array    
                        items:
                            type: integer
                            example: 24
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    enseignant:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé de l'enseignant ou de la famille incorrecte"
                '500':
                    description: "'Modification impossible' ou 'Droits insufissants'"
    /promotions/{cle_promo}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Promotions
            summary: Rubriques affectées à la promotion pour la famille.
            description: Rubriques affectées à la promotion de clé {cle_promo} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', 'rubrique_libre' permet d'obtenir la rubrique libre de cette famille. Dans le cas des 'rubriques prédéfinies', 'rubriques' permet d'obtenir le tableau (clé et nom) de toutes les rubriques affectées.
            parameters:
                -   name: cle_promo
                    in: path
                    description: clé de la promotion
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer       
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    promotion:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé de la promotion ou de la famille incorrecte"
        post:
            tags:
                - Promotions
            summary: Modification des ruriques affectées à la promotion pour la famille.
            description: Modifie les rubriques affectées à la promotion de clé {cle_promo} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', renseigner 'rubrique_libre' pour modifier la rubrique libre pour cette famille. Dans le cas des 'rubriques prédéfinies', renseigner 'rubriques' avec le tableau des clés des rubriques voulues.
            parameters:
                -   name: cle_promo
                    in: path
                    description: clé de la promotion
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer    
                -   name: rubrique_libre
                    in: query
                    description: libellé de la rubrique libre. Dans le cas seulement d'une famille de rubriques libre.
                    required: true
                    schema:
                        type: string    
                -   name: rubriques
                    in: query
                    description: Tableau des clés des rubriques prédéfinies de la famille. Dans le cas seulement d'une famille de rubriques prédéfinies.
                    required: true
                    schema:
                        type: array    
                        items:
                            type: integer
                            example: 24
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    promotion:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé de la promotion ou de la famille incorrecte"
                '500':
                    description: "'Modification impossible' ou 'Droits insufissants'"
    /tdoptions/{cle_TDOpt}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - TDOptions
            summary: Rubriques affectées au TD/option pour la famille.
            description: Rubriques affectées au TD/option de clé {cle_TDOpt} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', 'rubrique_libre' permet d'obtenir la rubrique libre de cette famille. Dans le cas des 'rubriques prédéfinies', 'rubriques' permet d'obtenir le tableau (clé et nom) de toutes les rubriques affectées.
            parameters:
                -   name: cle_TDOpt
                    in: path
                    description: clé du TD/option
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer       
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    td_option:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé du TD/option ou de la famille incorrecte"
        post:
            tags:
                - TDOptions
            summary: Modification des ruriques affectées au TD/option pour la famille.
            description: Modifie les rubriques affectées au TD/option de clé {cle_TDOpt} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', renseigner 'rubrique_libre' pour modifier la rubrique libre pour cette famille. Dans le cas des 'rubriques prédéfinies', renseigner 'rubriques' avec le tableau des clés des rubriques voulues.
            parameters:
                -   name: cle_TDOpt
                    in: path
                    description: clé du TD/option
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer    
                -   name: rubrique_libre
                    in: query
                    description: libellé de la rubrique libre. Dans le cas seulement d'une famille de rubriques libre.
                    required: true
                    schema:
                        type: string    
                -   name: rubriques
                    in: query
                    description: Tableau des clés des rubriques prédéfinies de la famille. Dans le cas seulement d'une famille de rubriques prédéfinies.
                    required: true
                    schema:
                        type: array    
                        items:
                            type: integer
                            example: 24
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    td_option:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé du TD/option ou de la famille incorrecte"
                '500':
                    description: "'Modification impossible' ou 'Droits insufissants'"
    /regroupements/{cle_regroup}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Regroupements
            summary: Rubriques affectées au regroupement pour la famille.
            description: Rubriques affectées au regroupement de clé {cle_regroup} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', 'rubrique_libre' permet d'obtenir la rubrique libre de cette famille. Dans le cas des 'rubriques prédéfinies', 'rubriques' permet d'obtenir le tableau (clé et nom) de toutes les rubriques affectées.
            parameters:
                -   name: cle_regroup
                    in: path
                    description: clé du regroupement
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer       
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    regroupement:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé du regroupement ou de la famille incorrecte"
        post:
            tags:
                - Regroupements
            summary: Modification des ruriques affectées au regroupement pour la famille.
            description: Modifie les rubriques affectées au regroupement de clé {cle_regroup} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', renseigner 'rubrique_libre' pour modifier la rubrique libre pour cette famille. Dans le cas des 'rubriques prédéfinies', renseigner 'rubriques' avec le tableau des clés des rubriques voulues.
            parameters:
                -   name: cle_regroup
                    in: path
                    description: clé du regroupement
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer    
                -   name: rubrique_libre
                    in: query
                    description: libellé de la rubrique libre. Dans le cas seulement d'une famille de rubriques libre.
                    required: true
                    schema:
                        type: string    
                -   name: rubriques
                    in: query
                    description: Tableau des clés des rubriques prédéfinies de la famille. Dans le cas seulement d'une famille de rubriques prédéfinies.
                    required: true
                    schema:
                        type: array    
                        items:
                            type: integer
                            example: 24
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    regroupement:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé du regroupement ou de la famille incorrecte"
                '500':
                    description: "'Modification impossible' ou 'Droits insufissants'"
    /etudiants/{cle_etu}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Etudiants
            summary: Rubriques affectées à l'étudiant pour la famille.
            description: Rubriques affectées à l'étudiant de clé {cle_etu} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', 'rubrique_libre' permet d'obtenir la rubrique libre de cette famille. Dans le cas des 'rubriques prédéfinies', 'rubriques' permet d'obtenir le tableau (clé et nom) de toutes les rubriques affectées.
            parameters:
                -   name: cle_etu
                    in: path
                    description: clé de l'étudiant
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer       
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    etudiant:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé de l'étudiant ou de la famille incorrecte"
        post:
            tags:
                - Etudiants
            summary: Modification des ruriques affectées à l'étudiant pour la famille.
            description: Modifie les rubriques affectées à l'étudiant de clé {cle_etu} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', renseigner 'rubrique_libre' pour modifier la rubrique libre pour cette famille. Dans le cas des 'rubriques prédéfinies', renseigner 'rubriques' avec le tableau des clés des rubriques voulues.
            parameters:
                -   name: cle_etu
                    in: path
                    description: clé de l'étudiant
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer    
                -   name: rubrique_libre
                    in: query
                    description: libellé de la rubrique libre. Dans le cas seulement d'une famille de rubriques libre.
                    required: true
                    schema:
                        type: string    
                -   name: rubriques
                    in: query
                    description: Tableau des clés des rubriques prédéfinies de la famille. Dans le cas seulement d'une famille de rubriques prédéfinies.
                    required: true
                    schema:
                        type: array    
                        items:
                            type: integer
                            example: 24
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    etudiant:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé de l'étudiant ou de la famille incorrecte"
                '500':
                    description: "'Modification impossible' ou 'Droits insufissants'"
    /salles/{cle_salle}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Salles
            summary: Rubriques affectées à la salle pour la famille.
            description: Rubriques affectées à la salle de clé {cle_salle} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', 'rubrique_libre' permet d'obtenir la rubrique libre de cette famille. Dans le cas des 'rubriques prédéfinies', 'rubriques' permet d'obtenir le tableau (clé et nom) de toutes les rubriques affectées.
            parameters:
                -   name: cle_salle
                    in: path
                    description: clé de la salle
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer       
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    salle:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé de la salle ou de la famille incorrecte"
        post:
            tags:
                - Salles
            summary: Modification des ruriques affectées à la salle pour la famille.
            description: Modifie les rubriques affectées à la salle de clé {cle_salle} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', renseigner 'rubrique_libre' pour modifier la rubrique libre pour cette famille. Dans le cas des 'rubriques prédéfinies', renseigner 'rubriques' avec le tableau des clés des rubriques voulues.
            parameters:
                -   name: cle_salle
                    in: path
                    description: clé de la salle
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer    
                -   name: rubrique_libre
                    in: query
                    description: libellé de la rubrique libre. Dans le cas seulement d'une famille de rubriques libre.
                    required: true
                    schema:
                        type: string    
                -   name: rubriques
                    in: query
                    description: Tableau des clés des rubriques prédéfinies de la famille. Dans le cas seulement d'une famille de rubriques prédéfinies.
                    required: true
                    schema:
                        type: array    
                        items:
                            type: integer
                            example: 24
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    salle:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé de la salle ou de la famille incorrecte"
                '500':
                    description: "'Modification impossible' ou 'Droits insufissants'"
    /cursus/{cle_cursus}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Cursus
            summary: Rubriques affectées au cursus pour la famille.
            description: Rubriques affectées au cursus de clé {cle_cursus} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', 'rubrique_libre' permet d'obtenir la rubrique libre de cette famille. Dans le cas des 'rubriques prédéfinies', 'rubriques' permet d'obtenir le tableau (clé et nom) de toutes les rubriques affectées.
            parameters:
                -   name: cle_cursus
                    in: path
                    description: clé du cursus
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer       
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    cursus:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé du cursus ou de la famille incorrecte"
        post:
            tags:
                - Cursus
            summary: Modification des ruriques affectées au cursus pour la famille.
            description: Modifie les rubriques affectées au cursus de clé {cle_cursus} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', renseigner 'rubrique_libre' pour modifier la rubrique libre pour cette famille. Dans le cas des 'rubriques prédéfinies', renseigner 'rubriques' avec le tableau des clés des rubriques voulues.
            parameters:
                -   name: cle_cursus
                    in: path
                    description: clé du cursus
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer    
                -   name: rubrique_libre
                    in: query
                    description: libellé de la rubrique libre. Dans le cas seulement d'une famille de rubriques libre.
                    required: true
                    schema:
                        type: string    
                -   name: rubriques
                    in: query
                    description: Tableau des clés des rubriques prédéfinies de la famille. Dans le cas seulement d'une famille de rubriques prédéfinies.
                    required: true
                    schema:
                        type: array    
                        items:
                            type: integer
                            example: 24
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    cursus:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé du cursus ou de la famille incorrecte"
                '500':
                    description: "'Modification impossible' ou 'Droits insufissants'"
    /modules/{cle_mod}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Modules
            summary: Rubriques affectées au module pour la famille.
            description: Rubriques affectées au module de clé {cle_mod} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', 'rubrique_libre' permet d'obtenir la rubrique libre de cette famille. Dans le cas des 'rubriques prédéfinies', 'rubriques' permet d'obtenir le tableau (clé et nom) de toutes les rubriques affectées.
            parameters:
                -   name: cle_mod
                    in: path
                    description: clé du module
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer       
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    module:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé du module ou de la famille incorrecte"
        post:
            tags:
                - Modules
            summary: Modification des ruriques affectées au module pour la famille.
            description: Modifie les rubriques affectées au module de clé {cle_mod} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', renseigner 'rubrique_libre' pour modifier la rubrique libre pour cette famille. Dans le cas des 'rubriques prédéfinies', renseigner 'rubriques' avec le tableau des clés des rubriques voulues.
            parameters:
                -   name: cle_mod
                    in: path
                    description: clé du module
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer    
                -   name: rubrique_libre
                    in: query
                    description: libellé de la rubrique libre. Dans le cas seulement d'une famille de rubriques libre.
                    required: true
                    schema:
                        type: string    
                -   name: rubriques
                    in: query
                    description: Tableau des clés des rubriques prédéfinies de la famille. Dans le cas seulement d'une famille de rubriques prédéfinies.
                    required: true
                    schema:
                        type: array    
                        items:
                            type: integer
                            example: 24
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    module:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé du module ou de la famille incorrecte"
                '500':
                    description: "'Modification impossible' ou 'Droits insufissants'"
    /cours/{cle_cours}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Cours
            summary: Rubriques affectées au cours pour la famille.
            description: Rubriques affectées au cours de clé {cle_cours} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', 'rubrique_libre' permet d'obtenir la rubrique libre de cette famille. Dans le cas des 'rubriques prédéfinies', 'rubriques' permet d'obtenir le tableau (clé et nom) de toutes les rubriques affectées.
            parameters:
                -   name: cle_cours
                    in: path
                    description: clé du cours
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer       
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    cours:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé du cours ou de la famille incorrecte"
        post:
            tags:
                - Cours
            summary: Modification des ruriques affectées au cours pour la famille.
            description: Modifie les rubriques affectées au cours de clé {cle_cours} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', renseigner 'rubrique_libre' pour modifier la rubrique libre pour cette famille. Dans le cas des 'rubriques prédéfinies', renseigner 'rubriques' avec le tableau des clés des rubriques voulues.
            parameters:
                -   name: cle_cours
                    in: path
                    description: clé du cours
                    required: true
                    schema:
                        type: integer       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer    
                -   name: rubrique_libre
                    in: query
                    description: libellé de la rubrique libre. Dans le cas seulement d'une famille de rubriques libre.
                    required: true
                    schema:
                        type: string    
                -   name: rubriques
                    in: query
                    description: Tableau des clés des rubriques prédéfinies de la famille. Dans le cas seulement d'une famille de rubriques prédéfinies.
                    required: true
                    schema:
                        type: array    
                        items:
                            type: integer
                            example: 24
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    cours:
                                        type: integer
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : clé du cours ou de la famille incorrecte"
                '500':
                    description: "'Modification impossible' ou 'Droits insufissants'"
    /types/{nom}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Types
            summary: Rubriques affectées au type de cours pour la famille.
            description: Rubriques affectées au type de cours de nom {nom} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', 'rubrique_libre' permet d'obtenir la rubrique libre de cette famille. Dans le cas des 'rubriques prédéfinies', 'rubriques' permet d'obtenir le tableau (clé et nom) de toutes les rubriques affectées.
            parameters:
                -   name: nom
                    in: path
                    description: nom du type de cours
                    required: true
                    schema:
                        type: string       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer       
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    type:
                                        type: string
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : nom du type de cours ou clé de la famille incorrecte"
        post:
            tags:
                - Types
            summary: Modification des ruriques affectées au type de cours pour la famille.
            description: Modifie les rubriques affectées au type de cours de nom {nom} pour la famille de clé {cle_fam}. Si le mode de la famille est 'Rubrique libre', renseigner 'rubrique_libre' pour modifier la rubrique libre pour cette famille. Dans le cas des 'rubriques prédéfinies', renseigner 'rubriques' avec le tableau des clés des rubriques voulues.
            parameters:
                -   name: nom
                    in: path
                    description: nom du type de cours
                    required: true
                    schema:
                        type: string       
                -   name: cle_fam
                    in: path
                    description: clé de la famille
                    required: true
                    schema:
                        type: integer    
                -   name: rubrique_libre
                    in: query
                    description: libellé de la rubrique libre. Dans le cas seulement d'une famille de rubriques libre.
                    required: true
                    schema:
                        type: string    
                -   name: rubriques
                    in: query
                    description: Tableau des clés des rubriques prédéfinies de la famille. Dans le cas seulement d'une famille de rubriques prédéfinies.
                    required: true
                    schema:
                        type: array    
                        items:
                            type: integer
                            example: 24
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                type: object
                                properties:
                                    type:
                                        type: string
                                        example: 388
                                    famille:
                                        type: integer
                                        example: 125
                                    mode:
                                        type: string
                                        example: "Rubriques prédéfinies"    
                                    rubrique_libre:
                                        type: string
                                        example: "Rubriques libre de cet élément"    
                                    rubriques:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                cle:
                                                    type: integer
                                                    example: 12
                                                nom:
                                                    type: string
                                                    example: "Rubrique1"
                '404':
                    description: "Paramètre invalide : nom du type de cours ou clé de la famille incorrecte"
                '500':
                    description: "'Modification impossible' ou 'Droits insufissants'"
    /motifs_annulation:
        get:
            tags:
                - MotifsAnnulation
            summary: Liste de tous les motifs d'annulation.
            description: Tableau contenant les json des motifs d'annulation de la base trié par libelle.
            parameters:
                - in: query
                  name: select
                  description: Choix des champs que l'on souhaite avoir dans le json de reponse. Si non renseigné, il y aura tous les champs possibles.
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: champ que l'on souhaite avoir dans le json de reponse
                  examples:
                    oneIds:
                      summary: Exemple avec une seule colonne souhaitée
                      value: [libelle]   # ?select=libelle
                    multipleIds:
                      summary: Exemple avec plusieurs colonnes souhaitées
                      value: [libelle, par_defaut, est_remunere]   # ?select=libelle,par_defaut,est_remunere
                - in: query
                  name: libelle
                  description: retourne seulement les motifs d'annulation ayant un de ces libellés
                  required: false
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneIds:
                      summary: Exemple avec un seul libellé souhaité
                      value: [Annulation]   # ?libelle=Annulation
                    multipleIds:
                      summary: Exemple avec plusieurs libellés souhaités
                      value: [Annulation, Annulation2]   # ?libelle=Annulation,Annulation2
                - in: query
                  name: par_defaut
                  description: retourne seulement les motifs d'annulation par défaut ou non
                  schema:
                    type: boolean
                  style: form
                  explode: false
                - in: query
                  name: est_remunere
                  description: retourne seulement les motifs d'annulation rémunérés ou non
                  schema:
                    type: boolean
                  style: form
                  explode: false
                - in: query
                  name: est_utilisable_par_enseignants
                  description: retourne seulement les motifs d'annulation utilisables par les enseignants ou non
                  schema:
                      type: boolean
                  style: form
                  explode: false
            responses:
              '200':    # status code
                description: Tableau des JSON des motifs d'annulation
                content:
                  application/json:
                    schema: 
                      type: array
                      items:
                        $ref: '#/components/schemas/Motifs_annulation'


    /motifs_annulation/{libelle}:
        get:
            tags:
                - MotifsAnnulation
            summary: Json du motif d'annulation de libellé {libelle}.
            description: Utiliser SELECT pour obtenir seulement certain champs du JSON.
            parameters:
                -   name: libelle
                    in: path
                    description: 'libellé du motif d''annulation'
                    required: true
                    schema:
                        type: string            
            responses:
                '200':    # status code
                    description: OK
                    content:  # Response body
                        application/json:
                            schema: 
                                $ref: '#/components/schemas/Motifs_annulation'
                '404':
                    description: "Paramètre invalide"
        post:
            tags:
                - MotifsAnnulation
            summary: Mise à jour partielle du motif d'annulation de libellé {libelle}.
            description: Modifie les champs du motif d'annulation de libellé {libelle} avec ceux passés dans le JSON au niveau du BODY.
            parameters:
                -   name: libelle
                    in: path
                    description: 'libellé du motif d''annulation que l''on veut mettre à jour'
                    required: true
                    schema:
                        type: string            
            requestBody:
                description: JSON contenant les champs et valeurs que l'on veut modifier. Ne mettre dans le JSON que les champs que l'on souhaite modifier.
                required: true
                content:
                    application/json:
                        schema: 
                            $ref: '#/components/schemas/Motifs_annulation'
            responses:
              '200':    # status code
                description: succès - JSON du motif d'annulation modifié
                content:
                  application/json:
                    schema: 
                        $ref: '#/components/schemas/Motifs_annulation'
              '400':
                description: "Paramètres non valide"
              '404':
                description: "Paramètre invalide : motif d'annulation inexistant"
              '500':
                description: "Modification d'au moins un des champs impossible"         
        delete:
            tags:
                - MotifsAnnulation
            summary: Suppression du motif d'annulation de libellé {libelle}.
            description: Permet de supprimer définitivement le motif d'annulation de libellé {libelle} de la base.
            parameters:
                -   name: libelle
                    in: path
                    description: libellé du motif d'annulation à supprimer
                    required: true
                    schema:
                        type: string
            responses:
                '204':    # status code
                    description: "Deleted : Supression reussie"
                '404':    # status code
                    description: "Not found : Le libellé passé n'existe pas"

components:
  securitySchemes:
    basicAuth:     # <-- Basic authentification
      type: http
      scheme: basic
      
  schemas:
    Baccalaureats:            # Object definition
      type: object
      properties:
        nom:
          type: string
          example: "SCIENTIFIQUE"
        code: 
          type: string
          example: "S"    
        type: 
          type: string
          example: "Bac général"    
    Baccalaureat_specialites: # Object definition
      type: object
      properties:
        nom:
          type: string
          example: "MATHEMATIQUES"
        code: 
          type: string
          example: "MATHS"    
    Cours:                    # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 388
        parente:
          type: string
          example: "CoursSimple"    
        cours_fils:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        cours_pere:
          type: integer
          example: 11    
        matiere:
          type: integer
          example: 12
        type:
          type: string
          example: "TP"    
        duree:
          type: number
          example: 0.416666666666667
        statut_place:
          type: string
          example: "fixe"    
        mobilite_seances:
          type: string
          example: "mobile"    
        est_non_place:
          type: boolean
          example: false    
        place:
          type: number
          example: 1.5    
        domaine:
          type: array
          items:
            type: integer
          example: [10,12,14,15]
        domaine_potentiel:
          type: array
          items:
            type: integer
          example: [10,12,14,15]
        memo:
          type: string
          example: "petit memo"    
        reference:
          type: string
          example: "Ref. HP 000001"    
        uid_identifiant:
          type: string
          example: "uididentducours388"    
        ponderation_avant_apport:
          type: integer
          example: 1
        ponderation_apres_apport:
          type: integer
          example: 1
        est_co_enseignement:
          type: boolean
          example: false
        verrouillage:
          type: string
          example: "Déverrouillé"
        nombre_seance:
          type: integer
          example: 15
        proprietaire:
          type: integer
          example: 1
        enseignants:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        promotions:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        tdoptions:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        etudiants:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        regroupements:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        salles:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        modules_cursus_associes:
          type: array
          items:
            type: object
            properties:
                cle_module:
                    type: integer
                cle_cursus: 
                    type: integer
          example: [{"cle_module": 1,"cle_cursus": 1}]
        utilisateurs_autorises_acces:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        profils_autorises_acces:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        derniere_modification:
          type: string
          example: "Modification du premier jour de la base"
        date_derniere_modification:
          type: string
          example: "2023-09-11T10:37"
    CoursAnnules:             # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 388
        place:
          type: number
          example: 1.5    
        duree:
          type: number
          example: 0.416666666666667
        domaine:
          type: array
          items:
            type: integer
          example: [10,12,14,15]
        type:
          type: string
          example: "TP"    
        ponderation_avant_apport:
          type: integer
          example: 1
        ponderation_apres_apport:
          type: integer
          example: 1
        matiere:
          type: integer
          example: 12
        promotions:
          type: array
          items:
            type: object
            properties:
                cle:
                  type: integer
                domaine: 
                  type: array
                  items:
                    type: integer
          example: [{"cle": 1,"domaine": [10,12,14,15]}]
        tdoptions:
          type: array
          items:
            type: object
            properties:
                cle:
                  type: integer
                domaine: 
                  type: array
                  items:
                    type: integer
          example: [{"cle": 1,"domaine": [10,12,14,15]}]
        regroupements:
          type: array
          items:
            type: object
            properties:
                cle:
                  type: integer
                domaine: 
                  type: array
                  items:
                    type: integer
          example: [{"cle": 1,"domaine": [10,12,14,15]}]
        enseignants:
          type: array
          items:
            type: object
            properties:
                cle:
                  type: integer
                domaine: 
                  type: array
                  items:
                    type: integer
          example: [{"cle": 1,"domaine": [10,12,14,15]}]
        salles:
          type: array
          items:
            type: object
            properties:
                cle:
                  type: integer
                domaine: 
                  type: array
                  items:
                    type: integer
          example: [{"cle": 1,"domaine": [10,12,14,15]}]
        motif_annulation:
          type: string
          example: "Annulation"    
        commentaire:
          type: string
          example: "petit commentaire"    
        uid_identifiant:
          type: string
          example: "uididentducours388"    
        reference:
          type: string
          example: "Ref. HP 000001"    
        memo:
          type: string
          example: "petit memo"    
        date_heure_annulation:
          type: string
          example: "2023-09-11T10:37"
        modifiant:
          type: integer
          example: 1
    Cursus:                   # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "GM1 - S1"
        code: 
          type: string
          example: "11"
        duree:
          type: number
          example: 0.416666666666667
        proprietaire:
          type: integer
          example: 10
        modules:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        promotions:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        matieres_obligatoires:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        matieres_au_choix:
          type: array
          items:
            $ref: '#/components/schemas/MatiereAuChoix'
        libelles_au_choix:
          type: array
          items:
            type: string
        Apport:
          type: array
          items:
            $ref: '#/components/schemas/Apport'
    Departements:             # Object definition
      type: object
      properties:
        nom:
          type: string
          example: "Ain"
        code: 
          type: string
          example: "001"
    Enseignants:              # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "Durant"
        prenom:
          type: string
          example: "Juliette"
        code: 
          type: string
          example: "AD"
        civilite:
          type: string
          example: "Mme"
        uid_identifiant:
          type: string
          example: "UID_Ident_Durand"
        cas_identifiant:
          type: string
          example: "cas_Ident_Durand"
        adfs_identifiant:
          type: string
          example: "adfs_Ident_Durand"
        saml_identifiant:
          type: string
          example: "saml_Ident_Durand"
        identifiant_connexion:
          type: string
          example: "connexion_Ident_Durand"
        nom_jeune_fille:
          type: string
          example: "Martin"
        date_naissance:
          type: string
          example: "2000-02-24"
        email1:
          type: string
          example: "Martin@email1.fr"
        email2:
          type: string
          example: "Martin@email2.fr"
        type_email_a_utiliser_par_personnels:
          type: string
          example: "email1"
        type_email_a_utiliser_par_enseignants:
          type: string
          example: "email2"
        type_email_a_utiliser_par_etudiants_parents:
          type: string
          example: "email2"
        type_email_a_utiliser_par_contacts_entreprise:
          type: string
          example: "Aucun"
        lieu_naissance:
          type: string
          example: "Marseille"
        numero_securite_sociale:
          type: string
          example: "2000213456789"
        cle_securite_sociale:
          type: string
          example: "12"
        mutuelle:
          type: string
          example: "MaMutuelle"
        commentaire:
          type: string
          example: "Commentaire libre"
        code_fiscal:
          type: string
          example: "154862"
        numero_tva:
          type: string
          example: "12584165a"
        site_internet:
          type: string
          example: "https://www.index-education.com"
        mhh:
          type: number
          example: 0
        mhj:
          type: number
          example: 0.416666666666667
        apport_annuel:
          type: number
          example: 5.416666666666667
        information_interne:
          type: string
          example: "information interne"
        adresse1:
          type: string
          example: "12 rue de la paix"
        adresse2:
          type: string
        adresse3:
          type: string
        adresse4:
          type: string
        code_postal:
          type: string
          example: "13000"
        ville:
          type: string
          example: "Marseille"
        pays:
          type: string
          example: "France"
        province:
          type: string
        numero_telephone_fixe:
          type: string
          example: "04040404"
        indicatif_telephone_fixe:
          type: string
          example: "04"
        numero_telephone_portable:
          type: string
          example: "06060606"
        indicatif_telephone_portable:
          type: string
          example: "06"
        autorisation_reception_sms:
          type: boolean
          example: true
        numero_telephone_bureau:
          type: string
          example: "01010101"
        indicatif_telephone_bureau:
          type: string
          example: "01"
        publication:
          type: boolean
          example: true
        proprietaire:
          type: integer
          example: 10
        autorisation_diffusion_photo:
          type: boolean
          example: true
        partage_ponderation:
          type: boolean
          example: false
        matieres:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        promotions:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        td_options:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        url_ical:
          type: string
          example: "Telechargements/ical/Edt_Martin.ics?version=2024.0.0.1&icalsecurise=24CEE16504BB2D17FD70B67A011D2C5B96540596C7BD07B638A178567BCD58E3F98E7A4441BFD412246468E475B6D44C&sw=1"
        mot_de_passe:  # Seulement en modification, pas de visualisation
          type: string
          example: "fdrehm:lcfjnfj"
    EtablissementOrigine:     # Object definition
      type: object
      properties:
        nom:
          type: string
          example: "Etablissement1"
        email: 
          type: string
          example: "Etablissement1@email.fr"
    Etudiants:                # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "Durand"
        prenom1: 
          type: string
          example: "Arthur"
        prenom2:
          type: string
          example: "Benoit"
        prenom3:
          type: string
          example: "Marc"
        prenom_usage:
          type: string
          example: "Arthy"
        date_naissance:
          type: string
          example: "2010-02-22"
        civilite:
          type: string
          example: "M"
        uid_identifiant:
          type: string
          example: "UID_Ident_Durand"
        cas_identifiant:
          type: string
          example: "CAS_Ident_Durand"
        adfs_identifiant:
          type: string
          example: "adfs_Ident_Durand"
        saml_identifiant:
          type: string
          example: "saml_Ident_Durand"
        identifiant_connexion:
          type: string
          example: "Connexion_Ident_Durand"
        mot_de_passe:
          type: string
          example: "kgsfrtd;lfhc:d"
        e_mail_personnel:
          type: string
          example: "durand@email1.fr"
        e_mail_institutionnel:
          type: string
          example: "durand@email2.fr"
        e_mail_a_utiliser:
          type: string
          example: "E-mail personnel"
        sexe:
          type: string
          example: "masculin"
        numero_ine:
          type: string
          example: "1235847A"
        numero_ordre:
          type: string
          example: "12345"
        nom_jeune_fille:
          type: string
          example: "Martin"
        lieu_naissance:
          type: string
          example: "Marseille"
        nationalite:
          type: string
          example: "Francaise"
        numero_securite_sociale:
          type: string
          example: "1100213123456"
        cle_securite_sociale:
          type: string
          example: "12"
        mutuelle:
          type: string
          example: "MaMutuelle"
        cotisation:
          type: string
          example: "non"
        motif_non_cotisation:
          type: string
          example: "raison de non cotisation"
        assurance_responsabilite_civile:
          type: string
          example: "MonAssurance"
        numero_contrat:
          type: string
          example: "123456789"
        information_interne:
          type: string
          example: "Information à usage interne"
        commentaire:
          type: string
          example: "commentaire"
        code_fiscal:
          type: string
          example: "123456"
        adresse1:
          type: string
          example: "12 rue de la paix"
        adresse2:
          type: string
          example: "12 rue de la paix"
        adresse3:
          type: string
          example: "12 rue de la paix"
        adresse4:
          type: string
          example: "12 rue de la paix"
        code_postal:
          type: string
          example: "13000"
        ville:
          type: string
          example: "Marseille"
        pays:
          type: string
          example: "France"
        province:
          type: string
          example: "Province"
        numero_telephone_fixe:
          type: string
          example: "04040404"
        indicatif_telephone_fixe:
          type: string
          example: "04"
        numero_telephone_portable:
          type: string
          example: "06060606"
        indicatif_telephone_portable:
          type: string
          example: "06"
        autorisation_reception_sms:
          type: boolean
          example: true
        redoublant:
          type: boolean
          example: false
        baccalaureat:
          type: string
          example: "S"
        baccalaureat_specialite1:
          type: string
          example: "MATHS"
        baccalaureat_specialite2:
          type: string
          example: "PHY_CHI"
        baccalaureat_departement_obtention:
          type: string
          example: "013"
        baccalaureat_annee_obtention:
          type: string
          example: "2022"
        niveau_dans_diplome:
          type: string
          example: "01"
        type_dernier_diplome:
          type: string
          example: "A"
        modalite_admission:
          type: string
          example: "modalite admission"
        etablissement_origine:
          type: integer
          example: 10
        date_inscription:
          type: string
          example: "2022-02-22"
        cursus_anterieur:
          type: string
          example: "Cursus anterieur"
        publication_sur_tous_les_espaces:
          type: boolean
          example: true
        parent1:
          type: integer
          example: 10
        lien_parente1:
          type: string
          example: "mere"
        parent2:
          type: integer
          example: 10
        lien_parente2:
          type: string
          example: "pere"
        autorisation_diffusion_photo:
          type: boolean
          example: true
        coefficient:
          type: integer
          example: 0
        proprietaire:
          type: integer
          example: 10
        url_ical:
          type: string
          example: "Telechargements/ical/Edt_Durand.ics?version=2024.0.0.1&icalsecurise=24CEE16504BB2D17FD70B67A011D2C5B96540596C7BD07B638A178567BCD58E3F98E7A4441BFD412246468E475B6D44C&sw=1"
    Familles:                 # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        libelle:
          type: string
          example: "Famille1"
        mode: 
          type: string
          example: "Rubriques prédéfinies"
        proprietaire:
          type: integer
          example: 10
        utilisee_pour:
          type: array
          items:
            type: string
          example: ["Matières", "Enseignants"]
        rubriques:
          type: array
          items:
            type: object
            properties:
                cle:
                    type: integer
                nom: 
                    type: string
          example:  [{"cle": 424,"nom": "Rubrique1"},{"cle": 426,"nom": "Rubrique2"}]
    Matieres:                 # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        libelle:
          type: string
          example: "Anglais"
        code: 
          type: string
          example: "LV1"
        couleur:
          type: string
          example: "#FFFF80"
        uid_identifiant:
          type: string
          example: "UID_Ident_LV1_Anglais"
        libelle_long:
          type: string
          example: "Voici_un_libelle_long_pour_LV1_anglais"
        libelle_international:
          type: string
          example: "English"
        mhh:
          type: number
          example: 0
        mhj:
          type: number
          example: 0.416666666666667
        coefficient:
          type: integer
          example: 0
        publication:
          type: string
          example: "Publié sur tous les Espaces"
        proprietaire:
          type: integer
          example: 10
        matieres_incompatibles:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        url_ical:
          type: string
          example: "Telechargements/ical/Edt_Anglais.ics?version=2024.0.0.1&icalsecurise=24CEE16504BB2D17FD70B67A011D2C5B96540596C7BD07B638A178567BCD58E3F98E7A4441BFD412246468E475B6D44C&sw=1"
    Modules:                  # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "Anglais"
        code: 
          type: string
          example: "LV1"
        duree:
          type: number
          example: 3.125
        proprietaire:
          type: integer
          example: 10
        cursus:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        matieres_obligatoires:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        matieres_au_choix:
          type: array
          items:
            $ref: '#/components/schemas/MatiereAuChoix'
        libelles_au_choix:
          type: array
          items:
            type: string
        Apport:
          type: array
          items:
            $ref: '#/components/schemas/Apport'
    Motifs_annulation:        # Object definition
      type: object
      properties:
        libelle:
          type: string
          example: "ANNULATION"
        par_defaut: 
          type: boolean
          example: "true"    
        est_remunere: 
          type: boolean
          example: "false"    
        est_utilisable_par_enseignants: 
          type: boolean
          example: "true"    
    Parents:                  # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "DUPOND"
        prenom:
          type: string
          example: "Martine"
        civilite: 
          type: string
          example: "Mme"
        nom_naissance:
          type: string
          example: "DUPONT"
        email:
          type: string
          example: "MDUPONT@mail.fr"
        destinataire_courriers_absences:
          type: boolean
          example: true
        uid_identifiant:
          type: string
          example: "UID_Ident_DUPOND"
        cas_identifiant:
          type: string
          example: "CAS_Ident_DUPOND"
        adfs_identifiant:
          type: string
          example: "adfs_Ident_DUPOND"
        saml_identifiant:
          type: string
          example: "saml_Ident_DUPOND"
        commentaire:
          type: string
          example: "Permet d'inserer un commentaire"
        profession:
          type: string
          example: "enseignante"
        situation_professionnelle:
          type: string
          example: "en activite"
        adresse1:
          type: string
          example: "12 rue de la paix"
        adresse2:
          type: string
          example: "12 rue de la paix"
        adresse3:
          type: string
          example: "12 rue de la paix"
        adresse4:
          type: string
          example: "12 rue de la paix"
        code_postal:
          type: string
          example: "13000"
        ville:
          type: string
          example: "Marseille"
        pays:
          type: string
          example: "France"
        province:
          type: string
          example: "Province"
        numero_telephone_fixe:
          type: string
          example: "04040404"
        indicatif_telephone_fixe:
          type: string
          example: "04"
        numero_telephone_portable:
          type: string
          example: "06060606"
        indicatif_telephone_portable:
          type: string
          example: "06"
        autorisation_reception_sms:
          type: boolean
          example: true
        numero_telephone_bureau:
          type: string
          example: "01010101"
        indicatif_telephone_bureau:
          type: string
          example: "01"
        identifiant_connexion:
          type: string
          example: "Id_connexion_DUPOND"
        mot_de_passe:
          type: string
          example: "hcfgh,skucf!a"
        etudiants:          
          type: array
          items:
            type: integer
          example: [10,12,14,48]
    Partitions:               # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "TD"
        promotion:
          type: integer
          example: 12
        td:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
    Ponderations:             # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 11
        numerateur:
          type: integer
          example: 3
        denominateur: 
          type: integer
          example: 2
    Promotions:               # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "1GM1"
        code: 
          type: string
          example: "GM1"
        couleur:
          type: string
          example: "#FFFF80"
        uid_identifiant:
          type: string
          example: "UID_Ident_1GM1"
        libelle_long:
          type: string
          example: "Voici_un_libelle_long_pour_1GM1"
        email:
          type: string
          example: "1gm1@mail.fr"
        coordinateur_pedagogique:
          type: integer
          example: 10
        effectif_saisi:
          type: integer
          example: 30
        mhh:
          type: number
          example: 0
        mhj:
          type: number
          example: 0.416666666666667
        gestion_automatique_des_liens:
          type: boolean
          example: true
        publication_sur_tous_les_espaces:
          type: boolean
          example: true
        calendrier:
          type: string
          example: "Calendrier1"
        proprietaire:
          type: integer
          example: 10
        url_ical:
          type: string
          example: "Telechargements/ical/Edt_Anglais.ics?version=2024.0.0.1&icalsecurise=24CEE16504BB2D17FD70B67A011D2C5B96540596C7BD07B638A178567BCD58E3F98E7A4441BFD412246468E475B6D44C&sw=1"
    Regroupements:            # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "GM1-2"
        code: 
          type: string
          example: "1-2"
        couleur:
          type: string
          example: "#FFFF80"
        uid_identifiant:
          type: string
          example: "UID_Ident_GM1-2"
        effectif_saisi:
          type: integer
          example: 60
        td_options:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        proprietaire:
          type: integer
          example: 10
    Rubriques:                # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "Rubrique1"
        famille:
          type: integer
          example: 10
    Salles:                   # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "Salle 001"
        code: 
          type: string
          example: "001"
        libelle_long:
          type: string
          example: "Voici_un_libelle_long_pour_Salle_001"
        numero_telephone_fixe:
          type: string
          example: "04040404"
        indicatif_telephone_fixe:
          type: string
          example: "04"
        uid_identifiant:
          type: string
          example: "UID_Ident_001"
        capacite:
          type: integer
          example: 50
        nombre_salles_max:
          type: integer
          example: 10
        proprietaire:
          type: integer
          example: 10
        publication:
          type: string
          example: "Publié sur tous les Espaces"
        site:
          type: string
          example: "principal"
        descriptif:
          type: string
          example: "Descriptif de la salle"
        descriptif_publie:
          type: boolean
          example: true
        url_ical:
          type: string
          example: "Telechargements/ical/Edt_Salle_001.ics?version=2024.0.0.1&icalsecurise=24CEE16504BB2D17FD70B67A011D2C5B96540596C7BD07B638A178567BCD58E3F98E7A4441BFD412246468E475B6D44C&sw=1"
        est_dans_groupe_de_salle:
          type: integer
          example: 10
          # attention: "seulement pour les salles simples"
        salles_de_ce_groupe_de_salle:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
          # attention: "seulement pour les groupes de salles"
    Semaines:                 # Object definition
      type: object
      properties:
        numero_semaine:
          type: integer
          example: 1
        numero_calendaire:
          type: integer
          example: 36
        date: 
          type: string
          example: "2023-09-04"
    Sites:                    # Object definition
      type: object
      properties:
        nom:
          type: string
          example: "Principal"
        couleur: 
          type: string
          example: "#21BBEF"    
    TDOptions:                # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "TD1"
        code: 
          type: string
          example: "1"
        couleur:
          type: string
          example: "#FFFF80"
        genre: 
          type: string
          example: "TD"
        uid_identifiant:
          type: string
          example: "UID_Ident_TD1"
        effectif_saisi:
          type: integer
          example: 10
        mhh:
          type: number
          example: 0
        mhj:
          type: number
          example: 0.416666666666667
        libelle_long:
          type: string
          example: "Voici_un_libelle_long_pour_TD1"
        email:
          type: string
          example: "TD1@mail.fr"
        proprietaire:
          type: integer
          example: 10
          #$ref: '#/components/schemas/Proprietaire'
        publication_sur_tous_les_espaces:
          type: boolean
          example: true
        calendrier:
          type: string
          example: "calendrier1"
        promotion:
          type: integer
          example: 10
        partition:
          type: integer
          example: 9
        regroupement:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        url_ical:
          type: string
          example: "Telechargements/ical/Edt_TD1.ics?version=2024.0.0.1&icalsecurise=24CEE16504BB2D17FD70B67A011D2C5B96540596C7BD07B638A178567BCD58E3F98E7A4441BFD412246468E475B6D44C&sw=1"
    TypeDernierDiplome:       # Object definition
      type: object
      properties:
        nom:
          type: string
          example: "BTS"
        code: 
          type: string
          example: "B"
    Types:                    # Object definition
      type: object
      properties:
        nom:
          type: string
          example: "Cours"
        couleur: 
          type: string
          example: "#21BBEF"    
        mode_appel: 
          type: string
          example: "QR Code fixe"    
    Apport:                   # Object definition
      type: object
      properties:
        cle_matiere:
          type: integer
          example: 11
        type:
          type: string
          example: "EXAM"
        duree_totale:
          type: number
          example: 0.5
        duree_seance:
          type: number          
          example: 0.041666666666666664
    Cout:                     # Object definition
      type: object
      properties:
        domaine:
          type: array
          items:
              type: integer
        date_debut:
          type: string
          example: "2024_12_06"
        date_fin:
          type: string
          example: "2024_12_26"
        avec_jours_feries: 
          type: boolean
          example: true
        avec_cours_non_places: 
          type: boolean
          example: true
        cout: 
          type: number
    Couts:                    # Object definition
      type: object
      properties:
        domaine:
          type: array
          items:
              type: integer
        date_debut:
          type: string
          example: "2024_12_06"
        date_fin:
          type: string
          example: "2024_12_26"
        avec_jours_feries: 
          type: boolean
          example: true
        avec_cours_non_places: 
          type: boolean
          example: true
        cout: 
          type: array
          items:
            type: object
            properties:
                cle:
                    type: integer
                cout: 
                    type: number
    DureeCours:               # Object definition
      type: object
      properties:
        domaine:
          type: array
          items:
              type: integer
        avec_jours_feries: 
          type: boolean
          example: true
        avec_cours_non_places: 
          type: boolean
          example: true
        duree_cours: 
          type: number
    DureesCours:              # Object definition
      type: object
      properties:
        domaine:
          type: array
          items:
              type: integer
        avec_jours_feries: 
          type: boolean
          example: true
        avec_cours_non_places: 
          type: boolean
          example: true
        duree_cours: 
          type: array
          items:
            type: object
            properties:
                cle:
                    type: integer
                duree: 
                    type: number
    DureeDisponible:          # Object definition
      type: object
      properties:
        domaine:
          type: array
          items:
              type: integer
        avec_jours_feries: 
          type: boolean
          example: true
        duree_diponible: 
          type: number
    DureesDisponible:         # Object definition
      type: object
      properties:
        domaine:
          type: array
          items:
              type: integer
        avec_jours_feries: 
          type: boolean
          example: true
        duree_diponible: 
          type: array
          items:
            type: object
            properties:
                cle:
                    type: integer
                duree: 
                    type: number
    Icals:                    # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        domaine:
          type: string
          example: true
        matiere_code: 
          type: boolean
          # defaut: false
        matiere_libelle:
          type: boolean
          # defaut: true
        matiere_libelle_long:
          type: boolean
          # defaut: false
        enseignant_code:
          type: boolean
          # defaut: false
        enseignant_civilite:
          type: boolean
          # defaut: true
        enseignant_nom:
          type: boolean
          # defaut: true
        ennseignant_nom_majuscule:
          type: boolean
          # defaut: false
        enseignant_prenom:
          type: boolean
          # defaut: true
        enseignant_prenom_initale:
          type: boolean
          # defaut: false
        regroupement_code:
          type: boolean
          # defaut: false
        regroupement_nom:
          type: boolean
          # defaut: true
        promotion_code:
          type: boolean
          # defaut: false
        promotion_nom:
          type: boolean
          # defaut: true
        promotion_libelle_long:
          type: boolean
          # defaut: false
        td_code:
          type: boolean
          # defaut: false
        td_nom:
          type: boolean
          # defaut: true
        td_libelle_long:
          type: boolean
          # defaut: false
        option_code:
          type: boolean
          # defaut: false
        option_nom:
          type: boolean
          # defaut: true
        option_libelle_long:
          type: boolean
          # defaut: false
        salle_code:
          type: boolean
          # defaut: false
        salle_nom:
          type: boolean
          # defaut: true
        salle_libelle_long:
          type: boolean
          # defaut: false
        site_Tous:
          type: boolean
          # defaut: true
        site_sauf_defaut:
          type: boolean
          # defaut: false
        type:
          type: boolean
          # defaut: true
        ponderation:
          type: boolean
          # defaut: true
        memo:
          type: boolean
          # defaut: true
        memo_premiere_ligne:
          type: boolean
          # defaut: true
        effectif:
          type: boolean
          # defaut: true
    MatiereAuChoix:           # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 11
        libelle:
          type: string
          example: "Options"
    Photos:                   # Object definition
      type: object
      properties:
        format:
          type: string
          example: "jpeg"
        base64binary: 
          type: string

security:
  - basicAuth: []  # <-- use the same name here		  
