openapi: 3.0.0
info:
  title: Description of the PRONOTE Campus Rest API
  description: OpenAPI description of API Rest in PRONOTE Campus.
  version: 1.0.0
servers:
  - url: 'http://localhost/hpsw/api/v1/'
tags:
  - name: Absences (Absences)
    description: API relating to student absences
  - name: Alternances (Work-study programs)
    description: API relating to work-studies
  - name: Appariteurs (Porters)
    description: API relating to porters
  - name: Baccalaureats (Baccalaureats)
    description: API relating to baccalaureates
  - name: Baccalaureat_specialites (Baccalaureat_specializations)
    description: API relating to baccalaureate specializations
  - name: Calendriers_notation (Calendars_grading)
    description: API relating to grading calendars
  - name: Contacts (Contacts)
    description: API relating to contacts
  - name: Couleurs (Colors)
    description: API related to color conversion
  - name: Cours (Course)
    description: API relating to courses
  - name: Cours_annules (Canceled_courses)
    description: API relating to canceled courses
  - name: Couts_horaires_enseignants (Hourly_cost_students)
    description: API relating to teachers' hourly costs
  - name: Couts_horaires_salles (Hourly_cost_rooms)
    description: API relating to rooms' hourly costs
  - name: Cursus (Curriculum)
    description: API relating to curriculum
  - name: Decharges (Discharges)
    description: API relating to teacher discharges
  - name: Departements (Counties)
    description: API relating to departments/counties
  - name: Devoirs (Tests)
    description: API relating to tests
  - name: Dispenses (Exemptions)
    description: API relating to student exemptions
  - name: Durees (Durations)
    description: API related to the conversion of durations
  - name: Enseignants (Teachers)
    description: API relating to teachers
  - name: Entreprises (Companies)
    description: API relating to companies
  - name: Etablissement_origine (Institution_original)
    description: API relating to original institutions
  - name: Etudiants (Students)
    description: API relating to students
  - name: Familles (Families)
    description: API relating to families
  - name: Icals (Icals)
    description: API relating to icals
  - name: Matieres (Subjects)
    description: API relating to subjects
  - name: Modules (Modules)
    description: API relating to modules
  - name: Modules_notation (Modules_grading)
    description: API relating to grading modules
  - name: Motifs_absence_retard (Absence_tardiness_motive)
    description: API relating to absence and tardiness motives
  - name: Motifs_annulation (Motives_cancelation)
    description: API relating to cancelation motives
  - name: Motifs_decharge (Motives_discharge)
    description: API relating to discharge motives
  - name: Motifs_dispense (Exemption_motives)
    description: API relating to exemption motives
  - name: Notes (Grades)
    description: API relating to grades
  - name: Parametres_base (Parameters_base)
    description: API relating to base parameters
  - name: Parents (Parents)
    description: API relating to parents
  - name: Partitions (Partitions)
    description: API relating to partitions
  - name: Periodes_hors_calendrier (Outside_calendar_periods)
    description: API relating to outside the calendar grading periods
  - name: Periodes_notation (Periods_grading)
    description: API relating to grading periods
  - name: Ponderations (Weightings)
    description: API relating to course weightings
  - name: Profils_utilisation (User_profils)
    description: API relating to utilization profiles
  - name: Promotions (Classes)
    description: API relating to classes
  - name: Regroupements (Groupings)
    description: API relating to groupings
  - name: Retards (Tardiness)
    description: API relating to student tardiness
  - name: Rubriques (Rubrics)
    description: API relating to family rubrics
  - name: Salles (Rooms)
    description: API relating to rooms and room groups
  - name: Semaines (Weeks)
    description: API relating to weeks
  - name: Services_notation (Services_grading)
    description: API relating to grading services
  - name: Sites (Sites)
    description: API relating to sites
  - name: Stages (Internships)
    description: API relating to internships
  - name: TDOptions (TutorialOptions)
    description: API relating to tutorials/options
  - name: Type_dernier_diplome (Last_diploma_type)
    description: API relating to last diploma types
  - name: Types (Types)
    description: API relating to course types
  - name: Utilisateurs (Users)
    description: API relating to users
  - name: Version (Version)
    description: API relating to the application version
paths:
    #### Absences ####
    /absences:
        get:
            tags:
                - Absences (Absences)
            summary: List of all the absences between 2 dates/times
            description: Table containing the json of the absences in the base between two dates/times
            parameters:
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, libelle, code]   # ?select=cle,libelle,code
                - name: cle
                  in: query
                  description: returns only the absences having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: etudiant
                  in: query
                  description: returns only the absences having one of these student keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single student wanted
                      value: [10]   # ?etudiant=10
                    multipleIds:
                      summary: Example with several students wanted
                      value: [10, 12, 14]   # ?etudiant=10,12,14
                - name: date_debut
                  in: query
                  description: returns only the absences being after this beginning date/time. If this beginning date/time is not specified, we will take the one from the beginning of the base
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: string
                  example: "2024-08-06T09:00"   # ?date_debut=2024-08-06T09:00
                - name: date_fin
                  in: query
                  description: returns only the absences being before that ending date/time. If this ending date/time is not specified, we will take the one from the end of the base
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: string
                  example: "2024-08-06T19:00"   # ?date_fin=2024-08-06T19:00
            responses:
              '200':    # status code
                description: JSON table of the absences
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Absences'
    /absences/{cle}:
        get:
            tags:
                - Absences (Absences)
            summary: Json of the absence with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "absence key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Absences'
              '404':    # status code
                description: "Invalid parameter"
              '405':    # status code
                description: "Insufficient rights"
    /absences/{cle}/heures_manquees:
        get:
            tags:
                - Absences (Absences)
            summary: Missed hours for the absence in a domain
            description: Missing hours due to the absence wth the key {key} in a domain. If no parameters are specified, returns the missing hours for the entire domain of the absence.
            parameters:
                - name: cle
                  in: path
                  description: "absence key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_absence:
                          type: integer
                          example: 388
                        domaine:
                          type: array
                          items:
                            type: integer
                          example: [10,12,14,15]
                        tous_les_cours:
                          type: number
                          example: 1.16666666666667
                        cours_obligatoires:
                          type: number
                          example: 0.833333333333333
              '400':    # status code
                description: "Invalid parameter: Dates outside limits, incorrect format"
              '404':    # status code
                description: "Invalid parameter: incorrect absence key"
              '405':    # status code
                description: "Insufficient rights"
    /absences/ajouter:
        post:
            tags:
                - Absences (Absences)
            summary: Addition of an absence to the student between two dates/times
            description: Adds an absence to the student between a beginning date/time and an ending date/time, passed as parameters. If the motive is not specified, the default one is used.
            requestBody:
              description: JSON fields used the addition
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      etudiant:
                        type: integer
                        example: 388
                      date_heure_debut:
                        type: string
                        example: "2024-08-15T08:00"
                      date_heure_fin:
                        type: string
                        example: "2024-08-15T16:45"
                      est_justifie:
                        type: boolean
                        example: true
                      motif:
                        type: string
                        example: "RDV administratif"
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Absences'
              '404':    # status code
                description: "Invalid parameter: incorrect student key"
              '405':    # status code
                description: "Insufficient rights"
    /absences/enlever:
        post:
            tags:
                - Absences (Absences)
            summary: Remove an absence of the student between two dates/times
            description: Remove an absence of the student between a beginning date/time and an ending date/time, passed as a parameter.
            requestBody:
              description: JSON fields used to indicate the part of the absence to be removed
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      etudiant:
                        type: integer
                        example: 388
                      date_heure_debut:
                        type: string
                        example: "2024-08-15T08:00"
                      date_heure_fin:
                        type: string
                        example: "2024-08-15T16:45"
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Invalid parameter: incorrect student key"
              '405':    # status code
                description: "Insufficient rights"
    #### Retards ####
    /retards:
        get:
            tags:
                - Retards (Tardiness)
            summary: List of all the tardiness between two dates/times
            description: Table containing the json of the tardiness in the base between two dates/times
            parameters:
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, libelle, code]   # ?select=cle,libelle,code
                - name: cle
                  in: query
                  description: returns only the tardiness having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: etudiant
                  in: query
                  description: returns only the tardiness having one of these student keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single student wanted
                      value: [10]   # ?etudiant=10
                    multipleIds:
                      summary: Example with several students wanted
                      value: [10, 12, 14]   # ?etudiant=10,12,14
                - name: date_debut
                  in: query
                  description: returns only the tardiness being after this beginning date/time If this beginning date/time is not specified, we will take the one from the beginning of the base
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: string
                  example: "2024-08-06T09:00"   # ?date_debut=2024-08-06T09:00
                - name: date_fin
                  in: query
                  description: returns only the tardiness being before this ending date/time If this ending date/time is not specified, we will take the one from the end of the base
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: string
                  example: "2024-08-06T19:00"   # ?date_fin=2024-08-06T19:00
            responses:
              '200':    # status code
                description: JSON table of the tardiness
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Retards'
        post:
            tags:
                - Retards (Tardiness)
            summary: Creation of a new tardiness
            description: Creates a new tardiness in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      etudiant:
                        type: integer
                        example: 12
                      date_heure:
                        type: string
                        example: "2024-08-16T09:00"
                      duree:
                        type: number
                        example: 0.0104166666666667
                      est_justifie:
                        type: boolean
                        example: true
                      motif:
                        type: string
                        example: "Transportation problem"
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Retards'
              '400':    # status code
                description: "Invalid parameters: incorrect student key, date or duration compulsory..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /retards/{cle}:
        get:
            tags:
                - Retards (Tardiness)
            summary: Json of the tardiness with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "tardiness key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Retards'
              '404':    # status code
                description: "Invalid parameter"
              '405':    # status code
                description: "Insufficient rights"
        delete:
            tags:
                - Retards (Tardiness)
            summary: Deletion of a tardiness
            description: Permanently deletes the tardiness with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /retards/supprimer:
        post:
            tags:
                - Retards (Tardiness)
            summary: Deletion of several tardiness
            description: Delete the tardiness whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the tardiness to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    #### Dispenses ####
    /dispenses:
        get:
            tags:
                - Dispenses (Exemptions)
            summary: List of all exemptions
            description: Table containing the json of the exemptions in the base
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - etudiant
                      - matiere
                      - motif
                      - date_debut
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, etudiant, matiere]   # ?select=cle,etudiant,matiere
                - name: cle
                  in: query
                  description: returns only the exemptions having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: etudiant
                  in: query
                  description: returns only the exemptions having one of these student keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single student wanted
                      value: [10]   # ?etudiant=10
                    multipleIds:
                      summary: Example with several students wanted
                      value: [10, 12, 14]   # ?etudiant=10,12,14
                - name: matiere
                  in: query
                  description: returns only the exemptions having one of these subject keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single subject wanted
                      value: [10]   # ?matiere=10
                    multipleIds:
                      summary: Example with several subjects wanted
                      value: [10, 12, 14]   # ?matiere=10,12,14
                - name: date_debut
                  in: query
                  description: returns only the exemptions after this beginning date. If this beginning date is not specified, we will take the one from the beginning of the base
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date_debut=2024-08-06
                - name: date_fin
                  in: query
                  description: returns only the exemptions after this ending date If this ending date is not specified, we will take the one from the end of the base
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date_fin=2024-08-06
            responses:
              '200':    # status code
                description: JSON table of the exemptions
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Dispenses'
        post:
            tags:
                - Dispenses (Exemptions)
            summary: Creation of a new exemption
            description: Creates a new exemption in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Dispenses'
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Dispenses'
              '400':    # status code
                description: "Invalid parameters: incorrect student key, date or subject compulsory..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /dispenses/{cle}:
        get:
            tags:
                - Dispenses (Exemptions)
            summary: Json of the exemption with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "exemption key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Dispenses'
              '400':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Dispenses (Exemptions)
            summary: Partial update of an exemption
            description: Modifies the fields of the exemption with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "exemption key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Dispenses'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Dispenses'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Dispenses (Exemptions)
            summary: Deletion of an exemption
            description: Permanently deletes the exemption with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /dispenses/supprimer:
        post:
            tags:
                - Dispenses (Exemptions)
            summary: Deletion of several exemptions
            description: Delete the exemptions whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the exemptions to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    #### Decharges ####
    /decharges:
        get:
            tags:
                - Decharges (Discharges)
            summary: List of all the discharges
            description: Table containing the json of the discharges in the base
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - enseignant
                      - promotion
                      - motif
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, etudiant, matiere]   # ?select=cle,etudiant,matiere
                - name: cle
                  in: query
                  description: returns only the discharges having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: enseignant
                  in: query
                  description: returns only the discharges having one of these teacher keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single teacher wanted
                      value: [10]   # ?enseignant=10
                    multipleIds:
                      summary: Example with several teachers wanted
                      value: [10, 12, 14]   # ?enseignant=10,12,14
                - name: promotion
                  in: query
                  description: returns only the discharges having one of these class keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single class wanted
                      value: [10]   # ?promotion=10
                    multipleIds:
                      summary: Example with several classes wanted
                      value: [10, 12, 14]   # ?promotion=10,12,14
                - name: motif
                  in: query
                  description: returns only the discharges having one of these motives
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: string
                  example: "Motif de la decharge"   # ?motif=Motif de la decharge
            responses:
              '200':    # status code
                description: JSON table of the discharges
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Decharges'
        post:
            tags:
                - Decharges (Discharges)
            summary: Creation of a new discharge
            description: Creates a new discharge in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Decharges'
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Decharges'
              '400':    # status code
                description: "Invalid parameters: incorrect teacher or class key..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /decharges/{cle}:
        get:
            tags:
                - Decharges (Discharges)
            summary: Json of the discharge with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "discharge key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Decharges'
              '400':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Decharges (Discharges)
            summary: Partial update of a discharge
            description: Modifies the fields of the discharge with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "discharge key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Decharges'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Decharges'
              '400':    # status code
                description: "Invalid parameters: teacher compulsory, size problem..."
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Decharges (Discharges)
            summary: Deletion of a discharge
            description: Permanently deletes the discharge with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /decharges/supprimer:
        post:
            tags:
                - Decharges (Discharges)
            summary: Deletion of several discharges
            description: Delete the discharges whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the discharges to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    #### Appariteurs ####
    /appariteurs:
        get:
            tags:
                - Appariteurs (Porters)
            summary: List of all the porters
            description: Table containing the json of the porters in the base, sorted by the surname then first name by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - nom
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom, prenom]   # ?select=cle,nom,prenom
                - name: cle
                  in: query
                  description: returns only the porters having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: returns only the porters having one of these names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [Dupond]   # ?nom=Dupond
                    multipleIds:
                      summary: Example with several names wanted
                      value: [Dupond, Dupont, Martin]   # ?nom=Dupond,Dupont,Martin
                - name: prenom
                  in: query
                  description: returns only the porters having one of these first names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single first name wanted
                      value: [Denis]   # ?prenom=Denis
                    multipleIds:
                      summary: Example with several first names wanted
                      value: [Denis, Dominique, Claude]   # ?prenom=Denis,Dominique,Claude
                - name: cas_identifiant
                  in: query
                  description: returns only the porters having one of these cas_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single cas_identifier wanted
                      value: [ident1]   # ?cas_identifiant=ident1
                    multipleIds:
                      summary: Example with several cas_identifiers wanted
                      value: [ident1, ident2, ident3]   # ?cas_identifiant=ident1,ident2,ident3
                - name: adfs_identifiant
                  in: query
                  description: returns only the porters having one of these adfs_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single adfs_identifier wanted
                      value: [ident1]   # ?adfs_identifiant=ident1
                    multipleIds:
                      summary: Example with several adfs_identifiers wanted
                      value: [ident1, ident2, ident3]   # ?adfs_identifiant=ident1,ident2,ident3
                - name: saml_identifiant
                  in: query
                  description: returns only the porters having one of these saml_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single saml_identifier wanted
                      value: [ident1]   # ?saml_identifiant=ident1
                    multipleIds:
                      summary: Example with several saml_identifiers wanted
                      value: [ident1, ident2, ident3]   # ?saml_identifiant=ident1,ident2,ident3
            responses:
              '200':    # status code
                description: JSON table of the porters
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Appariteurs'
        post:
            tags:
                - Appariteurs (Porters)
            summary: Creation of a new porter
            description: Creates a new porter in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      nom:
                        type: string
                        example: "Dupond"
                      prenom:
                        type: string
                        example: "Camille"
                      civilite:
                        type: string
                        example: "Mrs"
                      cas_identifiant:
                        type: string
                        example: "Identifiant__CAS"
                      adfs_identifiant:
                        type: string
                        example: "Identifier__ADFS"
                      saml_identifiant:
                        type: string
                        example: "Identifier__SAML"
                      identifiant_connexion:
                        type: string
                        example: "Identifier__connection"
                      email:
                        type: string
                        example: "firstname.surname@email.fr"
                      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"
                      acces_espace_appariteurs:
                        type: boolean
                        example: true
                      salles:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      mot_de_passe:
                        type: string
                        example: "fdrehm:lcfjnfj4"
                        description: Only for the modification, no visualization, must comply with the security policy
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Appariteurs'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /appariteurs/{cle}:
        get:
            tags:
                - Appariteurs (Porters)
            summary: Json of the porter with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "porter key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Appariteurs'
              '400':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Appariteurs (Porters)
            summary: Partial update of a porter
            description: Modifies the fields of the porter with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "porter key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      nom:
                        type: string
                        example: "Dupond"
                      prenom:
                        type: string
                        example: "Camille"
                      civilite:
                        type: string
                        example: "Mrs"
                      cas_identifiant:
                        type: string
                        example: "Identifiant__CAS"
                      adfs_identifiant:
                        type: string
                        example: "Identifier__ADFS"
                      saml_identifiant:
                        type: string
                        example: "Identifier__SAML"
                      identifiant_connexion:
                        type: string
                        example: "Identifier__connection"
                      email:
                        type: string
                        example: "firstname.surname@email.fr"
                      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"
                      acces_espace_appariteurs:
                        type: boolean
                        example: true
                      salles:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      mot_de_passe:
                        type: string
                        example: "fdrehm:lcfjnfj4"
                        description: Only for the modification, no visualization, must comply with the security policy
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Appariteurs'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Appariteurs (Porters)
            summary: Deletion of a porter
            description: Permanently deletes the porter with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /appariteurs/supprimer:
        post:
            tags:
                - Appariteurs (Porters)
            summary: Deletion of several porters
            description: Delete the porters whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the porters to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /appariteurs/{cle_app}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Appariteurs (Porters)
            summary: Rubrics allocated to the porter for the family
            description: Rubrics allocated to the porter with the key {cle_app} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', 'rubrique_libre' allows to obtain the available rubric of this family. In the case of ‘predefined rubrics', ‘rubrics' allows you to obtain the table (key and name) of all allocated rubrics.
            parameters:
                - name: cle_app
                  in: path
                  description: "porter key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        appariteur:
                          type: integer
                          example: 388
                        famille:
                          type: integer
                          example: 125
                        mode:
                          type: string
                          example: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
        post:
            tags:
                - Appariteurs (Porters)
            summary: Modification of the rubrics allocated to the porter for the family
            description: Modifies the rubrics allocated to the porter with the key {cle_app} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', specified 'rubrique_libre' to modify the available rubric for this family. In the case of ‘predefined rubrics', fill in ‘rubrics' with the table of keys of the wanted rubrics.
            parameters:
                - name: cle_app
                  in: path
                  description: "porter key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
                - name: rubrique_libre
                  in: query
                  description: designation of the available ruric. Only  in the case of a family of available rurics.
                  required: true
                  schema:
                    type: string
                - name: rubriques
                  in: query
                  description: Table of the predefined rubric keys of the family. Only in the case of a family with predefined rubrics.
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        appariteur:
                          type: integer
                          example: 388
                        famille:
                          type: integer
                          example: 125
                        mode:
                          type: string
                          example: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
              '500':    # status code
                description: "'Modification impossible' or 'Insufficient rights'"
    #### Contacts ####
    /contacts:
        get:
            tags:
                - Contacts (Contacts)
            summary: List of all the contacts
            description: Table containing the json of the contacts in the base, sorted by surname and then first name by default.
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - nom
                      - uid_identifiant
                      - proprietaire
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom, prenom]   # ?select=cle,nom,prenom
                - name: cle
                  in: query
                  description: returns only the contacts having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: returns only the contacts having one of these names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [contact1]   # ?nom=contact1
                    multipleIds:
                      summary: Example with several names wanted
                      value: [contact1, contact2, contact3]   # ?nom=contact1,contact2,contact3
                - name: prenom
                  in: query
                  description: returns only the contacts having one of these first names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single first name wanted
                      value: [prenomContact1]   # ?prenom=prenomContact1
                    multipleIds:
                      summary: Example with several first names wanted
                      value: [prenomContact1, prenomContact2, prenomContact3]   # ?prenom=prenomContact1,prenomContact2,prenomContact3
                - name: date_naissance
                  in: query
                  description: returns only the contacts having one of these dates of birth
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single date of birth wanted
                      value: [2000-12-21]   # ?date_naissance=2000-12-21
                    multipleIds:
                      summary: Example with several dates of birth wanted
                      value: [2000-12-21, 2001-12-21, 2002-12-21]   # ?date_naissance=2000-12-21,2001-12-21,2002-12-21
                - name: uid_identifiant
                  in: query
                  description: returns only the contacts having one of these uid_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single uid_identifier wanted
                      value: [conta1]   # ?uid_identifiant=conta1
                    multipleIds:
                      summary: Example with several uid_identifiers wanted
                      value: [conta1, conta2, conta3]   # ?uid_identifiant=conta1,conta2,conta3
                - name: cas_identifiant
                  in: query
                  description: returns only the contacts having one of these cas_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single cas_identifier wanted
                      value: [ident1]   # ?cas_identifiant=ident1
                    multipleIds:
                      summary: Example with several cas_identifiers wanted
                      value: [ident1, ident2, ident3]   # ?cas_identifiant=ident1,ident2,ident3
                - name: adfs_identifiant
                  in: query
                  description: returns only the contacts having one of these adfs_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single adfs_identifier wanted
                      value: [ident1]   # ?adfs_identifiant=ident1
                    multipleIds:
                      summary: Example with several adfs_identifiers wanted
                      value: [ident1, ident2, ident3]   # ?adfs_identifiant=ident1,ident2,ident3
                - name: saml_identifiant
                  in: query
                  description: returns only the contacts having one of these saml_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single saml_identifier wanted
                      value: [ident1]   # ?saml_identifiant=ident1
                    multipleIds:
                      summary: Example with several saml_identifiers wanted
                      value: [ident1, ident2, ident3]   # ?saml_identifiant=ident1,ident2,ident3
            responses:
              '200':    # status code
                description: JSON table of the contacts
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Contacts'
        post:
            tags:
                - Contacts (Contacts)
            summary: Creation of a a new contact
            description: Creates a new contact in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      nom:
                        type: string
                        example: "Dupond"
                      prenom:
                        type: string
                        example: "Camille"
                      civilite:
                        type: string
                        example: "Mrs"
                      uid_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      cas_identifiant:
                        type: string
                        example: "Identifiant__CAS"
                      adfs_identifiant:
                        type: string
                        example: "Identifier__ADFS"
                      saml_identifiant:
                        type: string
                        example: "Identifier__SAML"
                      identifiant_connexion:
                        type: string
                        example: "Identifier__connection"
                      date_naissance:
                        type: string
                        example: "2000-02-24"
                      lieu_naissance:
                        type: string
                        example: "Marseille"
                      code_fiscal:
                        type: string
                        example: "154862"
                      fonction:
                        type: string
                        example: "Function"
                      entreprises:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      email:
                        type: string
                        example: "firstname.surname@email.fr"
                      autorisation_reception_email:
                        type: boolean
                        example: true
                      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_fax:
                        type: string
                        example: "01010101"
                      indicatif_fax:
                        type: string
                        example: "01"
                      proprietaire:
                        type: integer
                        example: 10
                      mot_de_passe:
                        type: string
                        example: "fdrehm:lcfjnfj4"
                        description: Only for the modification, no visualization, must comply with the security policy
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Contacts'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /contacts/{cle}:
        get:
            tags:
                - Contacts (Contacts)
            summary: Json of the contact with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "contact key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Contacts'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Contacts (Contacts)
            summary: Partial update of a contact
            description: Modifies the fields of the contact with the key {cle} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "contact key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      nom:
                        type: string
                        example: "Dupond"
                      prenom:
                        type: string
                        example: "Camille"
                      civilite:
                        type: string
                        example: "Mrs"
                      uid_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      cas_identifiant:
                        type: string
                        example: "Identifiant__CAS"
                      adfs_identifiant:
                        type: string
                        example: "Identifier__ADFS"
                      saml_identifiant:
                        type: string
                        example: "Identifier__SAML"
                      identifiant_connexion:
                        type: string
                        example: "Identifier__connection"
                      date_naissance:
                        type: string
                        example: "2000-02-24"
                      lieu_naissance:
                        type: string
                        example: "Marseille"
                      code_fiscal:
                        type: string
                        example: "154862"
                      fonction:
                        type: string
                        example: "Function"
                      entreprises:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      email:
                        type: string
                        example: "firstname.surname@email.fr"
                      autorisation_reception_email:
                        type: boolean
                        example: true
                      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_fax:
                        type: string
                        example: "01010101"
                      indicatif_fax:
                        type: string
                        example: "01"
                      proprietaire:
                        type: integer
                        example: 10
                      mot_de_passe:
                        type: string
                        example: "fdrehm:lcfjnfj4"
                        description: Only for the modification, no visualization, must comply with the security policy
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Contacts'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent contact"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Contacts (Contacts)
            summary: Deletion of a contact
            description: Permanently deletes the contact with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /contacts/supprimer:
        post:
            tags:
                - Contacts (Contacts)
            summary: Deletion of several contacts
            description: Delete the contacts whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the contacts to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /contacts/{cle_cont}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Contacts (Contacts)
            summary: Rubrics allocated to the contact for the family
            description: Rubrics allocated to the contact with the key {cle_con} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', 'rubrique_libre' allows to obtain the available rubric of this family. In the case of ‘predefined rubrics', ‘rubrics' allows you to obtain the table (key and name) of all allocated rubrics.
            parameters:
                - name: cle_cont
                  in: path
                  description: "contact key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        contact:
                          type: integer
                          example: 388
                        famille:
                          type: integer
                          example: 125
                        mode:
                          type: string
                          example: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
        post:
            tags:
                - Contacts (Contacts)
            summary: Modification of the rubrics allocated to the contact for the family
            description: Modifies the rubrics allocated to the contact with the key {cle_cont} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', specified 'rubrique_libre' to modify the available rubric for this family. In the case of ‘predefined rubrics', fill in ‘rubrics' with the table of keys of the wanted rubrics.
            parameters:
                - name: cle_cont
                  in: path
                  description: "contact key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
                - name: rubrique_libre
                  in: query
                  description: designation of the available ruric. Only  in the case of a family of available rurics.
                  required: true
                  schema:
                    type: string
                - name: rubriques
                  in: query
                  description: Table of the predefined rubric keys of the family. Only in the case of a family with predefined rubrics.
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        contact:
                          type: integer
                          example: 388
                        famille:
                          type: integer
                          example: 125
                        mode:
                          type: string
                          example: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
              '500':    # status code
                description: "'Modification impossible' or 'Insufficient rights'"
    #### Stages ####
    /stages:
        get:
            tags:
                - Stages (Internships)
            summary: List of all the internships
            description: Table containing the json of the internships in the base, sorted by company by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - entreprise
                      - etudiant
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, entreprise, etudiant]   # ?select=cle,entreprise,etudiant
                - name: cle
                  in: query
                  description: returns only the internships having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: entreprise
                  in: query
                  description: returns only the internships having one of these companies
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single company wanted
                      value: [entreprise1]   # ?entreprise=entreprise1
                    multipleIds:
                      summary: Example with several companies wanted
                      value: [entreprise1, entreprise2, entreprise3]   # ?entreprise=entreprise1,entreprise2,entreprise3
                - name: etudiant
                  in: query
                  description: returns only the internships having one of these students
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single student wanted
                      value: [etudiant1]   # ?etudiant=etudiant1
                    multipleIds:
                      summary: Example with several students wanted
                      value: [etudiant1, etudiant2, etudiant3]   # ?etudiant=etudiant1,etudiant2,etudiant3
                - name: enseignant_tutueur
                  in: query
                  description: returns only the internships having one of these teacher tutors
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single tutor teacher wanted
                      value: [enseignant1]   # ?enseignant_tuteur=enseignant1
                    multipleIds:
                      summary: Example with several tutoring teachers wanted
                      value: [enseignant1, enseignant2, enseignant3]   # ?enseignant_tuteur=enseignant1,enseignant2,enseignant3
                - name: enseignant_responsable
                  in: query
                  description: returns only the internships having one of these referent teachers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single referential teacher wanted
                      value: [enseignant1]   # ?enseignant_responsable=enseignant1
                    multipleIds:
                      summary: Example with several teachers wanted
                      value: [enseignant1, enseignant2, enseignant3]   # ?enseignant_responsable=enseignant1,enseignant2,enseignant3
            responses:
              '200':    # status code
                description: JSON table of the internships
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Stages'
        post:
            tags:
                - Stages (Internships)
            summary: Creation of a new internship
            description: Creates a new internship in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      etudiant:
                        type: integer
                        example: 12
                      dates:
                        type: array
                        items:
                          type: object
                          properties:
                            du:
                              type: string
                              example: "2000-02-14"
                            au:
                              type: string
                              example: "2000-02-27"
                      formulaire_etudiant:
                        type: object
                        properties:
                          visibilite:
                            type: boolean
                            example: true
                          du:
                            type: string
                            example: "2000-02-14"
                          au:
                            type: string
                            example: "2000-02-27"
                      duree_saisie:
                        type: number
                        example: 10.0
                      duree_calculee:
                        type: number
                        example: 12.0
                      entreprise:
                        type: integer
                        example: 14
                      maitres_stage:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      sujet:
                        type: string
                        example: "internship topic"
                      enseignant_tuteur:
                        type: integer
                        example: 12
                      enseignant_responsable:
                        type: integer
                        example: 14
                      sujet_detaille:
                        type: string
                        example: "Topic a little more detailed"
                      commentaire:
                        type: string
                        example: "Here is a very useful comment"
                      objectifs:
                        type: string
                        example: "Here are the different objectives"
                      activites_prevues:
                        type: string
                        example: "Here are the planned activities"
                      competences_visees:
                        type: string
                        example: "Here are the targeted competencies"
                      modalites_concertation:
                        type: string
                        example: "Here are the modalities of consultation"
                      modalites_evaluation:
                        type: string
                        example: "Here are the evaluation modalities"
                      convention_signee:
                        type: boolean
                        example: true
                      attestation_fin_stage_recue:
                        type: boolean
                        example: true
                      remuneration:
                        type: number
                        example: 10.0
                      devise:
                        type: string
                        example: "€"
                      avantages:
                        type: array
                        items:
                          type: string
                        example: ["Restaurant vouchers","Transportation"]
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Stages'
              '400':    # status code
                description: "Invalid parameters: student compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /stages/{cle}:
        get:
            tags:
                - Stages (Internships)
            summary: Json of the internship with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "internship key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Stages'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Stages (Internships)
            summary: Partial update of a internship
            description: Modifies the fields of the internship with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "key for the internship you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      etudiant:
                        type: integer
                        example: 12
                      dates:
                        type: array
                        items:
                          type: object
                          properties:
                            du:
                              type: string
                              example: "2000-02-14"
                            au:
                              type: string
                              example: "2000-02-27"
                      formulaire_etudiant:
                        type: object
                        properties:
                          visibilite:
                            type: boolean
                            example: true
                          du:
                            type: string
                            example: "2000-02-14"
                          au:
                            type: string
                            example: "2000-02-27"
                      duree_saisie:
                        type: number
                        example: 10.0
                      duree_calculee:
                        type: number
                        example: 12.0
                      entreprise:
                        type: integer
                        example: 14
                      maitres_stage:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      sujet:
                        type: string
                        example: "internship topic"
                      enseignant_tuteur:
                        type: integer
                        example: 12
                      enseignant_responsable:
                        type: integer
                        example: 14
                      sujet_detaille:
                        type: string
                        example: "Topic a little more detailed"
                      commentaire:
                        type: string
                        example: "Here is a very useful comment"
                      objectifs:
                        type: string
                        example: "Here are the different objectives"
                      activites_prevues:
                        type: string
                        example: "Here are the planned activities"
                      competences_visees:
                        type: string
                        example: "Here are the targeted competencies"
                      modalites_concertation:
                        type: string
                        example: "Here are the modalities of consultation"
                      modalites_evaluation:
                        type: string
                        example: "Here are the evaluation modalities"
                      convention_signee:
                        type: boolean
                        example: true
                      attestation_fin_stage_recue:
                        type: boolean
                        example: true
                      remuneration:
                        type: number
                        example: 10.0
                      devise:
                        type: string
                        example: "€"
                      avantages:
                        type: array
                        items:
                          type: string
                        example: ["Restaurant vouchers","Transportation"]
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Stages'
              '400':    # status code
                description: "Invalid parameters: student compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent internship"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Stages (Internships)
            summary: Deletion of a internship
            description: Permanently deletes the internship with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /stages/supprimer:
        post:
            tags:
                - Stages (Internships)
            summary: Deletion of several internships
            description: Delete the internships whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the internships to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /stages/{cle_sta}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Stages (Internships)
            summary: Rubrics allocated to the internship for the family
            description: Rubrics allocated to the internship with the key {cle_sta} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', 'rubrique_libre' allows to obtain the available rubric of this family. In the case of ‘predefined rubrics', ‘rubrics' allows you to obtain the table (key and name) of all allocated rubrics.
            parameters:
                - name: cle_sta
                  in: path
                  description: "internship key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        stage:
                          type: integer
                          example: 388
                        famille:
                          type: integer
                          example: 125
                        mode:
                          type: string
                          example: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
        post:
            tags:
                - Stages (Internships)
            summary: Modification of the rubrics allocated to the internship for the family
            description: Modifies the rubrics allocated to the internship with the key {cle_sta} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', specified 'rubrique_libre' to modify the available rubric for this family. In the case of ‘predefined rubrics', fill in ‘rubrics' with the table of keys of the wanted rubrics.
            parameters:
                - name: cle_sta
                  in: path
                  description: "internship key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
                - name: rubrique_libre
                  in: query
                  description: designation of the available ruric. Only  in the case of a family of available rurics.
                  required: true
                  schema:
                    type: string
                - name: rubriques
                  in: query
                  description: Table of the predefined rubric keys of the family. Only in the case of a family with predefined rubrics.
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        stage:
                          type: integer
                          example: 388
                        famille:
                          type: integer
                          example: 125
                        mode:
                          type: string
                          example: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
              '500':    # status code
                description: "'Modification impossible' or 'Insufficient rights'"
    #### Alternances ####
    /alternances:
        get:
            tags:
                - Alternances (Work-study programs)
            summary: List of all the work-studies
            description: Table containing the json for the work-studies in the base, sorted by company by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - entreprise
                      - etudiant
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, entreprise, etudiant]   # ?select=cle,entreprise,etudiant
                - name: cle
                  in: query
                  description: returns only the work-studies having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: entreprise
                  in: query
                  description: returns only the work-studies having one of these companies
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single company wanted
                      value: [entreprise1]   # ?entreprise=entreprise1
                    multipleIds:
                      summary: Example with several companies wanted
                      value: [entreprise1, entreprise2, entreprise3]   # ?entreprise=entreprise1,entreprise2,entreprise3
                - name: etudiant
                  in: query
                  description: returns only the work-studies having one of these students
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single student wanted
                      value: [etudiant1]   # ?etudiant=etudiant1
                    multipleIds:
                      summary: Example with several students wanted
                      value: [etudiant1, etudiant2, etudiant3]   # ?etudiant=etudiant1,etudiant2,etudiant3
                - name: enseignant_tutueur
                  in: query
                  description: returns only the work-studies having one of these teacher tutors
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single tutor teacher wanted
                      value: [enseignant1]   # ?enseignant_tuteur=enseignant1
                    multipleIds:
                      summary: Example with several tutoring teachers wanted
                      value: [enseignant1, enseignant2, enseignant3]   # ?enseignant_tuteur=enseignant1,enseignant2,enseignant3
                - name: enseignant_responsable
                  in: query
                  description: returns only the work-studies having one of these referential teachers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single referential teacher wanted
                      value: [enseignant1]   # ?enseignant_responsable=enseignant1
                    multipleIds:
                      summary: Example with several teachers wanted
                      value: [enseignant1, enseignant2, enseignant3]   # ?enseignant_responsable=enseignant1,enseignant2,enseignant3
            responses:
              '200':    # status code
                description: JSON table of the work-studies
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Alternances'
        post:
            tags:
                - Alternances (Work-study programs)
            summary: Creation of a new work-study
            description: Creates a new work-study in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      etudiant:
                        type: integer
                        example: 12
                      dates:
                        type: array
                        items:
                          type: object
                          properties:
                            du:
                              type: string
                              example: "2000-02-14"
                            au:
                              type: string
                              example: "2000-02-27"
                      formulaire_etudiant:
                        type: object
                        properties:
                          visibilite:
                            type: boolean
                            example: true
                          du:
                            type: string
                            example: "2000-02-14"
                          au:
                            type: string
                            example: "2000-02-27"
                      duree_saisie:
                        type: number
                        example: 10.0
                      duree_calculee:
                        type: number
                        example: 12.0
                      entreprise:
                        type: integer
                        example: 14
                      maitres_tuteurs:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      sujet:
                        type: string
                        example: "work-study topic"
                      type_contrat:
                        type: string
                        example: "Apprenticeship"
                      dates_contrat:
                        type: object
                        properties:
                          du:
                            type: string
                            example: "2000-02-14"
                          au:
                            type: string
                            example: "2000-02-27"
                      commentaire:
                        type: string
                        example: "Here is a very useful comment"
                      enseignant_tuteur:
                        type: integer
                        example: 12
                      enseignant_responsable:
                        type: integer
                        example: 14
                      sujet_detaille:
                        type: string
                        example: "Topic a little more detailed"
                      objectifs:
                        type: string
                        example: "Here are the different objectives"
                      activites_prevues:
                        type: string
                        example: "Here are the planned activities"
                      competences_visees:
                        type: string
                        example: "Here are the targeted competencies"
                      modalites_concertation:
                        type: string
                        example: "Here are the modalities of consultation"
                      modalites_evaluation:
                        type: string
                        example: "Here are the evaluation modalities"
                      convention_signee:
                        type: boolean
                        example: true
                      contrat_rempli:
                        type: boolean
                        example: true
                      remuneration:
                        type: number
                        example: 10.0
                      devise:
                        type: string
                        example: €
                      avantages:
                        type: array
                        items:
                          type: string
                        example: ["Restaurant vouchers","Transportation"]
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Alternances'
              '400':    # status code
                description: "Invalid parameters: student compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /alternances/{cle}:
        get:
            tags:
                - Alternances (Work-study programs)
            summary: Json of the work-study with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "work-study key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Alternances'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Alternances (Work-study programs)
            summary: Partial update of a work-study
            description: Modifies the fields of the work-study with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "work-study key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      etudiant:
                        type: integer
                        example: 12
                      dates:
                        type: array
                        items:
                          type: object
                          properties:
                            du:
                              type: string
                              example: "2000-02-14"
                            au:
                              type: string
                              example: "2000-02-27"
                      formulaire_etudiant:
                        type: object
                        properties:
                          visibilite:
                            type: boolean
                            example: true
                          du:
                            type: string
                            example: "2000-02-14"
                          au:
                            type: string
                            example: "2000-02-27"
                      duree_saisie:
                        type: number
                        example: 10.0
                      duree_calculee:
                        type: number
                        example: 12.0
                      entreprise:
                        type: integer
                        example: 14
                      maitres_tuteurs:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      sujet:
                        type: string
                        example: "work-study topic"
                      type_contrat:
                        type: string
                        example: "Apprenticeship"
                      dates_contrat:
                        type: object
                        properties:
                          du:
                            type: string
                            example: "2000-02-14"
                          au:
                            type: string
                            example: "2000-02-27"
                      commentaire:
                        type: string
                        example: "Here is a very useful comment"
                      enseignant_tuteur:
                        type: integer
                        example: 12
                      enseignant_responsable:
                        type: integer
                        example: 14
                      sujet_detaille:
                        type: string
                        example: "Topic a little more detailed"
                      objectifs:
                        type: string
                        example: "Here are the different objectives"
                      activites_prevues:
                        type: string
                        example: "Here are the planned activities"
                      competences_visees:
                        type: string
                        example: "Here are the targeted competencies"
                      modalites_concertation:
                        type: string
                        example: "Here are the modalities of consultation"
                      modalites_evaluation:
                        type: string
                        example: "Here are the evaluation modalities"
                      convention_signee:
                        type: boolean
                        example: true
                      contrat_rempli:
                        type: boolean
                        example: true
                      remuneration:
                        type: number
                        example: 10.0
                      devise:
                        type: string
                        example: €
                      avantages:
                        type: array
                        items:
                          type: string
                        example: ["Restaurant vouchers","Transportation"]
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Alternances'
              '400':    # status code
                description: "Invalid parameters: student compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent work-study"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Alternances (Work-study programs)
            summary: Deletion of a work-study
            description: Permanently deletes the work-study with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /alternances/supprimer:
        post:
            tags:
                - Alternances (Work-study programs)
            summary: Deletion of several work-studies
            description: Delete the work-studies whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the work-studies to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /alternances/{cle_alt}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Alternances (Work-study programs)
            summary: Rubrics allocated to the work-study for the family
            description: Rubrics allocated to the work-study with the key {cle_alt} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', 'rubrique_libre' allows to obtain the available rubric of this family. In the case of ‘predefined rubrics', ‘rubrics' allows you to obtain the table (key and name) of all allocated rubrics.
            parameters:
                - name: cle_alt
                  in: path
                  description: "work-study key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        alternance:
                          type: integer
                          example: 388
                        famille:
                          type: integer
                          example: 125
                        mode:
                          type: string
                          example: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
        post:
            tags:
                - Alternances (Work-study programs)
            summary: Modification of the rubrics allocated to the work-study for the family
            description: Modifies the rubrics allocated to the work-study with the key {cle_alt} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', specified 'rubrique_libre' to modify the available rubric for this family. In the case of ‘predefined rubrics', fill in ‘rubrics' with the table of keys of the wanted rubrics.
            parameters:
                - name: cle_alt
                  in: path
                  description: "work-study key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
                - name: rubrique_libre
                  in: query
                  description: designation of the available ruric. Only  in the case of a family of available rurics.
                  required: true
                  schema:
                    type: string
                - name: rubriques
                  in: query
                  description: Table of the predefined rubric keys of the family. Only in the case of a family with predefined rubrics.
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        alternance:
                          type: integer
                          example: 388
                        famille:
                          type: integer
                          example: 125
                        mode:
                          type: string
                          example: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
              '500':    # status code
                description: "'Modification impossible' or 'Insufficient rights'"
    #### Cours ####
    /cours:
        get:
            tags:
                - Cours (Course)
            summary: List of all the courses
            description: Table containing the json of the courses in the base, sorted by key by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - type
                      - place
                      - proprietaire
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, type, place]   # ?select=cle,type,place
                - name: cle
                  in: query
                  description: returns only the courses having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                - name: parente
                  in: query
                  description: returns only the courses having one of these relationships
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                - name: est_non_place
                  in: query
                  description: returns only the courses placed or unplaced
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: boolean
                - name: statut_place
                  in: query
                  description: returns only the courses having one of these statuses
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                - name: mobilite_seances
                  in: query
                  description: returns only the courses having one of these mobilities
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                - name: matiere
                  in: query
                  description: returns only the courses having one of these subject keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                - name: type
                  in: query
                  description: returns only the courses having one of these types
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                - name: reference
                  in: query
                  description: returns only the courses having one of these reference numbers (only pass the number, not the entire string)
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                - name: date_debut
                  in: query
                  description: returns only the courses taking place after this beginning date. If this beginning date is not specified, we will take the one from the beginning of the base
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: string
                - name: date_fin
                  in: query
                  description: returns only the courses taking place before this ending date If this ending date is not specified, we will take the one from the end of the base
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: string
            responses:
              '200':    # status code
                description: JSON table of the courses
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Cours'
        post:
            tags:
                - Cours (Course)
            summary: Creation of a a new course
            description: Creates a new course in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Cours'
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Cours'
              '400':    # status code
                description: "Invalid parameters: subject, duration, status_place, mobility_class meetings domain or domain_potential compulsory"
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /cours/{cle}:
        get:
            tags:
                - Cours (Course)
            summary: Json of the course with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Cours'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Cours (Course)
            summary: Partial update of a course
            description: Modifies the fields of the course with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "course key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Cours'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Cours'
              '400':    # status code
                description: "Invalid parameter"
              '404':    # status code
                description: "Invalid parameter: non-existent course"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Cours (Course)
            summary: Deletion of a course
            description: Permanently deletes the course with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /cours/supprimer:
        post:
            tags:
                - Cours (Course)
            summary: Deletion of several courses
            description: Delete the courses whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the courses to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /cours/{cle}/cout:
        get:
            tags:
                - Cours (Course)
            summary: Cost of a course in a domain
            description: Cost of the course with the key {cle} in a domain (cost of the teacher + cost of the room). If no parameters are specified, returns the annual cost, including holidays and unplaced courses.
            parameters:
                - name: cle
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        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
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: Dates outside limits, incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Insufficient rights"
    /cours/cout:
        get:
            tags:
                - Cours (Course)
            summary: Costs of the courses in a domain
            description: Costs of the courses in a domain. If no parameters are specified, returns the annual cost of all courses, including holidays and unplaced courses.
            parameters:
                - name: cles
                  in: query
                  description: "course keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        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
                                example: 10
                              cout:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: Dates outside limits, incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Insufficient rights"
    /cours/{cle}/site:
        get:
            tags:
                - Cours (Course)
            summary: Site allocated to a course in a domain
            description: Site allocated to the course with the key {cle} in a domain. If no parameters are specified, returns the site for the entire year.
            parameters:
                - name: cle
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
            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':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Insufficient rights"
        post:
            tags:
                - Cours (Course)
            summary: Modification of the site of a course in a domain
            description: Modifies the site of the course with the key {cle} with the site's designation passed in parameter. Take the full year if no domain in the parameters
            parameters:
                - name: cle
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
                - name: site
                  in: query
                  description: "site designation"
                  required: true
                  schema:
                    type: string
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
            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"
              '403':    # status code
                description: "Insufficient rights"
              '404':    # status code
                description: "Invalid parameter: non-existent course"
              '500':    # status code
                description: non-existent site
    /cours/site:
        get:
            tags:
                - Cours (Course)
            summary: Site of courses in a domain
            description: Site of courses in a domain. If no parameters are specified, returns the site for all the courses for the entire year.
            parameters:
                - name: cles
                  in: query
                  description: "course keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
            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: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              site:
                                type: string
                                example: "Principal"
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Insufficient rights"
    /cours/{cle}/contenus:
        get:
            tags:
                - Cours (Course)
            summary: Characteristics of the content of a course over one week
            description: Characteristics of the course content with the key {cle} over a week
            parameters:
                - name: cle
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
                - name: semaine
                  in: query
                  description: "number of the week"
                  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
                              lien_visio:
                                type: object
                                properties:
                                  libelle:
                                    type: string
                                  url:
                                    type: string
                                  commentaire:
                                    type: string
                              cours:
                                type: integer
              '400':    # status code
                description: "Invalid parameter: Dates outside limits, incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent course"
              '500':    # status code
                description: "Insufficient rights"
        post:
            tags:
                - Cours (Course)
            summary: Modification of the title, designation, websites and/or delay for publishing the content of a course for one week
            description: Modifies the title, the description of the websites and/or the delay of content publication for the course with the key {cle} for the week passed in parameter. Creates the content if the course has no content. Returns an exception if the course already has multiple contents.
            parameters:
                - name: cle
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
                - name: semaine
                  in: query
                  description: "number of the week"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON fields used for the creation/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: The description can be an HTML string
                      sites_internet:
                        type: array
                        items:
                          type: string
                          example: "www.index-education.fr"
                        description: URLs of websites containing content for this course for this class meeting. If the url does not exist, it will be created in the base.
                      delai_publication:
                        type: string
                        example: "Immédiatement"
                        description: ADelayPublication corresponds either to the number of days before the start of the class meeting (for a customized publication) or to a particular value given by the functions PublishImmediately, PublishAtBeginningClassMeeting or PublshAtEndingClassMeeting
                      lien_visio:
                        type: object
                        properties:
                          libelle:
                            type: string
                          url:
                            type: string
                            example: 'www.visio.fr'
                          commentaire:
                            type: string
            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
                              lien_visio:
                                type: object
                                properties:
                                  libelle:
                                    type: string
                                  url:
                                    type: string
                                  commentaire:
                                    type: string
                              cours:
                                type: integer
              '400':    # status code
                description: "Invalid parameter: week compulsory or invalid format delay"
              '403':    # status code
                description: "Invalid parameter: no class meeting exists for this week"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible: several contents for this class meeting or modification of one of the fields impossible"
    /cours/{cle}/appel_termine:
        get:
            tags:
                - Cours (Course)
            summary: Boolean indicating whether the roll call of the course over a week has been taken
            description: Boolean indicating whether the roll call of the course with the key {cle} has been taken for the week {semaine}
            parameters:
                - name: cle
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
                - name: semaine
                  in: query
                  description: "number of the week"
                  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
                        cours:
                          type: integer
                          example: 10
                        appel_termine:
                          type: boolean
                          example: true
              '400':    # status code
                description: "Invalid parameter: Dates outside limits, incorrect format"
              '403':    # status code
                description: "Invalid parameter: no class meeting exists for this week"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Cours (Course)
            summary: Modification of the boolean indicating if the roll call of a course for a week is taken
            description: Modifies the boolean indicating whether the roll call of the course with the key {cle} for the week passed in parameter is completed or not
            parameters:
                - name: cle
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
                - name: semaine
                  in: query
                  description: "number of the week"
                  required: true
                  schema:
                    type: integer
                - name: appel_termine
                  in: query
                  description: "boolean indicating if the roll call has been taken"
                  required: true
                  schema:
                    type: boolean
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        semaine:
                          type: integer
                          example: 1
                        cours:
                          type: integer
                          example: 10
                        appel_termine:
                          type: boolean
                          example: true
              '400':    # status code
                description: "Invalid parameter: week compulsory"
              '403':    # status code
                description: "Invalid parameter: no class meeting exists for this week"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /cours/{cle}/detail_seances_placees:
        get:
            tags:
                - Cours (Course)
            summary: Details of the placed class meetings of a course
            description: Details of the placed class meetings of the course with the key {cle}. The course must be a placed course. If it is a father course, returns the details of all its placed son courses. Caution, no time zone indication is returned with jour_heure_debut.
            parameters:
                - name: cle
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
                - name: date_debut
                  in: query
                  description: returns the details of the paced class meetings taking place after this beginning date/time ('yyyy-mm-ddThh:nn'). <br>
                               If this beginning date/time is not specified, we will take the one from the beginning of the base.<br>
                               If the parameter passed is only in date format, 'yyyy-mm-dd', returns the class meetings taking place from the first hour of this date.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: string
                - name: date_fin
                  in: query
                  description: returns the details of the paced class meetings taking place before this ending date/time ('yyyy-mm-ddThh:nn'). <br>
                               If this ending date/time is not specified, we will take the one from the end of the base.<br>
                               If the parameter passed is only in a date format, 'yyyy-mm-dd', returns the class meetings taking place up to the last hour of this date.
                  style: form
                  required: false
                  explode: false
                  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: 12
                          matiere:
                            type: integer
                            example: 10
                          type:
                            type: string
                            example: TD
                          duree:
                            type: number
                            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':    # status code
                description: "Invalid parameter: unplaced course"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /cours/detail_seances_placees:
        get:
            tags:
                - Cours (Course)
            summary: Details of the placed class meetings of the courses
            description: Details of the placed class meetings of a courses passed as parameters. The courses must be placed. For a father course, returns the details of all its placed son courses. If no parameters are specified, returns the class meetings for all the placed courses. Caution, no time zone indication is returned with jour_heure_debut.
            parameters:
                - name: cles
                  in: query
                  description: "course keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: date_debut
                  in: query
                  description: returns the details of the paced class meetings taking place after this beginning date/time ('yyyy-mm-ddThh:nn'). <br>
                               If this beginning date/time is not specified, we will take the one from the beginning of the base.<br>
                               If the parameter passed is only in date format, 'yyyy-mm-dd', returns the class meetings taking place from the first hour of this date.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: string
                - name: date_fin
                  in: query
                  description: returns the details of the paced class meetings taking place before this ending date/time ('yyyy-mm-ddThh:nn'). <br>
                               If this ending date/time is not specified, we will take the one from the end of the base.<br>
                               If the parameter passed is only in a date format, 'yyyy-mm-dd', returns the class meetings taking place up to the last hour of this date.
                  style: form
                  required: false
                  explode: false
                  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: 12
                          matiere:
                            type: integer
                            example: 10
                          type:
                            type: string
                            example: TD
                          duree:
                            type: number
                            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':    # status code
                description: "Invalid parameter: unplaced course"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /cours/{cle_cours}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Cours (Course)
            summary: Rubrics allocated to the course for the family
            description: Rubrics allocated to the course with the key {cle_cours} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', 'rubrique_libre' allows to obtain the available rubric of this family. In the case of ‘predefined rubrics', ‘rubrics' allows you to obtain the table (key and name) of all allocated rubrics.
            parameters:
                - name: cle_cours
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
        post:
            tags:
                - Cours (Course)
            summary: Modification of the rubrics allocated to the course for the family
            description: Modifies the rubrics allocated to the course with the key {cle_cours} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', specified 'rubrique_libre' to modify the available rubric for this family. In the case of ‘predefined rubrics', fill in ‘rubrics' with the table of keys of the wanted rubrics.
            parameters:
                - name: cle_cours
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
                - name: rubrique_libre
                  in: query
                  description: designation of the available ruric. Only  in the case of a family of available rurics.
                  required: true
                  schema:
                    type: string
                - name: rubriques
                  in: query
                  description: Table of the predefined rubric keys of the family. Only in the case of a family with predefined rubrics.
                  required: true
                  schema:
                    type: array
                    items:
                      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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
              '500':    # status code
                description: "'Modification impossible' or 'Insufficient rights'"
    #### Cours_annules ####
    /cours_annules:
        get:
            tags:
                - Cours_annules (Canceled_courses)
            summary: List of all the canceled courses
            description: Table containing the json of the canceled courses in the base, sorted by key by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - type
                      - matiere
                      - motif_annulation
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, type, matiere]   # ?select=cle,type,matiere
                - name: cle
                  in: query
                  description: returns only the canceled courses having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                - name: matiere
                  in: query
                  description: returns only the canceled courses having one of these subject keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                - name: type
                  in: query
                  description: returns only the canceled courses having one of these types
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                - name: reference
                  in: query
                  description: returns only the canceled courses having one of these reference numbers (only pass the number, not the entire string)
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                - name: date_debut
                  in: query
                  description: returns only the canceled courses taking place after this beginning date. If this beginning date is not specified, we will take the one from the beginning of the base
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: string
                - name: date_fin
                  in: query
                  description: returns only the canceled courses taking place before this ending date If this ending date is not specified, we will take the one from the end of the base
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: string
                - name: enseignants
                  in: query
                  description: returns only the cancelation courses of these teachers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                - name: promotions
                  in: query
                  description: returns only the canceled courses of these classes
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                - name: tdoptions
                  in: query
                  description: returns only the canceled courses of these tutorials/options
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                - name: regroupements
                  in: query
                  description: returns only the canceled courses having one of these groupings
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                - name: salles
                  in: query
                  description: returns only the canceled courses of these rooms
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                - name: etudiants
                  in: query
                  description: returns only the canceled courses of these students
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
            responses:
              '200':    # status code
                description: JSON table of the canceled courses
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Cours_annules'
        post:
            tags:
                - Cours_annules (Canceled_courses)
            summary: Cancelation of a course in the base
            description: Cancelation of a course in the base using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              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':    # status code
                description: Success
              '400':    # status code
                description: "Invalid parameters: course key compulsory, protected or locked course"
              '500':    # status code
                description: Cancelation impossible
    /cours_annules/{cle}:
        get:
            tags:
                - Cours_annules (Canceled_courses)
            summary: Json of the canceled course with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "canceled course key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Cours_annules'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Cours_annules (Canceled_courses)
            summary: Partial update of a canceled course
            description: Modifies the fields cancelation_motive and/or commentary of the canceled course with the key {cle} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "canceled course key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      motif_annulation:
                        type: string
                        example: "Annulation"
                      commentaire:
                        type: string
                        example: "commentaire"
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Cours_annules'
              '400':    # status code
                description: "Invalid parameter"
              '404':    # status code
                description: "Invalid parameter: non-existent canceled course"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Cours_annules (Canceled_courses)
            summary: Deletion of a canceled course
            description: Permanently deletes the canceled course with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /cours_annules/supprimer:
        post:
            tags:
                - Cours_annules (Canceled_courses)
            summary: Deletion of several canceled courses
            description: Delete the canceled courses whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the canceled courses to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '400':    # status code
                description: "Bad request : we couldn't delete everything"
              '403':    # status code
                description: "Insufficient rights"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /cours_annules/{cle}/detail_seances_placees:
        get:
            tags:
                - Cours_annules (Canceled_courses)
            summary: Details of the placed class meetings of a canceled course
            description: Details of the placed class meetings of a canceled course with the key {cle}. Caution, no time zone indication is returned with jour_heure_debut.
            parameters:
                - name: cle
                  in: path
                  description: "canceled course key"
                  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: "canceled course key"
                          matiere:
                            type: integer
                            example: 10
                          type:
                            type: string
                            example: TD
                          duree:
                            type: number
                            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':    # status code
                description: "Invalid parameter: non-existent key"
    #### Couts_horaires_enseignants ####
    /couts_horaires_enseignants:
        get:
            tags:
                - Couts_horaires_enseignants (Hourly_cost_students)
            summary: List of all the teachers' hourly costs
            description: Table containing the json of the teachers' hourly costs in the base, sorted by designation by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - libelle
                      - valeur
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, libelle, valeur]   # ?select=cle,libelle,valeur
                - name: cle
                  in: query
                  description: returns only the teachers' hourly costs having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: libelle
                  in: query
                  description: returns only the teachers' hourly costs having one of these designations
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single designation wanted
                      value: [cout1]   # ?libelle=cout1
                    multipleIds:
                      summary: Example with several designations wanted
                      value: [cout1, cout2, cout3]   # ?libelle=cout1,cout2,cout3
                - name: valeur
                  in: query
                  description: returns only the teachers' hourly costs having one of these values
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: number
                  examples:
                    oneId:
                      summary: Example with a single value wanted
                      value: [20.5]   # ?valeur=20.5
                    multipleIds:
                      summary: Example with several values wanted
                      value: [20.5, 40, 60]   # ?valeur=20.5,40,60
            responses:
              '200':    # status code
                description: JSON table of the teachers' hourly costs
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Couts_horaires_enseignants'
        post:
            tags:
                - Couts_horaires_enseignants (Hourly_cost_students)
            summary: Creation of a new teachers' hourly cost
            description: Creates a new teachers' hourly cost in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Couts_horaires_enseignants'
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Couts_horaires_enseignants'
              '400':    # status code
                description: "Invalid parameters: designation and value compulsory"
              '500':    # status code
                description: "Creation impossible"
    /couts_horaires_enseignants/{cle}:
        get:
            tags:
                - Couts_horaires_enseignants (Hourly_cost_students)
            summary: Json of the teachers' hourly cost with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "teachers' hourly cost key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Couts_horaires_enseignants'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Couts_horaires_enseignants (Hourly_cost_students)
            summary: Partial update of teachers' hourly cost
            description: Modifies the fields of the teachers' hourly cost with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "teachers' hourly cost key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Couts_horaires_enseignants'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Couts_horaires_enseignants'
              '400':    # status code
                description: "Invalid parameter"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Couts_horaires_enseignants (Hourly_cost_students)
            summary: Deletion of a teachers' hourly cost
            description: Permanently deletes the teachers' hourly cost with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /couts_horaires_enseignants/supprimer:
        post:
            tags:
                - Couts_horaires_enseignants (Hourly_cost_students)
            summary: Deletion of several teachers' hourly costs
            description: Delete the teacher's hourly costs whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the teachers' hourly costs to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    #### Couts_horaires_salles ####
    /couts_horaires_salles:
        get:
            tags:
                - Couts_horaires_salles (Hourly_cost_rooms)
            summary: List of all hourly room costs
            description: Table containing the json of the rooms' hourly costs in the base, sorted by designation by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - libelle
                      - valeur
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, libelle, valeur]   # ?select=cle,libelle,valeur
                - name: cle
                  in: query
                  description: returns only the rooms' hourly costs having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: libelle
                  in: query
                  description: returns only the room' hourly costs having one of these designations
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single designation wanted
                      value: [cout1]   # ?libelle=cout1
                    multipleIds:
                      summary: Example with several designations wanted
                      value: [cout1, cout2, cout3]   # ?libelle=cout1,cout2,cout3
                - name: valeur
                  in: query
                  description: returns only the rooms' hourly costs having one of these values
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: number
                  examples:
                    oneId:
                      summary: Example with a single value wanted
                      value: [20.5]   # ?valeur=20.5
                    multipleIds:
                      summary: Example with several values wanted
                      value: [20.5, 40, 60]   # ?valeur=20.5,40,60
            responses:
              '200':    # status code
                description: JSON table of the rooms' hourly costs
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Couts_horaires_salles'
        post:
            tags:
                - Couts_horaires_salles (Hourly_cost_rooms)
            summary: Creation of a new rooms' hourly cost
            description: Creates a new rooms' hourly cost in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Couts_horaires_salles'
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Couts_horaires_salles'
              '400':    # status code
                description: "Invalid parameters: designation and value compulsory"
              '500':    # status code
                description: "Creation impossible"
    /couts_horaires_salles/{cle}:
        get:
            tags:
                - Couts_horaires_salles (Hourly_cost_rooms)
            summary: Json of the rooms' hourly cost with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "rooms' hourly cost key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Couts_horaires_salles'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Couts_horaires_salles (Hourly_cost_rooms)
            summary: Partial update of rooms' hourly cost
            description: Modifies the fields of the rooms' hourly cost with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "rooms' hourly cost key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Couts_horaires_salles'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Couts_horaires_salles'
              '400':    # status code
                description: "Invalid parameter"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Couts_horaires_salles (Hourly_cost_rooms)
            summary: Deletion of a rooms' hourly cost
            description: Permanently deletes the rooms' hourly cost with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /couts_horaires_salles/supprimer:
        post:
            tags:
                - Couts_horaires_salles (Hourly_cost_rooms)
            summary: Deletion of several rooms' hourly costs
            description: Delete the room's hourly costs whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the rooms' hourly costs to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    #### Cursus ####
    /cursus:
        get:
            tags:
                - Cursus (Curriculum)
            summary: List of all the curriculum
            description: Table containing the json of the curriculum in the base, sorted by name then code by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - nom
                      - code
                      - proprietaire
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - name: cle
                  in: query
                  description: Filter on the keys of the curriculum
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: Filter on the names of the curriculum
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Example with several names wanted
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - name: code
                  in: query
                  description: Filter on the curriculum codes
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single code wanted
                      value: [mths]   # ?code=mths
                    multipleIds:
                      summary: Example with several codes wanted
                      value: [mths, fr, hist]   # ?code=mths,fr,hist
            responses:
              '200':    # status code
                description: JSON table of the curriculum
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Cursus'
        post:
            tags:
                - Cursus (Curriculum)
            summary: Creation of a a new curriculum
            description: Creates a new curriculum in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Cursus'
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Cursus'
              '400':    # status code
                description: "Invalid parameters: designation compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /cursus/{cle}:
        get:
            tags:
                - Cursus (Curriculum)
            summary: Json of the curriculum with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "curriculum key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Cursus'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Cursus (Curriculum)
            summary: Partial update of a curriculum
            description: Modifies the fields of the curriculum with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "key of the curriculum that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Cursus'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Cursus'
              '400':    # status code
                description: "Invalid parameters: designation compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent curriculum"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Cursus (Curriculum)
            summary: Deletion of a curriculum
            description: Permanently deletes the curriculum with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /cursus/supprimer:
        post:
            tags:
                - Cursus (Curriculum)
            summary: Deletion of several curriculum
            description: Delete the curriculum whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the curriculum to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /cursus/{cle_cursus}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Cursus (Curriculum)
            summary: Rubrics allocated to the curriculum for the family
            description: Rubrics allocated to the curriculum with the key {cle_cursus} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', 'rubrique_libre' allows to obtain the available rubric of this family. In the case of ‘predefined rubrics', ‘rubrics' allows you to obtain the table (key and name) of all allocated rubrics.
            parameters:
                - name: cle_cursus
                  in: path
                  description: "curriculum key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
        post:
            tags:
                - Cursus (Curriculum)
            summary: Modification of the rubrics allocated to the curriculum for the family
            description: Modifies the rubrics allocated to the curriculum with the key {cle_cursus} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', specified 'rubrique_libre' to modify the available rubric for this family. In the case of ‘predefined rubrics', fill in ‘rubrics' with the table of keys of the wanted rubrics.
            parameters:
                - name: cle_cursus
                  in: path
                  description: "curriculum key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
                - name: rubrique_libre
                  in: query
                  description: designation of the available ruric. Only  in the case of a family of available rurics.
                  required: true
                  schema:
                    type: string
                - name: rubriques
                  in: query
                  description: Table of the predefined rubric keys of the family. Only in the case of a family with predefined rubrics.
                  required: true
                  schema:
                    type: array
                    items:
                      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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
              '500':    # status code
                description: "'Modification impossible' or 'Insufficient rights'"
    #### Enseignants ####
    /enseignants:
        get:
            tags:
                - Enseignants (Teachers)
            summary: List of all the teachers
            description: Table containing the json of the teachers in the base, sorted by surname and then first name by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - nom
                      - prenom
                      - code
                      - uid_identifiant
                      - proprietaire
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - name: cle
                  in: query
                  description: returns only the teachers having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: returns only the teachers having one of these names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Example with several names wanted
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - name: prenom
                  in: query
                  description: returns only the teachers having one of these first names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single first name wanted
                      value: [maths]   # ?prenom=maths
                    multipleIds:
                      summary: Example with several first names wanted
                      value: [maths, francais, histoire]   # ?prenom=maths,francais,histoire
                - name: code
                  in: query
                  description: returns only the teachers having one of these codes
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single code wanted
                      value: [mths]   # ?code=mths
                    multipleIds:
                      summary: Example with several codes wanted
                      value: [mths, fr, hist]   # ?code=mths,fr,hist
                - name: uid_identifiant
                  in: query
                  description: returns only the teachers having one of these uid_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single uid_identifier wanted
                      value: [mths]   # ?uid_identifiant=mths
                    multipleIds:
                      summary: Example with several uid_identifiers wanted
                      value: [mths, fr, hist]   # ?uid_identifiant=mths,fr,hist
                - name: cas_identifiant
                  in: query
                  description: returns only the teachers having one of these cas_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single cas_identifier wanted
                      value: [ident1]   # ?cas_identifiant=ident1
                    multipleIds:
                      summary: Example with several cas_identifiers wanted
                      value: [ident1, ident2, ident3]   # ?cas_identifiant=ident1,ident2,ident3
                - name: adfs_identifiant
                  in: query
                  description: returns only the teachers having one of these adfs_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single adfs_identifier wanted
                      value: [ident1]   # ?adfs_identifiant=ident1
                    multipleIds:
                      summary: Example with several adfs_identifiers wanted
                      value: [ident1, ident2, ident3]   # ?adfs_identifiant=ident1,ident2,ident3
                - name: saml_identifiant
                  in: query
                  description: returns only the teachers having one of these saml_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single saml_identifier wanted
                      value: [ident1]   # ?saml_identifiant=ident1
                    multipleIds:
                      summary: Example with several saml_identifiers wanted
                      value: [ident1, ident2, ident3]   # ?saml_identifiant=ident1,ident2,ident3
            responses:
              '200':    # status code
                description: JSON table of the teachers
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Enseignants'
        post:
            tags:
                - Enseignants (Teachers)
            summary: Creation of a new teacher
            description: Creates a new teacher in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      nom:
                        type: string
                        example: "Dupond"
                      prenom:
                        type: string
                        example: "Camille"
                      code:
                        type: string
                        example: "AD"
                      couleur:
                        type: string
                        example: "#FFFF80"
                      civilite:
                        type: string
                        example: "Mrs"
                      uid_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      cas_identifiant:
                        type: string
                        example: "Identifiant__CAS"
                      adfs_identifiant:
                        type: string
                        example: "Identifier__ADFS"
                      saml_identifiant:
                        type: string
                        example: "Identifier__SAML"
                      identifiant_connexion:
                        type: string
                        example: "Identifier__connection"
                      nom_jeune_fille:
                        type: string
                        example: "Dupond"
                      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: "Here is a very useful comment"
                      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
                        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"
                      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"
                      cout_horaire_statutaire:
                        type: integer
                        example: 10
                      cout_horaire_sans_public:
                        type: integer
                        example: 11
                      mot_de_passe:
                        type: string
                        example: "fdrehm:lcfjnfj4"
                        description: Only for the modification, no visualization, must comply with the security policy
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Enseignants'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /enseignants/{cle}:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Json of the teacher with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Enseignants'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Enseignants (Teachers)
            summary: Partial update of a teacher
            description: Modifies the fields of the teacher with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "teacher key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      nom:
                        type: string
                        example: "Dupond"
                      prenom:
                        type: string
                        example: "Camille"
                      code:
                        type: string
                        example: "AD"
                      couleur:
                        type: string
                        example: "#FFFF80"
                      civilite:
                        type: string
                        example: "Mrs"
                      uid_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      cas_identifiant:
                        type: string
                        example: "Identifiant__CAS"
                      adfs_identifiant:
                        type: string
                        example: "Identifier__ADFS"
                      saml_identifiant:
                        type: string
                        example: "Identifier__SAML"
                      identifiant_connexion:
                        type: string
                        example: "Identifier__connection"
                      nom_jeune_fille:
                        type: string
                        example: "Dupond"
                      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: "Here is a very useful comment"
                      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
                        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"
                      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"
                      cout_horaire_statutaire:
                        type: integer
                        example: 10
                      cout_horaire_sans_public:
                        type: integer
                        example: 11
                      mot_de_passe:
                        type: string
                        example: "fdrehm:lcfjnfj4"
                        description: Only for the modification, no visualization, must comply with the security policy
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Enseignants'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent teacher"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Enseignants (Teachers)
            summary: Deletion of a teacher
            description: Permanently deletes the teacher with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /enseignants/supprimer:
        post:
            tags:
                - Enseignants (Teachers)
            summary: Deletion of several teachers
            description: Delete the teachers whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the teachers to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /enseignants/{cle}/photo/{format}:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Photo format {format} of a teacher
            description: Stream the photo of the teacher with the key {cle} in the wanted format (jpeg, png, gif, or bitmap)
            parameters:
                - name: cle
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: format
                  in: path
                  description: 'Format of the photo'
                  required: true
                  schema:
                    type: string
                    enum:
                      - jpeg
                      - png
                      - gif
                      - bitmap
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        format:
                          type: string
                          example: "jpeg"
                        base64binary:
                          type: string
                          example: 12
              '400':    # status code
                description: "Invalid parameter"
    /enseignants/{cle}/photo:
        post:
            tags:
                - Enseignants (Teachers)
            summary: Update of the teacher's photo
            description: Modifies the teacher's photo with the key {cle} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "teacher key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the format field (jpeg, png, gif or bitmap) and the photo
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      format:
                        type: string
                        example: "jpeg"
                      base64binary:
                        type: string
                        example: 12
            responses:
              '200':    # status code
                description: Success - JSON of the photo modified
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        format:
                          type: string
                          example: "jpeg"
                        base64binary:
                          type: string
                          example: 12
              '400':    # status code
                description: "Invalid parameter"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Enseignants (Teachers)
            summary: Deletion of the teacher's photo
            description: Deletes the photo of the teacher with key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /enseignants/{cle}/cours:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Course keys of the teacher between 2 dates
            description: Course keys of the teacher with the key {cle} between 2 dates. If no parameters are specified, returns the list of courses for the entire domain.
            parameters:
                - name: cle
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: date_debut
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                - name: date_fin
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cours:
                          type: array
                          items:
                            type: integer
                          example: [388,400]
              '400':    # status code
                description: "Invalid parameter: Dates outside limits, incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/{cle_ens}/cours/{cle_cours}/domaine:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Domain of presence of a teacher in a course
            description: Domain of presence of the teacher with the key {cle_ens} for course with the key {cle_cours}. The domain is empty if the teacher is not in the course.
            parameters:
                - name: cle_ens
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: cle_cours
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        domaine:
                          type: array
                          items:
                            type: integer
                          example: [1, 2, 3]
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Enseignants (Teachers)
            summary: Modification a domain of presence for a teacher in a course
            description: Modifies the domain of presence of the teacher with the key {cle_ens} for the course with the key {cle_cours}. Allows adding a teacher to a course or removing it from that course. The domain can be passed in the URL ?domain=12,24,48. By default, it takes the entire domain.
            parameters:
                - name: cle_ens
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: cle_cours
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        domaine:
                          type: array
                          items:
                            type: integer
                          example: [1, 2, 3]
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/{cle}/indisponibilites:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Teacher unavailability for one week
            description: Unavailability (in places) of the teacher with the key {cle} for a week.<br>
                         If no parameters are specified, returns the first week.<br>
                         A place corresponds to the time elapsed between Monday at 0:00 and the beginning of the unavailability.<br>
                         Caution, durations are expressed in 'days'<br>
                         For example, Monday noon = 12:00 p.m. = 12/24th day = 0.5 days.<br>
                         Wednesday noon = 24h (from entire Monday) + 24h (from entire Tuesday) + 12h (from Wednesday) = 60/24th = 2.5 days
            parameters:
                - name: cle
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: semaine
                  in: query
                  description: week
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_enseignant:
                          type: integer
                          example: 388
                        semaine:
                          type: integer
                          example: 12
                        places_indisponibilites:
                          type: array
                          items:
                            type: number
                            example: 0.5
              '400':    # status code
                description: "Invalid parameter: week"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/{cle}/voeux:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Wishes for a teacher for a week
            description: Wishes (in places) of the teacher with the key {cle} for a week.<br>
                         If no parameters are specified, returns the first week.<br>
                         A place corresponds to the time elapsed between Monday at 0:00 and the beginning of the wishes.<br>
                         Caution, durations are expressed in 'days'<br>
                         For example, Monday noon = 12:00 p.m. = 12/24th day = 0.5 days.<br>
                         Wednesday noon = 24h (from entire Monday) + 24h (from entire Tuesday) + 12h (from Wednesday) = 60/24th = 2.5 days
            parameters:
                - name: cle
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: semaine
                  in: query
                  description: week
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_enseignant:
                          type: integer
                          example: 388
                        semaine:
                          type: integer
                          example: 12
                        places_voeux:
                          type: array
                          items:
                            type: number
                            example: 0.5
              '400':    # status code
                description: "Invalid parameter: week"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/{cle}/cout:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Cost of a teacher between 2 dates or in a domain
            description: Cost of the teacher with the key {cle} between 2 dates. If no parameters are specified, returns the cost for the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cle
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: date_debut
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                - name: date_fin
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        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
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: Dates outside limits, incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Insufficient rights"
    /enseignants/cout:
        get:
            tags:
                - Enseignants (Teachers)
            summary: teachers' costs between 2 dates or in a domain
            description: teachers' costs between 2 dates or in a domain. If no parameters are specified, returns the cost for the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cles
                  in: query
                  description: "teacher keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: date_debut
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                - name: date_fin
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        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
                                example: 10
                              cout:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: Dates outside limits, incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Insufficient rights"
    /enseignants/{cle}/duree_cours:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Course duration of a teacher in a domain
            description: Course duration of the teacher with the key {cle} in the domain If no parameters are specified, returns the duration over the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cle
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        avec_cours_non_places:
                          type: boolean
                          example: true
                        duree_cours:
                          type: number
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/duree_cours:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Course duration of the teachers in a domain
            description: Course duration of the teachers in a domain. If no parameters are specified, returns the duration over the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cles
                  in: query
                  description: "teacher keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        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
                                example: 10
                              duree:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/{cle}/duree_disponible:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Available duration of a teacher in a domain
            description: Available duration of the teacher with the key {cle} in a domain If no parameters are specified, returns the duration in the entire domain including public holidays.
            parameters:
                - name: cle
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        duree_disponible:
                          type: number
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/duree_disponible:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Available duration of teachers in a domain
            description: Available duration of teachers in a domain. If no parameters are specified, returns the duration in the entire domain including public holidays.
            parameters:
                - name: cles
                  in: query
                  description: "teacher keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        duree_disponible:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 10
                              duree:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/{cle}/duree_ponderee_cours:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Weighted course duration of a teacher in a domain
            description: Weighted course duration of the teacher with the key {cle} in the domain. If no parameters are specified, returns the duration over the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cle
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        avec_cours_non_places:
                          type: boolean
                          example: true
                        duree_ponderee_cours:
                          type: number
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/duree_ponderee_cours:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Weighted course duration of the teachers in a domain
            description: Weighted course duration of the teachers in a domain. If no parameters are specified, returns the duration over the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cles
                  in: query
                  description: "teacher keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        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
                                example: 12
                              duree:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/{cle}/t1:
        get:
            tags:
                - Enseignants (Teachers)
            summary: T1 of a teacher in a domain
            description: T1 of the teacher with the key {cle} in the domain. If no parameters are specified, returns the duration in the entire domain including public holidays.
            parameters:
                - name: cle
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        t1:
                          type: number
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/t1:
        get:
            tags:
                - Enseignants (Teachers)
            summary: T1 of the teachers in a domain
            description: T1 of the teachers in a domain. If no parameters are specified, returns the duration in the entire domain including public holidays.
            parameters:
                - name: cles
                  in: query
                  description: "teacher keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        t1:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              duree:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/{cle}/t2_conv:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Conventional T2 of a teacher in an domain
            description: Conventional T2 of the teacher with the key {cle} in the domain. If no parameters are specified, returns the duration in the entire domain including public holidays.
            parameters:
                - name: cle
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        t2_conv:
                          type: number
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/t2_conv:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Conventional T2 for the teachers in a domain
            description: Conventional T2 for the teachers in a domain. If no parameters are specified, returns the duration in the entire domain including public holidays.
            parameters:
                - name: cles
                  in: query
                  description: "teacher keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        t2_conv:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              duree:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/{cle}/t2_real:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Completed T2 of a teacher in a domain
            description: Completed T2 of the teacher with the key {cle} in the domain. If no parameters are specified, returns the duration in the entire domain including public holidays.
            parameters:
                - name: cle
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        t2_real:
                          type: number
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/t2_real:
        get:
            tags:
                - Enseignants (Teachers)
            summary: T2 achieved by teachers in a domain
            description: T2 achieved by teachers in a domain. If no parameters are specified, returns the duration in the entire domain including public holidays.
            parameters:
                - name: cles
                  in: query
                  description: "teacher keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        t2_real:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              duree:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/{cle}/t3:
        get:
            tags:
                - Enseignants (Teachers)
            summary: T3 of a teacher in a domain
            description: T3 of the teacher with the key {cle} in the domain. If no parameters are specified, returns the duration in the entire domain including public holidays.
            parameters:
                - name: cle
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        t3:
                          type: number
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/t3:
        get:
            tags:
                - Enseignants (Teachers)
            summary: T3 of the teachers in a domain
            description: T3 of the teachers in a domain. If no parameters are specified, returns the duration in the entire domain including public holidays.
            parameters:
                - name: cles
                  in: query
                  description: "teacher keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        t3:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              duree:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/{cle}/decharges:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Total of annual discharge hours and total annual cost of discharge hours of a teacher
            description: Total of annual discharge hours and total annual cost of discharge hours of a teacher with the key {cle}
            parameters:
                - name: cle
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        total_heures_annuelles:
                          type: number
                          example: 17.2916666666667
                        total_cout_annuel:
                          type: number
                          example: 1431.75
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/decharges:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Total of annual discharge hours and total annual cost of discharge hours of the teachers
            description: Total of annual discharge hours and total annual cost of discharge hours of a teacher passed in parameters
            parameters:
                - name: cles
                  in: query
                  description: "teacher keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        decharges:
                          type: array
                          items:
                            type: object
                            properties:
                              cle_enseignant:
                                type: integer
                                example: 12
                              total_heures_annuelles:
                                type: number
                                example: 17.2916666666667
                              total_cout_annuel:
                                type: number
                                example: 1431.75
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /enseignants/{cle_ens}/promotions/{cle_promo}/cout_horaire:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Hourly cost allocated to a class for a teacher
            description: Hourly cost key allocated to the class with the key {cle_promo} for the teacher with the key {cle_ens}
            parameters:
                - name: cle_ens
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_enseignant:
                          type: integer
                          example: 388
                        cle_promotion:
                          type: integer
                          example: 125
                        cle_cout_horaire:
                          type: integer
                          example: 234
              '403':    # status code
                description: "Insufficient rights"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Enseignants (Teachers)
            summary: Modification of the hourly cost allocated to a class for a teacher
            description: Modifies the hourly cost key allocated to the class with the key {cle_promo} for the teacher with the key {cle_ens}
            parameters:
                - name: cle_ens
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: cout_horaire
                  in: query
                  description: "Hourly cost key"
                  required: true
                  schema:
                    type: integer
                    example: 24
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_enseignant:
                          type: integer
                          example: 388
                        cle_promotion:
                          type: integer
                          example: 125
                        cle_cout_horaire:
                          type: integer
                          example: 120
              '400':    # status code
                description: "Insufficient rights"
              '403':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /enseignants/{cle_ens}/tdoptions/{cle_tdopt}/cout_horaire:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Hourly cost allocated to a tutorial/option for a teacher
            description: Hourly cost key allocated to the tutorial/option with the key {cle_tdopt} for the teacher with the key {cle_ens}
            parameters:
                - name: cle_ens
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: cle_tdopt
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_enseignant:
                          type: integer
                          example: 388
                        cle_tdoption:
                          type: integer
                          example: 125
                        cle_cout_horaire:
                          type: integer
                          example: 234
              '403':    # status code
                description: "Insufficient rights"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Enseignants (Teachers)
            summary: Modification of the hourly cost allocated to a tutorial/option for a teacher
            description: Modifies the hourly cost key allocated to the tutorial/option with the key {cle_tdopt} for the teacher with the key {cle_ens}
            parameters:
                - name: cle_ens
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: cle_tdopt
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
                - name: cout_horaire
                  in: query
                  description: "Hourly cost key"
                  required: true
                  schema:
                    type: integer
                    example: 24
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_enseignant:
                          type: integer
                          example: 388
                        cle_tdoption:
                          type: integer
                          example: 125
                        cle_cout_horaire:
                          type: integer
                          example: 120
              '400':    # status code
                description: "Insufficient rights"
              '403':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /enseignants/{cle_ens}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Enseignants (Teachers)
            summary: Rubrics allocated to the teacher for the family
            description: Rubrics allocated to the teacher with the key {cle_ens} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', 'rubrique_libre' allows to obtain the available rubric of this family. In the case of ‘predefined rubrics', ‘rubrics' allows you to obtain the table (key and name) of all allocated rubrics.
            parameters:
                - name: cle_ens
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
        post:
            tags:
                - Enseignants (Teachers)
            summary: Modification of the rubrics allocated to the teacher for the family
            description: Modifies the rubrics allocated to the teacher with the key {cle_ens} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', specified 'rubrique_libre' to modify the available rubric for this family. In the case of ‘predefined rubrics', fill in ‘rubrics' with the table of keys of the wanted rubrics.
            parameters:
                - name: cle_ens
                  in: path
                  description: "teacher key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
                - name: rubrique_libre
                  in: query
                  description: designation of the available ruric. Only  in the case of a family of available rurics.
                  required: true
                  schema:
                    type: string
                - name: rubriques
                  in: query
                  description: Table of the predefined rubric keys of the family. Only in the case of a family with predefined rubrics.
                  required: true
                  schema:
                    type: array
                    items:
                      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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
              '500':    # status code
                description: "'Modification impossible' or 'Insufficient rights'"
    #### Entreprises ####
    /entreprises:
        get:
            tags:
                - Entreprises (Companies)
            summary: baccalaureate companies
            description: Table containing the json of the companies in the base, sorted by corporate name by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - raison_sociale
                      - numero_siret
                      - uid_identifiant
                      - proprietaire
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, raison_sociale, numero_siret]   # ?select=cle,raison_sociale,numero_siret
                - name: cle
                  in: query
                  description: returns only the companies having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: raison_sociale
                  in: query
                  description: returns only the companies having one of these corporate names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single corporate name wanted
                      value: [entreprise1]   # ?raison_sociale=entreprise1
                    multipleIds:
                      summary: Example with several corporate names wanted
                      value: [entreprise1, entreprise2, entreprise3]   # ?raison_sociale=entreprise1,entreprise2,entreprise3
                - name: nom_commercial
                  in: query
                  description: returns only the teachers having one of these names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [entrepriseNC1]   # ?nom_commercial=entrepriseNC1
                    multipleIds:
                      summary: Example with several names wanted
                      value: [entrepriseNC1, entrepriseNC2, entrepriseNC3]   # ?nom_commercial=entrepriseNC1,entrepriseNC2,entrepriseNC3
                - name: numero_siret
                  in: query
                  description: returns only the companies having one of these siret numbers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single number wanted
                      value: [123]   # ?numero_siret=123
                    multipleIds:
                      summary: Example with several numbers wanted
                      value: [123, 456, 789]   # ?numero_siret=123,456,789
                - name: uid_identifiant
                  in: query
                  description: returns only the companies having one of these uid_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single uid_identifier wanted
                      value: [ent1]   # ?uid_identifiant=ent1
                    multipleIds:
                      summary: Example with several uid_identifiers wanted
                      value: [ent1, ent2, ent3]   # ?uid_identifiant=ent1,ent2,ent3
            responses:
              '200':    # status code
                description: JSON table of the companies
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Entreprises'
        post:
            tags:
                - Entreprises (Companies)
            summary: Creation of a new company
            description: Creates a new company in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      raison_sociale:
                        type: string
                        example: "Index Education"
                      nom_commercial:
                        type: string
                        example: "Docaposte"
                      uid_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      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"
                      numero_fax:
                        type: string
                        example: "04050607"
                      indicatif_fax:
                        type: string
                        example: "04"
                      email1:
                        type: string
                        example: "firstname.surname@email.fr"
                      site_internet:
                        type: string
                        example: "https://www.index-education.com"
                      activite:
                        type: string
                        example: "Activite"
                      ape:
                        type: string
                        example: "APE"
                      numero_siret:
                        type: string
                        example: "12345678901234"
                      urssaf:
                        type: string
                        example: "08080808080808"
                      convention_collective_code_idcc:
                        type: string
                        example: "1486"
                      convention_collective:
                        type: string
                        example: "Syntec"
                      effectif:
                        type: integer
                        example: 150
                      assurance_responsabilite_civile:
                        type: string
                        example: "AD"
                      numero_police_assurance:
                        type: string
                        example: "AD"
                      commentaire_public:
                        type: string
                        example: "Commentaire public"
                      commentaire_interne:
                        type: string
                        example: "Commentaire interne"
                      proprietaire:
                        type: integer
                        example: 10
                      responsable:
                        type: integer
                        example: 10
                      contacts:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      maitres_tuteurs:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      charges_contrat:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Entreprises'
              '400':    # status code
                description: "Invalid parameters: corporate name compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /entreprises/{cle}:
        get:
            tags:
                - Entreprises (Companies)
            summary: Json of the company with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "company key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Entreprises'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Entreprises (Companies)
            summary: Partial update of a company
            description: Modifies the fields of the company with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "company key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      raison_sociale:
                        type: string
                        example: "Index Education"
                      nom_commercial:
                        type: string
                        example: "Docaposte"
                      uid_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      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"
                      numero_fax:
                        type: string
                        example: "04050607"
                      indicatif_fax:
                        type: string
                        example: "04"
                      email1:
                        type: string
                        example: "firstname.surname@email.fr"
                      site_internet:
                        type: string
                        example: "https://www.index-education.com"
                      activite:
                        type: string
                        example: "Activite"
                      ape:
                        type: string
                        example: "APE"
                      numero_siret:
                        type: string
                        example: "12345678901234"
                      urssaf:
                        type: string
                        example: "08080808080808"
                      convention_collective_code_idcc:
                        type: string
                        example: "1486"
                      convention_collective:
                        type: string
                        example: "Syntec"
                      effectif:
                        type: integer
                        example: 150
                      assurance_responsabilite_civile:
                        type: string
                        example: "AD"
                      numero_police_assurance:
                        type: string
                        example: "AD"
                      commentaire_public:
                        type: string
                        example: "Commentaire public"
                      commentaire_interne:
                        type: string
                        example: "Commentaire interne"
                      proprietaire:
                        type: integer
                        example: 10
                      responsable:
                        type: integer
                        example: 10
                      contacts:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      maitres_tuteurs:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      charges_contrat:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Entreprises'
              '400':    # status code
                description: "Invalid parameters: corporate name compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent company"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Entreprises (Companies)
            summary: Deletion of a company
            description: Permanently deletes the company with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /entreprises/supprimer:
        post:
            tags:
                - Entreprises (Companies)
            summary: Deletion of several companies
            description: Delete the companies whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the companies to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /entreprises/{cle_ent}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Entreprises (Companies)
            summary: Rubrics allocated to the company for the family
            description: Rubrics allocated to the company with the key {cle_ent} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', 'rubrique_libre' allows to obtain the available rubric of this family. In the case of ‘predefined rubrics', ‘rubrics' allows you to obtain the table (key and name) of all allocated rubrics.
            parameters:
                - name: cle_ent
                  in: path
                  description: "company key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        entreprise:
                          type: integer
                          example: 388
                        famille:
                          type: integer
                          example: 125
                        mode:
                          type: string
                          example: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
        post:
            tags:
                - Entreprises (Companies)
            summary: Modification of the rubrics allocated to the company for the family
            description: Modifies the rubrics allocated to the company with the key {key_comp} for the family with the key {key_fam}. If the mode of the family is 'Available rubric', specified 'rubrique_libre' to modify the available rubric for this family. In the case of ‘predefined rubrics', fill in ‘rubrics' with the table of keys of the wanted rubrics.
            parameters:
                - name: cle_ent
                  in: path
                  description: "company key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
                - name: rubrique_libre
                  in: query
                  description: designation of the available ruric. Only  in the case of a family of available rurics.
                  required: true
                  schema:
                    type: string
                - name: rubriques
                  in: query
                  description: Table of the predefined rubric keys of the family. Only in the case of a family with predefined rubrics.
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        entreprise:
                          type: integer
                          example: 388
                        famille:
                          type: integer
                          example: 125
                        mode:
                          type: string
                          example: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
              '500':    # status code
                description: "'Modification impossible' or 'Insufficient rights'"
    #### Etudiants ####
    /etudiants:
        get:
            tags:
                - Etudiants (Students)
            summary: List of all the students
            description: Table containing the json of the students in the base, sorted by surname, first name and then date of birth by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - nom
                      - numero_ine
                      - numero_ordre
                      - uid_identifiant
                      - proprietaire
                      - civilite
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - name: cle
                  in: query
                  description: returns only the students having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: returns only the students having one of these names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Example with several names wanted
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - name: prenom
                  in: query
                  description: returns only the students having one of these first names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single first name wanted
                      value: [maths]   # ?prenom=maths
                    multipleIds:
                      summary: Example with several first names wanted
                      value: [maths, francais, histoire]   # ?prenom=maths,francais,histoire
                - name: date_naissance
                  in: query
                  description: returns only the students having one of these dates of birth
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single date of birth wanted
                      value: [2000-12-21]   # ?date_naissance=2000-12-21
                    multipleIds:
                      summary: Example with several dates of birth wanted
                      value: [2000-12-21, 2001-12-21, 2002-12-21]   # ?date_naissance=2000-12-21,2001-12-21,2002-12-21
                - name: e_mail_personnel
                  in: query
                  description: returns only the students having one of these personal e-mail
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single e-mail wanted
                      value: [email1@monmail.fr]   # ?e_mail_personnel=email1@monmail.fr
                    multipleIds:
                      summary: Example with several e-mail wanted
                      value: [email1@monmail.fr, email2@monmail.fr, email3@monmail.fr]   # ?e_mail_personnel=email1@monmail.fr,email2@monmail.fr,email3@monmail.fr
                - name: e_mail_institutionnel
                  in: query
                  description: returns only the students having one of these institutional e-mail
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single e-mail wanted
                      value: [email1@monmail.fr]   # ?e_mail_institutionnel=email1@monmail.fr
                    multipleIds:
                      summary: Example with several e-mail wanted
                      value: [email1@monmail.fr, email2@monmail.fr, email3@monmail.fr]   # ?e_mail_institutionnel=email1@monmail.fr,email2@monmail.fr,email3@monmail.fr
                - name: uid_identifiant
                  in: query
                  description: returns only the students having one of these uid_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single uid_identifier wanted
                      value: [mths]   # ?uid_identifiant=mths
                    multipleIds:
                      summary: Example with several uid_identifiers wanted
                      value: [mths, fr, hist]   # ?uid_identifiant=mths,fr,hist
                - name: numero_ordre
                  in: query
                  description: returns only the students having one of these sequence numbers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single number wanted
                      value: [123]   # ?numero_ordre=123
                    multipleIds:
                      summary: Example with several numbers wanted
                      value: [123, 456, 789]   # ?numero_ordre=123,456,789
                - name: numero_ine
                  in: query
                  description: returns only the students having one of these INE numbers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single number wanted
                      value: [123]   # ?numero_ine=123
                    multipleIds:
                      summary: Example with several numbers wanted
                      value: [123, 456, 789]   # ?numero_ine=123,456,789
                - name: cas_identifiant
                  in: query
                  description: returns only the students having one of these cas_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single cas_identifier wanted
                      value: [ident1]   # ?cas_identifiant=ident1
                    multipleIds:
                      summary: Example with several cas_identifiers wanted
                      value: [ident1, ident2, ident3]   # ?cas_identifiant=ident1,ident2,ident3
                - name: adfs_identifiant
                  in: query
                  description: returns only the students having one of these adfs_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single adfs_identifier wanted
                      value: [ident1]   # ?adfs_identifiant=ident1
                    multipleIds:
                      summary: Example with several adfs_identifiers wanted
                      value: [ident1, ident2, ident3]   # ?adfs_identifiant=ident1,ident2,ident3
                - name: saml_identifiant
                  in: query
                  description: returns only the students having one of these saml_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single saml_identifier wanted
                      value: [ident1]   # ?saml_identifiant=ident1
                    multipleIds:
                      summary: Example with several saml_identifiers wanted
                      value: [ident1, ident2, ident3]   # ?saml_identifiant=ident1,ident2,ident3
            responses:
              '200':    # status code
                description: JSON table of the students
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Etudiants'
        post:
            tags:
                - Etudiants (Students)
            summary: Creation of a new student
            description: Creates a new student in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      nom:
                        type: string
                        example: "Dupond"
                      prenom1:
                        type: string
                        example: "Camille"
                      prenom2:
                        type: string
                        example: "Dominique"
                      prenom3:
                        type: string
                        example: "Claude"
                      prenom_usage:
                        type: string
                        example: "Sacha"
                      date_naissance:
                        type: string
                        example: "2010-02-22"
                      civilite:
                        type: string
                        example: "Mrs"
                      uid_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      cas_identifiant:
                        type: string
                        example: "Identifiant__CAS"
                      adfs_identifiant:
                        type: string
                        example: "Identifier__ADFS"
                      saml_identifiant:
                        type: string
                        example: "Identifier__SAML"
                      identifiant_connexion:
                        type: string
                        example: "Identifier__connection"
                      mot_de_passe:
                        type: string
                        example: "fdrehm:lcfjnfj4"
                        description: Only for the modification, no visualization, must comply with the security policy
                      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: "Dupond"
                      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: "Here is a very useful comment"
                      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: "MATH"
                      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: "admission modalities"
                      etablissement_origine:
                        type: integer
                        example: 10
                      date_inscription:
                        type: string
                        example: "2022-02-22"
                      cursus_anterieur:
                        type: string
                        example: "Previous curriculum"
                      publication_sur_tous_les_espaces:
                        type: boolean
                        example: true
                      acces_espace_etudiants:
                        type: boolean
                        example: true
                      emargement_numerique:
                        type: boolean
                        example: true
                      parent1:
                        type: integer
                        example: 10
                      lien_parente1:
                        type: string
                        example: "mother"
                      parent2:
                        type: integer
                        example: 10
                      lien_parente2:
                        type: string
                        example: "father"
                      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"
                      bonus_final:
                        type: string
                        example: "5"
                      avis_final:
                        type: string
                        example: "Perfect"
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Etudiants'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /etudiants/{cle}:
        get:
            tags:
                - Etudiants (Students)
            summary: Json of the student with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Etudiants'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Etudiants (Students)
            summary: Partial update of a student
            description: Modifies the fields of the student with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "student key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      nom:
                        type: string
                        example: "Dupond"
                      prenom1:
                        type: string
                        example: "Camille"
                      prenom2:
                        type: string
                        example: "Dominique"
                      prenom3:
                        type: string
                        example: "Claude"
                      prenom_usage:
                        type: string
                        example: "Sacha"
                      date_naissance:
                        type: string
                        example: "2010-02-22"
                      civilite:
                        type: string
                        example: "Mrs"
                      uid_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      cas_identifiant:
                        type: string
                        example: "Identifiant__CAS"
                      adfs_identifiant:
                        type: string
                        example: "Identifier__ADFS"
                      saml_identifiant:
                        type: string
                        example: "Identifier__SAML"
                      identifiant_connexion:
                        type: string
                        example: "Identifier__connection"
                      mot_de_passe:
                        type: string
                        example: "fdrehm:lcfjnfj4"
                        description: Only for the modification, no visualization, must comply with the security policy
                      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: "Dupond"
                      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: "Here is a very useful comment"
                      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: "MATH"
                      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: "admission modalities"
                      etablissement_origine:
                        type: integer
                        example: 10
                      date_inscription:
                        type: string
                        example: "2022-02-22"
                      cursus_anterieur:
                        type: string
                        example: "Previous curriculum"
                      publication_sur_tous_les_espaces:
                        type: boolean
                        example: true
                      acces_espace_etudiants:
                        type: boolean
                        example: true
                      emargement_numerique:
                        type: boolean
                        example: true
                      parent1:
                        type: integer
                        example: 10
                      lien_parente1:
                        type: string
                        example: "mother"
                      parent2:
                        type: integer
                        example: 10
                      lien_parente2:
                        type: string
                        example: "father"
                      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"
                      bonus_final:
                        type: string
                        example: "5"
                      avis_final:
                        type: string
                        example: "Perfect"
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Etudiants'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent student"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Etudiants (Students)
            summary: Deletion of a student
            description: Permanently deletes the student with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /etudiants/supprimer:
        post:
            tags:
                - Etudiants (Students)
            summary: Deletion of several students
            description: Delete the students whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the students to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /etudiants/{cle}/photo/{format}:
        get:
            tags:
                - Etudiants (Students)
            summary: Photo format {format} of a student
            description: Stream of the photo of the student with the key {cle} in the wanted format (jpeg, png, gif or bitmap)
            parameters:
                - name: cle
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: string
                - name: format
                  in: path
                  description: 'Format of the photo'
                  required: true
                  schema:
                    type: string
                    enum:
                      - jpeg
                      - png
                      - gif
                      - bitmap
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        format:
                          type: string
                          example: "jpeg"
                        base64binary:
                          type: string
                          example: 12
              '400':    # status code
                description: "Invalid parameter"
    /etudiants/{cle}/photo:
        post:
            tags:
                - Etudiants (Students)
            summary: Update of the student's photo
            description: Modifies the fields of the student with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "student key that you want to update"
                  required: true
                  schema:
                    type: string
            requestBody:
              description: JSON containing the format field (jpeg, png, gif or bitmap) and the photo
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      format:
                        type: string
                        example: "jpeg"
                      base64binary:
                        type: string
                        example: 12
            responses:
              '200':    # status code
                description: Success - JSON of the photo modified
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        format:
                          type: string
                          example: "jpeg"
                        base64binary:
                          type: string
                          example: 12
              '400':    # status code
                description: "Invalid parameter"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Etudiants (Students)
            summary: Deletion of the student's photo
            description: Deletes the photo of the student with key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /etudiants/{cle}/regroupements:
        get:
            tags:
                - Etudiants (Students)
            summary: Grouping keys of the student on a date or between two dates
            description: Grouping keys of the student with the key {cle} on a date or between 2 dates. If no parameters are specified, returns the list of the student's groupings for today's date.
            parameters:
                - name: cle
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: date
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date_debut=2024-08-06
                - name: date_debut
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date_debut=2024-08-06
                - name: date_fin
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-08"   # ?date_fin=2024-08-08
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        regroupements:
                          type: array
                          items:
                            type: integer
                            example: 13
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '405':    # status code
                description: "Insufficient rights"
    /etudiants/{cle}/promotions:
        get:
            tags:
                - Etudiants (Students)
            summary: Class keys of the student on a date or between two dates
            description: Class keys of the student with the key {cle} on a date or between 2 dates. If no parameters are specified, returns the list of classes for the student on today's date.
            parameters:
                - name: cle
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: date
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date_debut=2024-08-06
                - name: date_debut
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date_debut=2024-08-06
                - name: date_fin
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-08"   # ?date_fin=2024-08-08
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        promotions:
                          type: array
                          items:
                            type: integer
                            example: 12
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '405':    # status code
                description: "Insufficient rights"
    /etudiants/{cle_etu}/promotions/{cle_promo}/ajouter:
        post:
            tags:
                - Etudiants (Students)
            summary: Assignment of a student to a class over the year or from a date
            description: Assigns the student with the key {cle_etu} to the class with the key {cle_promo} in the default year. To assign the student to the class from a date, pass that date as a parameter. If no parameters are specified, assign the student for the year.
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: date
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date_debut=2024-08-06
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        promotions:
                          type: array
                          items:
                            type: integer
                            example: 12
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '405':    # status code
                description: "Insufficient rights"
    /etudiants/{cle_etu}/promotions/{cle_promo}/enlever:
        post:
            tags:
                - Etudiants (Students)
            summary: Withdrawal of a student from a class over the year or from a date
            description: Remove the student with the key {cle_etu} from the class with the key {cle_promo} in the default year. To remove the student from the class beginning on a date, pass this date as a parameter. If no parameters are specified, removes the student for the year.
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: date
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date_debut=2024-08-06
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        promotions:
                          type: array
                          items:
                            type: integer
                            example: 12
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '405':    # status code
                description: "Insufficient rights"
    /etudiants/{cle_etu}/promotions/{cle_promo}/dates_affectation:
        get:
            tags:
                - Etudiants (Students)
            summary: Assignment dates of a student in a class
            description: Assignment dates of the student with the key {cle_etu} in the class with the key {cle_promo}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        dates_affectation:
                          type: array
                          items:
                            type: object
                            properties:
                              du:
                                type: string
                              au:
                                type: string
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '405':    # status code
                description: "Insufficient rights"
        post:
            tags:
                - Etudiants (Students)
            summary: Modification of dates for assigning a student to a class
            description: Replaces the assignment dates for the student with the key {cle_etu} in the class with the key {cle_promo} with the dates provided in the JSON within the BODY
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: "JSON for assignment dates (a JSON array containing the start date of the range (‘from') and the end date (‘to')). Set ‘from': ‘1899-12-30' to mean ‘from the beginning of the year' and/or ‘to' to ‘2199-12-30' to mean ‘until the end of the year'"
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      dates_affectation:
                        type: array
                        items:
                          type: object
                          properties:
                            du:
                              type: string
                              example: "2000-02-02"
                            au:
                              type: string
                              example: "2000-02-20"
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        dates_affectation:
                          type: array
                          items:
                            type: object
                            properties:
                              du:
                                type: string
                              au:
                                type: string
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '405':    # status code
                description: "Insufficient rights"
    /etudiants/{cle}/tdoptions:
        get:
            tags:
                - Etudiants (Students)
            summary: Tutorial/option keys of the student with the date or between 2 dates.
            description: Keys of the tutorials/options for the student with the key {cle} on a date or between two dates If no parameters are specified, returns the list of the student's tutorials/options as of today's date.
            parameters:
                - name: cle
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: date
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date_debut=2024-08-06
                - name: date_debut
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date_debut=2024-08-06
                - name: date_fin
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-08"   # ?date_fin=2024-08-08
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        tdoptions:
                          type: array
                          items:
                            type: integer
                            example: 12
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '405':    # status code
                description: "Insufficient rights"
    /etudiants/{cle_etu}/tdoptions/{cle_tdopt}/ajouter:
        post:
            tags:
                - Etudiants (Students)
            summary: Assignment of a student to a tutorial/option over the year or from a date
            description: Assigns the student with the key {cle_etu} to the tutorial/option with the key {cle_tdopt} in the default year. To assign the student to the tutorial/option from a date, pass that date as a parameter. If no parameters are specified, assign the student for the year.
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_tdopt
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
                - name: date
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date_debut=2024-08-06
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        tdoptions:
                          type: array
                          items:
                            type: integer
                            example: 12
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '405':    # status code
                description: "Insufficient rights"
    /etudiants/{cle_etu}/tdoptions/{cle_tdopt}/enlever:
        post:
            tags:
                - Etudiants (Students)
            summary: Withdrawal of a student from a tutorial/option over the year or from a date
            description: Remove the student with the key {cle_etu} from the tutorial/option with the key {cle_tdopt} in the default year. To remove the student from Tutorial/option from a date, pass this date as a parameter. If no parameters are specified, removes the student for the year.
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_tdopt
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
                - name: date
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date_debut=2024-08-06
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        tdoptions:
                          type: array
                          items:
                            type: integer
                            example: 12
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '405':    # status code
                description: "Insufficient rights"
    /etudiants/{cle_etu}/tdoptions/{cle_tdopt}/dates_affectation:
        get:
            tags:
                - Etudiants (Students)
            summary: Assignment dates of a student in a tutorial/option
            description: Assignment dates of the student with the key {cle_etu} in the tutorial/option with the key {cle_tdopt}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_tdopt
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        dates_affectation:
                          type: array
                          items:
                            type: object
                            properties:
                              du:
                                type: string
                              au:
                                type: string
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '405':    # status code
                description: "Insufficient rights"
        post:
            tags:
                - Etudiants (Students)
            summary: Modification of dates for assigning a student to a tutorial/option
            description: Replaces the assignment dates for the student with the key {cle_etu} in the tutorial/option with the key {cle_tdopt} with the dates provided in the JSON within the BODY
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_tdopt
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: "JSON for assignment dates (a JSON array containing the start date of the range (‘from') and the end date (‘to')). Set ‘from': ‘1899-12-30' to mean ‘from the beginning of the year' and/or ‘to' to ‘2199-12-30' to mean ‘until the end of the year'"
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      dates_affectation:
                        type: array
                        items:
                          type: object
                          properties:
                            du:
                              type: string
                              example: "2000-02-02"
                            au:
                              type: string
                              example: "2000-02-20"
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        dates_affectation:
                          type: array
                          items:
                            type: object
                            properties:
                              du:
                                type: string
                              au:
                                type: string
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '405':    # status code
                description: "Insufficient rights"
    /etudiants/{cle}/cours:
        get:
            tags:
                - Etudiants (Students)
            summary: Course keys of the student between 2 dates
            description: Course keys of the student with the key {cle} between 2 dates. If no parameters are specified, returns the list of courses for the student in the entire domain.
            parameters:
                - name: cle
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: date_debut
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date_debut=2024-08-06
                - name: date_fin
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-08"   # ?date_fin=2024-08-08
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cours:
                          type: array
                          items:
                            type: integer
                          example: [388,400]
              '400':    # status code
                description: "Invalid parameter: Dates outside limits"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '405':    # status code
                description: "Insufficient rights"
    /etudiants/{cle_etu}/services_notation/{cle_sn}/periodes_notation/{cle_pern}/bonus_malus:
        get:
            tags:
                - Etudiants (Students)
            summary: Bonus/penalty allocated to a student for a grading service and a grading period
            description: Bonus/penalty allocated to the student {cle_etu} for grading service with the key {cle_sn} and grading period with the key {cle_pern}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_pern
                  in: path
                  description: "grading period key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_periode_notation:
                          type: integer
                          example: 125
                        bonus_malus:
                          type: string
                          example: "5"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Etudiants (Students)
            summary: Modification of a student's bonus/penalty for a grading service and a grading period
            description: Modifies the bonus/penalty for student with the key {cle_etu} for grading service with the key {cle_sn} and grading period with the key {cle_pern}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_pern
                  in: path
                  description: "grading period key"
                  required: true
                  schema:
                    type: integer
                - name: bonus_malus
                  in: query
                  description: Bonus/penalty to be assigned
                  required: true
                  schema:
                    type: string
                    example: "5"
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_periode_notation:
                          type: integer
                          example: 125
                        bonus_malus:
                          type: string
                          example: "5"
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /etudiants/{cle_etu}/services_notation/{cle_sn}/periodes_hors_calendrier/{cle_perhc}/bonus_malus:
        get:
            tags:
                - Etudiants (Students)
            summary: Bonus/penalty allocated to a student for a grading service and a period outside the calendar
            description: Bonus/penalty allocated to the student {cle_etu} for the grading service with the key {cle_sn} and the outside the calendar period with the key {cle_perhc}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_perhc
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_periode_hors_calendrier:
                          type: integer
                          example: 125
                        bonus_malus:
                          type: string
                          example: "5"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Etudiants (Students)
            summary: Modification of a student's bonus/penalty for a grading service and a period outside the calendar
            description: Modifies the bonus/penalty for student with the key {cle_etu} for grading service with the key{cle_sn} and outside the calendar period with the key {cle_perhc}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_perhc
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
                - name: bonus_malus
                  in: query
                  description: Bonus/penalty to be assigned
                  required: true
                  schema:
                    type: string
                    example: "5"
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_periode_hors_calendrier:
                          type: integer
                          example: 125
                        bonus_malus:
                          type: string
                          example: "5"
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /etudiants/{cle_etu}/services_notation/{cle_sn}/calendriers_notation/{cle_caln}/appreciation:
        get:
            tags:
                - Etudiants (Students)
            summary: Appraisal of a student for a grading service and a grading calendar
            description: Appraisal of student with the key {cle_etu} for the grading service with the key {cle_sn} and the grading period with the key {cle_caln}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_caln
                  in: path
                  description: "grading calendar key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_calendrier_notation:
                          type: integer
                          example: 125
                        appreciation:
                          type: string
                          example: "Excellent travail"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Etudiants (Students)
            summary: Modification of a student's appraisal for a grading service and grading calendar
            description: Modifies the appraisal of student with the key {cle_etu} for the grading service with the key {cle_sn} and grading calendar with the key {cle_caln}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_caln
                  in: path
                  description: "grading calendar key"
                  required: true
                  schema:
                    type: integer
                - name: appreciation
                  in: query
                  description: New appraisals
                  required: true
                  schema:
                    type: string
                    example: "Remarquable"
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_calendrier_notation:
                          type: integer
                          example: 125
                        appreciation:
                          type: string
                          example: "Remarquable"
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /etudiants/{cle_etu}/services_notation/{cle_sn}/periodes_notation/{cle_pern}/appreciation:
        get:
            tags:
                - Etudiants (Students)
            summary: Appraisal of a student for a grading service and a grading period
            description: Appraisal of student with the key {cle_etu} for the grading service with the key {cle_sn} and grading period with the key {cle_pern}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_pern
                  in: path
                  description: "grading period key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_periode_notation:
                          type: integer
                          example: 125
                        appreciation:
                          type: string
                          example: "Excellent travail"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Etudiants (Students)
            summary: Modification of a student's appraisal for a grading service and grading period
            description: Modifies the appraisal of student with the key {cle_etu} for the grading service with the key {cle_sn} and grading period with the key {cle_pern}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_pern
                  in: path
                  description: "grading period key"
                  required: true
                  schema:
                    type: integer
                - name: appreciation
                  in: query
                  description: New appraisals
                  required: true
                  schema:
                    type: string
                    example: "Remarquable"
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_periode_notation:
                          type: integer
                          example: 125
                        appreciation:
                          type: string
                          example: "Remarquable"
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /etudiants/{cle_etu}/services_notation/{cle_sn}/periodes_hors_calendrier/{cle_perhc}/appreciation:
        get:
            tags:
                - Etudiants (Students)
            summary: Appraisal of a student for a grading service and a period outside of the calendar
            description: Appraisal of student with the key {cle_etu} for the grading service with the key {cle_sn} and the period outside the calendar with the key {cle_perhc}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_perhc
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_periode_hors_calendrier:
                          type: integer
                          example: 125
                        appreciation:
                          type: string
                          example: "Excellent travail"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Etudiants (Students)
            summary: Modification of a student's appraisal for a grading service and a period outside the calendar
            description: Modifies the appraisal of student with the key {cle_etu} for the grading service with the key {cle_sn} and the period outside the calendar with the key {cle_perhc}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_perhc
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
                - name: appreciation
                  in: query
                  description: New appraisals
                  required: true
                  schema:
                    type: string
                    example: "Remarquable"
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_periode_hors_calendrier:
                          type: integer
                          example: 125
                        appreciation:
                          type: string
                          example: "Remarquable"
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /etudiants/{cle_etu}/promotions/{cle_promo}/periodes_notation/{cle_pern}/observation_generale:
        get:
            tags:
                - Etudiants (Students)
            summary: Overall observation assigned to a student for class and a grading period
            description: Overall observation assigned to the student with the key {cle_etu} for class with the key {cle_promo} and the period outside of the calendar with the key {cle_perhc}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: cle_pern
                  in: path
                  description: "grading period key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_promotion:
                          type: integer
                          example: 388
                        cle_periode_notation:
                          type: integer
                          example: 125
                        observation_generale:
                          type: string
                          example: "Perfect"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Etudiants (Students)
            summary: Modification of the overall observation of a student for class and a grading period
            description: Modifies the overall observation of the student with the key {cle_etu} for class with the key {cle_promo} and the grading period with the key {cle_pern}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: cle_pern
                  in: path
                  description: "grading period key"
                  required: true
                  schema:
                    type: integer
                - name: observation_generale
                  in: query
                  description: Overall observation to be assigned
                  required: true
                  schema:
                    type: string
                    example: "Perfect"
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_promotion:
                          type: integer
                          example: 388
                        cle_periode_notation:
                          type: integer
                          example: 125
                        observation_generale:
                          type: string
                          example: "Perfect"
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /etudiants/{cle_etu}/promotions/{cle_promo}/periodes_hors_calendrier/{cle_perhc}/observation_generale:
        get:
            tags:
                - Etudiants (Students)
            summary: Overall observation assigned to a student for class and a period outside of the calendar
            description: Overall observation assigned to the student with the key {cle_etu} for class with the key {cle_promo} and the period outside of the calendar with the key {cle_perhc}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: cle_perhc
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_promotion:
                          type: integer
                          example: 388
                        cle_periode_hors_calendrier:
                          type: integer
                          example: 125
                        observation_generale:
                          type: string
                          example: "Perfect"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Etudiants (Students)
            summary: Modification of the overall observation of the student for class and the period outside of the calendar
            description: Modifies the overall observation of the student with the key {cle_etu} for class with the key {cle_promo} and the period outside of the calendar with the key {cle_perhc}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: cle_perhc
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
                - name: observation_generale
                  in: query
                  description: Overall observation to be assigned
                  required: true
                  schema:
                    type: string
                    example: "Perfect"
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_promotion:
                          type: integer
                          example: 388
                        cle_periode_hors_calendrier:
                          type: integer
                          example: 125
                        observation_generale:
                          type: string
                          example: "Perfect"
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /etudiants/{cle_etu}/promotions/{cle_promo}/periodes_notation/{cle_pern}/decision:
        get:
            tags:
                - Etudiants (Students)
            summary: Decision assigned to student for class and a grading period
            description: Decision assigned to student with the key {cle_etu} for class with the key {cle_promo} and for grading period with the key {cle_pern}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: cle_pern
                  in: path
                  description: "grading period key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_promotion:
                          type: integer
                          example: 388
                        cle_periode_notation:
                          type: integer
                          example: 125
                        decision:
                          type: string
                          example: "Semestre validé"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Etudiants (Students)
            summary: Modification of a student's decision for a class and a grading period
            description: Modifies the decision of the student with the key {cle_etu} for class with the key {cle_promo} and grading with the key {cle_perhc}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: cle_pern
                  in: path
                  description: "grading period key"
                  required: true
                  schema:
                    type: integer
                - name: decision
                  in: query
                  description: Decision to be assigned
                  required: true
                  schema:
                    type: string
                    example: "Semestre validé"
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_promotion:
                          type: integer
                          example: 388
                        cle_periode_notation:
                          type: integer
                          example: 125
                        decision:
                          type: string
                          example: "Semestre validé"
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /etudiants/{cle_etu}/promotions/{cle_promo}/periodes_hors_calendrier/{cle_perhc}/decision:
        get:
            tags:
                - Etudiants (Students)
            summary: Decision assigned to student for class and a period outside of the calendar
            description: Decision assigned to student with the key {cle_etu} for class with the key {cle_promo} and for the period outside of the calendar with the key {cle_perhc}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: cle_perhc
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_promotion:
                          type: integer
                          example: 388
                        cle_periode_hors_calendrier:
                          type: integer
                          example: 125
                        decision:
                          type: string
                          example: "Semestre validé"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Etudiants (Students)
            summary: Modification of a student's decision for a class and a period outside of the calendar
            description: Modifies the decision of the student with the key {cle_etu} for class with the key {cle_promo} and period outside of the calendar with the key {cle_perhc}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: cle_perhc
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
                - name: decision
                  in: query
                  description: Decision to be assigned
                  required: true
                  schema:
                    type: string
                    example: "Semestre validé"
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_promotion:
                          type: integer
                          example: 388
                        cle_periode_hors_calendrier:
                          type: integer
                          example: 125
                        decision:
                          type: string
                          example: "Semestre validé"
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /etudiants/{cle_etu}/periodes_notation/{cle_pern}/modules_notation/{cle_mod}/validation_module:
        get:
            tags:
                - Etudiants (Students)
            summary: Validation of the grading module of a student for the grading period
            description: Validation of the grading module with the key {cle_mod} of the student with the key {cle_etu} for the grading period with the key {cle_pern}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_pern
                  in: path
                  description: "grading period key"
                  required: true
                  schema:
                    type: integer
                - name: cle_mod
                  in: path
                  description: "key of the grading module"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_periode_notation:
                          type: integer
                          example: 125
                        cle_module_notation:
                          type: integer
                          example: 388
                        validation_module:
                          type: string
                          example: "Validé"
                        international:
                          type: string
                          example: "Admitted"
                        date_validation:
                          type: string
                          example: "2026-01-22"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Etudiants (Students)
            summary: Modification of the validation of a grading module of a student for the grading period
            description: Modifies the validation of the grading module with the key {cle_mod} for the student with the key {cle_etu} for the grading period with the {cle_pern}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_pern
                  in: path
                  description: "grading period key"
                  required: true
                  schema:
                    type: integer
                - name: cle_mod
                  in: path
                  description: "key of the grading module"
                  required: true
                  schema:
                    type: integer
                - name: validation_module
                  in: query
                  description: "Module validation to be allocated. Expected format: 'validated', 'V'', ‘no', 'N', 'none', 'none', ‘' (empty string) or a date in string format 'yyyy-mm-dd' to validate on a specific date."
                  required: true
                  schema:
                    type: string
                    example: "2026-01-22"
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_periode_notation:
                          type: integer
                          example: 125
                        cle_module_notation:
                          type: integer
                          example: 388
                        validation_module:
                          type: string
                          example: "Validé"
                        international:
                          type: string
                          example: "Admitted"
                        date_validation:
                          type: string
                          example: "2026-01-22"
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key, sealed periods, deleted class"
              '500':    # status code
                description: "Modification impossible"
    /etudiants/{cle_etu}/periodes_hors_calendrier/{cle_perhc}/modules_notation/{cle_mod}/validation_module:
        get:
            tags:
                - Etudiants (Students)
            summary: Validation of the grading module of a student for the period outside the calendar
            description: Validation of the grading module with the key {cle_mod} of the student with the key {cle_etu} for the period outside the calendar with the key {cle_perhc}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_perhc
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
                - name: cle_mod
                  in: path
                  description: "key of the grading module"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_periode_hors_calendrier:
                          type: integer
                          example: 125
                        cle_module_notation:
                          type: integer
                          example: 388
                        validation_module:
                          type: string
                          example: "Validé"
                        international:
                          type: string
                          example: "Admitted"
                        date_validation:
                          type: string
                          example: "2026-01-22"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Etudiants (Students)
            summary: Modification of the validation of a grading module of a student for the period outside the calendar
            description: Modifies the validation of the grading module with the key {cle_mod} of the student with the key {cle_etu} for the period outside the calendar with the key {cle_perhc}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_perhc
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
                - name: cle_mod
                  in: path
                  description: "key of the grading module"
                  required: true
                  schema:
                    type: integer
                - name: validation_module
                  in: query
                  description: "Module validation to be allocated. Expected format: 'validated', 'V'', ‘no', 'N', 'none', 'none', ‘' (empty string) or a date in string format 'yyyy-mm-dd' to validate on a specific date."
                  required: true
                  schema:
                    type: string
                    example: "2026-01-22"
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_etudiant:
                          type: integer
                          example: 498
                        cle_periode_hors_calendrier:
                          type: integer
                          example: 125
                        cle_module_notation:
                          type: integer
                          example: 388
                        validation_module:
                          type: string
                          example: "Validé"
                        international:
                          type: string
                          example: "Admitted"
                        date_validation:
                          type: string
                          example: "2026-01-22"
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key, sealed periods, deleted class"
              '500':    # status code
                description: "Modification impossible"
    /etudiants/{cle_etu}/devoirs/{cle_devoir}/notes:
        get:
            tags:
                - Etudiants (Students)
            summary: Grade allocated to a student for a test
            description: Grade allocated to the student with the key {cle_etu} for the test with the key {cle_devoir} (taking into account the grade of the catch-up test if it exists)
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_devoir
                  in: path
                  description: "test key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        etudiant:
                          type: integer
                          example: 498
                        devoir:
                          type: integer
                          example: 388
                        date_devoir:
                          type: string
                          example: "2024-10-04"
                        note:
                          type: string
                          example: "15,4"
                        matiere:
                          type: integer
                          example: 314
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Etudiants (Students)
            summary: Modification of a student's grade for a test
            description: Modifies the grade of the student with the key {cle_etu} for the test with the key {cle_devoir}
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_devoir
                  in: path
                  description: "test key"
                  required: true
                  schema:
                    type: integer
                - name: note
                  in: query
                  description: note to be assigned. Can also be an annotation (Abs, N.Grad, N.Sbm*, Exemp, etc.). See documentation PRONOTE Campus
                  required: true
                  schema:
                    type: string
                    example: "15,5"
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        etudiant:
                          type: integer
                          example: 498
                        devoir:
                          type: integer
                          example: 388
                        date_devoir:
                          type: string
                          example: "2024-10-04"
                        note:
                          type: string
                          example: "15,4"
                        matiere:
                          type: integer
                          example: 314
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /etudiants/{cle_etu}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Etudiants (Students)
            summary: Rubrics allocated to the student for the family
            description: Rubrics allocated to the student with the key {cle_etu} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', 'rubrique_libre' allows to obtain the available rubric of this family. In the case of ‘predefined rubrics', ‘rubrics' allows you to obtain the table (key and name) of all allocated rubrics.
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
        post:
            tags:
                - Etudiants (Students)
            summary: Modification of the rubrics allocated to the student for the family
            description: Modifies the rubrics allocated to the student with the key {cle_etu} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', specified 'rubrique_libre' to modify the available rubric for this family. In the case of ‘predefined rubrics', fill in ‘rubrics' with the table of keys of the wanted rubrics.
            parameters:
                - name: cle_etu
                  in: path
                  description: "student key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
                - name: rubrique_libre
                  in: query
                  description: designation of the available ruric. Only  in the case of a family of available rurics.
                  required: true
                  schema:
                    type: string
                - name: rubriques
                  in: query
                  description: Table of the predefined rubric keys of the family. Only in the case of a family with predefined rubrics.
                  required: true
                  schema:
                    type: array
                    items:
                      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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
              '500':    # status code
                description: "'Modification impossible' or 'Insufficient rights'"
    #### Matieres ####
    /matieres:
        get:
            tags:
                - Matieres (Subjects)
            summary: List of all the subjects
            description: Table containing the json of the subjects in the base, sorted by designation and then code by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - libelle
                      - code
                      - libelle_long
                      - uid_identifiant
                      - couleur
                      - proprietaire
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, libelle, code]   # ?select=cle,libelle,code
                - name: cle
                  in: query
                  description: returns only the subjects having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: libelle
                  in: query
                  description: returns only the subjects having one of these designations
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single designation wanted
                      value: [maths]   # ?libelle=maths
                    multipleIds:
                      summary: Example with several designations wanted
                      value: [maths, francais, histoire]   # ?libelle=maths,francais,histoire
                - name: code
                  in: query
                  description: returns only the subjects having one of these codes
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single code wanted
                      value: [mths]   # ?code=mths
                    multipleIds:
                      summary: Example with several codes wanted
                      value: [mths, fr, hist]   # ?code=mths,fr,hist
                - name: uid_identifiant
                  in: query
                  description: returns only the subjects having one of these uid_identifiiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single uid_identifier wanted
                      value: [mths]   # ?uid_identifiant=mths
                    multipleIds:
                      summary: Example with several uid_identifiers wanted
                      value: [mths, fr, hist]   # ?uid_identifiant=mths,fr,hist
            responses:
              '200':    # status code
                description: JSON table of the subjects
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Matieres'
        post:
            tags:
                - Matieres (Subjects)
            summary: Creation of a new subject
            description: Creates a new subject in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      libelle:
                        type: string
                        example: "English"
                      code:
                        type: string
                        example: "LV1"
                      couleur:
                        type: string
                        example: "#FFFF80"
                      uid_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      libelle_long:
                        type: string
                        example: "Here is a slightly longer designation"
                      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: "Published on all the Webspaces"
                      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"
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Matieres'
              '400':    # status code
                description: "Invalid parameters: designation compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /matieres/{cle}:
        get:
            tags:
                - Matieres (Subjects)
            summary: Json of the subject with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "subject key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Matieres'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Matieres (Subjects)
            summary: Partial update of a subject
            description: Modifies the fields of the subject with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "subject key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      libelle:
                        type: string
                        example: "English"
                      code:
                        type: string
                        example: "LV1"
                      couleur:
                        type: string
                        example: "#FFFF80"
                      uid_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      libelle_long:
                        type: string
                        example: "Here is a slightly longer designation"
                      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: "Published on all the Webspaces"
                      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"
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Matieres'
              '400':    # status code
                description: "Invalid parameters: designation compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent subject"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Matieres (Subjects)
            summary: Deletion of a subject
            description: Permanently deletes the subject with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /matieres/supprimer:
        post:
            tags:
                - Matieres (Subjects)
            summary: Deletion of several subjects
            description: Delete the subjects whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the subjects to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /matieres/{cle_mat}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Matieres (Subjects)
            summary: Rubrics allocated to the subject for the family
            description: Rubrics allocated to the subject with the key {cle_mat} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', 'rubrique_libre' allows to obtain the available rubric of this family. In the case of ‘predefined rubrics', ‘rubrics' allows you to obtain the table (key and name) of all allocated rubrics.
            parameters:
                - name: cle_mat
                  in: path
                  description: "subject key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
        post:
            tags:
                - Matieres (Subjects)
            summary: Modification of the rubrics allocated to the subject for the family
            description: Modifies the rubrics allocated to the subject with the key {cle_mat} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', specified 'rubrique_libre' to modify the available rubric for this family. In the case of ‘predefined rubrics', fill in ‘rubrics' with the table of keys of the wanted rubrics.
            parameters:
                - name: cle_mat
                  in: path
                  description: "subject key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
                - name: rubrique_libre
                  in: query
                  description: designation of the available ruric. Only  in the case of a family of available rurics.
                  required: true
                  schema:
                    type: string
                - name: rubriques
                  in: query
                  description: Table of the predefined rubric keys of the family. Only in the case of a family with predefined rubrics.
                  required: true
                  schema:
                    type: array
                    items:
                      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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
              '500':    # status code
                description: "'Modification impossible' or 'Insufficient rights'"
    #### Modules ####
    /modules:
        get:
            tags:
                - Modules (Modules)
            summary: List of all the modules
            description: Table containing the json of the modules in the base, sorted by name and then code by default.
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - nom
                      - code
                      - proprietaire
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - name: cle
                  in: query
                  description: returns only the modules having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: returns only the modules having one of these names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Example with several names wanted
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - name: code
                  in: query
                  description: returns only the modules having one of these codes
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single code wanted
                      value: [mths]   # ?code=mths
                    multipleIds:
                      summary: Example with several codes wanted
                      value: [mths, fr, hist]   # ?code=mths,fr,hist
            responses:
              '200':    # status code
                description: JSON table of the modules
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Modules'
        post:
            tags:
                - Modules (Modules)
            summary: Creation of a a new module
            description: Creates a new module in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Modules'
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Modules'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /modules/{cle}:
        get:
            tags:
                - Modules (Modules)
            summary: Json of the module with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "module key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Modules'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Modules (Modules)
            summary: Partial update of a module
            description: Modifies the fields of the module with the key {cle} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "grading module key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Modules'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Modules'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent module"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Modules (Modules)
            summary: Deletion of a module
            description: Permanently deletes the module with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /modules/supprimer:
        post:
            tags:
                - Modules (Modules)
            summary: Deletion of several modules
            description: Delete the modules whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the modules to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /modules/{cle_mod}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Modules (Modules)
            summary: Rubrics allocated to the module for the family
            description: Rubrics allocated to the module with the key {cle_mod} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', 'rubrique_libre' allows to obtain the available rubric of this family. In the case of ‘predefined rubrics', ‘rubrics' allows you to obtain the table (key and name) of all allocated rubrics.
            parameters:
                - name: cle_mod
                  in: path
                  description: "module key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
        post:
            tags:
                - Modules (Modules)
            summary: Modification of the rubrics allocated to the module for the family
            description: Modifies the rubrics allocated to the module with the key {cle_mod} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', specified 'rubrique_libre' to modify the available rubric for this family. In the case of ‘predefined rubrics', fill in ‘rubrics' with the table of keys of the wanted rubrics.
            parameters:
                - name: cle_mod
                  in: path
                  description: "module key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
                - name: rubrique_libre
                  in: query
                  description: designation of the available ruric. Only  in the case of a family of available rurics.
                  required: true
                  schema:
                    type: string
                - name: rubriques
                  in: query
                  description: Table of the predefined rubric keys of the family. Only in the case of a family with predefined rubrics.
                  required: true
                  schema:
                    type: array
                    items:
                      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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
              '500':    # status code
                description: "'Modification impossible' or 'Insufficient rights'"
    #### Parents ####
    /parents:
        get:
            tags:
                - Parents (Parents)
            summary: List of all the parents
            description: Table containing the json of the parents in the base, sorted by surname,first name, address1 and civil status by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - nom
                      - uid_identifiant
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - name: cle
                  in: query
                  description: returns only the parents having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: returns only the parents having one of these names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [Dupond]   # ?nom=Dupond
                    multipleIds:
                      summary: Example with several names wanted
                      value: [Dupond, Dupont, Martin]   # ?nom=Dupond,Dupont,Martin
                - name: prenom
                  in: query
                  description: returns only the parents having one of these first names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single first name wanted
                      value: [Dominique]   # ?prenom=Dominique
                    multipleIds:
                      summary: Example with several first names wanted
                      value: [Dominique, Claude, Camille]   # ?prenom=Dominique,Claude,Camille
                - name: nom_naissance
                  in: query
                  description: returns only the parents having one of these names at birth
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [Dupond]   # ?nom_naissance=Dupond
                    multipleIds:
                      summary: Example with several names wanted
                      value: [Dupond, Dupont, Martin]   # ?nom_naissance=Dupond,Dupont,Martin
                - name: uid_identifiant
                  in: query
                  description: returns only the parents having one of these uid_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single uid_identifier wanted
                      value: [mths]   # ?uid_identifiant=mths
                    multipleIds:
                      summary: Example with several uid_identifiers wanted
                      value: [mths, fr, hist]   # ?uid_identifiant=mths,fr,hist
                - name: cas_identifiant
                  in: query
                  description: returns only the parents having one of these cas_identifiiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single cas_identifier wanted
                      value: [ident1]   # ?cas_identifiant=ident1
                    multipleIds:
                      summary: Example with several cas_identifiers wanted
                      value: [ident1, ident2, ident3]   # ?cas_identifiant=ident1,ident2,ident3
                - name: adfs_identifiant
                  in: query
                  description: returns only the parents having one of these adfs_identifiiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single adfs_identifier wanted
                      value: [ident1]   # ?adfs_identifiant=ident1
                    multipleIds:
                      summary: Example with several adfs_identifiers wanted
                      value: [ident1, ident2, ident3]   # ?adfs_identifiant=ident1,ident2,ident3
                - name: saml_identifiant
                  in: query
                  description: returns only the parents having one of these saml_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single saml_identifier wanted
                      value: [ident1]   # ?saml_identifiant=ident1
                    multipleIds:
                      summary: Example with several saml_identifiers wanted
                      value: [ident1, ident2, ident3]   # ?saml_identifiant=ident1,ident2,ident3
            responses:
              '200':    # status code
                description: JSON table of the parents
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Parents'
        post:
            tags:
                - Parents (Parents)
            summary: Creation of a new parent
            description: Creates a new parent in the base and initializes the fields based on the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      nom:
                        type: string
                        example: "Dupond"
                      prenom:
                        type: string
                        example: "Camille"
                      civilite:
                        type: string
                        example: "Mrs"
                      nom_naissance:
                        type: string
                        example: "Dupond"
                      email:
                        type: string
                        example: "firstname.surname@email.fr"
                      destinataire_courriers_absences:
                        type: boolean
                        example: true
                      uid_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      cas_identifiant:
                        type: string
                        example: "Identifiant__CAS"
                      adfs_identifiant:
                        type: string
                        example: "Identifier__ADFS"
                      saml_identifiant:
                        type: string
                        example: "Identifier__SAML"
                      commentaire:
                        type: string
                        example: "Here is a very useful comment"
                      profession:
                        type: string
                        example: "teacher"
                      situation_professionnelle:
                        type: string
                        example: "in activity"
                      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: "Identifier__connection"
                      acces_espace_parents:
                        type: boolean
                        example: true
                      mot_de_passe:
                        type: string
                        example: "fdrehm:lcfjnfj4"
                        description: Only for the modification, no visualization, must comply with the security policy
                      etudiants:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Parents'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /parents/{cle}:
        get:
            tags:
                - Parents (Parents)
            summary: Json of the parent with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "parent's key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Parents'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Parents (Parents)
            summary: Partial update of a parent
            description: Modifies the fields of the parent with the key {cle} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "parent key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      nom:
                        type: string
                        example: "Dupond"
                      prenom:
                        type: string
                        example: "Camille"
                      civilite:
                        type: string
                        example: "Mrs"
                      nom_naissance:
                        type: string
                        example: "Dupond"
                      email:
                        type: string
                        example: "firstname.surname@email.fr"
                      destinataire_courriers_absences:
                        type: boolean
                        example: true
                      uid_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      cas_identifiant:
                        type: string
                        example: "Identifiant__CAS"
                      adfs_identifiant:
                        type: string
                        example: "Identifier__ADFS"
                      saml_identifiant:
                        type: string
                        example: "Identifier__SAML"
                      commentaire:
                        type: string
                        example: "Here is a very useful comment"
                      profession:
                        type: string
                        example: "teacher"
                      situation_professionnelle:
                        type: string
                        example: "in activity"
                      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: "Identifier__connection"
                      acces_espace_parents:
                        type: boolean
                        example: true
                      mot_de_passe:
                        type: string
                        example: "fdrehm:lcfjnfj4"
                        description: Only for the modification, no visualization, must comply with the security policy
                      etudiants:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Parents'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent parent"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Parents (Parents)
            summary: Deletion of a parent
            description: Permanently deletes the parent with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /parents/supprimer:
        post:
            tags:
                - Parents (Parents)
            summary: Deletion of several parents
            description: Delete the parents whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the parents to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    #### Partitions ####
    /partitions:
        get:
            tags:
                - Partitions (Partitions)
            summary: List of all the partitions
            description: Table containing the json of the partitions in the base, sorted by class and then name by default.
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - nom
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - name: cle
                  in: query
                  description: returns only the partitions having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: returns only the partitions having one of these names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Example with several names wanted
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - name: promotion
                  in: query
                  description: returns only the partitions having one of these classes
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single class wanted
                      value: [12]   # ?promotion=12
                    multipleIds:
                      summary: Example with several classes wanted
                      value: [12, 15, 18]   # ?promotion=12,15,18
            responses:
              '200':    # status code
                description: JSON table of the partitions
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Partitions'
        post:
            tags:
                - Partitions (Partitions)
            summary: Creation of a new partition
            description: Creates a new partition in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Partitions'
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Partitions'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /partitions/{cle}:
        get:
            tags:
                - Partitions (Partitions)
            summary: Json of the partition with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "partition key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Partitions'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Partitions (Partitions)
            summary: Partial update of a partition
            description: Modifies the fields of the partition with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "partition key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Partitions'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Partitions'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent partition"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Partitions (Partitions)
            summary: Deletion of a partition
            description: Permanently deletes the partition with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /partitions/supprimer:
        post:
            tags:
                - Partitions (Partitions)
            summary: Deletion of several partitions
            description: Delete the partitions whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the partitions to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    #### Promotions ####
    /promotions:
        get:
            tags:
                - Promotions (Classes)
            summary: List of all the classes
            description: Table containing the json of the classes in the base, sorted by name and then code by default.
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - nom
                      - code
                      - libelle_long
                      - uid_identifiant
                      - proprietaire
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - name: cle
                  in: query
                  description: returns only the classes  having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: returns only the classes having one of these names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Example with several names wanted
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - name: code
                  in: query
                  description: returns only the classes having one of these codes
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single code wanted
                      value: [mths]   # ?code=mths
                    multipleIds:
                      summary: Example with several codes wanted
                      value: [mths, fr, hist]   # ?code=mths,fr,hist
                - name: uid_identifiant
                  in: query
                  description: returns only the classes having one of these uid_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single uid_identifier wanted
                      value: [mths]   # ?uid_identifiant=mths
                    multipleIds:
                      summary: Example with several uid_identifiers wanted
                      value: [mths, fr, hist]   # ?uid_identifiant=mths,fr,hist
            responses:
              '200':    # status code
                description: JSON table of the classes
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Promotions'
        post:
            tags:
                - Promotions (Classes)
            summary: Creation of a new class
            description: Creates a new class in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      nom:
                        type: string
                        example: "1GM1"
                      code:
                        type: string
                        example: "GM1"
                      couleur:
                        type: string
                        example: "#FFFF80"
                      uid_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      libelle_long:
                        type: string
                        example: "Here is a slightly longer designation"
                      email:
                        type: string
                        example: "1gm1@email.fr"
                      coordinateurs_pedagogiques:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      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
                      regroupement:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      calendrier:
                        type: string
                        example: "Calendar1"
                      proprietaire:
                        type: integer
                        example: 10
                      calendrier_notation:
                        type: integer
                        example: 10
                      periodes_hors_calendrier:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      modules_notation:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      services_notation:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      services_notation_avec_td_options:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      note_seuil_ects_rattrapage:
                        type: string
                        example: "10"
                      autoriser_rattrapage_ects:
                        type: boolean
                        example: true
                      module_attribution_ects_est_par_module:
                        type: boolean
                        example: true
                      mode_calcul_moyenne_generale_est_par_module:
                        type: boolean
                        example: true
                      url_ical:
                        type: string
                        example: "Telechargements/ical/Edt_Anglais.ics?version=2024.0.0.1&icalsecurise=24CEE16504BB2D17FD70B67A011D2C5B96540596C7BD07B638A178567BCD58E3F98E7A4441BFD412246468E475B6D44C&sw=1"
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Promotions'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /promotions/{cle}:
        get:
            tags:
                - Promotions (Classes)
            summary: Json of the class with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Promotions'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Promotions (Classes)
            summary: Partial update of a class
            description: Modifies the fields of the class with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "class key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      nom:
                        type: string
                        example: "1GM1"
                      code:
                        type: string
                        example: "GM1"
                      couleur:
                        type: string
                        example: "#FFFF80"
                      uid_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      libelle_long:
                        type: string
                        example: "Here is a slightly longer designation"
                      email:
                        type: string
                        example: "1gm1@email.fr"
                      coordinateurs_pedagogiques:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      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
                      regroupement:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      calendrier:
                        type: string
                        example: "Calendar1"
                      proprietaire:
                        type: integer
                        example: 10
                      calendrier_notation:
                        type: integer
                        example: 10
                      periodes_hors_calendrier:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      modules_notation:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      services_notation:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      services_notation_avec_td_options:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      note_seuil_ects_rattrapage:
                        type: string
                        example: "10"
                      autoriser_rattrapage_ects:
                        type: boolean
                        example: true
                      module_attribution_ects_est_par_module:
                        type: boolean
                        example: true
                      mode_calcul_moyenne_generale_est_par_module:
                        type: boolean
                        example: true
                      url_ical:
                        type: string
                        example: "Telechargements/ical/Edt_Anglais.ics?version=2024.0.0.1&icalsecurise=24CEE16504BB2D17FD70B67A011D2C5B96540596C7BD07B638A178567BCD58E3F98E7A4441BFD412246468E475B6D44C&sw=1"
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Promotions'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent class"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Promotions (Classes)
            summary: Deletion of a class
            description: Permanently deletes the class with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /promotions/supprimer:
        post:
            tags:
                - Promotions (Classes)
            summary: Deletion of several classes
            description: Delete the classes whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the classes to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /promotions/{cle}/etudiants:
        get:
            tags:
                - Promotions (Classes)
            summary: Keys of students of a class
            description: Keys of students of the class with the key {cle} on a specific date or between two dates If no parameters, returns the list of students as of today's date.
            parameters:
                - name: cle
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: date
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date=2024-08-06
                - name: date_debut
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date_debut=2024-08-06
                - name: date_fin
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-08"   # ?date_fin=2024-08-08
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        etudiants:
                          type: array
                          items:
                            type: integer
                            example: 10
              '400':    # status code
                description: "Invalid parameter: Dates outside limits, incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /promotions/{cle}/cours:
        get:
            tags:
                - Promotions (Classes)
            summary: Course keys of the class between 2 dates
            description: Course keys of the class with the key {cle} between 2 dates. If no parameters are specified, returns the list of courses for the entire domain.
            parameters:
                - name: cle
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: date_debut
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                - name: date_fin
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cours:
                          type: array
                          items:
                            type: integer
                          example: [388,400]
              '400':    # status code
                description: "Invalid parameter: Dates outside limits, incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /promotions/{cle_promo}/cours/{cle_cours}/domaine:
        get:
            tags:
                - Promotions (Classes)
            summary: Domain of presence of a class in a course
            description: Domain of presence of the class with the key {cle_promo} for course with the key {cle_cours} The domain is empty if the class is not in the course.
            parameters:
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: cle_cours
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        domaine:
                          type: array
                          items:
                            type: integer
                          example: [1, 2, 3]
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Promotions (Classes)
            summary: Modification a domain of presence for a class in a course
            description: Modifies the domain of presence of the class with the key {cle_promo} for the course with the key {cle_cours}. Allows adding a class to a course or removing it from that course. The domain can be passed in the URL ?domain=12,24,48. By default, it takes the entire domain.
            parameters:
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: cle_cours
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        domaine:
                          type: array
                          items:
                            type: integer
                          example: [1, 2, 3]
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /promotions/{cle}/indisponibilites:
        get:
            tags:
                - Promotions (Classes)
            summary: Class unavailable for one week
            description: Unavailability (in places) of the class with the key {cle} for a week.<br>
                         If no parameters are specified, returns the first week.<br>
                         A place corresponds to the time elapsed between Monday at 0:00 and the beginning of the unavailability.<br>
                         Caution, durations are expressed in 'days'<br>
                         For example, Monday noon = 12:00 p.m. = 12/24th day = 0.5 days.<br>
                         Wednesday noon = 24h (from entire Monday) + 24h (from entire Tuesday) + 12h (from Wednesday) = 60/24th = 2.5 days
            parameters:
                - name: cle
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: semaine
                  in: query
                  description: week
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_promotion:
                          type: integer
                          example: 388
                        semaine:
                          type: integer
                          example: 12
                        places_indisponibilites:
                          type: array
                          items:
                            type: number
                            example: 0.5
              '400':    # status code
                description: "Invalid parameter: week"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /promotions/{cle}/voeux:
        get:
            tags:
                - Promotions (Classes)
            summary: Wishes for a class for a week
            description: Wishes (in places) of the class with the key {cle} for a week.<br>
                         If no parameters are specified, returns the first week.<br>
                         A place corresponds to the time elapsed between Monday at 0:00 and the beginning of the wishes.<br>
                         Caution, durations are expressed in 'days'<br>
                         For example, Monday noon = 12:00 p.m. = 12/24th day = 0.5 days.<br>
                         Wednesday noon = 24h (from entire Monday) + 24h (from entire Tuesday) + 12h (from Wednesday) = 60/24th = 2.5 days
            parameters:
                - name: cle
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: semaine
                  in: query
                  description: week
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_promotion:
                          type: integer
                          example: 388
                        semaine:
                          type: integer
                          example: 12
                        places_voeux:
                          type: array
                          items:
                            type: number
                            example: 0.5
              '400':    # status code
                description: "Invalid parameter: week"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /promotions/{cle}/cout:
        get:
            tags:
                - Promotions (Classes)
            summary: Cost of a class in a domain
            description: Cost of the class with the key {cle} in a domain. If no parameters are specified, returns the cost for the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cle
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        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
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /promotions/cout:
        get:
            tags:
                - Promotions (Classes)
            summary: Costs of the classes in a domain
            description: Costs of the classes in a domain. If no parameters are specified, returns the cost for the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cles
                  in: query
                  description: "class keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        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
                                example: 10
                              cout:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /promotions/{cle}/duree_cours:
        get:
            tags:
                - Promotions (Classes)
            summary: Course duration of a class in a domain
            description: Course duration of the class with the key {cle} in the domain. If no parameters are specified, returns the duration over the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cle
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        avec_cours_non_places:
                          type: boolean
                          example: true
                        duree_cours:
                          type: number
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /promotions/duree_cours:
        get:
            tags:
                - Promotions (Classes)
            summary: Course duration of the classes in a domain
            description: Course duration of the classes in a domain. If no parameters are specified, returns the duration over the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cles
                  in: query
                  description: "class keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        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
                                example: 10
                              duree:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /promotions/{cle}/duree_disponible:
        get:
            tags:
                - Promotions (Classes)
            summary: Available duration of classes in a domain
            description: Available duration of the class with the key {cle} in a domain If no parameters are specified, returns the duration in the entire domain including public holidays.
            parameters:
                - name: cle
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        duree_disponible:
                          type: number
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /promotions/duree_disponible:
        get:
            tags:
                - Promotions (Classes)
            summary: Available duration of classes in a domain
            description: Available duration of classes in a domain. If no parameters are specified, returns the duration in the entire domain including public holidays.
            parameters:
                - name: cles
                  in: query
                  description: "class keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        duree_disponible:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 10
                              duree:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /promotions/{cle_promo}/matieres/{cle_mat}/matiere_personnalisee:
        get:
            tags:
                - Promotions (Classes)
            summary: Key of the subject assigned as a customized subject to a subject for a class
            description: Key of the subject assigned as a customized subject to the subject with the key {cle_mat} for the class with the key {cle_promo}
            parameters:
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: cle_mat
                  in: path
                  description: "subject key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_promotion:
                          type: integer
                          example: 388
                        cle_matiere:
                          type: integer
                          example: 125
                        cle_matiere_personnalisee:
                          type: integer
                          example: 120
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Promotions (Classes)
            summary: Modification of the subject assigned as customized subject to a subject for a class
            description: Modifies the subject assigned as a customized subject to the subject with the key {cle_mat} for the class with the key {cle_promo}
            parameters:
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: cle_mat
                  in: path
                  description: "subject key"
                  required: true
                  schema:
                    type: integer
                - name: matiere_personnalisee
                  in: query
                  description: key of the subject to be assigned as a customized subject
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_promotion:
                          type: integer
                          example: 388
                        cle_matiere:
                          type: integer
                          example: 125
                        cle_matiere_personnalisee:
                          type: integer
                          example: 120
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /promotions/{cles_promo}/matieres/{cles_mat}/matieres_personnalisees:
        get:
            tags:
                - Promotions (Classes)
            summary: Key of the subject assigned as a customized subject to each subject for each one of the classes
            description: Key of the subject assigned as a customized subject to each subject whose key is in {cles_mat} for each of the classes whose key is in {cles_promo}
            parameters:
                - name: cles_promo
                  in: path
                  description: keys for the wanted classes, separated by commas (3,4,5)
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: cles_mat
                  in: path
                  description: keys for the wanted subjects, separated by commas (3,4,5)
                  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_promotion:
                            type: integer
                            example: 388
                          cle_matiere:
                            type: integer
                            example: 125
                          cle_matiere_personnalisee:
                            type: integer
                            example: 120
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /promotions/{cle_promo}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Promotions (Classes)
            summary: Rubrics allocated to the class for the family
            description: Rubrics allocated to the class  with the key {cle_promo} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', 'rubrique_libre' allows to obtain the available rubric of this family. In the case of ‘predefined rubrics', ‘rubrics' allows you to obtain the table (key and name) of all allocated rubrics.
            parameters:
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
        post:
            tags:
                - Promotions (Classes)
            summary: Modification of the rubrics allocated to the class for the family
            description: Modifies the rubrics allocated to the class with the key {cle_promo} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', specified 'rubrique_libre' to modify the available rubric for this family. In the case of ‘predefined rubrics', fill in ‘rubrics' with the table of keys of the wanted rubrics.
            parameters:
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
                - name: rubrique_libre
                  in: query
                  description: designation of the available ruric. Only  in the case of a family of available rurics.
                  required: true
                  schema:
                    type: string
                - name: rubriques
                  in: query
                  description: Table of the predefined rubric keys of the family. Only in the case of a family with predefined rubrics.
                  required: true
                  schema:
                    type: array
                    items:
                      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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
              '500':    # status code
                description: "'Modification impossible' or 'Insufficient rights'"
    #### Regroupements ####
    /regroupements:
        get:
            tags:
                - Regroupements (Groupings)
            summary: List of all the groupings
            description: Table containing the json of the grouping in the base, sorted by name and then code by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - nom
                      - code
                      - uid_identifiant
                      - proprietaire
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - name: cle
                  in: query
                  description: returns only the groupings having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: returns only the groupings having one of these names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Example with several names wanted
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - name: code
                  in: query
                  description: returns only the groupings having one of these codes
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single code wanted
                      value: [mths]   # ?code=mths
                    multipleIds:
                      summary: Example with several codes wanted
                      value: [mths, fr, hist]   # ?code=mths,fr,hist
                - name: uid_identifiant
                  in: query
                  description: returns only the groupings having one of these uid_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single uid_identifier wanted
                      value: [mths]   # ?uid_identifiant=mths
                    multipleIds:
                      summary: Example with several uid_identifiers wanted
                      value: [mths, fr, hist]   # ?uid_identifiant=mths,fr,hist
            responses:
              '200':    # status code
                description: JSON table of the groupings
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Regroupements'
        post:
            tags:
                - Regroupements (Groupings)
            summary: Creation of a new grouping
            description: Creates a new grouping in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      nom:
                        type: string
                        example: "GM1-2"
                      code:
                        type: string
                        example: "1-2"
                      couleur:
                        type: string
                        example: "#FFFF80"
                      uid_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      effectif_saisi:
                        type: integer
                        example: 60
                      promotions:
                        type: array
                        items:
                          type: integer
                        example: [11,13,15]
                      td_options:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      proprietaire:
                        type: integer
                        example: 10
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Regroupements'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /regroupements/{cle}:
        get:
            tags:
                - Regroupements (Groupings)
            summary: Json of the grouping with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "grouping key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Regroupements'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Regroupements (Groupings)
            summary: Partial update of a grouping
            description: Modifies the fields of the grouping with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "grouping key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      nom:
                        type: string
                        example: "GM1-2"
                      code:
                        type: string
                        example: "1-2"
                      couleur:
                        type: string
                        example: "#FFFF80"
                      uid_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      effectif_saisi:
                        type: integer
                        example: 60
                      promotions:
                        type: array
                        items:
                          type: integer
                        example: [11,13,15]
                      td_options:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      proprietaire:
                        type: integer
                        example: 10
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Regroupements'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent grouping"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Regroupements (Groupings)
            summary: Deletion of a grouping
            description: Permanently deletes the grouping with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /regroupements/supprimer:
        post:
            tags:
                - Regroupements (Groupings)
            summary: Deletion of several groupings
            description: Delete the groupings whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the groupings to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /regroupements/{cle}/cours:
        get:
            tags:
                - Regroupements (Groupings)
            summary: Course keys of the grouping between 2 dates
            description: Course keys of the grouping with the key {cle} between 2 dates. If no parameters are specified, returns the list of courses for the entire domain.
            parameters:
                - name: cle
                  in: path
                  description: "grouping key"
                  required: true
                  schema:
                    type: integer
                - name: date_debut
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                - name: date_fin
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cours:
                          type: array
                          items:
                            type: integer
                          example: [388,400]
              '400':    # status code
                description: "Invalid parameter: Dates outside limits, incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /regroupements/{cle_regroup}/cours/{cle_cours}/domaine:
        get:
            tags:
                - Regroupements (Groupings)
            summary: Domain of presence of a grouping in a course
            description: Domain of presence of the grouping with the key {cle_regroup} for course with the key {cle_cours}. The domain is empty if the grouping is not in the course.
            parameters:
                - name: cle_regroup
                  in: path
                  description: "grouping key"
                  required: true
                  schema:
                    type: integer
                - name: cle_cours
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        domaine:
                          type: array
                          items:
                            type: integer
                          example: [1, 2, 3]
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Regroupements (Groupings)
            summary: Modification a domain of presence for a grouping in a course
            description: Modifies the domain of presence of the grouping with the key {cle_regroup} for the course with the key {cle_cours}. Allows adding a grouping to a course or removing it from that course. The domain can be passed in the URL ?domain=12,24,48. By default, it takes the entire domain.
            parameters:
                - name: cle_regroup
                  in: path
                  description: "grouping key"
                  required: true
                  schema:
                    type: integer
                - name: cle_cours
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        domaine:
                          type: array
                          items:
                            type: integer
                          example: [1, 2, 3]
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /regroupements/{cle}/cout:
        get:
            tags:
                - Regroupements (Groupings)
            summary: Cost of a grouping in a domain
            description: Cost of the grouping with the key {cle} in a domain. If no parameters are specified, returns the cost for the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cle
                  in: path
                  description: "grouping key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        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
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /regroupements/cout:
        get:
            tags:
                - Regroupements (Groupings)
            summary: Cost of the groupings in a domain
            description: Cost of the groupings in a domain. If no parameters are specified, returns the cost for the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cles
                  in: query
                  description: "grouping keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        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
                                example: 10
                              cout:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /regroupements/{cle}/duree_cours:
        get:
            tags:
                - Regroupements (Groupings)
            summary: Course duration of a grouping in a domain
            description: Course duration of the grouping with the key {cle} in the domain. If no parameters are specified, returns the duration over the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cle
                  in: path
                  description: "grouping key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        avec_cours_non_places:
                          type: boolean
                          example: true
                        duree_cours:
                          type: number
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /regroupements/duree_cours:
        get:
            tags:
                - Regroupements (Groupings)
            summary: Course duration of the groupings in a domain
            description: Course duration of the groupings in a domain. If no parameters are specified, returns the duration over the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cles
                  in: query
                  description: "grouping keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        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
                                example: 10
                              duree:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /regroupements/{cle}/duree_disponible:
        get:
            tags:
                - Regroupements (Groupings)
            summary: Available duration of a grouping in a domain
            description: Available duration of the grouping with the key {cle} in a domain If no parameters are specified, returns the duration in the entire domain including public holidays.
            parameters:
                - name: cle
                  in: path
                  description: "grouping key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        duree_disponible:
                          type: number
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /regroupements/duree_disponible:
        get:
            tags:
                - Regroupements (Groupings)
            summary: Available duration of groupings in a domain
            description: Available duration of groupings in a domain. If no parameters are specified, returns the duration in the entire domain including public holidays.
            parameters:
                - name: cles
                  in: query
                  description: "grouping keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        duree_disponible:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 10
                              duree:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /regroupements/{cle_regroup}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Regroupements (Groupings)
            summary: Rubrics allocated to the grouping for the family
            description: Rubrics allocated to the grouping with the key {cle_regroup} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', 'rubrique_libre' allows to obtain the available rubric of this family. In the case of ‘predefined rubrics', ‘rubrics' allows you to obtain the table (key and name) of all allocated rubrics.
            parameters:
                - name: cle_regroup
                  in: path
                  description: "grouping key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
        post:
            tags:
                - Regroupements (Groupings)
            summary: Modification of the rubrics allocated to the groupings for the family
            description: Modifies the rubrics allocated to the grouping with the key {cle_regroup} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', specified 'rubrique_libre' to modify the available rubric for this family. In the case of ‘predefined rubrics', fill in ‘rubrics' with the table of keys of the wanted rubrics.
            parameters:
                - name: cle_regroup
                  in: path
                  description: "grouping key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
                - name: rubrique_libre
                  in: query
                  description: designation of the available ruric. Only  in the case of a family of available rurics.
                  required: true
                  schema:
                    type: string
                - name: rubriques
                  in: query
                  description: Table of the predefined rubric keys of the family. Only in the case of a family with predefined rubrics.
                  required: true
                  schema:
                    type: array
                    items:
                      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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
              '500':    # status code
                description: "'Modification impossible' or 'Insufficient rights'"
    #### Salles ####
    /salles:
        get:
            tags:
                - Salles (Rooms)
            summary: List of all the rooms
            description: Table containing the json of the rooms in the base, sorted by name and then code by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - nom
                      - code
                      - uid_identifiant
                      - proprietaire
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - name: cle
                  in: query
                  description: returns only the rooms having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: returns only the rooms having one of these names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Example with several names wanted
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - name: code
                  in: query
                  description: returns only the rooms having one of these codes
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single code wanted
                      value: [mths]   # ?code=mths
                    multipleIds:
                      summary: Example with several codes wanted
                      value: [mths, fr, hist]   # ?code=mths,fr,hist
                - name: uid_identifiant
                  in: query
                  description: returns only the rooms having one of these uid_identifiiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single uid_identifier wanted
                      value: [mths]   # ?uid_identifiant=mths
                    multipleIds:
                      summary: Example with several uid_identifiers wanted
                      value: [mths, fr, hist]   # ?uid_identifiant=mths,fr,hist
            responses:
              '200':    # status code
                description: JSON table of the rooms
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Salles'
        post:
            tags:
                - Salles (Rooms)
            summary: Creation of a new room
            description: Creates a new room in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      nom:
                        type: string
                        example: "Salle 001"
                      code:
                        type: string
                        example: "001"
                      libelle_long:
                        type: string
                        example: "Here is a slightly longer designation"
                      numero_telephone_fixe:
                        type: string
                        example: "04040404"
                      indicatif_telephone_fixe:
                        type: string
                        example: "04"
                      uid_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      capacite:
                        type: integer
                        example: 50
                      acces_pmr:
                        type: boolean
                        example: true
                      chaises_ergo:
                        type: integer
                        example: 5
                      handiboucle:
                        type: boolean
                        example: true
                      nombre_salles_max:
                        type: integer
                        example: 10
                      proprietaire:
                        type: integer
                        example: 10
                      publication:
                        type: string
                        example: "Published on all the Webspaces"
                      site:
                        type: string
                        example: "Principal"
                      descriptif:
                        type: string
                        example: "Room description"
                      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
                        description: "attention, seulement pour les salles simples"
                      salles_de_ce_groupe_de_salle:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                        description: "attention, seulement pour les groupes de salles"
                      cout_horaire:
                        type: integer
                        example: 10
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Salles'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /salles/{cle}:
        get:
            tags:
                - Salles (Rooms)
            summary: Json of the room with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "room key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Salles'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Salles (Rooms)
            summary: Partial update of a room
            description: Modifies the fields of the room with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "room key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      nom:
                        type: string
                        example: "Salle 001"
                      code:
                        type: string
                        example: "001"
                      libelle_long:
                        type: string
                        example: "Here is a slightly longer designation"
                      numero_telephone_fixe:
                        type: string
                        example: "04040404"
                      indicatif_telephone_fixe:
                        type: string
                        example: "04"
                      uid_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      capacite:
                        type: integer
                        example: 50
                      acces_pmr:
                        type: boolean
                        example: true
                      chaises_ergo:
                        type: integer
                        example: 5
                      handiboucle:
                        type: boolean
                        example: true
                      nombre_salles_max:
                        type: integer
                        example: 10
                      proprietaire:
                        type: integer
                        example: 10
                      publication:
                        type: string
                        example: "Published on all the Webspaces"
                      site:
                        type: string
                        example: "Principal"
                      descriptif:
                        type: string
                        example: "Room description"
                      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
                        description: "attention, seulement pour les salles simples"
                      salles_de_ce_groupe_de_salle:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                        description: "attention, seulement pour les groupes de salles"
                      cout_horaire:
                        type: integer
                        example: 10
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Salles'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent room"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Salles (Rooms)
            summary: Deletion of a room
            description: Permanently deletes the room with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /salles/supprimer:
        post:
            tags:
                - Salles (Rooms)
            summary: Deletion of several rooms
            description: Delete the rooms whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the rooms to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /salles/{cle}/cours:
        get:
            tags:
                - Salles (Rooms)
            summary: Course keys of a room with between 2 dates
            description: Course keys of the room with the key {cle} between 2 dates. If no parameters are specified, returns the list of courses for the entire domain.
            parameters:
                - name: cle
                  in: path
                  description: "room key"
                  required: true
                  schema:
                    type: integer
                - name: date_debut
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                - name: date_fin
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cours:
                          type: array
                          items:
                            type: integer
                          example: [388,400]
              '400':    # status code
                description: "Invalid parameter: Dates outside limits, incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /salles/{cle_salle}/cours/{cle_cours}/domaine:
        get:
            tags:
                - Salles (Rooms)
            summary: Domain of presence of a room in a course
            description: Domain of presence of the room with the key {cle_salle} for course with the key {cle_cours}. The domain is empty if the room is not in the course.
            parameters:
                - name: cle_salle
                  in: path
                  description: "room key"
                  required: true
                  schema:
                    type: integer
                - name: cle_cours
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        domaine:
                          type: array
                          items:
                            type: integer
                          example: [1, 2, 3]
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Salles (Rooms)
            summary: Modification a domain of presence for a room in a course
            description: Modifies the domain of presence of the room with the key {cle_salle} for the course with the key {cle_cours}. Allows adding a room to a course or removing it from that course. The domain can be passed in the URL ?domain=12,24,48. By default, it takes the entire domain.
            parameters:
                - name: cle_salle
                  in: path
                  description: "room key"
                  required: true
                  schema:
                    type: integer
                - name: cle_cours
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        domaine:
                          type: array
                          items:
                            type: integer
                          example: [1, 2, 3]
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /salles/{cle}/indisponibilites:
        get:
            tags:
                - Salles (Rooms)
            summary: Room unavailability for one week
            description: Unavailability (in places) of the room with the key  {cle} for a week.<br>
                         If no parameters are specified, returns the first week.<br>
                         A place corresponds to the time elapsed between Monday at 0:00 and the beginning of the unavailability.<br>
                         Caution, durations are expressed in 'days'<br>
                         For example, Monday noon = 12:00 p.m. = 12/24th day = 0.5 days.<br>
                         Wednesday noon = 24h (from entire Monday) + 24h (from entire Tuesday) + 12h (from Wednesday) = 60/24th = 2.5 days
            parameters:
                - name: cle
                  in: path
                  description: "room key"
                  required: true
                  schema:
                    type: integer
                - name: semaine
                  in: query
                  description: week
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_salle:
                          type: integer
                          example: 388
                        semaine:
                          type: integer
                          example: 12
                        places_indisponibilites:
                          type: array
                          items:
                            type: number
                            example: 0.5
              '400':    # status code
                description: "Invalid parameter: week"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /salles/{cle}/voeux:
        get:
            tags:
                - Salles (Rooms)
            summary: Wishes for a room for a week
            description: Wishes (in places) of the room with the key {cle} for a week.<br>
                         If no parameters are specified, returns the first week.<br>
                         A place corresponds to the time elapsed between Monday at 0:00 and the beginning of the wishes.<br>
                         Caution, durations are expressed in 'days'<br>
                         For example, Monday noon = 12:00 p.m. = 12/24th day = 0.5 days.<br>
                         Wednesday noon = 24h (from entire Monday) + 24h (from entire Tuesday) + 12h (from Wednesday) = 60/24th = 2.5 days
            parameters:
                - name: cle
                  in: path
                  description: "room key"
                  required: true
                  schema:
                    type: integer
                - name: semaine
                  in: query
                  description: week
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_salle:
                          type: integer
                          example: 388
                        semaine:
                          type: integer
                          example: 12
                        places_voeux:
                          type: array
                          items:
                            type: number
                            example: 0.5
              '400':    # status code
                description: "Invalid parameter: week"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /salles/{cle}/cout:
        get:
            tags:
                - Salles (Rooms)
            summary: Cost of a room in a domain
            description: Cost of the room with the key {cle} in a domain. If no parameters are specified, returns the cost for the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cle
                  in: path
                  description: "room key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        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
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /salles/cout:
        get:
            tags:
                - Salles (Rooms)
            summary: Costs of the rooms in a domain
            description: Costs of the rooms in a domain. If no parameters are specified, returns the cost for the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cles
                  in: query
                  description: "room keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        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
                                example: 10
                              cout:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /salles/{cle}/duree_cours:
        get:
            tags:
                - Salles (Rooms)
            summary: Course duration of a room in a domain
            description: Course duration of the room with the key {cle} in the domain If no parameters are specified, returns the duration over the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cle
                  in: path
                  description: "room key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        avec_cours_non_places:
                          type: boolean
                          example: true
                        duree_cours:
                          type: number
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /salles/duree_cours:
        get:
            tags:
                - Salles (Rooms)
            summary: Course duration of the rooms in a domain
            description: Course duration of the rooms in a domain. If no parameters are specified, returns the duration over the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cles
                  in: query
                  description: "room keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        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
                                example: 10
                              duree:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /salles/{cle}/duree_disponible:
        get:
            tags:
                - Salles (Rooms)
            summary: Available duration of a room in a domain
            description: Available duration of the room with the key {cle} in a domain If no parameters are specified, returns the duration in the entire domain including public holidays.
            parameters:
                - name: cle
                  in: path
                  description: "room key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        duree_disponible:
                          type: number
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /salles/duree_disponible:
        get:
            tags:
                - Salles (Rooms)
            summary: Available duration of rooms in a domain
            description: Available duration of rooms in a domain. If no parameters are specified, returns the duration in the entire domain including public holidays.
            parameters:
                - name: cles
                  in: query
                  description: "room keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        duree_disponible:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 10
                              duree:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /salles/{cle_salle}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Salles (Rooms)
            summary: Rubrics allocated to the room for the family
            description: Rubrics allocated to the room with the key {cle_salle} for the family with the key {cle_fam} If the mode of the family is 'Available rubric', 'rubrique_libre' allows to obtain the available rubric of this family. In the case of ‘predefined rubrics', ‘rubrics' allows you to obtain the table (key and name) of all allocated rubrics.
            parameters:
                - name: cle_salle
                  in: path
                  description: "room key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
        post:
            tags:
                - Salles (Rooms)
            summary: Modification of the rubrics allocated to the room for the family
            description: Modifies the rubrics allocated to the room with the key {cle_salle} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', specified 'rubrique_libre' to modify the available rubric for this family. In the case of ‘predefined rubrics', fill in ‘rubrics' with the table of keys of the wanted rubrics.
            parameters:
                - name: cle_salle
                  in: path
                  description: "room key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
                - name: rubrique_libre
                  in: query
                  description: designation of the available ruric. Only  in the case of a family of available rurics.
                  required: true
                  schema:
                    type: string
                - name: rubriques
                  in: query
                  description: Table of the predefined rubric keys of the family. Only in the case of a family with predefined rubrics.
                  required: true
                  schema:
                    type: array
                    items:
                      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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
              '500':    # status code
                description: "'Modification impossible' or 'Insufficient rights'"
    #### TDOptions ####
    /tdoptions:
        get:
            tags:
                - TDOptions (TutorialOptions)
            summary: List of all the tutorials/options
            description: Table containing the json of the tutoriale/options in the base, sorted by name and then code by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - nom
                      - code
                      - uid_identifiant
                      - proprietaire
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom, code]   # ?select=cle,nom,code
                - name: cle
                  in: query
                  description: returns only the tutorials/options having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: returns only the tutorials/options having one of these names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Example with several names wanted
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - name: code
                  in: query
                  description: returns only the tutorials/options having one of these codes
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single code wanted
                      value: [mths]   # ?code=mths
                    multipleIds:
                      summary: Example with several codes wanted
                      value: [mths, fr, hist]   # ?code=mths,fr,hist
                - name: uid_identifiant
                  in: query
                  description: returns only the tutorials/options having one of these uid_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single uid_identifier wanted
                      value: [mths]   # ?uid_identifiant=mths
                    multipleIds:
                      summary: Example with several uid_identifiers wanted
                      value: [mths, fr, hist]   # ?uid_identifiant=mths,fr,hist
            responses:
              '200':    # status code
                description: JSON table of the tutorials/options
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/TDOptions'
        post:
            tags:
                - TDOptions (TutorialOptions)
            summary: Creation of a new tutorial/option
            description: Creates a new tutorial/option in the base and initializes the fields using the parameters passed in the JSON.
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      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: "Identifiant__UID"
                      effectif_saisi:
                        type: integer
                        example: 10
                      mhh:
                        type: number
                        example: 0
                      mhj:
                        type: number
                        example: 0.416666666666667
                      libelle_long:
                        type: string
                        example: "Here is a slightly longer designation"
                      email:
                        type: string
                        example: "TD1@mail.fr"
                      proprietaire:
                        type: integer
                        example: 10
                      publication_sur_tous_les_espaces:
                        type: boolean
                        example: true
                      calendrier:
                        type: string
                        example: "Calendar1"
                      promotion:
                        type: integer
                        example: 10
                      partition:
                        type: integer
                        example: 9
                      regroupement:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      services_notation:
                        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"
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/TDOptions'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /tdoptions/{cle}:
        get:
            tags:
                - TDOptions (TutorialOptions)
            summary: Json of the tutorial/option with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/TDOptions'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - TDOptions (TutorialOptions)
            summary: Partial update of a tutorial/option
            description: Modifies the fields of the tutorial option with the key {cle} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "tutorial/option key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      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: "Identifiant__UID"
                      effectif_saisi:
                        type: integer
                        example: 10
                      mhh:
                        type: number
                        example: 0
                      mhj:
                        type: number
                        example: 0.416666666666667
                      libelle_long:
                        type: string
                        example: "Here is a slightly longer designation"
                      email:
                        type: string
                        example: "TD1@mail.fr"
                      proprietaire:
                        type: integer
                        example: 10
                      publication_sur_tous_les_espaces:
                        type: boolean
                        example: true
                      calendrier:
                        type: string
                        example: "Calendar1"
                      promotion:
                        type: integer
                        example: 10
                      partition:
                        type: integer
                        example: 9
                      regroupement:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      services_notation:
                        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"
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/TDOptions'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent tutorial/option"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - TDOptions (TutorialOptions)
            summary: Deletion of a tutorial/option
            description: Permanently deletes the tutorial/option with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /tdoptions/supprimer:
        post:
            tags:
                - TDOptions (TutorialOptions)
            summary: Deletion of several tutorials/options
            description: Delete the tutorials/options whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the tutorials/options to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /tdoptions/{cle}/etudiants:
        get:
            tags:
                - TDOptions (TutorialOptions)
            summary: Keys of the students of a tutorial/option
            description: Keys of the students of a tutorial/option with the key {cle} on a date or between two dates. If no parameters, returns the list of students as of today's date.
            parameters:
                - name: cle
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
                - name: date
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date=2024-08-06
                - name: date_debut
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date_debut=2024-08-06
                - name: date_fin
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                  example: "2024-08-08"   # ?date_fin=2024-08-08
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        etudiants:
                          type: array
                          items:
                            type: integer
                            example: 10
              '400':    # status code
                description: "Invalid parameter: Dates outside limits, incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /tdoptions/{cle}/cours:
        get:
            tags:
                - TDOptions (TutorialOptions)
            summary: Course keys of a tutorial/option between 2 dates
            description: Course keys of the tutorial/option with the key {cle} between 2 dates If no parameters are specified, returns the list of courses for the entire domain.
            parameters:
                - name: cle
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
                - name: date_debut
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
                - name: date_fin
                  in: query
                  description: Date in string format 'yyyy-mm-dd'
                  schema:
                    type: string
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cours:
                          type: array
                          items:
                            type: integer
                          example: [388,400]
              '400':    # status code
                description: "Invalid parameter: Dates outside limits, incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /tdoptions/{cle_TDOpt}/cours/{cle_cours}/domaine:
        get:
            tags:
                - TDOptions (TutorialOptions)
            summary: Domain of presence of a tutorial/option in a course
            description: Domain of presence of the tutorial/option with the key {cle_TDOpt} for course with the key {cle_cours}. The domain is empty if the tutorial/option is not in the course.
            parameters:
                - name: cle_TDOpt
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
                - name: cle_cours
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        domaine:
                          type: array
                          items:
                            type: integer
                          example: [1, 2, 3]
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - TDOptions (TutorialOptions)
            summary: Modification an attendance domain of a tutorial/option in a course
            description: Modifies the domain of presence of the tutorial/option with the key {cle_TDOpt} for the course with the key {cle_cours}. Allows adding a tutorial/option to a course or removing it from that course. The domain can be passed in the URL ?domain=12,24,48. By default, it takes the entire domain.
            parameters:
                - name: cle_TDOpt
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
                - name: cle_cours
                  in: path
                  description: "course key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        domaine:
                          type: array
                          items:
                            type: integer
                          example: [1, 2, 3]
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /tdoptions/{cle}/indisponibilites:
        get:
            tags:
                - TDOptions (TutorialOptions)
            summary: Tutorial/option unavailability for one week
            description: Unavailability (in places) of the tutorial/option with the key {cle} for a week.<br>
                         If no parameters are specified, returns the first week.<br>
                         A place corresponds to the time elapsed between Monday at 0:00 and the beginning of the unavailability.<br>
                         Caution, durations are expressed in 'days'<br>
                         For example, Monday noon = 12:00 p.m. = 12/24th day = 0.5 days.<br>
                         Wednesday noon = 24h (from entire Monday) + 24h (from entire Tuesday) + 12h (from Wednesday) = 60/24th = 2.5 days
            parameters:
                - name: cle
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
                - name: semaine
                  in: query
                  description: week
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_tdoption:
                          type: integer
                          example: 388
                        semaine:
                          type: integer
                          example: 12
                        places_indisponibilites:
                          type: array
                          items:
                            type: number
                            example: 0.5
              '400':    # status code
                description: "Invalid parameter: week"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /tdoptions/{cle}/voeux:
        get:
            tags:
                - TDOptions (TutorialOptions)
            summary: Wishes for a tutorial/option for a week
            description: Wishes (in places) of the tutorial/option with the key {cle} for a week.<br>
                         If no parameters are specified, returns the first week.<br>
                         A place corresponds to the time elapsed between Monday at 0:00 and the beginning of the wishes.<br>
                         Caution, durations are expressed in 'days'<br>
                         For example, Monday noon = 12:00 p.m. = 12/24th day = 0.5 days.<br>
                         Wednesday noon = 24h (from entire Monday) + 24h (from entire Tuesday) + 12h (from Wednesday) = 60/24th = 2.5 days
            parameters:
                - name: cle
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
                - name: semaine
                  in: query
                  description: week
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_tdoption:
                          type: integer
                          example: 388
                        semaine:
                          type: integer
                          example: 12
                        places_voeux:
                          type: array
                          items:
                            type: number
                            example: 0.5
              '400':    # status code
                description: "Invalid parameter: week"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /tdoptions/{cle}/cout:
        get:
            tags:
                - TDOptions (TutorialOptions)
            summary: Cost of a tutorial/option in a domain
            description: Cost of the tutorial/option with the key {cle} in a domain. If no parameters are specified, returns the cost for the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cle
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        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
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /tdoptions/cout:
        get:
            tags:
                - TDOptions (TutorialOptions)
            summary: Costs of tutorials/options in a domain
            description: Costs of tutorials/options in a domain. If no parameters are specified, returns the cost for the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cles
                  in: query
                  description: "tutorial/option keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        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
                                example: 10
                              cout:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /tdoptions/{cle}/duree_cours:
        get:
            tags:
                - TDOptions (TutorialOptions)
            summary: Course duration of a tutorial/optional in a domain
            description: Course duration of the tutorial/option with the key {cle} in the domain. If no parameters are specified, returns the duration over the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cle
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        avec_cours_non_places:
                          type: boolean
                          example: true
                        duree_cours:
                          type: number
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /tdoptions/duree_cours:
        get:
            tags:
                - TDOptions (TutorialOptions)
            summary: Course duration of the tutorials/options in a domain
            description: Course duration of the tutorials/options in a domain. If no parameters are specified, returns the duration over the entire domain, including holidays and unplaced courses.
            parameters:
                - name: cles
                  in: query
                  description: "tutorial/option keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
                - name: avec_cours_non_places
                  in: query
                  description: Boolean indicating whether or not to take unplaced courses into account
                  schema:
                    type: boolean
            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]
                        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
                                example: 10
                              duree:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /tdoptions/{cle}/duree_disponible:
        get:
            tags:
                - TDOptions (TutorialOptions)
            summary: Available duration of a tutorial/option in a domain
            description: Available duration of the tutorial/option with the key {cle} in a domain If no parameters are specified, returns the duration in the entire domain including public holidays.
            parameters:
                - name: cle
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        duree_disponible:
                          type: number
                          example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /tdoptions/duree_disponible:
        get:
            tags:
                - TDOptions (TutorialOptions)
            summary: Available duration of tutorials/options in a domain
            description: Available duration of tutorials/options in a domain. If no parameters are specified, returns the duration in the entire domain including public holidays.
            parameters:
                - name: cles
                  in: query
                  description: "tutorial/option keys"
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: domaine
                  in: query
                  description: Domain (table of weeks)
                  schema:
                    type: array
                    items:
                      type: integer
                - name: avec_jours_feries
                  in: query
                  description: Boolean indicating whether or not to take holidays into account
                  schema:
                    type: boolean
            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]
                        avec_jours_feries:
                          type: boolean
                          example: true
                        duree_disponible:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 10
                              duree:
                                type: number
                                example: 0.5
              '400':    # status code
                description: "Invalid parameter: incorrect format"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /tdoptions/{cle_tdopt}/matieres/{cle_mat}/matiere_personnalisee:
        get:
            tags:
                - TDOptions (TutorialOptions)
            summary: Key of the subject assigned as a customized subject to a subject for a tutorial/option
            description: Key for the subject assigned as a customized subject to the subject with the key {cle_mat} for the tutorial/option with the key {cle_TDOpt}
            parameters:
                - name: cle_tdopt
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
                - name: cle_mat
                  in: path
                  description: "subject key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_tdoption:
                          type: integer
                          example: 388
                        cle_matiere:
                          type: integer
                          example: 125
                        cle_matiere_personnalisee:
                          type: integer
                          example: 120
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - TDOptions (TutorialOptions)
            summary: Modification the subject assigned as a customized subject to the subject for a tutorial/option
            description: Modifies the subject assigned as a customized subject to the subject with the key {cle_mat} for the tutorial/option with the key {cle_TDOpt}
            parameters:
                - name: cle_tdopt
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
                - name: cle_mat
                  in: path
                  description: "subject key"
                  required: true
                  schema:
                    type: integer
                - name: matiere_personnalisee
                  in: query
                  description: key of the subject to be assigned as a customized subject
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_tdoption:
                          type: integer
                          example: 388
                        cle_matiere:
                          type: integer
                          example: 125
                        cle_matiere_personnalisee:
                          type: integer
                          example: 120
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /tdoptions/{cles_tdopt}/matieres/{cles_mat}/matieres_personnalisees:
        get:
            tags:
                - TDOptions (TutorialOptions)
            summary: Key of the subject assigned as a customized subject to each subject for each of the tutorials/options
            description: Key of the subject assigned as a customized subject to each subject whose key is in {cles_mat} for each of the tutorials/options whose key is in {cles_TDOpt}
            parameters:
                - name: cles_tdopt
                  in: path
                  description: keys for the wanted tutorials/options, separated by commas (3,4,5)
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: cles_mat
                  in: path
                  description: keys for the wanted subjects, separated by commas (3,4,5)
                  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_tdoption:
                            type: integer
                            example: 388
                          cle_matiere:
                            type: integer
                            example: 125
                          cle_matiere_personnalisee:
                            type: integer
                            example: 120
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /tdoptions/{cle_tdopt}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - TDOptions (TutorialOptions)
            summary: Rubrics allocated to the tutorial/option for the family
            description: Rubrics allocated to the tutorial/option with the key {cle_tdopt} for the family with the key{cle_fam}. If the mode of the family is 'Available rubric', 'rubrique_libre' allows to obtain the available rubric of this family. In the case of ‘predefined rubrics', ‘rubrics' allows you to obtain the table (key and name) of all allocated rubrics.
            parameters:
                - name: cle_tdopt
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
        post:
            tags:
                - TDOptions (TutorialOptions)
            summary: Modification of the rubrics allocated to the tutorial/option for the family
            description: Modifies the rubrics allocated to the tutorial/option with the key {cle_tdopt} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', specified 'rubrique_libre' to modify the available rubric for this family. In the case of ‘predefined rubrics', fill in ‘rubrics' with the table of keys of the wanted rubrics.
            parameters:
                - name: cle_tdopt
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
                - name: rubrique_libre
                  in: query
                  description: designation of the available ruric. Only  in the case of a family of available rurics.
                  required: true
                  schema:
                    type: string
                - name: rubriques
                  in: query
                  description: Table of the predefined rubric keys of the family. Only in the case of a family with predefined rubrics.
                  required: true
                  schema:
                    type: array
                    items:
                      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: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
              '500':    # status code
                description: "'Modification impossible' or 'Insufficient rights'"
    #### Baccalaureats ####
    /baccalaureats:
        get:
            tags:
                - Baccalaureats (Baccalaureats)
            summary: List of all the baccalaureates
            description: Table containing the json of the baccalaureates in the base, sorted by name by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - nom
                      - code
                      - type
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [nom]   # ?select=nom
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [nom, code]   # ?select=nom,code
                - name: nom
                  in: query
                  description: returns only the baccalaureates having one of these names
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [SCIENTIFIQUE]   # ?nom=SCIENTIFIQUE
                    multipleIds:
                      summary: Example with several names wanted
                      value: [SCIENTIFIQUE, LITTÉRAIRE]   # ?nom=SCIENTIFIQUE,LITTÉRAIRE
                - name: code
                  in: query
                  description: returns only the baccalaureates having one of these codes
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single code wanted
                      value: [S]   # ?code=S
                    multipleIds:
                      summary: Example with several codes wanted
                      value: [S, L]   # ?code=S,L
                - name: type
                  in: query
                  description: returns only the baccalaureates having one of these types
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single type wanted
                      value: [Autre]   # ?type=Autre
                    multipleIds:
                      summary: Example with several types wanted
                      value: [Autre, Équivalence]   # ?type=Autre,Équivalence
            responses:
              '200':    # status code
                description: JSON table of the baccalaureates
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Baccalaureats'
    /baccalaureats/{code}:
        get:
            tags:
                - Baccalaureats (Baccalaureats)
            summary: Json of the baccalaureate with the code {code}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: code
                  in: path
                  description: "baccalaureate code"
                  required: true
                  schema:
                    type: string
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Baccalaureats'
              '400':    # status code
                description: "Invalid parameter"
    #### Baccalaureat_specialites ####
    /baccalaureat_specialites:
        get:
            tags:
                - Baccalaureat_specialites (Baccalaureat_specializations)
            summary: List of all the baccalaureate specializations
            description: Table containing the json of the baccalaureate specializations in the base, sorted by name by default.
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - nom
                      - code
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [nom]   # ?select=nom
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [nom, code]   # ?select=nom,code
                - name: nom
                  in: query
                  description: returns only the baccalaureate specializations having one of these names
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [MATHEMATIQUES]   # ?nom=MATHEMATIQUES
                    multipleIds:
                      summary: Example with several names wanted
                      value: [MATHEMATIQUES, PHYSIQUE-CHIMIE]   # ?nom=MATHEMATIQUES,PHYSIQUE-CHIMIE
                - name: code
                  in: query
                  description: returns only the baccalaureate specializations having one of these codes
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single code wanted
                      value: [MATHS]   # ?code=MATHS
                    multipleIds:
                      summary: Example with several codes wanted
                      value: [MATHS, PHY_CHI]   # ?code=MATHS,PHY_CHI
            responses:
              '200':    # status code
                description: JSON table of the baccalaureate specializations
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Baccalaureat_specialites'
    /baccalaureat_specialites/{code}:
        get:
            tags:
                - Baccalaureat_specialites (Baccalaureat_specializations)
            summary: Json of the baccalaureate specialization with the code {code}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: code
                  in: path
                  description: "baccalaureate specialization code"
                  required: true
                  schema:
                    type: string
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Baccalaureat_specialites'
              '400':    # status code
                description: "Invalid parameter"
    #### Departements ####
    /departements:
        get:
            tags:
                - Departements (Counties)
            summary: List of all the departments/counties
            description: Table containing the json of the departments/counties in the base, sorted by name by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - nom
                      - code
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [nom]   # ?select=nom
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [nom, code]   # ?select=nom,code
                - name: nom
                  in: query
                  description: returns only the departments/counties having one of these names
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [Ain]   # ?nom=Ain
                    multipleIds:
                      summary: Example with several names wanted
                      value: [Ain, Aisne, Allier]   # ?nom=Ain,Aisne,Allier
                - name: code
                  in: query
                  description: returns only the departments/counties having one of these codes
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single code wanted
                      value: [001]   # ?code=001
                    multipleIds:
                      summary: Example with several codes wanted
                      value: [001, 002, 003]   # ?code=001,002,003
            responses:
              '200':    # status code
                description: JSON table of the departments/counties
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Departements'
    /departements/{code}:
        get:
            tags:
                - Departements (Counties)
            summary: Json of the department/county with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: code
                  in: path
                  description: "department/county code"
                  required: true
                  schema:
                    type: string
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Departements'
              '400':    # status code
                description: "Invalid parameter"
    #### Type_dernier_diplome ####
    /type_dernier_diplome:
        get:
            tags:
                - Type_dernier_diplome (Last_diploma_type)
            summary: List of all the last diploma types
            description: Table containing the json of the last diploma types in the base, sorted by name by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - nom
                      - code
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [nom]   # ?select=nom
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [nom, code]   # ?select=nom,code
                - name: nom
                  in: query
                  description: returns only the last diploma types having one of these names
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [BTS]   # ?nom=BTS
                    multipleIds:
                      summary: Example with several names wanted
                      value: [BTS, DUT]   # ?nom=BTS,DUT
                - name: code
                  in: query
                  description: returns only the last diploma types having one of these codes
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single code wanted
                      value: [B]   # ?code=B
                    multipleIds:
                      summary: Example with several codes wanted
                      value: [B, C, A]   # ?code=B,C,A
            responses:
              '200':    # status code
                description: JSON table of the last diploma types
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Type_dernier_diplome'
    /type_dernier_diplome/{code}:
        get:
            tags:
                - Type_dernier_diplome (Last_diploma_type)
            summary: Json of the type of the last diploma with the code {code}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: code
                  in: path
                  description: "type of the last diploma code"
                  required: true
                  schema:
                    type: string
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Type_dernier_diplome'
              '400':    # status code
                description: "Invalid parameter"
    #### Etablissement_origine ####
    /etablissement_origine:
        get:
            tags:
                - Etablissement_origine (Institution_original)
            summary: List of all the original institutions
            description: Table containing the json of the original institutions in the base, sorted by name by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - nom
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom, email]   # ?select=cle,nom,email
                - name: cle
                  in: query
                  description: Filter on keys of the original institutions
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: Filter on the names of the original institutions
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [Etab1]   # ?nom=Etab1
                    multipleIds:
                      summary: Example with several names wanted
                      value: [Etab1, Etab2, Etab3]   # ?nom=Etab1,Etab2,Etab3
                - name: email
                  in: query
                  description: Filter on e-mails from the original institutions
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single e-mail wanted
                      value: [Etab1@email.fr]   # ?email=Etab1@email.fr
                    multipleIds:
                      summary: Example with several e-mail wanted
                      value: [Etab1@email.fr, Etab2@email.fr]   # ?email=Etab1@email.fr,Etab2@email.fr
            responses:
              '200':    # status code
                description: JSON table of the original institutions
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Etablissement_origine'
        post:
            tags:
                - Etablissement_origine (Institution_original)
            summary: Creation of a new original institution
            description: Creates a new original institution in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Etablissement_origine'
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Etablissement_origine'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /etablissement_origine/{cle}:
        get:
            tags:
                - Etablissement_origine (Institution_original)
            summary: Json of the original institution with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "original institution key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Etablissement_origine'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Etablissement_origine (Institution_original)
            summary: Partial update of an original institution
            description: Modifies the fields of the original institution with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "original institution key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Etablissement_origine'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Etablissement_origine'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Etablissement_origine (Institution_original)
            summary: Deletion of an original institution
            description: Permanently deletes the original institution with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /etablissement_origine/supprimer:
        post:
            tags:
                - Etablissement_origine (Institution_original)
            summary: Deletion of several original institutions
            description: Delete the  original institutions whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the original institutions to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    #### Semaines ####
    /semaines:
        get:
            tags:
                - Semaines (Weeks)
            summary: List of all the weeks
            description: Table containing the json of the weeks in the base, with the corresponding calendar week and its beginning date
            parameters:
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [numero_semaine]   # ?select=numero_semaine
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [numero_semaine, numero_calendaire]   # ?select=numero_semaine,numero_calendaire
                - name: numero_semaine
                  in: query
                  description: returns only the weeks having one of these numbers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single number wanted
                      value: [10]   # ?numero_semaine=10
                    multipleIds:
                      summary: Example with several numbers wanted
                      value: [10, 14, 15]   # ?numero_semaine=10,14,15
                - name: numero_calendaire
                  in: query
                  description: returns only the weeks having one of these calendar numbers
                  style: form
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single number wanted
                      value: [1]   # ?numero_calendaire=1
                    multipleIds:
                      summary: Example with several numbers wanted
                      value: [1, 2, 3]   # ?numero_calendaire=1,2,3
            responses:
              '200':    # status code
                description: JSON table of the weeks
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Semaines'
    /semaines/{numero_semaine}:
        get:
            tags:
                - Semaines (Weeks)
            summary: Json of the week number {{numero_semaine}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: numero_semaine
                  in: path
                  description: "number of the week"
                  required: true
                  schema:
                    type: integer
                    example: 10
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Semaines'
              '400':    # status code
                description: "Invalid parameter: week number outside the limits"
    #### Sites ####
    /sites:
        get:
            tags:
                - Sites (Sites)
            summary: List of all the sites
            description: Table containing the json of the sites in the base, sorted by name
            parameters:
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [nom]   # ?select=nom
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [nom, couleur]   # ?select=nom,couleur
                - name: nom
                  in: query
                  description: Filter on the names of the sites
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [site1]   # ?nom=site1
                    multipleIds:
                      summary: Example with several names wanted
                      value: [site1, site2, site3]   # ?nom=site1,site2,site3
            responses:
              '200':    # status code
                description: JSON table of the sites
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Sites'
              '405':    # status code
                description: "Insufficient rights: Site management inactive"
    /sites/{nom}:
        get:
            tags:
                - Sites (Sites)
            summary: Json of the site with the name {nom}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: nom
                  in: path
                  description: "site's name"
                  required: true
                  schema:
                    type: string
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Sites'
              '404':    # status code
                description: "Invalid parameter"
              '405':    # status code
                description: "Insufficient rights: Site management inactive"
        post:
            tags:
                - Sites (Sites)
            summary: Partial update of a site
            description: Modifies the fields of the site color with the name {nom} with those passed in the JSON at the BODY level
            parameters:
                - name: nom
                  in: path
                  description: "name of the site that you want to update"
                  required: true
                  schema:
                    type: string
            requestBody:
              description: JSON containing the color field and its value. Possibility to modify only the color of a site via the Web Service.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Sites'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Sites'
              '400':    # status code
                description: "Invalid parameters: size problem..."
              '405':    # status code
                description: "Insufficient rights: Site management inactive"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
    #### Types ####
    /types:
        get:
            tags:
                - Types (Types)
            summary: List of all the course types
            description: Table containing the json of the course types in the base sorted by name
            parameters:
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [nom]   # ?select=nom
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [nom, couleur]   # ?select=nom,couleur
                - name: nom
                  in: query
                  description: Filter on the names of the types
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [cours]   # ?nom=cours
                    multipleIds:
                      summary: Example with several names wanted
                      value: [cours, td, tp]   # ?nom=cours,td,tp
            responses:
              '200':    # status code
                description: JSON table of the types
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Types'
    /types/{nom}:
        get:
            tags:
                - Types (Types)
            summary: Json of the course with the name {nom}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: nom
                  in: path
                  description: "name of the course type"
                  required: true
                  schema:
                    type: string
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Types'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Types (Types)
            summary: Partial update of a course type
            description: Modifies the color fields, mode_call of the course type with the name {nom} with those passed in the JSON at the BODY level
            parameters:
                - name: nom
                  in: path
                  description: "name of the type of course that you want to update"
                  required: true
                  schema:
                    type: string
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Types'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Types'
              '400':    # status code
                description: "Invalid parameter"
              '404':    # status code
                description: "Not found: The past name does not exist"
        delete:
            tags:
                - Types (Types)
            summary: Deletion of a course type
            description: Permanently deletes the course type with the name {nom} from the base
            parameters:
                - name: nom
                  in: path
                  description: name of the course type to be deleted
                  required: true
                  schema:
                    type: string
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past name does not exist"
    /types/{nom}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Types (Types)
            summary: Rubrics allocated to the course type for the family
            description: Rubrics allocated to the course type with the name {nom} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', 'rubrique_libre' allows to obtain the available rubric of this family. In the case of ‘predefined rubrics', ‘rubrics' allows you to obtain the table (key and name) of all allocated rubrics.
            parameters:
                - name: nom
                  in: path
                  description: "name of the course type"
                  required: true
                  schema:
                    type: string
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        type:
                          type: string
                          example: "cours"
                        famille:
                          type: integer
                          example: 125
                        mode:
                          type: string
                          example: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element name or family key"
        post:
            tags:
                - Types (Types)
            summary: Modification of the rubrics allocated to the type of course for the family
            description: Modifies the rubrics allocated to the course type with the name {nom} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', specified 'rubrique_libre' to modify the available rubric for this family. In the case of ‘predefined rubrics', fill in ‘rubrics' with the table of keys of the wanted rubrics.
            parameters:
                - name: nom
                  in: path
                  description: "name of the course type"
                  required: true
                  schema:
                    type: string
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
                - name: rubrique_libre
                  in: query
                  description: designation of the available ruric. Only  in the case of a family of available rurics.
                  required: true
                  schema:
                    type: string
                - name: rubriques
                  in: query
                  description: Table of the predefined rubric keys of the family. Only in the case of a family with predefined rubrics.
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        type:
                          type: string
                          example: "cours"
                        famille:
                          type: integer
                          example: 125
                        mode:
                          type: string
                          example: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element name or family key"
              '500':    # status code
                description: "'Modification impossible' or 'Insufficient rights'"
    #### Motifs_annulation ####
    /motifs_annulation:
        get:
            tags:
                - Motifs_annulation (Motives_cancelation)
            summary: List of all the ancelation motives
            description: Table containing the json of the cancelation motives in the base, sorted by designation
            parameters:
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [libelle]   # ?select=libelle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [libelle, par_defaut, est_remunere]   # ?select=libelle,par_defaut,est_remunere
                - name: libelle
                  in: query
                  description: returns only the cancelation motives having one designations
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single designation wanted
                      value: [Annulation]   # ?libelle=Annulation
                    multipleIds:
                      summary: Example with several designations wanted
                      value: [Annulation, Annulation2]   # ?libelle=Annulation,Annulation2
                - name: par_defaut
                  in: query
                  description: returns only the cancelation motives by default or not
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: boolean
                - name: est_remunere
                  in: query
                  description: returns only the cancelation motives or not
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: boolean
                - name: est_utilisable_par_enseignants
                  in: query
                  description: returns only the cancelation motives usable by teachers or not
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: boolean
            responses:
              '200':    # status code
                description: JSON table of the cancelation motives
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Motifs_annulation'
    /motifs_annulation/{libelle}:
        get:
            tags:
                - Motifs_annulation (Motives_cancelation)
            summary: Json of the cancelation motive with the designation {libelle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: libelle
                  in: path
                  description: "cancelation motive designation"
                  required: true
                  schema:
                    type: string
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Motifs_annulation'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Motifs_annulation (Motives_cancelation)
            summary: Partial update of a cancelation motive
            description: Modifies the fields of the cancelation motive with the designation {designation} with those passed in the JSON at the BODY level
            parameters:
                - name: libelle
                  in: path
                  description: "cancelation motive designation that you want to update"
                  required: true
                  schema:
                    type: string
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Motifs_annulation'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Motifs_annulation'
              '400':    # status code
                description: "Invalid parameter"
              '404':    # status code
                description: "Invalid parameter: non-existent cancelation motive"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Motifs_annulation (Motives_cancelation)
            summary: Deletion of a cancelation motive
            description: Permanently deletes the cancelation motive with the designation {libelle} from the base
            parameters:
                - name: libelle
                  in: path
                  description: designation of the cancelation motive to be deleted
                  required: true
                  schema:
                    type: string
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past designation does not exist"
    #### Motifs_absence_retard ####
    /motifs_absence_retard:
        get:
            tags:
                - Motifs_absence_retard (Absence_tardiness_motive)
            summary: List of all the motives for absence and tardiness
            description: Table containing the json of the absence and tardiness motives in the base, sorted by designation by default
            parameters:
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [libelle]   # ?select=libelle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [libelle, actif_absence, par_defaut_absence]   # ?select=libelle,actif_absence,par_defaut_absence
                - name: libelle
                  in: query
                  description: returns only the absence and tardiness motives having one of these designations
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single designation wanted
                      value: [Annulation]   # ?libelle=Annulation
                    multipleIds:
                      summary: Example with several designations wanted
                      value: [Annulation, Annulation2]   # ?libelle=Annulation,Annulation2
                - name: code
                  in: query
                  description: returns only the absence and tardiness motives having one codes
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single code wanted
                      value: [Annulation]   # ?code=Annulation
                    multipleIds:
                      summary: Example with several codes wanted
                      value: [Annulation, Annulation2]   # ?code=Annulation,Annulation2
                - name: par_defaut_absence
                  in: query
                  description: returns only the absence motives by default or not
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: boolean
                - name: actif_absence
                  in: query
                  description: returns only the absence motives active or not
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: boolean
                - name: est_justifie_absence
                  in: query
                  description: returns only the absence motives whose status is justified or not
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: boolean
                - name: par_defaut_retard
                  in: query
                  description: returns only the tardiness motives by default or not
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: boolean
                - name: actif_retard
                  in: query
                  description: returns only the tardiness motives active or not
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: boolean
                - name: est_justifie_retard
                  in: query
                  description: returns only the tardiness motives whose status is justified or not
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: boolean
            responses:
              '200':    # status code
                description: JSON table of the absence and tardiness motives
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Motifs_absence_retard'
    /motifs_absence_retard/{libelle}:
        get:
            tags:
                - Motifs_absence_retard (Absence_tardiness_motive)
            summary: Json of the absence and tardiness motive with the designation {libelle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: libelle
                  in: path
                  description: "absence and tardiness motive designation"
                  required: true
                  schema:
                    type: string
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Motifs_absence_retard'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Motifs_absence_retard (Absence_tardiness_motive)
            summary: Partial update of a absence and tardiness motive
            description: Modifies the fields of the absence and tardiness motive with the designation {designation} with those passed in the JSON at the BODY level
            parameters:
                - name: libelle
                  in: path
                  description: "absence and tardiness motive designation that you want to update"
                  required: true
                  schema:
                    type: string
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Motifs_absence_retard'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Motifs_absence_retard'
              '400':    # status code
                description: "Invalid parameter"
              '404':    # status code
                description: "Invalid parameter: non-existent absence and tardiness motive"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Motifs_absence_retard (Absence_tardiness_motive)
            summary: Deletion of a absence and tardiness motive
            description: Permanently deletes the absence and tardiness motive with the designation {libelle} from the base
            parameters:
                - name: libelle
                  in: path
                  description: designation of the absence and tardiness motive to be deleted
                  required: true
                  schema:
                    type: string
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past designation does not exist"
    #### Motifs_decharge ####
    /motifs_decharge:
        get:
            tags:
                - Motifs_decharge (Motives_discharge)
            summary: List of all the discharge motives
            description: Table containing the json of the discharge motives in the base, sorted by designation by default
            parameters:
                - name: libelle
                  in: query
                  description: returns only the discharge motives  having one of these designations
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single designation wanted
                      value: [Annulation]   # ?libelle=Annulation
                    multipleIds:
                      summary: Example with several designations wanted
                      value: [Annulation, Annulation2]   # ?libelle=Annulation,Annulation2
            responses:
              '200':    # status code
                description: JSON table of the discharge motives
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Motifs_decharge'
    /motifs_decharge/{libelle}:
        delete:
            tags:
                - Motifs_decharge (Motives_discharge)
            summary: Deletion of a discharge motive
            description: Permanently deletes the discharge motive with the designation {libelle} from the base
            parameters:
                - name: libelle
                  in: path
                  description: designation of the discharge motive to be deleted
                  required: true
                  schema:
                    type: string
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past designation does not exist"
    #### Motifs_dispense ####
    /motifs_dispense:
        get:
            tags:
                - Motifs_dispense (Exemption_motives)
            summary: List of all the exemption motives
            description: Table containing the json of the exemptions in the base, sorted by designation by default
            parameters:
                - name: libelle
                  in: query
                  description: returns only the exemption motives having one of these designations
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single designation wanted
                      value: [Annulation]   # ?libelle=Annulation
                    multipleIds:
                      summary: Example with several designations wanted
                      value: [Annulation, Annulation2]   # ?libelle=Annulation,Annulation2
            responses:
              '200':    # status code
                description: JSON table of the exemption motives
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Motifs_dispense'
    /motifs_dispense/{libelle}:
        delete:
            tags:
                - Motifs_dispense (Exemption_motives)
            summary: Deletion of a exemption motive
            description: Permanently deletes the exemption motive with the designation {libelle} from the base
            parameters:
                - name: libelle
                  in: path
                  description: designation of the exemption motive to be deleted
                  required: true
                  schema:
                    type: string
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past designation does not exist"
    #### Ponderations ####
    /ponderations:
        get:
            tags:
                - Ponderations (Weightings)
            summary: List of all the weightings
            description: Table containing the json of the weightings in the base, sorted by value by default.
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - valeur
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, numerateur, denominateur]   # ?select=cle,numerateur,denominateur
                - name: cle
                  in: query
                  description: returns only the weightings having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: numerateur
                  in: query
                  description: returns only the weightings having one of these numerators
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single numerator wanted
                      value: [10]   # ?numerateur=10
                    multipleIds:
                      summary: Example with several numerators wanted
                      value: [10, 20, 30]   # ?numerateur=10,20,30
                - name: denominateur
                  in: query
                  description: returns only the weightings having one of these denominators
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single denominator wanted
                      value: [20]   # ?denominateur=20
                    multipleIds:
                      summary: Example with several denominators wanted
                      value: [20, 40, 60]   # ?denominateur=20,40,60
            responses:
              '200':    # status code
                description: JSON table of the weightings
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Ponderations'
              '403':    # status code
                description: "Insufficient rights"
        post:
            tags:
                - Ponderations (Weightings)
            summary: Creation of a new weighting
            description: Creates a new weighting in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Ponderations'
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Ponderations'
              '400':    # status code
                description: "Invalid parameters: numerator and denominator compulsory"
              '403':    # status code
                description: "Insufficient rights"
              '500':    # status code
                description: "Creation impossible"
    /ponderations/{cle}:
        get:
            tags:
                - Ponderations (Weightings)
            summary: Json of the weighting with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "weighting key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Ponderations'
              '403':    # status code
                description: "Insufficient rights"
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Ponderations (Weightings)
            summary: Partial update of a weighting
            description: Modifies the weighting fields with the key {cle} with those passed in the JSON at the BODY level.
            parameters:
                - name: cle
                  in: path
                  description: "weighting key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Ponderations'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Ponderations'
              '400':    # status code
                description: "Invalid parameter"
              '403':    # status code
                description: "Insufficient rights"
              '404':    # status code
                description: "Invalid parameter: non-existent weighting"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Ponderations (Weightings)
            summary: Deletion of a weighting
            description: Permanently deletes the weighting with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '403':    # status code
                description: "Insufficient rights"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /ponderations/supprimer:
        post:
            tags:
                - Ponderations (Weightings)
            summary: Deletion of several weightings
            description: Delete the weightings whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the weightings to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '403':    # status code
                description: "Insufficient rights"
              '404':    # status code
                description: "Not found: The past key does not exist"
    #### Profils_utilisation ####
    /profils_utilisation:
        get:
            tags:
                - Profils_utilisation (User_profils)
            summary: List of all the utilization profiles
            description: Table containing the json of the utilization profiles in the base, sorted by name by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - nom
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom]   # ?select=cle,nom
                - name: cle
                  in: query
                  description: returns only the utilization profiles having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: returns only the utilization profiles having one of these names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [admin]   # ?nom=admin
                    multipleIds:
                      summary: Example with several names wanted
                      value: [admin, modif, consult]   # ?nom=admin,modif,consult
            responses:
              '200':    # status code
                description: JSON table of the utilization profiles
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        type: object
                        properties:
                          cle:
                            type: integer
                            example: 10
                          nom:
                            type: string
                            example: "admin"
    /profils_utilisation/{cle}:
        get:
            tags:
                - Profils_utilisation (User_profils)
            summary: Json of the utilization profile with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "utilization profile key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle:
                          type: integer
                          example: 10
                        nom:
                          type: string
                          example: "admin"
              '404':    # status code
                description: "Invalid parameter"
              '500':    # status code
                description: "Insufficient rights"
    #### Utilisateurs ####
    /utilisateurs:
        get:
            tags:
                - Utilisateurs (Users)
            summary: List of all the users
            description: Table containing the json of the users, sorted by surname then first name by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - nom
                      - profil_utilisation
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom, prenom]   # ?select=cle,nom,prenom
                - name: cle
                  in: query
                  description: returns only the users having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: returns only the users having one of these names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [Dupond]   # ?nom=Dupond
                    multipleIds:
                      summary: Example with several names wanted
                      value: [Dupond, Durand, Martin]   # ?nom=Dupond,Durand,Martin
                - name: prenom
                  in: query
                  description: returns only the users having one of these first names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single first name wanted
                      value: [Claude]   # ?prenom=Claude
                    multipleIds:
                      summary: Example with several first names wanted
                      value: [Claude, Dominique, Louis]   # ?prenom=Claude,Dominique,Louis
                - name: identifiant_connexion
                  in: query
                  description: returns only the users having one of these connection identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single connection identifier wanted
                      value: [Claude]   # ?identifiant_connexion=Claude
                    multipleIds:
                      summary: Example with several connection identifiers wanted
                      value: [Claude, Dominique, Louis]   # ?identifiant_connexion=Claude,Dominique,Louis
                - name: profil_utilisation
                  in: query
                  description: returns only the users having one of these utilization profiles (key or name)
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single utilization profile wanted
                      value: [Modification]   # ?profil_utilisation=Modification
                    multipleIds:
                      summary: Example with several utilization profiles wanted
                      value: [1, Modification, 2]   # ?profil_utilisation=1,Modification,2
                - name: cas_identifiant
                  in: query
                  description: returns only the users having one of these cas_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single cas_identifier wanted
                      value: [ident1]   # ?cas_identifiant=ident1
                    multipleIds:
                      summary: Example with several cas_identifiers wanted
                      value: [ident1, ident2, ident3]   # ?cas_identifiant=ident1,ident2,ident3
                - name: adfs_identifiant
                  in: query
                  description: returns only the users having one of these adfs_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single adfs_identifier wanted
                      value: [ident1]   # ?adfs_identifiant=ident1
                    multipleIds:
                      summary: Example with several adfs_identifiers wanted
                      value: [ident1, ident2, ident3]   # ?adfs_identifiant=ident1,ident2,ident3
                - name: saml_identifiant
                  in: query
                  description: returns only the users having one of these saml_identifiers
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single saml_identifier wanted
                      value: [ident1]   # ?saml_identifiant=ident1
                    multipleIds:
                      summary: Example with several saml_identifiers wanted
                      value: [ident1, ident2, ident3]   # ?saml_identifiant=ident1,ident2,ident3
            responses:
              '200':    # status code
                description: JSON table of the users
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Utilisateurs'
        post:
            tags:
                - Utilisateurs (Users)
            summary: Creation of a new user
            description: Creates a new user in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      actif:
                        type: boolean
                        example: true
                      nom:
                        type: string
                        example: "Dupond"
                      prenom:
                        type: string
                        example: "Camille"
                      profil_utilisation:
                        type: integer
                        example: 1
                      civilite:
                        type: string
                        example: "Mrs"
                      statut:
                        type: string
                        example: "Superadministrateur"
                        description: "Expected format: 'U' or 'user', 'S' or 'superadministrator', 'A' or 'basic administrator'"
                      ldap_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      cas_identifiant:
                        type: string
                        example: "Identifiant__CAS"
                      adfs_identifiant:
                        type: string
                        example: "Identifier__ADFS"
                      saml_identifiant:
                        type: string
                        example: "Identifier__SAML"
                      identifiant_connexion:
                        type: string
                        example: "Identifier__connection"
                      e_mail:
                        type: string
                        example: "firstname.surname@email.fr"
                      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"
                      acces_espace_secretariat:
                        type: boolean
                        example: true
                      mot_de_passe:
                        type: string
                        example: "fdrehm:lcfjnfj4"
                        description: Only for the modification, no visualization, must comply with the security policy
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Utilisateurs'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible, rights problem
    /utilisateurs/{cle}:
        get:
            tags:
                - Utilisateurs (Users)
            summary: Json of the user with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "user key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Utilisateurs'
              '404':    # status code
                description: "Invalid parameter"
              '500':    # status code
                description: "Insufficient rights"
        post:
            tags:
                - Utilisateurs (Users)
            summary: Partial update of a user
            description: Modifies the fields of the user with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "user key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      actif:
                        type: boolean
                        example: true
                      nom:
                        type: string
                        example: "Dupond"
                      prenom:
                        type: string
                        example: "Camille"
                      profil_utilisation:
                        type: integer
                        example: 1
                      civilite:
                        type: string
                        example: "Mrs"
                      statut:
                        type: string
                        example: "Superadministrateur"
                        description: "Expected format: 'U' or 'user', 'S' or 'superadministrator', 'A' or 'basic administrator'"
                      ldap_identifiant:
                        type: string
                        example: "Identifiant__UID"
                      cas_identifiant:
                        type: string
                        example: "Identifiant__CAS"
                      adfs_identifiant:
                        type: string
                        example: "Identifier__ADFS"
                      saml_identifiant:
                        type: string
                        example: "Identifier__SAML"
                      identifiant_connexion:
                        type: string
                        example: "Identifier__connection"
                      e_mail:
                        type: string
                        example: "firstname.surname@email.fr"
                      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"
                      acces_espace_secretariat:
                        type: boolean
                        example: true
                      mot_de_passe:
                        type: string
                        example: "fdrehm:lcfjnfj4"
                        description: Only for the modification, no visualization, must comply with the security policy
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Utilisateurs'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Utilisateurs (Users)
            summary: Deletion of a user
            description: Permanently deletes the user with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /utilisateurs/supprimer:
        post:
            tags:
                - Utilisateurs (Users)
            summary: Deletion of several users
            description: Delete the users whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the users to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    #### Parametres_base ####
    /parametres_base:
        get:
            tags:
                - Parametres_base (Parameters_base)
            summary: JSON of certain database parameters (first day, devise, locked weeks, working days, duration of one day)
            description: JSON of certain database parameters (date of the first day in the base, units used for hourly costs, locked weeks, duration of a full day, working days in the base)
            parameters:
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [premier_jour]   # ?select=premier_jour
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [premier_jour, domaine_verrouille]   # ?select=premier_jour,domaine_verrouille
            responses:
              '200':    # status code
                description: JSON of certain database parameters
                content:  # Response body
                  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 (Parameters_base)
            summary: Update of some parameters of the base - devise, domain_lock
            description: Modifies the fields of the authorized base parameters with those passed in the JSON at the BODY level
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify and that are authorized for modification.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      devise:
                        type: string
                        example: "€"
                      domaine_verrouille:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,15]
            responses:
              '200':    # status code
                description: Success - JSON of the base parameters
                content:  # Response body
                  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':    # status code
                description: "Invalid parameter"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
    #### Version ####
    /version:
        get:
            tags:
                - Version (Version)
            summary: PRONOTE Campus version
            description: Version of the PRONOTE Campus Web Service application
            parameters:
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [version]   # ?select=version
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [version, majeure]   # ?select=version,majeure
            responses:
              '200':    # status code
                description: JSON of the version
                content:  # Response body
                  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: 0
    #### Icals ####
    /ical/matieres:
        post:
            tags:
                - Icals (Icals)
            summary: Ical of the subjects
            description: Ical of the subjects passed as parameters in the JSON of the body
            requestBody:
              description: JSON fields used to configure the iCal
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      cles:
                        type: array
                        items:
                          type: integer
                        example: [10,11]
                      domaine:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,15]
                      matiere_code:
                        type: boolean
                        example: false
                      matiere_libelle:
                        type: boolean
                        example: true
                      matiere_libelle_long:
                        type: boolean
                        example: false
                      enseignant_code:
                        type: boolean
                        example: false
                      enseignant_civilite:
                        type: boolean
                        example: true
                      enseignant_nom:
                        type: boolean
                        example: true
                      ennseignant_nom_majuscule:
                        type: boolean
                        example: false
                      enseignant_prenom:
                        type: boolean
                        example: true
                      enseignant_prenom_initale:
                        type: boolean
                        example: false
                      regroupement_code:
                        type: boolean
                        example: false
                      regroupement_nom:
                        type: boolean
                        example: true
                      promotion_code:
                        type: boolean
                        example: false
                      promotion_nom:
                        type: boolean
                        example: true
                      promotion_libelle_long:
                        type: boolean
                        example: false
                      td_code:
                        type: boolean
                        example: false
                      td_nom:
                        type: boolean
                        example: true
                      td_libelle_long:
                        type: boolean
                        example: false
                      option_code:
                        type: boolean
                        example: false
                      option_nom:
                        type: boolean
                        example: true
                      option_libelle_long:
                        type: boolean
                        example: false
                      salle_code:
                        type: boolean
                        example: false
                      salle_nom:
                        type: boolean
                        example: true
                      salle_libelle_long:
                        type: boolean
                        example: false
                      site_Tous:
                        type: boolean
                        example: true
                      site_sauf_defaut:
                        type: boolean
                        example: false
                      type:
                        type: boolean
                        example: true
                      ponderation:
                        type: boolean
                        example: true
                      memo:
                        type: boolean
                        example: true
                      memo_premiere_ligne:
                        type: boolean
                        example: true
                      effectif:
                        type: boolean
                        example: true
                      cours_annules:
                        type: boolean
                        example: false
            responses:
              '200':    # status code
                description: "Success - Table of icals"
              '400':    # status code
                description: "Invalid parameters: parameter passed invalid"
              '404':    # status code
                description: "Invalid parameters: non-existent key"
    /ical/matieres/{cle}:
        post:
            tags:
                - Icals (Icals)
            summary: Ical of a subject
            description: Ical of the subject with the key {cle}, configurable by passing the options in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "subject key of the ICAL wanted"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON fields used to configure the iCal
              required: false
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      domaine:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,15]
                      matiere_code:
                        type: boolean
                        example: false
                      matiere_libelle:
                        type: boolean
                        example: true
                      matiere_libelle_long:
                        type: boolean
                        example: false
                      enseignant_code:
                        type: boolean
                        example: false
                      enseignant_civilite:
                        type: boolean
                        example: true
                      enseignant_nom:
                        type: boolean
                        example: true
                      ennseignant_nom_majuscule:
                        type: boolean
                        example: false
                      enseignant_prenom:
                        type: boolean
                        example: true
                      enseignant_prenom_initale:
                        type: boolean
                        example: false
                      regroupement_code:
                        type: boolean
                        example: false
                      regroupement_nom:
                        type: boolean
                        example: true
                      promotion_code:
                        type: boolean
                        example: false
                      promotion_nom:
                        type: boolean
                        example: true
                      promotion_libelle_long:
                        type: boolean
                        example: false
                      td_code:
                        type: boolean
                        example: false
                      td_nom:
                        type: boolean
                        example: true
                      td_libelle_long:
                        type: boolean
                        example: false
                      option_code:
                        type: boolean
                        example: false
                      option_nom:
                        type: boolean
                        example: true
                      option_libelle_long:
                        type: boolean
                        example: false
                      salle_code:
                        type: boolean
                        example: false
                      salle_nom:
                        type: boolean
                        example: true
                      salle_libelle_long:
                        type: boolean
                        example: false
                      site_Tous:
                        type: boolean
                        example: true
                      site_sauf_defaut:
                        type: boolean
                        example: false
                      type:
                        type: boolean
                        example: true
                      ponderation:
                        type: boolean
                        example: true
                      memo:
                        type: boolean
                        example: true
                      memo_premiere_ligne:
                        type: boolean
                        example: true
                      effectif:
                        type: boolean
                        example: true
                      cours_annules:
                        type: boolean
                        example: false
            responses:
              '200':    # status code
                description: "Success - Ical of the element"
              '400':    # status code
                description: "Invalid parameters: non-existent key, parameter passed invalid..."
    /ical/enseignants:
        post:
            tags:
                - Icals (Icals)
            summary: Ical of the teachers
            description: Ical of the teachers passed as parameters in the JSON of the body
            requestBody:
              description: JSON fields used to configure the iCal
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      cles:
                        type: array
                        items:
                          type: integer
                        example: [10,11]
                      domaine:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,15]
                      matiere_code:
                        type: boolean
                        example: false
                      matiere_libelle:
                        type: boolean
                        example: true
                      matiere_libelle_long:
                        type: boolean
                        example: false
                      enseignant_code:
                        type: boolean
                        example: false
                      enseignant_civilite:
                        type: boolean
                        example: true
                      enseignant_nom:
                        type: boolean
                        example: true
                      ennseignant_nom_majuscule:
                        type: boolean
                        example: false
                      enseignant_prenom:
                        type: boolean
                        example: true
                      enseignant_prenom_initale:
                        type: boolean
                        example: false
                      regroupement_code:
                        type: boolean
                        example: false
                      regroupement_nom:
                        type: boolean
                        example: true
                      promotion_code:
                        type: boolean
                        example: false
                      promotion_nom:
                        type: boolean
                        example: true
                      promotion_libelle_long:
                        type: boolean
                        example: false
                      td_code:
                        type: boolean
                        example: false
                      td_nom:
                        type: boolean
                        example: true
                      td_libelle_long:
                        type: boolean
                        example: false
                      option_code:
                        type: boolean
                        example: false
                      option_nom:
                        type: boolean
                        example: true
                      option_libelle_long:
                        type: boolean
                        example: false
                      salle_code:
                        type: boolean
                        example: false
                      salle_nom:
                        type: boolean
                        example: true
                      salle_libelle_long:
                        type: boolean
                        example: false
                      site_Tous:
                        type: boolean
                        example: true
                      site_sauf_defaut:
                        type: boolean
                        example: false
                      type:
                        type: boolean
                        example: true
                      ponderation:
                        type: boolean
                        example: true
                      memo:
                        type: boolean
                        example: true
                      memo_premiere_ligne:
                        type: boolean
                        example: true
                      effectif:
                        type: boolean
                        example: true
                      cours_annules:
                        type: boolean
                        example: false
            responses:
              '200':    # status code
                description: "Success - Table of icals"
              '400':    # status code
                description: "Invalid parameters: parameter passed invalid"
              '404':    # status code
                description: "Invalid parameters: non-existent key"
    /ical/enseignants/{cle}:
        post:
            tags:
                - Icals (Icals)
            summary: Ical of a teacher
            description: Ical of the teacher with the key {key}, configurable by passing the options in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "teacher key of the ICAL wanted"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON fields used to configure the iCal
              required: false
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      domaine:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,15]
                      matiere_code:
                        type: boolean
                        example: false
                      matiere_libelle:
                        type: boolean
                        example: true
                      matiere_libelle_long:
                        type: boolean
                        example: false
                      enseignant_code:
                        type: boolean
                        example: false
                      enseignant_civilite:
                        type: boolean
                        example: true
                      enseignant_nom:
                        type: boolean
                        example: true
                      ennseignant_nom_majuscule:
                        type: boolean
                        example: false
                      enseignant_prenom:
                        type: boolean
                        example: true
                      enseignant_prenom_initale:
                        type: boolean
                        example: false
                      regroupement_code:
                        type: boolean
                        example: false
                      regroupement_nom:
                        type: boolean
                        example: true
                      promotion_code:
                        type: boolean
                        example: false
                      promotion_nom:
                        type: boolean
                        example: true
                      promotion_libelle_long:
                        type: boolean
                        example: false
                      td_code:
                        type: boolean
                        example: false
                      td_nom:
                        type: boolean
                        example: true
                      td_libelle_long:
                        type: boolean
                        example: false
                      option_code:
                        type: boolean
                        example: false
                      option_nom:
                        type: boolean
                        example: true
                      option_libelle_long:
                        type: boolean
                        example: false
                      salle_code:
                        type: boolean
                        example: false
                      salle_nom:
                        type: boolean
                        example: true
                      salle_libelle_long:
                        type: boolean
                        example: false
                      site_Tous:
                        type: boolean
                        example: true
                      site_sauf_defaut:
                        type: boolean
                        example: false
                      type:
                        type: boolean
                        example: true
                      ponderation:
                        type: boolean
                        example: true
                      memo:
                        type: boolean
                        example: true
                      memo_premiere_ligne:
                        type: boolean
                        example: true
                      effectif:
                        type: boolean
                        example: true
                      cours_annules:
                        type: boolean
                        example: false
            responses:
              '200':    # status code
                description: "Success - Ical of the element"
              '400':    # status code
                description: "Invalid parameters: non-existent key, parameter passed invalid..."
    /ical/etudiants:
        post:
            tags:
                - Icals (Icals)
            summary: Ical of the students
            description: Ical of the students passed as parameters in the JSON of the body
            requestBody:
              description: JSON fields used to configure the iCal
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      cles:
                        type: array
                        items:
                          type: integer
                        example: [10,11]
                      domaine:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,15]
                      matiere_code:
                        type: boolean
                        example: false
                      matiere_libelle:
                        type: boolean
                        example: true
                      matiere_libelle_long:
                        type: boolean
                        example: false
                      enseignant_code:
                        type: boolean
                        example: false
                      enseignant_civilite:
                        type: boolean
                        example: true
                      enseignant_nom:
                        type: boolean
                        example: true
                      ennseignant_nom_majuscule:
                        type: boolean
                        example: false
                      enseignant_prenom:
                        type: boolean
                        example: true
                      enseignant_prenom_initale:
                        type: boolean
                        example: false
                      regroupement_code:
                        type: boolean
                        example: false
                      regroupement_nom:
                        type: boolean
                        example: true
                      promotion_code:
                        type: boolean
                        example: false
                      promotion_nom:
                        type: boolean
                        example: true
                      promotion_libelle_long:
                        type: boolean
                        example: false
                      td_code:
                        type: boolean
                        example: false
                      td_nom:
                        type: boolean
                        example: true
                      td_libelle_long:
                        type: boolean
                        example: false
                      option_code:
                        type: boolean
                        example: false
                      option_nom:
                        type: boolean
                        example: true
                      option_libelle_long:
                        type: boolean
                        example: false
                      salle_code:
                        type: boolean
                        example: false
                      salle_nom:
                        type: boolean
                        example: true
                      salle_libelle_long:
                        type: boolean
                        example: false
                      site_Tous:
                        type: boolean
                        example: true
                      site_sauf_defaut:
                        type: boolean
                        example: false
                      type:
                        type: boolean
                        example: true
                      ponderation:
                        type: boolean
                        example: true
                      memo:
                        type: boolean
                        example: true
                      memo_premiere_ligne:
                        type: boolean
                        example: true
                      effectif:
                        type: boolean
                        example: true
                      cours_annules:
                        type: boolean
                        example: false
            responses:
              '200':    # status code
                description: "Success - Table of icals"
              '400':    # status code
                description: "Invalid parameters: parameter passed invalid"
              '404':    # status code
                description: "Invalid parameters: non-existent key"
    /ical/etudiants/{cle}:
        post:
            tags:
                - Icals (Icals)
            summary: Ical of a student
            description: Ical of the student with the key {key}, configurable by passing the options in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "student key of the ICAL wanted"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON fields used to configure the iCal
              required: false
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      domaine:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,15]
                      matiere_code:
                        type: boolean
                        example: false
                      matiere_libelle:
                        type: boolean
                        example: true
                      matiere_libelle_long:
                        type: boolean
                        example: false
                      enseignant_code:
                        type: boolean
                        example: false
                      enseignant_civilite:
                        type: boolean
                        example: true
                      enseignant_nom:
                        type: boolean
                        example: true
                      ennseignant_nom_majuscule:
                        type: boolean
                        example: false
                      enseignant_prenom:
                        type: boolean
                        example: true
                      enseignant_prenom_initale:
                        type: boolean
                        example: false
                      regroupement_code:
                        type: boolean
                        example: false
                      regroupement_nom:
                        type: boolean
                        example: true
                      promotion_code:
                        type: boolean
                        example: false
                      promotion_nom:
                        type: boolean
                        example: true
                      promotion_libelle_long:
                        type: boolean
                        example: false
                      td_code:
                        type: boolean
                        example: false
                      td_nom:
                        type: boolean
                        example: true
                      td_libelle_long:
                        type: boolean
                        example: false
                      option_code:
                        type: boolean
                        example: false
                      option_nom:
                        type: boolean
                        example: true
                      option_libelle_long:
                        type: boolean
                        example: false
                      salle_code:
                        type: boolean
                        example: false
                      salle_nom:
                        type: boolean
                        example: true
                      salle_libelle_long:
                        type: boolean
                        example: false
                      site_Tous:
                        type: boolean
                        example: true
                      site_sauf_defaut:
                        type: boolean
                        example: false
                      type:
                        type: boolean
                        example: true
                      ponderation:
                        type: boolean
                        example: true
                      memo:
                        type: boolean
                        example: true
                      memo_premiere_ligne:
                        type: boolean
                        example: true
                      effectif:
                        type: boolean
                        example: true
                      cours_annules:
                        type: boolean
                        example: false
            responses:
              '200':    # status code
                description: "Success - Ical of the element"
              '400':    # status code
                description: "Invalid parameters: non-existent key, parameter passed invalid..."
    /ical/promotions:
        post:
            tags:
                - Icals (Icals)
            summary: Ical of the classes
            description: Ical of the classes passed as parameters in the JSON of the body
            requestBody:
              description: JSON fields used to configure the iCal
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      cles:
                        type: array
                        items:
                          type: integer
                        example: [10,11]
                      domaine:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,15]
                      matiere_code:
                        type: boolean
                        example: false
                      matiere_libelle:
                        type: boolean
                        example: true
                      matiere_libelle_long:
                        type: boolean
                        example: false
                      enseignant_code:
                        type: boolean
                        example: false
                      enseignant_civilite:
                        type: boolean
                        example: true
                      enseignant_nom:
                        type: boolean
                        example: true
                      ennseignant_nom_majuscule:
                        type: boolean
                        example: false
                      enseignant_prenom:
                        type: boolean
                        example: true
                      enseignant_prenom_initale:
                        type: boolean
                        example: false
                      regroupement_code:
                        type: boolean
                        example: false
                      regroupement_nom:
                        type: boolean
                        example: true
                      promotion_code:
                        type: boolean
                        example: false
                      promotion_nom:
                        type: boolean
                        example: true
                      promotion_libelle_long:
                        type: boolean
                        example: false
                      td_code:
                        type: boolean
                        example: false
                      td_nom:
                        type: boolean
                        example: true
                      td_libelle_long:
                        type: boolean
                        example: false
                      option_code:
                        type: boolean
                        example: false
                      option_nom:
                        type: boolean
                        example: true
                      option_libelle_long:
                        type: boolean
                        example: false
                      salle_code:
                        type: boolean
                        example: false
                      salle_nom:
                        type: boolean
                        example: true
                      salle_libelle_long:
                        type: boolean
                        example: false
                      site_Tous:
                        type: boolean
                        example: true
                      site_sauf_defaut:
                        type: boolean
                        example: false
                      type:
                        type: boolean
                        example: true
                      ponderation:
                        type: boolean
                        example: true
                      memo:
                        type: boolean
                        example: true
                      memo_premiere_ligne:
                        type: boolean
                        example: true
                      effectif:
                        type: boolean
                        example: true
                      cours_annules:
                        type: boolean
                        example: false
            responses:
              '200':    # status code
                description: "Success - Table of icals"
              '400':    # status code
                description: "Invalid parameters: parameter passed invalid"
              '404':    # status code
                description: "Invalid parameters: non-existent key"
    /ical/promotions/{cle}:
        post:
            tags:
                - Icals (Icals)
            summary: Ical of a class
            description: Ical of the class with the key {key}, configurable by passing the options in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "class key of the ICAL wanted"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON fields used to configure the iCal
              required: false
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      domaine:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,15]
                      matiere_code:
                        type: boolean
                        example: false
                      matiere_libelle:
                        type: boolean
                        example: true
                      matiere_libelle_long:
                        type: boolean
                        example: false
                      enseignant_code:
                        type: boolean
                        example: false
                      enseignant_civilite:
                        type: boolean
                        example: true
                      enseignant_nom:
                        type: boolean
                        example: true
                      ennseignant_nom_majuscule:
                        type: boolean
                        example: false
                      enseignant_prenom:
                        type: boolean
                        example: true
                      enseignant_prenom_initale:
                        type: boolean
                        example: false
                      regroupement_code:
                        type: boolean
                        example: false
                      regroupement_nom:
                        type: boolean
                        example: true
                      promotion_code:
                        type: boolean
                        example: false
                      promotion_nom:
                        type: boolean
                        example: true
                      promotion_libelle_long:
                        type: boolean
                        example: false
                      td_code:
                        type: boolean
                        example: false
                      td_nom:
                        type: boolean
                        example: true
                      td_libelle_long:
                        type: boolean
                        example: false
                      option_code:
                        type: boolean
                        example: false
                      option_nom:
                        type: boolean
                        example: true
                      option_libelle_long:
                        type: boolean
                        example: false
                      salle_code:
                        type: boolean
                        example: false
                      salle_nom:
                        type: boolean
                        example: true
                      salle_libelle_long:
                        type: boolean
                        example: false
                      site_Tous:
                        type: boolean
                        example: true
                      site_sauf_defaut:
                        type: boolean
                        example: false
                      type:
                        type: boolean
                        example: true
                      ponderation:
                        type: boolean
                        example: true
                      memo:
                        type: boolean
                        example: true
                      memo_premiere_ligne:
                        type: boolean
                        example: true
                      effectif:
                        type: boolean
                        example: true
                      cours_annules:
                        type: boolean
                        example: false
            responses:
              '200':    # status code
                description: "Success - Ical of the element"
              '400':    # status code
                description: "Invalid parameters: non-existent key, parameter passed invalid..."
    /ical/tdoptions:
        post:
            tags:
                - Icals (Icals)
            summary: Ical of the tutorials/options
            description: Ical of the tutorials/options passed as parameters in the JSON of the body
            requestBody:
              description: JSON fields used to configure the iCal
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      cles:
                        type: array
                        items:
                          type: integer
                        example: [10,11]
                      domaine:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,15]
                      matiere_code:
                        type: boolean
                        example: false
                      matiere_libelle:
                        type: boolean
                        example: true
                      matiere_libelle_long:
                        type: boolean
                        example: false
                      enseignant_code:
                        type: boolean
                        example: false
                      enseignant_civilite:
                        type: boolean
                        example: true
                      enseignant_nom:
                        type: boolean
                        example: true
                      ennseignant_nom_majuscule:
                        type: boolean
                        example: false
                      enseignant_prenom:
                        type: boolean
                        example: true
                      enseignant_prenom_initale:
                        type: boolean
                        example: false
                      regroupement_code:
                        type: boolean
                        example: false
                      regroupement_nom:
                        type: boolean
                        example: true
                      promotion_code:
                        type: boolean
                        example: false
                      promotion_nom:
                        type: boolean
                        example: true
                      promotion_libelle_long:
                        type: boolean
                        example: false
                      td_code:
                        type: boolean
                        example: false
                      td_nom:
                        type: boolean
                        example: true
                      td_libelle_long:
                        type: boolean
                        example: false
                      option_code:
                        type: boolean
                        example: false
                      option_nom:
                        type: boolean
                        example: true
                      option_libelle_long:
                        type: boolean
                        example: false
                      salle_code:
                        type: boolean
                        example: false
                      salle_nom:
                        type: boolean
                        example: true
                      salle_libelle_long:
                        type: boolean
                        example: false
                      site_Tous:
                        type: boolean
                        example: true
                      site_sauf_defaut:
                        type: boolean
                        example: false
                      type:
                        type: boolean
                        example: true
                      ponderation:
                        type: boolean
                        example: true
                      memo:
                        type: boolean
                        example: true
                      memo_premiere_ligne:
                        type: boolean
                        example: true
                      effectif:
                        type: boolean
                        example: true
                      cours_annules:
                        type: boolean
                        example: false
            responses:
              '200':    # status code
                description: "Success - Table of icals"
              '400':    # status code
                description: "Invalid parameters: parameter passed invalid"
              '404':    # status code
                description: "Invalid parameters: non-existent key"
    /ical/tdoptions/{cle}:
        post:
            tags:
                - Icals (Icals)
            summary: Ical of a tutorial/option
            description: Ical of the tutorial/option with the key {key}, configurable by passing the options in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "tutorial/option key of the ical wanted"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON fields used to configure the iCal
              required: false
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      domaine:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,15]
                      matiere_code:
                        type: boolean
                        example: false
                      matiere_libelle:
                        type: boolean
                        example: true
                      matiere_libelle_long:
                        type: boolean
                        example: false
                      enseignant_code:
                        type: boolean
                        example: false
                      enseignant_civilite:
                        type: boolean
                        example: true
                      enseignant_nom:
                        type: boolean
                        example: true
                      ennseignant_nom_majuscule:
                        type: boolean
                        example: false
                      enseignant_prenom:
                        type: boolean
                        example: true
                      enseignant_prenom_initale:
                        type: boolean
                        example: false
                      regroupement_code:
                        type: boolean
                        example: false
                      regroupement_nom:
                        type: boolean
                        example: true
                      promotion_code:
                        type: boolean
                        example: false
                      promotion_nom:
                        type: boolean
                        example: true
                      promotion_libelle_long:
                        type: boolean
                        example: false
                      td_code:
                        type: boolean
                        example: false
                      td_nom:
                        type: boolean
                        example: true
                      td_libelle_long:
                        type: boolean
                        example: false
                      option_code:
                        type: boolean
                        example: false
                      option_nom:
                        type: boolean
                        example: true
                      option_libelle_long:
                        type: boolean
                        example: false
                      salle_code:
                        type: boolean
                        example: false
                      salle_nom:
                        type: boolean
                        example: true
                      salle_libelle_long:
                        type: boolean
                        example: false
                      site_Tous:
                        type: boolean
                        example: true
                      site_sauf_defaut:
                        type: boolean
                        example: false
                      type:
                        type: boolean
                        example: true
                      ponderation:
                        type: boolean
                        example: true
                      memo:
                        type: boolean
                        example: true
                      memo_premiere_ligne:
                        type: boolean
                        example: true
                      effectif:
                        type: boolean
                        example: true
                      cours_annules:
                        type: boolean
                        example: false
            responses:
              '200':    # status code
                description: "Success - Ical of the element"
              '400':    # status code
                description: "Invalid parameters: non-existent key, parameter passed invalid..."
    /ical/salles:
        post:
            tags:
                - Icals (Icals)
            summary: Ical of the rooms
            description: Ical of the rooms passed as parameters in the json of the body
            requestBody:
              description: JSON fields used to configure the iCal
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      cles:
                        type: array
                        items:
                          type: integer
                        example: [10,11]
                      domaine:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,15]
                      matiere_code:
                        type: boolean
                        example: false
                      matiere_libelle:
                        type: boolean
                        example: true
                      matiere_libelle_long:
                        type: boolean
                        example: false
                      enseignant_code:
                        type: boolean
                        example: false
                      enseignant_civilite:
                        type: boolean
                        example: true
                      enseignant_nom:
                        type: boolean
                        example: true
                      ennseignant_nom_majuscule:
                        type: boolean
                        example: false
                      enseignant_prenom:
                        type: boolean
                        example: true
                      enseignant_prenom_initale:
                        type: boolean
                        example: false
                      regroupement_code:
                        type: boolean
                        example: false
                      regroupement_nom:
                        type: boolean
                        example: true
                      promotion_code:
                        type: boolean
                        example: false
                      promotion_nom:
                        type: boolean
                        example: true
                      promotion_libelle_long:
                        type: boolean
                        example: false
                      td_code:
                        type: boolean
                        example: false
                      td_nom:
                        type: boolean
                        example: true
                      td_libelle_long:
                        type: boolean
                        example: false
                      option_code:
                        type: boolean
                        example: false
                      option_nom:
                        type: boolean
                        example: true
                      option_libelle_long:
                        type: boolean
                        example: false
                      salle_code:
                        type: boolean
                        example: false
                      salle_nom:
                        type: boolean
                        example: true
                      salle_libelle_long:
                        type: boolean
                        example: false
                      site_Tous:
                        type: boolean
                        example: true
                      site_sauf_defaut:
                        type: boolean
                        example: false
                      type:
                        type: boolean
                        example: true
                      ponderation:
                        type: boolean
                        example: true
                      memo:
                        type: boolean
                        example: true
                      memo_premiere_ligne:
                        type: boolean
                        example: true
                      effectif:
                        type: boolean
                        example: true
                      cours_annules:
                        type: boolean
                        example: false
            responses:
              '200':    # status code
                description: "Success - Table of icals"
              '400':    # status code
                description: "Invalid parameters: parameter passed invalid"
              '404':    # status code
                description: "Invalid parameters: non-existent key"
    /ical/salles/{cle}:
        post:
            tags:
                - Icals (Icals)
            summary: Ical of a room
            description: Ical of the room with the key {key}, configurable by passing the options in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "room key of the ICAL wanted"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON fields used to configure the iCal
              required: false
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      domaine:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,15]
                      matiere_code:
                        type: boolean
                        example: false
                      matiere_libelle:
                        type: boolean
                        example: true
                      matiere_libelle_long:
                        type: boolean
                        example: false
                      enseignant_code:
                        type: boolean
                        example: false
                      enseignant_civilite:
                        type: boolean
                        example: true
                      enseignant_nom:
                        type: boolean
                        example: true
                      ennseignant_nom_majuscule:
                        type: boolean
                        example: false
                      enseignant_prenom:
                        type: boolean
                        example: true
                      enseignant_prenom_initale:
                        type: boolean
                        example: false
                      regroupement_code:
                        type: boolean
                        example: false
                      regroupement_nom:
                        type: boolean
                        example: true
                      promotion_code:
                        type: boolean
                        example: false
                      promotion_nom:
                        type: boolean
                        example: true
                      promotion_libelle_long:
                        type: boolean
                        example: false
                      td_code:
                        type: boolean
                        example: false
                      td_nom:
                        type: boolean
                        example: true
                      td_libelle_long:
                        type: boolean
                        example: false
                      option_code:
                        type: boolean
                        example: false
                      option_nom:
                        type: boolean
                        example: true
                      option_libelle_long:
                        type: boolean
                        example: false
                      salle_code:
                        type: boolean
                        example: false
                      salle_nom:
                        type: boolean
                        example: true
                      salle_libelle_long:
                        type: boolean
                        example: false
                      site_Tous:
                        type: boolean
                        example: true
                      site_sauf_defaut:
                        type: boolean
                        example: false
                      type:
                        type: boolean
                        example: true
                      ponderation:
                        type: boolean
                        example: true
                      memo:
                        type: boolean
                        example: true
                      memo_premiere_ligne:
                        type: boolean
                        example: true
                      effectif:
                        type: boolean
                        example: true
                      cours_annules:
                        type: boolean
                        example: false
            responses:
              '200':    # status code
                description: "Success - Ical of the element"
              '400':    # status code
                description: "Invalid parameters: non-existent key, parameter passed invalid..."
    #### Familles ####
    /familles:
        get:
            tags:
                - Familles (Families)
            summary: List of all the families
            description: Table containing the JSON of the families in the base, sorted by name by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - proprietaire
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, libelle, utilisee_pour]   # ?select=cle,libelle,utilisee_pour
                - name: cle
                  in: query
                  description: returns only the families having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: libelle
                  in: query
                  description: returns only the families having one of these designations
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single designation wanted
                      value: [maths]   # ?libelle=maths
                    multipleIds:
                      summary: Example with several designations wanted
                      value: [maths, francais, histoire]   # ?libelle=maths,francais,histoire
                - name: mode
                  in: query
                  description: returns only the families of this mode
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: string
                - name: utilisee_pour
                  in: query
                  description: returns only the families having one of these classifications
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
            responses:
              '200':    # status code
                description: JSON table of the families
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Familles'
        post:
            tags:
                - Familles (Families)
            summary: Creation of a new family
            description: Creates a new family in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      libelle:
                        type: string
                        example: "Family1"
                      mode:
                        type: string
                        example: "Predefined rubrics"
                      proprietaire:
                        type: integer
                        example: 10
                      utilisee_pour:
                        type: array
                        items:
                          type: string
                        example: ["Matières", "Enseignants"]
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Familles'
              '400':    # status code
                description: "Invalid parameters: name; type and mode compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /familles/{cle}:
        get:
            tags:
                - Familles (Families)
            summary: Json of the family with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Familles'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Familles (Families)
            summary: Partial update of a family
            description: Modifies the fields of the family with the key {cle} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "family key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      libelle:
                        type: string
                        example: "Family1"
                      mode:
                        type: string
                        example: "Predefined rubrics"
                      proprietaire:
                        type: integer
                        example: 10
                      utilisee_pour:
                        type: array
                        items:
                          type: string
                        example: ["Matières", "Enseignants"]
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Familles'
              '400':    # status code
                description: "Invalid parameters: designation compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent family"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Familles (Families)
            summary: Deletion of a family
            description: Permanently deletes the family with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /familles/supprimer:
        post:
            tags:
                - Familles (Families)
            summary: Deletion of several families
            description: Delete the families whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the families to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /familles/{cle}/rubriques:
        get:
            tags:
                - Familles (Families)
            summary: Rubrics of the family with the key {cle}
            parameters:
                - name: cle
                  in: path
                  description: "family key"
                  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: 10
                          nom:
                            type: string
                            example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Familles (Families)
            summary: Addition a family rubric
            description: Adds a rubric to the family with the key {cle}, the name having been passed in the body
            parameters:
                - name: cle
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the field name of the new rubric and its value
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      nom:
                        type: string
                        example: "Rubric2"
            responses:
              '201':    # status code
                description: Success - JSON of the element created
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle:
                          type: integer
                          example: 11
                        nom:
                          type: string
                          example: "Rubric2"
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent family"
              '500':    # status code
                description: "Creation impossible"
    #### Rubriques ####
    /rubriques:
        get:
            tags:
                - Rubriques (Rubrics)
            summary: List of all the rubrics
            description: Table containing the json of the rubrics in the base, sorted by name by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom, famille]   # ?select=cle,nom,famille
                - name: cle
                  in: query
                  description: returns only the rubrics having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: returns only the rubrics having one of these names
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [maths]   # ?nom=maths
                    multipleIds:
                      summary: Example with several names wanted
                      value: [maths, francais, histoire]   # ?nom=maths,francais,histoire
                - name: famille
                  in: query
                  description: returns only the family rubrics having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single family wanted
                      value: [12]   # ?famille=12
                    multipleIds:
                      summary: Example with several families wanted
                      value: [12, 24, 31]   # ?famille=12,24,31
            responses:
              '200':    # status code
                description: JSON table of the rubrics
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Rubriques'
        post:
            tags:
                - Rubriques (Rubrics)
            summary: Creation of a new rubric
            description: Creates a new rubric in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Rubriques'
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Rubriques'
              '400':    # status code
                description: "Invalid parameters: name and family key compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /rubriques/{cle}:
        get:
            tags:
                - Rubriques (Rubrics)
            summary: Json of the rubric with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "rubric key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Rubriques'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Rubriques (Rubrics)
            summary: Partial update of a rubric
            description: Modifies the fields of the rubric with the key {cle} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "rubric key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Rubriques'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Rubriques'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '404':    # status code
                description: "Invalid parameter: non-existent rubric"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Rubriques (Rubrics)
            summary: Deletion of a rubric
            description: Permanently deletes the rubric with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /rubriques/supprimer:
        post:
            tags:
                - Rubriques (Rubrics)
            summary: Deletion of several rubrics
            description: Delete the rubrics whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the rubrics to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    #### Calendriers_notation ####
    /calendriers_notation:
        get:
            tags:
                - Calendriers_notation (Calendars_grading)
            summary: List of all the grading calendars
            description: Table containing the json of the grading calendars in the base, sorted by name by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - nom
                      - proprietaire
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom, proprietaire]   # ?select=cle,nom,proprietaire
                - name: cle
                  in: query
                  description: Filter on the keys of the grading calendars
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: Filter on the names of the grading calendars
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [semestriel]   # ?nom=semestriel
                    multipleIds:
                      summary: Example with several names wanted
                      value: [semestriel, trimestriel]   # ?nom=semestriel,trimestriel
            responses:
              '200':    # status code
                description: JSON table of the grading calendars
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Calendriers_notation'
        post:
            tags:
                - Calendriers_notation (Calendars_grading)
            summary: Creation of a new grading calendar
            description: Creates a new grading calendar in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Calendriers_notation'
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Calendriers_notation'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /calendriers_notation/{cle}:
        get:
            tags:
                - Calendriers_notation (Calendars_grading)
            summary: Json of the grading calendar with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "grading calendar key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Calendriers_notation'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Calendriers_notation (Calendars_grading)
            summary: Partial update of a grading calendar
            description: Modifies the fields of the notation calendar with the key {cle} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "grading calendar key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Calendriers_notation'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Calendriers_notation'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '404':    # status code
                description: "Not found: The past key does not exist"
              '405':    # status code
                description: "Insufficient rights"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Calendriers_notation (Calendars_grading)
            summary: Deletion of a grading calendar
            description: Permanently deletes the grading calendar with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /calendriers_notation/supprimer:
        post:
            tags:
                - Calendriers_notation (Calendars_grading)
            summary: Deletion of several grading calendars
            description: Delete the grading calendars whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the grading calendars to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /calendriers_notation/{cle_calendrier}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Calendriers_notation (Calendars_grading)
            summary: Rubrics allocated to the grading calendar for the family
            description: Rubrics allocated to the grading calendar with the key {cle_calendrier} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', 'rubrique_libre' allows to obtain the available rubric of this family. In the case of ‘predefined rubrics', ‘rubrics' allows you to obtain the table (key and name) of all allocated rubrics.
            parameters:
                - name: cle_calendrier
                  in: path
                  description: "grading calendar key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        calendrier_notation:
                          type: integer
                          example: 388
                        famille:
                          type: integer
                          example: 125
                        mode:
                          type: string
                          example: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
        post:
            tags:
                - Calendriers_notation (Calendars_grading)
            summary: Modification of the rubrics allocated to the grading calendar for the family
            description: Modifies the rubrics allocated to the grading calendar with the key {cle_calendrier} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', specified 'rubrique_libre' to modify the available rubric for this family. In the case of ‘predefined rubrics', fill in ‘rubrics' with the table of keys of the wanted rubrics.
            parameters:
                - name: cle_calendrier
                  in: path
                  description: "grading calendar key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
                - name: rubrique_libre
                  in: query
                  description: designation of the available ruric. Only  in the case of a family of available rurics.
                  required: true
                  schema:
                    type: string
                - name: rubriques
                  in: query
                  description: Table of the predefined rubric keys of the family. Only in the case of a family with predefined rubrics.
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        calendrier_notation:
                          type: integer
                          example: 388
                        famille:
                          type: integer
                          example: 125
                        mode:
                          type: string
                          example: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
              '500':    # status code
                description: "'Modification impossible' or 'Insufficient rights'"
    #### Periodes_hors_calendrier ####
    /periodes_hors_calendrier:
        get:
            tags:
                - Periodes_hors_calendrier (Outside_calendar_periods)
            summary: List of all the periods outside the calendar
            description: Table containing the json of the outside of the calendar periods in the base, sorted by name by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - nom
                      - date_debut
                      - proprietaire
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom, proprietaire]   # ?select=cle,nom,proprietaire
                - name: cle
                  in: query
                  description: Filter on the keys of the periods outside the calendar
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: Filter on the names of the periods outside the calendar
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [semestriel]   # ?nom=semestriel
                    multipleIds:
                      summary: Example with several names wanted
                      value: [semestriel, trimestriel]   # ?nom=semestriel,trimestriel
            responses:
              '200':    # status code
                description: JSON table of the outside the calendar periods
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Periodes_hors_calendrier'
        post:
            tags:
                - Periodes_hors_calendrier (Outside_calendar_periods)
            summary: Creation of a new period outside the calendar
            description: Creates a new period outside the calendar in the base and initializes the fields using the parameters passed in the JSON.
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Periodes_hors_calendrier'
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Periodes_hors_calendrier'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /periodes_hors_calendrier/{cle}:
        get:
            tags:
                - Periodes_hors_calendrier (Outside_calendar_periods)
            summary: Json of the period outside of the calendar with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Periodes_hors_calendrier'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Periodes_hors_calendrier (Outside_calendar_periods)
            summary: Partial update of a period outside of the calendar
            description: Modifies the fields of the outside the calendar period with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "period outside the calendar period key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Periodes_hors_calendrier'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Periodes_hors_calendrier'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '404':    # status code
                description: "Not found: The past key does not exist"
              '405':    # status code
                description: "Insufficient rights"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Periodes_hors_calendrier (Outside_calendar_periods)
            summary: Deletion of an outside the calendar period
            description: Permanently deletes the outside the calendar period with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /periodes_hors_calendrier/supprimer:
        post:
            tags:
                - Periodes_hors_calendrier (Outside_calendar_periods)
            summary: Deletion of several outside the calendar periods
            description: Delete the outside the calendar periods whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the outside the calendar periods to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /periodes_hors_calendrier/{cle_periode}/familles/{cle_fam}/rubriques:
        get:
            tags:
                - Periodes_hors_calendrier (Outside_calendar_periods)
            summary: Rubrics allocated to the period outside the calendar for the family
            description: Rubrics allocated to the period outside the calendar with the key {cle_periode} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', 'rubrique_libre' allows to obtain the available rubric of this family. In the case of ‘predefined rubrics', ‘rubrics' allows you to obtain the table (key and name) of all allocated rubrics.
            parameters:
                - name: cle_periode
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        periode_hors_calendrier:
                          type: integer
                          example: 388
                        famille:
                          type: integer
                          example: 125
                        mode:
                          type: string
                          example: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
        post:
            tags:
                - Periodes_hors_calendrier (Outside_calendar_periods)
            summary: Modification of rubrics allocated to the period outside the calendar for the family
            description: Modifies the rubrics allocated to the period outside the calendar with the key {cle_periode} for the family with the key {cle_fam}. If the mode of the family is 'Available rubric', specified 'rubrique_libre' to modify the available rubric for this family. In the case of ‘predefined rubrics', fill in ‘rubrics' with the table of keys of the wanted rubrics.
            parameters:
                - name: cle_periode
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
                - name: cle_fam
                  in: path
                  description: "family key"
                  required: true
                  schema:
                    type: integer
                - name: rubrique_libre
                  in: query
                  description: designation of the available ruric. Only  in the case of a family of available rurics.
                  required: true
                  schema:
                    type: string
                - name: rubriques
                  in: query
                  description: Table of the predefined rubric keys of the family. Only in the case of a family with predefined rubrics.
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        periode_hors_calendrier:
                          type: integer
                          example: 388
                        famille:
                          type: integer
                          example: 125
                        mode:
                          type: string
                          example: "Predefined rubrics"
                        rubrique_libre:
                          type: string
                          example: "Available rubrics for this element"
                        rubriques:
                          type: array
                          items:
                            type: object
                            properties:
                              cle:
                                type: integer
                                example: 12
                              nom:
                                type: string
                                example: "Rubric1"
              '404':    # status code
                description: "Invalid parameter: incorrect element or family key"
              '500':    # status code
                description: "'Modification impossible' or 'Insufficient rights'"
    #### Periodes_notation ####
    /periodes_notation:
        get:
            tags:
                - Periodes_notation (Periods_grading)
            summary: List of all the grading periods
            description: Table containing the json of the grading periods in the base, sorted by calendar and then name by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order (by key, by calendar then name, by calendar then beginning date)
                  schema:
                    type: string
                    enum:
                      - cle
                      - nom
                      - date_debut
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, nom, date_debut]   # ?select=cle,nom,date_debut
                - name: cle
                  in: query
                  description: Filter on the keys of the grading periods
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: nom
                  in: query
                  description: Filter on the names of the grading periods
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single name wanted
                      value: [semestriel]   # ?nom=semestriel
                    multipleIds:
                      summary: Example with several names wanted
                      value: [semestriel, trimestriel]   # ?nom=semestriel,trimestriel
            responses:
              '200':    # status code
                description: JSON table of the grading periods
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Periodes_notation'
        post:
            tags:
                - Periodes_notation (Periods_grading)
            summary: Creation of a new grading period
            description: Creates a new grading period in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Periodes_notation'
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Periodes_notation'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /periodes_notation/{cle}:
        get:
            tags:
                - Periodes_notation (Periods_grading)
            summary: Json of the grading period with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "grading period key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Periodes_notation'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Periodes_notation (Periods_grading)
            summary: Partial update of a grading period
            description: Modifies the fields of the grading period with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "grading period key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Periodes_notation'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Periodes_notation'
              '400':    # status code
                description: "Invalid parameters: Name compulsory, size problem..."
              '404':    # status code
                description: "Not found: The past key does not exist"
              '405':    # status code
                description: "Insufficient rights"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Periodes_notation (Periods_grading)
            summary: Deletion of a grading period
            description: Permanently deletes the grading period with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /periodes_notation/supprimer:
        post:
            tags:
                - Periodes_notation (Periods_grading)
            summary: Deletion of several grading periods
            description: Delete the grading periods whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the grading periods to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    #### Modules_notation ####
    /modules_notation/{cle}:
        get:
            tags:
                - Modules_notation (Modules_grading)
            summary: Json of the grading module with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "key of the grading module"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Modules_notation'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Modules_notation (Modules_grading)
            summary: Partial update of a grading module
            description: Modifies the fields of the grading module with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "key of the grading module that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Modules_notation'
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Modules_notation'
              '400':    # status code
                description: "Invalid parameters: designation compulsory, size problem..."
              '404':    # status code
                description: "Not found: The past key does not exist"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Modules_notation (Modules_grading)
            summary: Deletion of a grading module
            description: Permanently deletes the grading module with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /modules_notation/supprimer:
        post:
            tags:
                - Modules_notation (Modules_grading)
            summary: Deletion of several grading modules
            description: Delete the grading modules whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the grading modules to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /modules_notation/{cle_mod}/periodes_notation/{cle_pern}/coefficient:
        get:
            tags:
                - Modules_notation (Modules_grading)
            summary: Coefficient allocated to the grading module for the grading period
            description: Coefficient allocated to the grading module with the key {cle_mod} for  the grading period with the key {cel_pern}
            parameters:
                - name: cle_mod
                  in: path
                  description: "key of the grading module"
                  required: true
                  schema:
                    type: integer
                - name: cle_pern
                  in: path
                  description: "grading period key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_module_notation:
                          type: integer
                          example: 388
                        cle_periode_notation:
                          type: integer
                          example: 125
                        coefficient:
                          type: number
                          example: 2.5
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Modules_notation (Modules_grading)
            summary: Modification of the coefficient allocated of the grading module for the grading period
            description: Modifies the coefficient allocated of the grading module with the key {cle_mod} for the grading period with the key {cle_pern}
            parameters:
                - name: cle_mod
                  in: path
                  description: "key of the grading module"
                  required: true
                  schema:
                    type: integer
                - name: cle_pern
                  in: path
                  description: "grading period key"
                  required: true
                  schema:
                    type: integer
                - name: coefficient
                  in: query
                  description: coefficient to be allocated
                  required: true
                  schema:
                    type: number
                    example: 3.5
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_module_notation:
                          type: integer
                          example: 388
                        cle_periode_notation:
                          type: integer
                          example: 125
                        coefficient:
                          type: number
                          example: 2.5
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /modules_notation/{cles_mod}/periodes_notation/{cles_pern}/coefficients:
        get:
            tags:
                - Modules_notation (Modules_grading)
            summary: Coefficient allocated to each grading module for each of the grading periods
            description: Coefficient allocated to each grading module whose key is in {cles_mod} for each of the grading periods whose key is in {cels_pern}
            parameters:
                - name: cles_mod
                  in: path
                  description: keys for the wanted grading modules, separated by commas (3,4,5)
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: cles_pern
                  in: path
                  description: keys for the wanted grading periods, separated by commas (3,4,5)
                  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_module_notation:
                            type: integer
                            example: 388
                          cle_periode_notation:
                            type: integer
                            example: 125
                          coefficient:
                            type: number
                            example: 2.5
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /modules_notation/{cle_mod}/periodes_hors_calendrier/{cle_perhc}/coefficient:
        get:
            tags:
                - Modules_notation (Modules_grading)
            summary: Coefficient allocated to the grading module for the period outside the calendar
            description: Coefficient allocated to grading module with the key {cle_mod} for the period outside the calendar with the key {cle_perhc}
            parameters:
                - name: cle_mod
                  in: path
                  description: "key of the grading module"
                  required: true
                  schema:
                    type: integer
                - name: cle_perhc
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_module_notation:
                          type: integer
                          example: 388
                        cle_periode_hors_calendrier:
                          type: integer
                          example: 125
                        coefficient:
                          type: number
                          example: 2.5
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Modules_notation (Modules_grading)
            summary: Modification of the coefficient allocated of the grading module for the period outside the calendar
            description: Modifies the coefficient allocated to the grading module with the key {cle_mod} period outside the calendar with the key {cel_perhc}
            parameters:
                - name: cle_mod
                  in: path
                  description: "key of the grading module"
                  required: true
                  schema:
                    type: integer
                - name: cle_perhc
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
                - name: coefficient
                  in: query
                  description: coefficient to be allocated
                  required: true
                  schema:
                    type: number
                    example: 3.5
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_module_notation:
                          type: integer
                          example: 388
                        cle_periode_hors_calendrier:
                          type: integer
                          example: 125
                        coefficient:
                          type: number
                          example: 2.5
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /modules_notation/{cles_mod}/periodes_hors_calendrier/{cles_perhc}/coefficients:
        get:
            tags:
                - Modules_notation (Modules_grading)
            summary: Coefficient allocated to each grading module for each of the periods outside of the calendar
            description: Coefficient allocated to each grading module whose key is in {cles_mod} for each of the periods outside the calendar whose key is in {cels_perhc}
            parameters:
                - name: cles_mod
                  in: path
                  description: keys for the wanted grading modules, separated by commas (3,4,5)
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: cles_perhc
                  in: path
                  description: keys for the wanted outside the calendar periods, separated by commas (3,4,5)
                  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_module_notation:
                            type: integer
                            example: 388
                          cle_periode_hors_calendrier:
                            type: integer
                            example: 125
                          coefficient:
                            type: number
                            example: 2.5
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    #### Services_notation ####
    /services_notation:
        get:
            tags:
                - Services_notation (Services_grading)
            summary: List of all the grading services
            description: Table containing the json of the grading services in the base, sorted by subjects by default.
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - matiere
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, matiere, promotions]   # ?select=cle,matiere,promotions
                - name: cle
                  in: query
                  description: Filter on the keys of the grading services
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: matiere
                  in: query
                  description: Filter on the keys of the grading services
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                  examples:
                    oneId:
                      summary: Example with a single subject wanted
                      value: [12]   # ?matiere=12
                    multipleIds:
                      summary: Example with several subjects wanted
                      value: [12, 15]   # ?matiere=12,15
            responses:
              '200':    # status code
                description: JSON table of the grading services
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Services_notation'
        post:
            tags:
                - Services_notation (Services_grading)
            summary: Creation of a new grading service
            description: Creates a new grading service in the base and initialize the fields using the parameters passed in the JSON.<br>
                         By default, the grading service will be created in an automatically created grading module with the same designation as the subject of this service.<br>
                         To create the service in an already existing grading module, you must pass the key of the module with the field 'module_grading'.<br>
                         To create a sub-service of a grading service, you must pass its key with the field 'service_father'.
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      matiere:
                        type: integer
                        example: 13
                      promotions:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      td_options:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      regroupements:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      enseignants:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      est_facultatif:
                        type: boolean
                        example: false
                      nb_points_ects:
                        type: number
                        example: 10.5
                      note_seuil_ects:
                        type: string
                        example: "10"
                      note_eliminatoire_ects:
                        type: string
                        example: "5"
                      devoirs:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      periodes_notation_actives:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      periodes_hors_calendrier_actives:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      sous_services:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      est_sous_service:
                        type: boolean
                        example: false
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Services_notation'
              '400':    # status code
                description: "Invalid parameters: subject compulsory, excessive number of points..."
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /services_notation/{cle}:
        get:
            tags:
                - Services_notation (Services_grading)
            summary: Json of the grading service with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Services_notation'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Services_notation (Services_grading)
            summary: Partial update of a grading service
            description: Modifies the fields of the grading service with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "grading service key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      matiere:
                        type: integer
                        example: 13
                      promotions:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      td_options:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      regroupements:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      enseignants:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      est_facultatif:
                        type: boolean
                        example: false
                      nb_points_ects:
                        type: number
                        example: 10.5
                      note_seuil_ects:
                        type: string
                        example: "10"
                      note_eliminatoire_ects:
                        type: string
                        example: "5"
                      devoirs:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      periodes_notation_actives:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      periodes_hors_calendrier_actives:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      sous_services:
                        type: array
                        items:
                          type: integer
                        example: [10,12,14,48]
                      est_sous_service:
                        type: boolean
                        example: false
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Services_notation'
              '400':    # status code
                description: "Invalid parameters: subject compulsory, size problem..."
              '404':    # status code
                description: "Not found: The past key does not exist"
              '405':    # status code
                description: "Insufficient rights"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Services_notation (Services_grading)
            summary: Deletion of a grading service
            description: Permanently deletes the grading service with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /services_notation/supprimer:
        post:
            tags:
                - Services_notation (Services_grading)
            summary: Deletion of several grading services
            description: Delete the grading services whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the grading services to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /services_notation/{cle_sn}/promotions/{cle_promo}/module_notation:
        get:
            tags:
                - Services_notation (Services_grading)
            summary: Grading service of the grading module for this class
            description: Key of the grading module of the grading service with the key {cle_sn} for the class with the key {cle_promo}
            parameters:
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_promotion:
                          type: integer
                          example: 125
                        cle_module_notation:
                          type: integer
                          example: 234
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /services_notation/{cle_sn}/periodes_notation/{cle_pern}/coefficient:
        get:
            tags:
                - Services_notation (Services_grading)
            summary: Coefficient allocated to the grading service for the grading period
            description: Coefficient allocated to the grading service with the key {cle_sn} for the grading period with the key {cel_pern}
            parameters:
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_pern
                  in: path
                  description: "grading period key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_periode_notation:
                          type: integer
                          example: 125
                        coefficient:
                          type: number
                          example: 2.5
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Services_notation (Services_grading)
            summary: Modification of the coefficient allocated of the grading service for the grading period
            description: Modifies the coefficient allocated of the grading service with the key {cle_sn} for the period outside the calendar with the key {cle_pern}
            parameters:
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_pern
                  in: path
                  description: "grading period key"
                  required: true
                  schema:
                    type: integer
                - name: coefficient
                  in: query
                  description: coefficient to be allocated
                  required: true
                  schema:
                    type: number
                    example: 3.5
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_periode_notation:
                          type: integer
                          example: 125
                        coefficient:
                          type: number
                          example: 2.5
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /services_notation/{cles_sn}/periodes_notation/{cles_pern}/coefficients:
        get:
            tags:
                - Services_notation (Services_grading)
            summary: Coefficient allocated to each grading service for each of the grading periods
            description: Coefficient allocated to each grading service whose key is in {cles_sn} for each of the grading periods whose key is in {cels_pern}
            parameters:
                - name: cles_sn
                  in: path
                  description: keys for the wanted grading services, separated by commas (3,4,5)
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: cles_pern
                  in: path
                  description: keys for the wanted grading periods, separated by commas (3,4,5)
                  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_service_notation:
                            type: integer
                            example: 388
                          cle_periode_notation:
                            type: integer
                            example: 125
                          coefficient:
                            type: number
                            example: 2.5
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /services_notation/{cle_sn}/periodes_hors_calendrier/{cle_perhc}/coefficient:
        get:
            tags:
                - Services_notation (Services_grading)
            summary: Coefficient allocated to the grading service for the period outside the calendar
            description: Coefficient allocated to grading service with the key {cle_sn} for the period outside the calendar with the key {cle_perhc}
            parameters:
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_perhc
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_periode_hors_calendrier:
                          type: integer
                          example: 125
                        coefficient:
                          type: number
                          example: 2.5
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Services_notation (Services_grading)
            summary: Modification of the coefficient allocated to grading service for the period outside the calendar
            description: Modifies the coefficient allocated to the grading service with the key {cle_sn} period outside the calendar with the key {cel_perhc}
            parameters:
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_perhc
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
                - name: coefficient
                  in: query
                  description: coefficient to be allocated
                  required: true
                  schema:
                    type: number
                    example: 3.5
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_periode_hors_calendrier:
                          type: integer
                          example: 125
                        coefficient:
                          type: number
                          example: 2.5
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /services_notation/{cles_sn}/periodes_hors_calendrier/{cles_perhc}/coefficients:
        get:
            tags:
                - Services_notation (Services_grading)
            summary: Coefficient allocated to each grading service for each of the periods outside of the calendar
            description: Coefficient allocated to each grading service whose key is in {cles_sn} for each of the periods outside the calendar whose key is in {cels_perhc}
            parameters:
                - name: cles_sn
                  in: path
                  description: keys for the wanted grading services, separated by commas (3,4,5)
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                - name: cles_perhc
                  in: path
                  description: keys for the wanted outside the calendar periods, separated by commas (3,4,5)
                  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_service_notation:
                            type: integer
                            example: 388
                          cle_periode_hors_calendrier:
                            type: integer
                            example: 125
                          coefficient:
                            type: number
                            example: 2.5
              '404':    # status code
                description: "Invalid parameter: non-existent key"
    /services_notation/{cle_sn}/periodes_notation/{cle_pern}/bonus_malus_actif:
        get:
            tags:
                - Services_notation (Services_grading)
            summary: Boolean indicating whether the grading service for the grading period takes into account bonuses/penalties
            description: True if the grading service with the key {cle_sn} for the grading period with the key {cle_pern} takes bonuses/penalties into account, otherwise false.
            parameters:
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_pern
                  in: path
                  description: "grading period key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_periode_notation:
                          type: integer
                          example: 125
                        bonus_malus_actif:
                          type: boolean
                          example: true
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Services_notation (Services_grading)
            summary: Modification of the consideration of bonuses/penalties from the grading service for the grading period
            description: Active or inactive taking into account of bonuses/penalties from the grading service with the key {cle_sn} for the grading period with the key {cle_pern}
            parameters:
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_pern
                  in: path
                  description: "grading period key"
                  required: true
                  schema:
                    type: integer
                - name: bonus_malus_actif
                  in: query
                  description: Taking into account the bonus/penalty
                  required: true
                  schema:
                    type: boolean
                    example: true
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_periode_notation:
                          type: integer
                          example: 125
                        bonus_malus_actif:
                          type: boolean
                          example: true
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /services_notation/{cle_sn}/periodes_hors_calendrier/{cle_perhc}/bonus_malus_actif:
        get:
            tags:
                - Services_notation (Services_grading)
            summary: Boolean indicating whether the grading service for the outside the calendar period takes bonuses/penalties into account
            description: True if the grading service with the key {cle_sn} for the period outside the calendar with the key {cle_perhc} takes into account bonuses/penalties, otherwise false
            parameters:
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_perhc
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_periode_hors_calendrier:
                          type: integer
                          example: 125
                        bonus_malus_actif:
                          type: boolean
                          example: true
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Services_notation (Services_grading)
            summary: Modification in the consideration of bonuses/penalties from the grading service for the period outside the calendar
            description: Active or inactive consideration of bonuses/penalties of the grading service with the key {cle_sn} for the period outside the calendar with the key {cle_perhc}
            parameters:
                - name: cle_sn
                  in: path
                  description: "grading service key"
                  required: true
                  schema:
                    type: integer
                - name: cle_perhc
                  in: path
                  description: "period outside the calendar period key"
                  required: true
                  schema:
                    type: integer
                - name: bonus_malus_actif
                  in: query
                  description: Taking into account the bonus/penalty
                  required: true
                  schema:
                    type: boolean
                    example: true
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_service_notation:
                          type: integer
                          example: 388
                        cle_periode_hors_calendrier:
                          type: integer
                          example: 125
                        bonus_malus_actif:
                          type: boolean
                          example: true
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    #### Devoirs ####
    /devoirs:
        get:
            tags:
                - Devoirs (Tests)
            summary: List of all the tests
            description: Table containing the json of the ests in the base, sorted by grading service by default
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - cle
                      - service_notation
                      - date
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [cle]   # ?select=cle
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [cle, matiere, promotions]   # ?select=cle,matiere,promotions
                - name: cle
                  in: query
                  description: Filter on the keys of the tests
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [12]   # ?cle=12
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [12, 24, 48]   # ?cle=12,24,48
                - name: services_notation
                  in: query
                  description: Filter on the keys of the grading services for tests
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single grading service wanted
                      value: [12]   # ?services_notation=12
                    multipleIds:
                      summary: Example with several grading services wanted
                      value: [12, 15]   # ?services_notation=12,15
            responses:
              '200':    # status code
                description: JSON table of the tests
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Devoirs'
        post:
            tags:
                - Devoirs (Tests)
            summary: Creation of a new test
            description: Creates a new test in the base and initialize the fields using the parameters passed in the JSON
            requestBody:
              description: JSON fields used for the creation
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      service_notation:
                        type: integer
                        example: 11
                      date:
                        type: string
                        example: "2024-12-01"
                      date_publication:
                        type: string
                        example: "2024-12-02"
                      est_facultatif_comme_note:
                        type: boolean
                        example: true
                      est_facultatif_comme_bonus:
                        type: boolean
                        example: false
                      commentaire:
                        type: string
                        example: "Voici un commentaire pour le devoir"
                      est_verrouille:
                        type: boolean
                        example: false
                      est_devoir_surveille:
                        type: boolean
                        example: false
                      bareme:
                        type: string
                        example: "20"
                      est_ramener_sur:
                        type: boolean
                        example: false
                      coefficient:
                        type: number
                        example: 2.5
            responses:
              '201':    # status code
                description: Created
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Devoirs'
              '400':    # status code
                description: "Invalid parameters: grading_service compulsory"
              '500':    # status code
                description: Creation or modification of at least one of the fields impossible
    /devoirs/{cle}:
        get:
            tags:
                - Devoirs (Tests)
            summary: Json of the test with the key {cle}
            description: Use SELECT to only obtain certain fields from the JSON
            parameters:
                - name: cle
                  in: path
                  description: "test key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Devoirs'
              '404':    # status code
                description: "Invalid parameter"
        post:
            tags:
                - Devoirs (Tests)
            summary: Partial update of a test
            description: Modifies the fields of the test with the key {key} with those passed in the JSON at the BODY level
            parameters:
                - name: cle
                  in: path
                  description: "test key that you want to update"
                  required: true
                  schema:
                    type: integer
            requestBody:
              description: JSON containing the fields and values you want to modify. Only include in the JSON the fields you want to modify.
              required: true
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      service_notation:
                        type: integer
                        example: 11
                      date:
                        type: string
                        example: "2024-12-01"
                      date_publication:
                        type: string
                        example: "2024-12-02"
                      est_facultatif_comme_note:
                        type: boolean
                        example: true
                      est_facultatif_comme_bonus:
                        type: boolean
                        example: false
                      commentaire:
                        type: string
                        example: "Voici un commentaire pour le devoir"
                      est_verrouille:
                        type: boolean
                        example: false
                      est_devoir_surveille:
                        type: boolean
                        example: false
                      bareme:
                        type: string
                        example: "20"
                      est_ramener_sur:
                        type: boolean
                        example: false
                      coefficient:
                        type: number
                        example: 2.5
            responses:
              '200':    # status code
                description: Success - JSON of the element modified
                content:  # Response body
                  application/json:
                    schema:
                      $ref: '#/components/schemas/Devoirs'
              '400':    # status code
                description: "Invalid parameters: grading_service compulsory, size problem..."
              '404':    # status code
                description: "Not found: The past key does not exist"
              '405':    # status code
                description: "Insufficient rights"
              '500':    # status code
                description: "Modification of at least one of the fields impossible"
        delete:
            tags:
                - Devoirs (Tests)
            summary: Deletion of a test
            description: Permanently deletes the test with the key {cle} from the base
            parameters:
                - name: cle
                  in: path
                  description: key of the element to be deleted
                  required: true
                  schema:
                    type: integer
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /devoirs/supprimer:
        post:
            tags:
                - Devoirs (Tests)
            summary: Deletion of several tests
            description: Delete the tests whose key is passed as a parameter (?keys=1,5,7)
            parameters:
                - name: cles
                  in: query
                  description: one or several keys of the tests to be deleted
                  style: form
                  required: true
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single key wanted
                      value: [5]   # ?cles=5
                    multipleIds:
                      summary: Example with several keys wanted
                      value: [1, 5, 7]   # ?cles=1,5,7
            responses:
              '204':    # status code
                description: "Deleted: successful deletion"
              '404':    # status code
                description: "Not found: The past key does not exist"
    /devoirs/{cle_dev}/promotions/{cle_promo}/periodes_notation:
        get:
            tags:
                - Devoirs (Tests)
            summary: Grading periods and periods outside of the calendar allocated to the test for the class
            description: Grading periods and periods outside of the calendar allocated to the test with the key {cle_dev} for the class with the key {cle_promo}
            parameters:
                - name: cle_dev
                  in: path
                  description: "test key"
                  required: true
                  schema:
                    type: integer
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_devoir:
                          type: integer
                          example: 498
                        cle_promotion:
                          type: integer
                          example: 388
                        periodes_notation:
                          type: array
                          items:
                            type: integer
                          example: [10,12,14,15]
                        periodes_hors_calendrier:
                          type: array
                          items:
                            type: integer
                          example: [11,13,16,17]
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Devoirs (Tests)
            summary: Modification of the grading periods and/or periods outside the calendar for the class
            description: Modifies the grading periods and/or outside the calendar periods for the test with the key {key_test} for the class with the key {key_cl}
            parameters:
                - name: cle_dev
                  in: path
                  description: "test key"
                  required: true
                  schema:
                    type: integer
                - name: cle_promo
                  in: path
                  description: "class key"
                  required: true
                  schema:
                    type: integer
                - name: periodes_notation
                  in: query
                  description: keys for the grading periods wanted for the test (at least one of the two parameters between grading_periodes and periodes_outside_the_calendar is required)
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                    example: [10,12,14,15]
                - name: periodes_hors_calendrier
                  in: query
                  description: keys of the periods outside of the calendar wanted for the test (at least one of the two parameters between grading_periodes and periodes_outside_the_calendar is required)
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                    example: [11,13,16,17]
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_devoir:
                          type: integer
                          example: 498
                        cle_promotion:
                          type: integer
                          example: 388
                        periodes_notation:
                          type: array
                          items:
                            type: integer
                          example: [10,12,14,15]
                        periodes_hors_calendrier:
                          type: array
                          items:
                            type: integer
                          example: [11,13,16,17]
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    /devoirs/{cle_dev}/tdoptions/{cle_TDOpt}/periodes_notation:
        get:
            tags:
                - Devoirs (Tests)
            summary: Grading periods and periods outside the calendar allocated to the test for the tutorial/option
            description: Grading periods and periods outside of the calendar allocated to the test with the key {cle_dev} for the tutorial/option with the key {cle_TDOpt}
            parameters:
                - name: cle_dev
                  in: path
                  description: "test key"
                  required: true
                  schema:
                    type: integer
                - name: cle_TDOpt
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_devoir:
                          type: integer
                          example: 498
                        cle_tdoption:
                          type: integer
                          example: 388
                        periodes_notation:
                          type: array
                          items:
                            type: integer
                          example: [10,12,14,15]
                        periodes_hors_calendrier:
                          type: array
                          items:
                            type: integer
                          example: [11,13,16,17]
              '404':    # status code
                description: "Invalid parameter: non-existent key"
        post:
            tags:
                - Devoirs (Tests)
            summary: Modification of the grading periods and/or periods outside the calendar for the tutorial/option
            description: Modifies the grading periods and/or periods outside the calendar for the test with the key {key_test} for the tutorial/options with the key {key_tutoption}
            parameters:
                - name: cle_dev
                  in: path
                  description: "test key"
                  required: true
                  schema:
                    type: integer
                - name: cle_TDOpt
                  in: path
                  description: "tutorial/option key"
                  required: true
                  schema:
                    type: integer
                - name: periodes_notation
                  in: query
                  description: keys for the grading periods wanted for the test (at least one of the two parameters between grading_periodes and periodes_outside_the_calendar is required)
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                    example: [10,12,14,15]
                - name: periodes_hors_calendrier
                  in: query
                  description: keys of the periods outside of the calendar wanted for the test (at least one of the two parameters between grading_periodes and periodes_outside_the_calendar is required)
                  required: true
                  schema:
                    type: array
                    items:
                      type: integer
                    example: [11,13,16,17]
            responses:
              '200':    # status code
                description: OK
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        cle_devoir:
                          type: integer
                          example: 498
                        cle_tdoption:
                          type: integer
                          example: 388
                        periodes_notation:
                          type: array
                          items:
                            type: integer
                          example: [10,12,14,15]
                        periodes_hors_calendrier:
                          type: array
                          items:
                            type: integer
                          example: [11,13,16,17]
              '400':    # status code
                description: "Mandatory parameter not specified"
              '404':    # status code
                description: "Invalid parameter: non-existent key"
              '500':    # status code
                description: "Modification impossible"
    #### Notes ####
    /notes:
        get:
            tags:
                - Notes (Grades)
            summary: List of all the grades
            description: Table containing the grades (with the test and concerned student) of the base, sorted by default by the test and then by student.
            parameters:
                - name: sort
                  in: query
                  description: Choice of sorting order
                  schema:
                    type: string
                    enum:
                      - devoir
                      - etudiant
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [devoir]   # ?select=devoir
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [devoir, note, etudiant]   # ?select=devoir,note,etudiant
                - name: etudiant
                  in: query
                  description: returns only the students' grades having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single student wanted
                      value: [12]   # ?etudiant=12
                    multipleIds:
                      summary: Example with several students wanted
                      value: [12, 14, 18]   # ?etudiant=12,14,18
                - name: devoir
                  in: query
                  description: returns only the test grades having one of these keys
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: integer
                  examples:
                    oneId:
                      summary: Example with a single test wanted
                      value: [13]   # ?devoir=13
                    multipleIds:
                      summary: Example with several tests wanted
                      value: [13, 15, 19]   # ?devoir=13,15,19
                - name: date_debut
                  in: query
                  description: returns only the test grades taking place after this beginning date. If this beginning date is not specified, we will take the one from the beginning of the base
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date_debut=2024-08-06
                - name: date_fin
                  in: query
                  description: returns only the test grades taking place before this ending date. If this ending date is not specified, we will take the one from the end of the base
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: string
                  example: "2024-08-06"   # ?date_fin=2024-08-06
            responses:
              '200':    # status code
                description: JSON table of the test grades
                content:  # Response body
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/Notes'
    #### Durees ####
    /duree/{duree}:
        get:
            tags:
                - Durees (Durations)
            summary: Conversion of a duration expressed in days
            description: Transform the duration (expressed in days) into minutes and hours/minutes
            parameters:
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [duree]   # ?select=duree
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [duree, duree_en_minutes]   # ?select=duree,duree_en_minutes
                - name: duree
                  in: path
                  description: "duration (expressed in days) to be transformed"
                  required: true
                  schema:
                    type: number
            responses:
              '200':    # status code
                description: JSON of the duration
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        duree:
                          type: number
                          example: 0.063
                        duree_en_minutes:
                          type: integer
                          example: 90
                        duree_nombre_heures:
                          type: integer
                          example: 1
                        duree_nombre_minutes:
                          type: integer
                          example: 30
    /duree/minutes/{duree_en_minutes}:
        get:
            tags:
                - Durees (Durations)
            summary: Conversion of a duration expressed in minutes
            description: Transform the duration (expressed in minutes) into days and hours/minutes
            parameters:
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [duree]   # ?select=duree
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [duree, duree_en_minutes]   # ?select=duree,duree_en_minutes
                - name: duree_en_minutes
                  in: path
                  description: "duration (expressed in minutes) to be transformed"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: JSON of the duration
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        duree:
                          type: number
                          example: 0.063
                        duree_en_minutes:
                          type: integer
                          example: 90
                        duree_nombre_heures:
                          type: integer
                          example: 1
                        duree_nombre_minutes:
                          type: integer
                          example: 30
    /duree/heures/{nombre_heures}/minutes/{nombre_minutes}:
        get:
            tags:
                - Durees (Durations)
            summary: Conversion of a duration expressed in hours/minutes
            description: Transform the duration (expressed in hours/minutes) into days and minutes
            parameters:
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [duree]   # ?select=duree
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [duree, duree_en_minutes]   # ?select=duree,duree_en_minutes
                - name: nombre_heures
                  in: path
                  description: "duration (expressed in hours/minutes) to be transformed"
                  required: true
                  schema:
                    type: integer
                - name: nombre_minutes
                  in: path
                  description: "duration (expressed in hours/minutes) to be transformed"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: JSON of the duration
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        duree:
                          type: number
                          example: 0.063
                        duree_en_minutes:
                          type: integer
                          example: 90
                        duree_nombre_heures:
                          type: integer
                          example: 1
                        duree_nombre_minutes:
                          type: integer
                          example: 30
    #### Couleurs ####
    /couleur/{couleur}:
        get:
            tags:
                - Couleurs (Colors)
            summary: Conversion of a color
            description: Transform into color 3 values (red, green, and blue) between 0 and 255
            parameters:
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [couleur]   # ?select=couleur
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [couleur, rouge]   # ?select=couleur,rouge
                - name: couleur
                  in: path
                  description: "color to be transformed"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: JSON of the color
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        couleur:
                          type: integer
                          example: 16777215
                        rouge:
                          type: integer
                          example: 255
                        vert:
                          type: integer
                          example: 255
                        bleu:
                          type: integer
                          example: 255
    /couleur/rouge/{R}/vert/{G}/bleu/{B}:
        get:
            tags:
                - Couleurs (Colors)
            summary: Conversion of a color expressed in RGB
            description: Transform into color 3 values (red, green, and blue) between 0 and 255
            parameters:
                - name: select
                  in: query
                  description: Choice of fields that you want to have in the JSON of the response. If not filled in, all fields will be possible.
                  style: form
                  required: false
                  explode: false
                  schema:
                    type: array
                    items:
                      type: string
                      description: field that you want to have in the json response
                  examples:
                    oneId:
                      summary: Example with a single column wanted
                      value: [couleur]   # ?select=couleur
                    multipleIds:
                      summary: Example with several columns wanted
                      value: [couleur, rouge]   # ?select=couleur,rouge
                - name: R
                  in: path
                  description: "color (expressed in red/green/blue) to ce transformed"
                  required: true
                  schema:
                    type: integer
                - name: G
                  in: path
                  description: "color (expressed in red/green/blue) to ce transformed"
                  required: true
                  schema:
                    type: integer
                - name: B
                  in: path
                  description: "color (expressed in red/green/blue) to ce transformed"
                  required: true
                  schema:
                    type: integer
            responses:
              '200':    # status code
                description: JSON of the color
                content:  # Response body
                  application/json:
                    schema:
                      type: object
                      properties:
                        couleur:
                          type: integer
                          example: 16777215
                        rouge:
                          type: integer
                          example: 255
                        vert:
                          type: integer
                          example: 255
                        bleu:
                          type: integer
                          example: 255
components:
  securitySchemes:
    basicAuth:     # <-- Basic authentification
      type: http
      scheme: basic

  schemas:
    Absences:                   # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        etudiant:
          type: integer
          example: 12
        date_heure_debut:
          type: string
          example: "2024-08-16T09:00"
        date_heure_fin:
          type: string
          example: "2024-08-17T16:45"
        est_justifie:
          type: boolean
          example: true
        motif:
          type: string
          example: "Illness with certificate"
        cours_manques:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
    Alternances:                # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        etudiant:
          type: integer
          example: 12
        dates:
          type: array
          items:
            type: object
            properties:
              du:
                type: string
                example: "2000-02-14"
              au:
                type: string
                example: "2000-02-27"
        formulaire_etudiant:
          type: object
          properties:
            visibilite:
              type: boolean
              example: true
            du:
              type: string
              example: "2000-02-14"
            au:
              type: string
              example: "2000-02-27"
        duree_saisie:
          type: number
          example: 10.0
        duree_calculee:
          type: number
          example: 12.0
        entreprise:
          type: integer
          example: 14
        maitres_tuteurs:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        sujet:
          type: string
          example: "work-study topic"
        type_contrat:
          type: string
          example: "Apprenticeship"
        dates_contrat:
          type: object
          properties:
            du:
              type: string
              example: "2000-02-14"
            au:
              type: string
              example: "2000-02-27"
        commentaire:
          type: string
          example: "Here is a very useful comment"
        enseignant_tuteur:
          type: integer
          example: 12
        enseignant_responsable:
          type: integer
          example: 14
        sujet_detaille:
          type: string
          example: "Topic a little more detailed"
        objectifs:
          type: string
          example: "Here are the different objectives"
        activites_prevues:
          type: string
          example: "Here are the planned activities"
        competences_visees:
          type: string
          example: "Here are the targeted competencies"
        modalites_concertation:
          type: string
          example: "Here are the modalities of consultation"
        modalites_evaluation:
          type: string
          example: "Here are the evaluation modalities"
        convention_signee:
          type: boolean
          example: true
        contrat_rempli:
          type: boolean
          example: true
        remuneration:
          type: number
          example: 10.0
        devise:
          type: string
          example: €
        avantages:
          type: array
          items:
            type: string
          example: ["Restaurant vouchers","Transportation"]
    Appariteurs:                # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "Dupond"
        prenom:
          type: string
          example: "Camille"
        civilite:
          type: string
          example: "Mrs"
        cas_identifiant:
          type: string
          example: "Identifiant__CAS"
        adfs_identifiant:
          type: string
          example: "Identifier__ADFS"
        saml_identifiant:
          type: string
          example: "Identifier__SAML"
        identifiant_connexion:
          type: string
          example: "Identifier__connection"
        email:
          type: string
          example: "firstname.surname@email.fr"
        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"
        acces_espace_appariteurs:
          type: boolean
          example: true
        salles:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
    Baccalaureats:              # Object definition
      type: object
      properties:
        nom:
          type: string
          example: "SCIENTIFIC"
        code:
          type: string
          example: "S"
        type:
          type: string
          example: "General baccalaureate"
    Baccalaureat_specialites:   # Object definition
      type: object
      properties:
        nom:
          type: string
          example: "MATHEMATICS"
        code:
          type: string
          example: "MATH"
    Calendriers_notation:       # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "Semestrial"
        proprietaire:
          type: integer
          example: 10
        periodes_notation:
          type: array
          items:
            type: integer
          example: [10,12,14]
        promotions:
          type: array
          items:
            type: integer
          example: [11,13,15,47]
    Contacts:                   # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "Dupond"
        prenom:
          type: string
          example: "Camille"
        civilite:
          type: string
          example: "Mrs"
        uid_identifiant:
          type: string
          example: "Identifiant__UID"
        cas_identifiant:
          type: string
          example: "Identifiant__CAS"
        adfs_identifiant:
          type: string
          example: "Identifier__ADFS"
        saml_identifiant:
          type: string
          example: "Identifier__SAML"
        identifiant_connexion:
          type: string
          example: "Identifier__connection"
        date_naissance:
          type: string
          example: "2000-02-24"
        lieu_naissance:
          type: string
          example: "Marseille"
        code_fiscal:
          type: string
          example: "154862"
        fonction:
          type: string
          example: "Function"
        entreprises:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        email:
          type: string
          example: "firstname.surname@email.fr"
        autorisation_reception_email:
          type: boolean
          example: true
        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_fax:
          type: string
          example: "01010101"
        indicatif_fax:
          type: string
          example: "01"
        proprietaire:
          type: integer
          example: 10
    Cours:                      # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 388
        parente:
          type: string
          example: "SimpleCourse"
        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: "LAB"
        duree:
          type: number
          example: 0.416666666666667
        statut_place:
          type: string
          example: "stationary"
        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: "Here is a little memo"
        reference:
          type: string
          example: "Ref. HP 000001"
        uid_identifiant:
          type: string
          example: "Identifiant__UID"
        ponderation_avant_apport:
          type: integer
          example: 1
        ponderation_apres_apport:
          type: integer
          example: 1
        est_co_enseignement:
          type: boolean
          example: false
        presence_obligatoire:
          type: boolean
          example: true
        emargement_numerique:
          type: boolean
          example: true
        verrouillage:
          type: string
          example: "Unlocked"
        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 of the first day of the base"
        date_derniere_modification:
          type: string
          example: "2023-09-11T10:37"
    Cours_annules:              # 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: "LAB"
        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: "Cancelation"
        commentaire:
          type: string
          example: "Here is a very useful comment"
        uid_identifiant:
          type: string
          example: "Identifiant__UID"
        reference:
          type: string
          example: "Ref. HP 000001"
        memo:
          type: string
          example: "Here is a little memo"
        date_heure_annulation:
          type: string
          example: "2023-09-11T10:37"
        modifiant:
          type: integer
          example: 1
    Couts_horaires_enseignants: # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 11
        libelle:
          type: string
          example: "cout124E"
        valeur:
          type: number
          example: 124.0
    Couts_horaires_salles:      # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 11
        libelle:
          type: string
          example: "cout124E"
        valeur:
          type: number
          example: 124.0
    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:
            type: object
            properties:
              cle:
                type: integer
                example: 11
              libelle:
                type: string
                example: "Options"
        libelles_au_choix:
          type: array
          items:
            type: string
        Apport:
          type: array
          items:
            type: object
            properties:
              cle_matiere:
                type: integer
                example: 11
              type:
                type: string
                example: "Course"
              duree_totale:
                type: number
                example: 0.5
              duree_seance:
                type: number
                example: 0.041666666666666664
    Decharges:                  # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 11
        motif:
          type: string
          example: "Motive for the discharge"
        promotion:
          type: integer
          example: 12
        enseignant:
          type: integer
          example: 15
        cout_horaire_enseignant:
          type: integer
          example: 25
        mode_decompte:
          type: string
          example: "weekly"
          description: "Expected format: 'annual' or 'weekly'"
        heures_annuelles:
          type: number
          example: 10.4166666666667,
        heures_hebdomadaires:
          type: object
          properties:
            domaine:
              type: array
              items:
                type: integer
              example: [1,2,3,4]
            duree:
              type: number
              example: 0.416666666666667
          description: "Only if the mode_breakdown is 'weekly'"
        cout_annuel:
          type: number
          example: 30862.5
    Departements:               # Object definition
      type: object
      properties:
        nom:
          type: string
          example: "Ain"
        code:
          type: string
          example: "001"
    Devoirs:                    # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        service_notation:
          type: integer
          example: 11
        date:
          type: string
          example: "2024-12-01"
        date_publication:
          type: string
          example: "2024-12-02"
        est_facultatif_comme_note:
          type: boolean
          example: true
        est_facultatif_comme_bonus:
          type: boolean
          example: false
        commentaire:
          type: string
          example: "Here is a very useful comment"
        est_verrouille:
          type: boolean
          example: false
        est_devoir_surveille:
          type: boolean
          example: false
        bareme:
          type: string
          example: "20"
        est_ramener_sur:
          type: boolean
          example: false
        coefficient:
          type: number
          example: 2.5
        moyenne:
          type: string
          example: "15.25"
        note_max:
          type: string
          example: "20.0"
        note_min:
          type: string
          example: "5.5"
        mediane:
          type: string
          example: "12.3"
        etudiants:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
    Dispenses:                  # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        etudiant:
          type: integer
          example: 12
        matiere:
          type: integer
          example: 24
          description: "0 to get an exemption with 'All subjects combined'"
        date_debut:
          type: string
          example: "2024-08-16"
        date_fin:
          type: string
          example: "2024-09-16"
        avec_participation_requise:
          type: boolean
          example: true
        motif:
          type: string
          example: "Medical exemption"
        plage_horaire:
          type: string
          example: "Day"
          description: "Expected format: 'Day', 'Morning', 'Afternoon' or 'Customized'"
        plage_horaire_duree_debut:
          type: number
          example: 0.333333333333333
          description: Duration elapsed between 0:00 and the end of the time slot. Caution, only for exemptions whose time slot is customized
        plage_horaire_duree_fin:
          type: number
          example: 0.833333333333333
          description: Duration elapsed between 0:00 and the end of the time slot. Caution, only for exemptions whose time slot is customized
        periodicite:
          type: object
          properties:
            jours:
              type: array
              items:
                type: string
              example: ["Monday", "Tuesday", "Thursday", "Friday"]
              description: "Expected format: 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'"
            frequence:
              type: integer
              example: 1
    Enseignants:                # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "Dupond"
        prenom:
          type: string
          example: "Camille"
        code:
          type: string
          example: "AD"
        couleur:
          type: string
          example: "#FFFF80"
        civilite:
          type: string
          example: "Mrs"
        uid_identifiant:
          type: string
          example: "Identifiant__UID"
        cas_identifiant:
          type: string
          example: "Identifiant__CAS"
        adfs_identifiant:
          type: string
          example: "Identifier__ADFS"
        saml_identifiant:
          type: string
          example: "Identifier__SAML"
        identifiant_connexion:
          type: string
          example: "Identifier__connection"
        nom_jeune_fille:
          type: string
          example: "Dupond"
        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: "Here is a very useful comment"
        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
          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"
        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"
        cout_horaire_statutaire:
          type: integer
          example: 10
        cout_horaire_sans_public:
          type: integer
          example: 11
    Entreprises:                # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        raison_sociale:
          type: string
          example: "Index Education"
        nom_commercial:
          type: string
          example: "Docaposte"
        uid_identifiant:
          type: string
          example: "Identifiant__UID"
        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"
        numero_fax:
          type: string
          example: "04050607"
        indicatif_fax:
          type: string
          example: "04"
        email1:
          type: string
          example: "firstname.surname@email.fr"
        site_internet:
          type: string
          example: "https://www.index-education.com"
        activite:
          type: string
          example: "Activite"
        ape:
          type: string
          example: "APE"
        numero_siret:
          type: string
          example: "12345678901234"
        urssaf:
          type: string
          example: "08080808080808"
        convention_collective_code_idcc:
          type: string
          example: "1486"
        convention_collective:
          type: string
          example: "Syntec"
        effectif:
          type: integer
          example: 150
        assurance_responsabilite_civile:
          type: string
          example: "AD"
        numero_police_assurance:
          type: string
          example: "AD"
        commentaire_public:
          type: string
          example: "Commentaire public"
        commentaire_interne:
          type: string
          example: "Commentaire interne"
        proprietaire:
          type: integer
          example: 10
        responsable:
          type: integer
          example: 10
        contacts:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        maitres_tuteurs:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        charges_contrat:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
    Etablissement_origine:      # 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: "Dupond"
        prenom1:
          type: string
          example: "Camille"
        prenom2:
          type: string
          example: "Dominique"
        prenom3:
          type: string
          example: "Claude"
        prenom_usage:
          type: string
          example: "Sacha"
        date_naissance:
          type: string
          example: "2010-02-22"
        civilite:
          type: string
          example: "Mrs"
        uid_identifiant:
          type: string
          example: "Identifiant__UID"
        cas_identifiant:
          type: string
          example: "Identifiant__CAS"
        adfs_identifiant:
          type: string
          example: "Identifier__ADFS"
        saml_identifiant:
          type: string
          example: "Identifier__SAML"
        identifiant_connexion:
          type: string
          example: "Identifier__connection"
        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: "Dupond"
        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: "Here is a very useful comment"
        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: "MATH"
        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: "admission modalities"
        etablissement_origine:
          type: integer
          example: 10
        date_inscription:
          type: string
          example: "2022-02-22"
        cursus_anterieur:
          type: string
          example: "Previous curriculum"
        publication_sur_tous_les_espaces:
          type: boolean
          example: true
        acces_espace_etudiants:
          type: boolean
          example: true
        emargement_numerique:
          type: boolean
          example: true
        parent1:
          type: integer
          example: 10
        lien_parente1:
          type: string
          example: "mother"
        parent2:
          type: integer
          example: 10
        lien_parente2:
          type: string
          example: "father"
        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"
        bonus_final:
          type: string
          example: "5"
        avis_final:
          type: string
          example: "Perfect"
    Familles:                   # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        libelle:
          type: string
          example: "Family1"
        mode:
          type: string
          example: "Predefined rubrics"
        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": "Rubric1"},{"cle": 426,"nom": "Rubric1"}]
    Matieres:                   # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        libelle:
          type: string
          example: "English"
        code:
          type: string
          example: "LV1"
        couleur:
          type: string
          example: "#FFFF80"
        uid_identifiant:
          type: string
          example: "Identifiant__UID"
        libelle_long:
          type: string
          example: "Here is a slightly longer designation"
        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: "Published on all the Webspaces"
        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: "English"
        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:
            type: object
            properties:
              cle:
                type: integer
                example: 11
              libelle:
                type: string
                example: "Options"
        libelles_au_choix:
          type: array
          items:
            type: string
        Apport:
          type: array
          items:
            type: object
            properties:
              cle_matiere:
                type: integer
                example: 11
              type:
                type: string
                example: "Course"
              duree_totale:
                type: number
                example: 0.5
              duree_seance:
                type: number
                example: 0.041666666666666664
    Modules_notation:           # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        libelle:
          type: string
          example: "English"
        libelle_international:
          type: string
          example: "English"
        nb_points_ects:
          type: number
          example: 10.5
        note_seuil_ects:
          type: string
          example: "10"
        services_notation:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
    Motifs_absence_retard:      # Object definition
      type: object
      properties:
        couleur:
          type: string
          example: "#00FF00"
        code:
          type: string
          example: "MC"
        libelle:
          type: string
          example: "Illness with certificate"
        actif_absence:
          type: boolean
          example: true
        est_justifie_absence:
          type: boolean
          example: true
        par_defaut_absence:
          type: boolean
          example: false
        actif_retard:
          type: boolean
          example: true
        est_justifie_retard:
          type: boolean
          example: true
        par_defaut_retard:
          type: boolean
          example: false
    Motifs_annulation:          # Object definition
      type: object
      properties:
        libelle:
          type: string
          example: "CANCELATION"
        par_defaut:
          type: boolean
          example: true
        est_remunere:
          type: boolean
          example: false
        est_utilisable_par_enseignants:
          type: boolean
          example: true
    Motifs_decharge:            # Object definition
      type: object
      properties:
        libelle:
          type: string
          example: "Decharge 1"
    Motifs_dispense:            # Object definition
      type: object
      properties:
        libelle:
          type: string
          example: "Medical exemption"
    Notes:                      # Object definition
      type: object
      properties:
        etudiant:
          type: integer
          example: 10
        devoir:
          type: integer
          example: 11
        date_devoir:
          type: string
          example: "2024-12-01"
        note:
          type: string
          example: "Absent"
        matiere:
          type: integer
          example: 48
    Parents:                    # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "Dupond"
        prenom:
          type: string
          example: "Camille"
        civilite:
          type: string
          example: "Mrs"
        nom_naissance:
          type: string
          example: "Dupond"
        email:
          type: string
          example: "firstname.surname@email.fr"
        destinataire_courriers_absences:
          type: boolean
          example: true
        uid_identifiant:
          type: string
          example: "Identifiant__UID"
        cas_identifiant:
          type: string
          example: "Identifiant__CAS"
        adfs_identifiant:
          type: string
          example: "Identifier__ADFS"
        saml_identifiant:
          type: string
          example: "Identifier__SAML"
        commentaire:
          type: string
          example: "Here is a very useful comment"
        profession:
          type: string
          example: "teacher"
        situation_professionnelle:
          type: string
          example: "in activity"
        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: "Identifier__connection"
        acces_espace_parents:
          type: boolean
          example: true
        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]
    Periodes_hors_calendrier:   # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "Midterm1"
        couleur:
          type: string
          example: "#FFFF80"
        date_debut:
          type: string
          example: "2024-08-16"
        date_fin:
          type: string
          example: "2024-08-17"
        abreviation:
          type: string
          example: "P1"
        proprietaire:
          type: integer
          example: 10
        promotions:
          type: array
          items:
            type: integer
          example: [11,13,15,47]
    Periodes_notation:          # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "Midterm1"
        couleur:
          type: string
          example: "#FFFF80"
        date_debut:
          type: string
          example: "2024-08-16"
        date_fin:
          type: string
          example: "2024-08-17"
        abreviation:
          type: string
          example: "P1"
        calendrier_notation:
          type: integer
          example: 11
    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: "Identifiant__UID"
        libelle_long:
          type: string
          example: "Here is a slightly longer designation"
        email:
          type: string
          example: "1gm1@email.fr"
        coordinateurs_pedagogiques:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        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
        regroupement:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        calendrier:
          type: string
          example: "Calendar1"
        proprietaire:
          type: integer
          example: 10
        calendrier_notation:
          type: integer
          example: 10
        periodes_hors_calendrier:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        modules_notation:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        services_notation:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        services_notation_avec_td_options:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        note_seuil_ects_rattrapage:
          type: string
          example: "10"
        autoriser_rattrapage_ects:
          type: boolean
          example: true
        module_attribution_ects_est_par_module:
          type: boolean
          example: true
        mode_calcul_moyenne_generale_est_par_module:
          type: boolean
          example: true
        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: "Identifiant__UID"
        effectif_saisi:
          type: integer
          example: 60
        promotions:
          type: array
          items:
            type: integer
          example: [11,13,15]
        td_options:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        proprietaire:
          type: integer
          example: 10
    Retards:                    # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        etudiant:
          type: integer
          example: 12
        date_heure:
          type: string
          example: "2024-08-16T09:00"
        duree:
          type: number
          example: 0.0104166666666667
        est_justifie:
          type: boolean
          example: true
        motif:
          type: string
          example: "Transportation problem"
    Rubriques:                  # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        nom:
          type: string
          example: "Rubric1"
        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: "Here is a slightly longer designation"
        numero_telephone_fixe:
          type: string
          example: "04040404"
        indicatif_telephone_fixe:
          type: string
          example: "04"
        uid_identifiant:
          type: string
          example: "Identifiant__UID"
        capacite:
          type: integer
          example: 50
        acces_pmr:
          type: boolean
          example: true
        chaises_ergo:
          type: integer
          example: 5
        handiboucle:
          type: boolean
          example: true
        nombre_salles_max:
          type: integer
          example: 10
        proprietaire:
          type: integer
          example: 10
        publication:
          type: string
          example: "Published on all the Webspaces"
        site:
          type: string
          example: "Principal"
        descriptif:
          type: string
          example: "Room description"
        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
          description: "attention, seulement pour les salles simples"
        salles_de_ce_groupe_de_salle:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
          description: "attention, seulement pour les groupes de salles"
        cout_horaire:
          type: integer
          example: 10
    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"
    Services_notation:          # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        matiere:
          type: integer
          example: 13
        promotions:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        td_options:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        regroupements:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        enseignants:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        est_facultatif:
          type: boolean
          example: false
        nb_points_ects:
          type: number
          example: 10.5
        note_seuil_ects:
          type: string
          example: "10"
        note_eliminatoire_ects:
          type: string
          example: "5"
        devoirs:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        periodes_notation_actives:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        periodes_hors_calendrier_actives:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        sous_services:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        est_sous_service:
          type: boolean
          example: false
    Sites:                      # Object definition
      type: object
      properties:
        nom:
          type: string
          example: "Principal"
        couleur:
          type: string
          example: "#21BBEF"
    Stages:                     # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        etudiant:
          type: integer
          example: 12
        dates:
          type: array
          items:
            type: object
            properties:
              du:
                type: string
                example: "2000-02-14"
              au:
                type: string
                example: "2000-02-27"
        formulaire_etudiant:
          type: object
          properties:
            visibilite:
              type: boolean
              example: true
            du:
              type: string
              example: "2000-02-14"
            au:
              type: string
              example: "2000-02-27"
        duree_saisie:
          type: number
          example: 10.0
        duree_calculee:
          type: number
          example: 12.0
        entreprise:
          type: integer
          example: 14
        maitres_stage:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        sujet:
          type: string
          example: "internship topic"
        enseignant_tuteur:
          type: integer
          example: 12
        enseignant_responsable:
          type: integer
          example: 14
        sujet_detaille:
          type: string
          example: "Topic a little more detailed"
        commentaire:
          type: string
          example: "Here is a very useful comment"
        objectifs:
          type: string
          example: "Here are the different objectives"
        activites_prevues:
          type: string
          example: "Here are the planned activities"
        competences_visees:
          type: string
          example: "Here are the targeted competencies"
        modalites_concertation:
          type: string
          example: "Here are the modalities of consultation"
        modalites_evaluation:
          type: string
          example: "Here are the evaluation modalities"
        convention_signee:
          type: boolean
          example: true
        attestation_fin_stage_recue:
          type: boolean
          example: true
        remuneration:
          type: number
          example: 10.0
        devise:
          type: string
          example: "€"
        avantages:
          type: array
          items:
            type: string
          example: ["Restaurant vouchers","Transportation"]
    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: "Identifiant__UID"
        effectif_saisi:
          type: integer
          example: 10
        mhh:
          type: number
          example: 0
        mhj:
          type: number
          example: 0.416666666666667
        libelle_long:
          type: string
          example: "Here is a slightly longer designation"
        email:
          type: string
          example: "TD1@mail.fr"
        proprietaire:
          type: integer
          example: 10
        publication_sur_tous_les_espaces:
          type: boolean
          example: true
        calendrier:
          type: string
          example: "Calendar1"
        promotion:
          type: integer
          example: 10
        partition:
          type: integer
          example: 9
        regroupement:
          type: array
          items:
            type: integer
          example: [10,12,14,48]
        services_notation:
          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"
    Type_dernier_diplome:       # 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: "Course"
        couleur:
          type: string
          example: "#21BBEF"
        mode_appel:
          type: string
          example: "Set QR Code"
    Utilisateurs:               # Object definition
      type: object
      properties:
        cle:
          type: integer
          example: 10
        actif:
          type: boolean
          example: true
        nom:
          type: string
          example: "Dupond"
        prenom:
          type: string
          example: "Camille"
        profil_utilisation:
          type: object
          properties:
            cle:
              type: integer
            nom:
              type: string
          example:  {"cle": 2,"nom": "Modifiant"}
        civilite:
          type: string
          example: "Mrs"
        statut:
          type: string
          example: "Superadministrateur"
          description: "Expected format: 'U' or 'user', 'S' or 'superadministrator', 'A' or 'basic administrator'"
        ldap_identifiant:
          type: string
          example: "Identifiant__UID"
        cas_identifiant:
          type: string
          example: "Identifiant__CAS"
        adfs_identifiant:
          type: string
          example: "Identifier__ADFS"
        saml_identifiant:
          type: string
          example: "Identifier__SAML"
        identifiant_connexion:
          type: string
          example: "Identifier__connection"
        e_mail:
          type: string
          example: "firstname.surname@email.fr"
        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"
        acces_espace_secretariat:
          type: boolean
          example: true
security:
  - basicAuth: []  # <-- use the same name here
