1898 lines
		
	
	
		
			48 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			1898 lines
		
	
	
		
			48 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| openapi: 3.0.0
 | |
| info:
 | |
|   title: ClydeAPI
 | |
|   description:
 | |
|     This is the Clyde's api documentation. <br/>
 | |
|     Each endpoints are organised by endpoints **AND** by extensions making it easier to navigate.
 | |
|   version: 0.0.1
 | |
| 
 | |
| servers:
 | |
|   - url: https://clyde.herisson.ovh/api
 | |
|     description: default api point for clyde's service
 | |
| 
 | |
| tags:
 | |
|   - name: default
 | |
|   - name: General
 | |
|     description: General endpoints 
 | |
|   - name: Ext (scientific articles)
 | |
|     description: Scientifics articles extension's endpoints
 | |
|   - name: Ext (Schedule)
 | |
|     description: Schedule extension's endpoints
 | |
|   - name: Ext (Student Registration)
 | |
|     description: Student Registration's endpoints
 | |
|   - name: Ext (Messaging)
 | |
|     description: Messaging extension's endpoints
 | |
| 
 | |
| paths:
 | |
|   /ping:
 | |
|     get:
 | |
|       summary: Check the API status 
 | |
|       responses:
 | |
|         default:
 | |
|           description: pong 
 | |
|           content:
 | |
|             text/plain:
 | |
|               schema:
 | |
|                 type: string
 | |
|                 example: pong
 | |
|   # Messaging
 | |
| 
 | |
|   /forum:
 | |
|     get:
 | |
|       summary: get list of available forum
 | |
|       security:
 | |
|         - bearer: []
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - Forum
 | |
|       responses:
 | |
|         '200':
 | |
|           description: OK
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: array 
 | |
|                 items:
 | |
|                   type: object
 | |
|                   required:
 | |
|                     - id
 | |
|                     - name
 | |
|                     - owner
 | |
|                   properties:
 | |
|                     id:
 | |
|                       type: integer
 | |
|                     name:
 | |
|                       type: string
 | |
|                     owner:
 | |
|                       type: integer
 | |
|                       description: user id of the teacher 
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|     post:
 | |
|       summary: Create a new forum
 | |
|       security:
 | |
|         - bearer: []
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - Forum
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 name:
 | |
|                   type: string
 | |
|                 courseId:
 | |
|                   type: integer
 | |
|       responses:
 | |
|         '201':
 | |
|           description: User created
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|   /forum/{forumId}:
 | |
|     parameters:
 | |
|       - name: forumId 
 | |
|         in: path
 | |
|         description: Id of the forum
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|     get:
 | |
|       summary: get informations about a forum
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - Forum
 | |
|       responses:
 | |
|         '200':
 | |
|           description: OK
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: array 
 | |
|                 items:
 | |
|                   type: object
 | |
|                   required:
 | |
|                     - id
 | |
|                     - name
 | |
|                     - owner
 | |
|                   properties:
 | |
|                     id:
 | |
|                       type: integer
 | |
|                     name:
 | |
|                       type: string
 | |
|                     owner:
 | |
|                       type: integer
 | |
|                       description: user id of the teacher 
 | |
|                     topics:
 | |
|                       type: array
 | |
|                       items:
 | |
|                         type: object
 | |
|                         properties:
 | |
|                           id:
 | |
|                             type: integer
 | |
|                           name:
 | |
|                             type: string
 | |
|                           autor:
 | |
|                             type: integer
 | |
|                             description: user Id
 | |
|                     registered:
 | |
|                       description: List of registered user only if have the authorisation to view
 | |
|                       type: array
 | |
|                       items:
 | |
|                         type: integer 
 | |
|                         description: userId
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|     delete:
 | |
|       summary: remove the forum
 | |
|       security:
 | |
|         - bearer: []
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - Forum
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Forum deleted
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|   /forum/{forumId}/topic:
 | |
|     parameters:
 | |
|       - name: forumId 
 | |
|         in: path
 | |
|         description: Id of the forum
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|     get:
 | |
|       summary: list topics of a forum
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - Forum
 | |
|       responses:
 | |
|         '200':
 | |
|           description: OK
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: array 
 | |
|                 items:
 | |
|                   type: object
 | |
|                   required:
 | |
|                     - id
 | |
|                     - name
 | |
|                     - author
 | |
|                   properties:
 | |
|                     id:
 | |
|                       type: integer
 | |
|                     name:
 | |
|                       type: string
 | |
|                     author:
 | |
|                       type: integer
 | |
|                       description: user id of the author
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|     post:
 | |
|       summary: create a new topic in the forum
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - Forum
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 subject:
 | |
|                   type: string
 | |
|                 content:
 | |
|                   type: integer
 | |
|       responses:
 | |
|         '201':
 | |
|           description: post created
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|   /forum/{forumId}/topic/{topicId}:
 | |
|     parameters:
 | |
|       - name: forumId 
 | |
|         in: path
 | |
|         description: Id of the forum
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|       - name: topicId 
 | |
|         in: path
 | |
|         description: Id of the topic 
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|     get:
 | |
|       summary: get info about a topic
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - Forum
 | |
|       responses:
 | |
|         '200':
 | |
|           description: OK
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: object
 | |
|                 required:
 | |
|                   - id
 | |
|                   - name
 | |
|                   - author
 | |
|                   - locked
 | |
|                 properties:
 | |
|                   id:
 | |
|                     type: integer
 | |
|                   name:
 | |
|                     type: string
 | |
|                   author:
 | |
|                     type: integer
 | |
|                     description: user id of the author
 | |
|                   locked: 
 | |
|                     type: boolean
 | |
|                     description: define if the topic is locked to new responses or not
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|     delete:
 | |
|       summary: delete a topic
 | |
|       security:
 | |
|         - bearer: []
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - Forum
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Topic deleted
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|   /forum/{forumId}/topic/{topicId}/response:
 | |
|     parameters:
 | |
|       - name: forumId 
 | |
|         in: path
 | |
|         description: Id of the forum
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|       - name: topicId 
 | |
|         in: path
 | |
|         description: Id of the topic 
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|     get:
 | |
|       summary: list responses of a topic
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - Forum
 | |
|       responses:
 | |
|         '200':
 | |
|           description: OK
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: array 
 | |
|                 items:
 | |
|                   type: object
 | |
|                   properties:
 | |
|                     id:
 | |
|                       type: integer
 | |
|                     author:
 | |
|                       type: integer
 | |
|                       description: user id of the author 
 | |
|                     content:
 | |
|                       type: string
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|     post:
 | |
|       summary: create a new response
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - Forum
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 content:
 | |
|                   type: integer
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Message posted
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|   /forum/{forumId}/topic/{topicId}/response/{responseId}:
 | |
|     parameters:
 | |
|       - name: forumId 
 | |
|         in: path
 | |
|         description: Id of the forum
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|       - name: topicId 
 | |
|         in: path
 | |
|         description: Id of the topic 
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|       - name: responseId
 | |
|         in: path
 | |
|         description: Id of the response 
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|     get:
 | |
|       summary: get info on a response
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - Forum
 | |
|       responses:
 | |
|         '200':
 | |
|           description: OK
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: object
 | |
|                 required:
 | |
|                   - id
 | |
|                   - author 
 | |
|                   - content 
 | |
|                 properties:
 | |
|                   id:
 | |
|                     type: integer
 | |
|                   author:
 | |
|                     type: string
 | |
|                   content:
 | |
|                     type: integer
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|     delete:
 | |
|       summary: delete a response
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - Forum
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Message deleted
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
| 
 | |
|   /discussion:
 | |
|     get:
 | |
|       summary: get list of available discussions
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - discussion 
 | |
|       responses:
 | |
|         '201':
 | |
|           description: OK
 | |
|           content: 
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: array
 | |
|                 items:
 | |
|                   type: object
 | |
|                   properties:
 | |
|                     id:
 | |
|                       type: integer
 | |
|                     name:
 | |
|                       type: string
 | |
|                     users:
 | |
|                       type: array
 | |
|                       items:
 | |
|                         type: integer
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|     post:
 | |
|       summary: create a new discussion
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - discussion 
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 name:
 | |
|                   type: string
 | |
|                 users:
 | |
|                   type: array
 | |
|                   description: id of users
 | |
|                   items:
 | |
|                     type: integer
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Discussion created
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|   /discussion/{id}:
 | |
|     parameters:
 | |
|       - name: id
 | |
|         in: path
 | |
|         description: Id of the discussion
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|     get:
 | |
|       summary: get info on a discussion
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - discussion 
 | |
|       responses:
 | |
|         '200':
 | |
|           description: OK
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: object
 | |
|                 required:
 | |
|                   - id
 | |
|                   - name
 | |
|                   - users 
 | |
|                 properties:
 | |
|                   id:
 | |
|                     type: integer
 | |
|                   name:
 | |
|                     type: string
 | |
|                   users:
 | |
|                     type: integer
 | |
|                     description: user ids of participants
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|   /discussion/{id}/msg:
 | |
|     parameters:
 | |
|       - name: id
 | |
|         in: path
 | |
|         description: Id of the discussion
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|     get:
 | |
|       summary: list messages in a discussion
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - discussion 
 | |
|       responses:
 | |
|         '200':
 | |
|           description: Ok 
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: array
 | |
|                 items:
 | |
|                   type: object
 | |
|                   properties:
 | |
|                     id:
 | |
|                       type: integer
 | |
|                     datetime:
 | |
|                       type: integer
 | |
|                     author:
 | |
|                       type: integer
 | |
|                     content:
 | |
|                       type: string
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|     post:
 | |
|       summary: post a new message in a discussion
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - discussion 
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|             schema:
 | |
|               type: string
 | |
|               description: message content
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Message sent
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|   /discussion/{id}/msg/{msgId}:
 | |
|     parameters:
 | |
|       - name: id
 | |
|         in: path
 | |
|         description: Id of the discussion
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|       - name: msgId
 | |
|         in: path
 | |
|         description: Id of the message 
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer 
 | |
|     get:
 | |
|       summary: get info about message 
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - discussion 
 | |
|       responses:
 | |
|         '200':
 | |
|           description: Ok 
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   id:
 | |
|                     type: integer
 | |
|                   datetime:
 | |
|                     type: integer
 | |
|                   author:
 | |
|                     type: integer
 | |
|                   content:
 | |
|                     type: string
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|     delete:
 | |
|       summary: delete a message 
 | |
|       security:
 | |
|         - bearer: []
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - discussion 
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Message deleted
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
| 
 | |
| 
 | |
|   /appointment:
 | |
|     get:
 | |
|       summary: list appointments
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - appointment 
 | |
|       parameters:
 | |
|         - name: type
 | |
|           in: query
 | |
|           required: false
 | |
|           schema:
 | |
|             type: string 
 | |
|             enum: [open, closed]
 | |
|       responses:
 | |
|         '200':
 | |
|           description: Ok
 | |
|           content:
 | |
|             text/calendar:
 | |
|               schema:
 | |
|                 type: string
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: array
 | |
|                 items:
 | |
|                   type: object
 | |
|                   properties:
 | |
|                     id:
 | |
|                       type: integer
 | |
|                     teacher:
 | |
|                       type: integer
 | |
|                     student:
 | |
|                       type: integer
 | |
|                     date:
 | |
|                       type: integer
 | |
|                     status:
 | |
|                       type: string
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|     post:
 | |
|       summary: create a new appointment
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - appointment 
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 content:
 | |
|                   type: integer
 | |
|                 datetime:
 | |
|                   type: integer
 | |
|                 to:
 | |
|                   type: integer
 | |
|                   description: user id of the person to request to
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Appointment created
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|   /appointment/{id}:
 | |
|     parameters:
 | |
|       - name: id
 | |
|         in: path
 | |
|         description: Id of the appointment
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|     get:
 | |
|       summary: get info on an appointment
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - appointment 
 | |
|       responses:
 | |
|         '200':
 | |
|           description: Ok
 | |
|           content:
 | |
|             text/calendar:
 | |
|               schema:
 | |
|                 type: string
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   id:
 | |
|                     type: integer
 | |
|                   teacher:
 | |
|                     type: integer
 | |
|                   student:
 | |
|                     type: integer
 | |
|                   date:
 | |
|                     type: integer
 | |
|                   status:
 | |
|                     type: string
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|     post:
 | |
|       summary: Accept, decline or propose a new schedule for the appointment
 | |
|       tags:
 | |
|         - Ext (Messaging)
 | |
|         - appointment 
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 action:
 | |
|                   type: string
 | |
|                   enum: [accept, refuse, propose]
 | |
|                 data:
 | |
|                   type: object
 | |
|                   description: context dependant response (can be null)
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Done
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
| 
 | |
| # general 
 | |
|   /users:
 | |
|     get:
 | |
|       summary: list all users 
 | |
|       tags:
 | |
|         - General
 | |
|         - SI
 | |
|       security:
 | |
|         - bearer: []
 | |
|       parameters:
 | |
|         - in: query
 | |
|           name: type
 | |
|           required: false 
 | |
|           schema:
 | |
|             $ref: '#/components/schemas/Roles'
 | |
|       responses: 
 | |
|         '200':
 | |
|           description: OK
 | |
|           content: 
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: array
 | |
|                 items:
 | |
|                   $ref: "#/components/schemas/User"
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|   
 | |
|   /user:
 | |
|     get:
 | |
|       summary: get informations about yourself 
 | |
|       tags:
 | |
|         - General
 | |
|         - Users
 | |
|       security:
 | |
|         - bearer: []
 | |
|       responses: 
 | |
|         '200':
 | |
|           description: Ok
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 $ref: "#/components/schemas/User"
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|     post:
 | |
|       summary: Create user
 | |
|       tags:
 | |
|         - General
 | |
|         - Users
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|             schema:
 | |
|               type: object 
 | |
|               properties:
 | |
|                 LastName: 
 | |
|                   type: string
 | |
|                 FirstName:
 | |
|                   type: string
 | |
|                 Email:
 | |
|                   type: string
 | |
|                 Address:
 | |
|                   $ref: "#/components/schemas/Address"
 | |
|                 BirthDate:
 | |
|                   type: string
 | |
|                   description: Follow the iso 8601 ("YYYY-MM-DD")
 | |
|                 Role:
 | |
|                   $ref: "#/components/schemas/Roles"
 | |
|               example:
 | |
|                 {
 | |
|                 "LastName": "Doe" ,
 | |
|                 "FirstName": "John",
 | |
|                 "Email": "John.Doe@example.com",
 | |
|                 "Address": {
 | |
|                   "Address": "Rue de Tournais 42",
 | |
|                   "Country": "BE"},
 | |
|                 "BirthDate": "1941-02-22",
 | |
|                 "Role": "student"
 | |
|                 }
 | |
|       responses:
 | |
|         '201':
 | |
|           description: User created
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|     patch:
 | |
|       summary: Change informations about yourself 
 | |
|       tags:
 | |
|         - General
 | |
|         - Users
 | |
|       security:
 | |
|         - bearer: []
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|             schema:
 | |
|               $ref: '#/components/schemas/User'
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Successfully changed. 
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|   /user/{RegNo}:
 | |
|     parameters:
 | |
|       - name: RegNo
 | |
|         in: path
 | |
|         description: Regestration number of the user (unique id)
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|     get:
 | |
|       summary: Get user's informations 
 | |
|       tags:
 | |
|         - General
 | |
|         - Admin
 | |
|       responses:
 | |
|         '200':
 | |
|           description: User found 
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 $ref: "#/components/schemas/User"
 | |
|     patch:
 | |
|       summary: Alter user's informations 
 | |
|       tags:
 | |
|         - General
 | |
|         - Admin
 | |
|         - Secretariat
 | |
|         - Ext (scientific articles)
 | |
|       security:
 | |
|         - bearer: []
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|             schema:
 | |
|               $ref: '#/components/schemas/User'
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Successfully changed
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|   /course:
 | |
|     post:
 | |
|       summary: Create new course 
 | |
|       tags:
 | |
|         - General
 | |
|         - Courses
 | |
|         - Secretariat
 | |
|       security: 
 | |
|         - bearer: []
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 name:
 | |
|                   type: string
 | |
|                 courses:
 | |
|                   type: array
 | |
|                   items:
 | |
|                     type: string
 | |
|       responses:
 | |
|         '201':
 | |
|           description: course created 
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|   /courses/{id}:
 | |
|     parameters:
 | |
|       - name: id
 | |
|         in: path
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|     get:
 | |
|       summary: see courses informations 
 | |
|       tags:
 | |
|         - General
 | |
|         - Courses
 | |
|       responses:
 | |
|         '200':
 | |
|           description: OK
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 $ref: '#/components/schemas/Course'
 | |
| 
 | |
|     delete:
 | |
|       summary: delete a course 
 | |
|       tags:
 | |
|         - General
 | |
|         - Courses
 | |
|         - Secretariat
 | |
|       security: 
 | |
|         - bearer: []
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Success
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|     patch:
 | |
|       summary: Change course options 
 | |
|       tags:
 | |
|         - General
 | |
|         - Secretariat
 | |
|         - Courses
 | |
|       security:
 | |
|         - bearer: []
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 name:
 | |
|                   type: string
 | |
|                 credits:
 | |
|                   type: integer
 | |
|                 faculty:
 | |
|                   type: string
 | |
|                 teachers:
 | |
|                   type: integer
 | |
|                   description: Teacher's identifier
 | |
|                 assistants:
 | |
|                   type: array
 | |
|                   items:
 | |
|                     $ref: '#/components/schemas/User'
 | |
|               example:
 | |
|                 {
 | |
|                 "name": "Math pour l'info",
 | |
|                 "credits": 11,
 | |
|                 "faculty": "science",
 | |
|                 "Teacher": ,
 | |
|                 "Assistants": [ ]
 | |
|                 }
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Course modified
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|           
 | |
|   /cursus:
 | |
|     post:
 | |
|       summary: Create a cursus
 | |
|       tags:
 | |
|         - General
 | |
|         - Cursus
 | |
|       security: 
 | |
|         - bearer: []
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 name:
 | |
|                   type: string
 | |
|                 courses: 
 | |
|                   type: array 
 | |
|                   items:
 | |
|                     type: integer
 | |
|                     description: id of courses
 | |
|               example:
 | |
|                 {
 | |
|                 "name": "Bac1",
 | |
|                 []
 | |
|                 }
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Cursus created 
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|   /cursus/{id}:
 | |
|     get:
 | |
|       summary: See Cursus's informations 
 | |
|       tags:
 | |
|         - General
 | |
|         - Cursus
 | |
|       responses:
 | |
|         '200':
 | |
|           description: OK
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 $ref: '#/components/schemas/Cursus'
 | |
|     parameters:
 | |
|       - name: id
 | |
|         in: path
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|     delete:
 | |
|       summary: Delete cursus
 | |
|       tags:
 | |
|         - General
 | |
|         - Cursus
 | |
|       security: 
 | |
|         - bearer: []
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Success
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|     patch:
 | |
|       summary: Modify cursus 
 | |
|       tags:
 | |
|         - General
 | |
|         - Cursus
 | |
|       security:
 | |
|         - bearer: []
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 name:
 | |
|                   type: string
 | |
|                 credits:
 | |
|                   type: integer
 | |
|                 faculty:
 | |
|                   type: string
 | |
|                 teachers:
 | |
|                   $ref: '#/components/schemas/User'
 | |
|                 assistants:
 | |
|                   type: array
 | |
|                   items:
 | |
|                     $ref: '#/components/schemas/User'
 | |
|               example:
 | |
|                 {
 | |
|                 "name": "Math pour l'info",
 | |
|                 "credits": 11,
 | |
|                 "faculty": "science",
 | |
|                 "Teacher": ,
 | |
|                 "Assistants": [ ]
 | |
|                 }
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Cursus modified 
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
| 
 | |
|   /Requests/{type}:
 | |
|     get:
 | |
|       summary: Give an array of every requests of the specified type
 | |
|       tags : 
 | |
|         - Requests
 | |
|         - SI
 | |
|         - Ext (Student Registration)
 | |
|       responses : 
 | |
|         '200':
 | |
|           description : OK
 | |
|           content : 
 | |
|             application/json : 
 | |
|               schema : 
 | |
|                 type : array
 | |
|                 items :
 | |
|                   allOf:
 | |
|                   - type : object
 | |
|                     properties : 
 | |
|                       id : 
 | |
|                         type : integer
 | |
|                   - oneOf : 
 | |
|                     - $ref : '#/components/schemas/RRRequest'
 | |
|                     - $ref : '#/components/schemas/SSRequest'
 | |
|                     - $ref : '#/components/schemas/UnRegRequest'
 | |
|                     - $ref : '#/components/schemas/ExempRequest'
 | |
|                     - $ref : '#/components/schemas/RegRequest'
 | |
|                   discriminator:
 | |
|                     propertyName : type
 | |
|     parameters:
 | |
|       - name: type
 | |
|         in: path
 | |
|         description: type of the request
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|           
 | |
|     post : 
 | |
|       summary: create a request
 | |
|       tags : 
 | |
|         - Requests
 | |
|         - Guest
 | |
|         - Student
 | |
|         - Ext (Student Registration)
 | |
|       security: 
 | |
|         - bearer: []
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|             schema:
 | |
|               oneOf:
 | |
|                 - $ref : '#/components/schemas/RRRequest'
 | |
|                 - $ref : '#/components/schemas/SSRequest'
 | |
|                 - $ref : '#/components/schemas/UnRegRequest'
 | |
|                 - $ref : '#/components/schemas/ExempRequest'
 | |
|                 - $ref : '#/components/schemas/RegRequest'
 | |
|               discriminator:
 | |
|                     propertyName : type
 | |
|       responses:
 | |
|         '201':
 | |
|           description: New request created
 | |
|         '401':
 | |
|           $ref : '#/components/responses/UnauthorizedError' 
 | |
|     
 | |
|   /Requests/{type}/{id}:
 | |
|     parameters:
 | |
|         - name: type
 | |
|           in: path
 | |
|           description: type of the request
 | |
|           required: true
 | |
|           schema:
 | |
|             type: integer
 | |
|             
 | |
|         - name : id
 | |
|           in : path
 | |
|           description: id of the selected Request
 | |
|           required : true
 | |
|           schema : 
 | |
|             type : integer
 | |
|         
 | |
|     get :
 | |
|       summary : Get all the data composing a request
 | |
|       tags : 
 | |
|         - Requests
 | |
|         - SI
 | |
|         - Teacher
 | |
|         - Ext (Student Registration)
 | |
|       responses : 
 | |
|         '200':
 | |
|           description : OK
 | |
|           content : 
 | |
|             application/json :
 | |
|               schema :
 | |
|                 allOf:
 | |
|                   - type : object
 | |
|                     properties : 
 | |
|                       id : 
 | |
|                         type : integer
 | |
|                   - oneOf : 
 | |
|                     - $ref : '#/components/schemas/RRRequest'
 | |
|                     - $ref : '#/components/schemas/SSRequest'
 | |
|                     - $ref : '#/components/schemas/UnRegRequest'
 | |
|                     - $ref : '#/components/schemas/ExempRequest'
 | |
|                     - $ref : '#/components/schemas/RegRequest'
 | |
|                 discriminator:
 | |
|                   propertyName : type 
 | |
|     
 | |
|     patch:
 | |
|         summary: Change the state of request
 | |
|         tags:
 | |
|           - Requests
 | |
|           - SI
 | |
|           - Teacher
 | |
|           - Ext (Student Registration)
 | |
|         security:
 | |
|           - bearer: []
 | |
|         requestBody:
 | |
|           required : true
 | |
|           content:
 | |
|               application/x-www-form-urlencoded:
 | |
|                 schema:
 | |
|                   oneOf : 
 | |
|                     - $ref : '#/components/schemas/RRRequest'
 | |
|                     - $ref : '#/components/schemas/SSRequest'
 | |
|                     - $ref : '#/components/schemas/UnRegRequest'
 | |
|                     - $ref : '#/components/schemas/ExempRequest'
 | |
|                     - $ref : '#/components/schemas/RegRequest'
 | |
|                   discriminator:
 | |
|                     propertyName : type 
 | |
|         responses:
 | |
|           '201':
 | |
|             description: State modified
 | |
|           '401':
 | |
|             $ref: '#/components/responses/UnauthorizedError' 
 | |
|              
 | |
|   /lesson:
 | |
|     post:
 | |
|       summary: create a new lesson
 | |
|       tags:
 | |
|         - Secretariat
 | |
|         - Lesson
 | |
|         - Ext (Schedule)
 | |
|       security: 
 | |
|         - bearer: []
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 date:
 | |
|                   type: string
 | |
|                   description: Follow the iso 8601 ("YYYY-MM-DD")
 | |
|                 CourseId:
 | |
|                   type: integer
 | |
|                 duration:
 | |
|                   type: number
 | |
|                 classroom:
 | |
|                   type: string
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Lesson created 
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|   /lesson/{id}:
 | |
|     parameters:
 | |
|       - name: id
 | |
|         in: path
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|     get:
 | |
|       summary : See lesson's informations
 | |
|       tags:
 | |
|         - Users
 | |
|         - Lesson
 | |
|         - Ext (Schedule)
 | |
|       responses:
 | |
|         '200':
 | |
|           description: OK
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 $ref: '#/components/schemas/Lesson'
 | |
|     patch:
 | |
|       summary : Modify Lesson
 | |
|       tags:
 | |
|         - Secretariat
 | |
|         - Lesson
 | |
|         - Ext (Schedule)
 | |
|       security:
 | |
|         - bearer: []
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|              schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 date:
 | |
|                   type: string
 | |
|                   description: Follow the iso 8601 ("YYYY-MM-DD")
 | |
|                 IDcourse:
 | |
|                   type: integer
 | |
|                 duration:
 | |
|                   type: number
 | |
|                 classroom:
 | |
|                   type: string
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Lesson modified
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|           
 | |
|     delete:
 | |
|       summary: Delete lesson
 | |
|       tags:
 | |
|         - Lesson
 | |
|         - Secretariat
 | |
|         - Ext (Schedule)
 | |
|       security: 
 | |
|         - bearer: []
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Success
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|   /scheduleRequest:
 | |
|     post:
 | |
|       summary: Create a new request
 | |
|       tags:
 | |
|         - Teacher
 | |
|         - ScheduleRequest
 | |
|         - Ext (Schedule)
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 requestType:
 | |
|                   type: string
 | |
|                 lessonId:
 | |
|                   type: integer
 | |
|                 newDate:
 | |
|                   type: string
 | |
|                   description: Follow the iso 8601 ("YYYY-MM-DD")
 | |
|                 newClassroom:
 | |
|                   type: string
 | |
|                 newCourseId:
 | |
|                   type: integer
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Request created 
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
| 
 | |
|   /scheduleRequest/{id}:
 | |
|     parameters:
 | |
|       - name: id
 | |
|         in: path
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|     get:
 | |
|       summary : See request information
 | |
|       tags:
 | |
|         - Teacher
 | |
|         - Secretariat
 | |
|         - ScheduleRequest
 | |
|         - Ext (Schedule)
 | |
|       responses:
 | |
|         '200':
 | |
|           description: OK
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 $ref: '#/components/schemas/ScheduleRequest'
 | |
|     patch:
 | |
|       summary : Modify request
 | |
|       tags:
 | |
|         - Teacher
 | |
|         - ScheduleRequest
 | |
|         - Ext (Schedule)
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|              schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 newDate:
 | |
|                   type: string
 | |
|                 newClassroom:
 | |
|                   type: string
 | |
|                 newCourseId:
 | |
|                   type: integer
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Request modified
 | |
|     delete:
 | |
|       summary: Delete request
 | |
|       tags:
 | |
|         - Teacher
 | |
|         - Secretariat
 | |
|         - ScheduleRequest
 | |
|         - Ext (Schedule)
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Success
 | |
|   
 | |
|   /display:
 | |
|     post:
 | |
|         summary: Create a new display
 | |
|         tags:
 | |
|           - Display
 | |
|           - Ext (Schedule)
 | |
|         requestBody:
 | |
|           required: true
 | |
|           content:
 | |
|             application/x-www-form-urlencoded:
 | |
|               schema:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   timeMode:
 | |
|                     type: string
 | |
|                   displayMode:
 | |
|                     type: string
 | |
|                   userId:
 | |
|                     type: integer
 | |
|         responses:
 | |
|           '201':
 | |
|             description: display created 
 | |
|           
 | |
|   /display/{id}:
 | |
|     parameters:
 | |
|         - name: id
 | |
|           in: path
 | |
|           required: true
 | |
|           schema:
 | |
|             type: integer
 | |
|     get:
 | |
|       summary : See display information
 | |
|       tags:
 | |
|         - Users
 | |
|         - Display
 | |
|         - Ext (Schedule)
 | |
|       responses:
 | |
|         '200':
 | |
|           description: OK
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 $ref: '#/components/schemas/Display'
 | |
|     patch:
 | |
|       summary : Modify display
 | |
|       tags:
 | |
|         - Users
 | |
|         - Display
 | |
|         - Ext (Schedule)
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|              schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                   timeMode:
 | |
|                     type: string
 | |
|                   displayMode:
 | |
|                     type: string
 | |
|       responses:
 | |
|         '201':
 | |
|           description: Display modified
 | |
|  # Extension publication scientifique 
 | |
| 
 | |
|   /article:
 | |
|     post:
 | |
|       summary: create an article
 | |
|       tags:
 | |
|         - Ext (scientific articles)
 | |
|         - Researcher
 | |
|       security:
 | |
|         - bearer : []
 | |
|       responses:
 | |
|         "201" : 
 | |
|           description: OK
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|       requestBody:
 | |
|         required : true
 | |
|         content: 
 | |
|           application/json:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 pdf:
 | |
|                   type: string 
 | |
|                   description : the B64 version encoding of the pdf file
 | |
|                 access:
 | |
|                   type: string
 | |
|                 summary:
 | |
|                   type: string
 | |
|                 language:
 | |
|                   type: string
 | |
|                 title:
 | |
|                   type: string
 | |
|                 date:
 | |
|                   type: string
 | |
|                   description: Follow the iso 8601 ("YYYY-MM-DD")
 | |
|                 views:
 | |
|                   type: integer 
 | |
|             example:
 | |
|                     {
 | |
|         "access": "private",
 | |
|         "pdf": " *the b64 encoding of the pdf* ",
 | |
|         "summary": "looks in details about graph's second theorem",
 | |
|         "language": "english",
 | |
|         "title": "graph's second theorem study",
 | |
|         "date":"2023-02-01",
 | |
|         "views": 420,
 | |
|         "authors" : []
 | |
|         }
 | |
|   /article/{id}:
 | |
|     parameters:
 | |
|       - name: id
 | |
|         in: path
 | |
|         required: true
 | |
|         schema:
 | |
|           type: integer
 | |
|     get:
 | |
|       summary: get a certain article
 | |
|       tags:
 | |
|         - Users
 | |
|         - Ext (scientific articles)
 | |
|       security:
 | |
|         - bearer: []
 | |
|       responses:
 | |
|         "201": 
 | |
|           description: OK
 | |
|           content:  
 | |
|             application/json:
 | |
|                 schema:
 | |
|                   $ref: '#/components/schemas/Article'
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|           
 | |
|     patch:
 | |
|       summary: modify an article
 | |
|       tags:
 | |
|         - Researcher
 | |
|         - Ext (scientific articles)
 | |
|       security:
 | |
|         - bearer : []
 | |
|       responses:
 | |
|         "201": 
 | |
|           description: article modifié
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|       requestBody:
 | |
|         required : true
 | |
|         content: 
 | |
|           application/json:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 pdf:
 | |
|                   type: string 
 | |
|                   description : the B64 version encoding of the pdf file
 | |
|                 access:
 | |
|                   type: string
 | |
|                 summary:
 | |
|                   type: string
 | |
|                 language:
 | |
|                   type: string
 | |
|                 title:
 | |
|                   type: string
 | |
|                 date:
 | |
|                   type: string
 | |
|                   description: Follow the iso 8601 ("YYYY-MM-DD")
 | |
|                 views:
 | |
|                   type: integer
 | |
|               example:
 | |
|                                   {
 | |
|         "access": "public",
 | |
|         "pdf": " *the new b64 encoding of the pdf* ",
 | |
|         "summary": "looks in details about the duck's algorithm problem",
 | |
|         "language": "english",
 | |
|         "title": "duck's algorithm problem solving",
 | |
|         "date":"2023-02-01",
 | |
|         "views": 10,
 | |
|         "authors" : []
 | |
|         }
 | |
|               
 | |
| 
 | |
|     delete:
 | |
|       summary: delete own article
 | |
|       tags:
 | |
|         - Researcher
 | |
|         - Ext (scientific articles)
 | |
|       security: 
 | |
|         - bearer: []
 | |
|       responses:
 | |
|         '201':
 | |
|           description: OK
 | |
|         '401':
 | |
|           $ref: '#/components/responses/UnauthorizedError'
 | |
|       
 | |
|   /DisplayArticle:
 | |
|       parameters:
 | |
|         - in: query
 | |
|           name: author
 | |
|           required: false 
 | |
|           schema:
 | |
|             type: string
 | |
|         - in: query
 | |
|           name: access
 | |
|           required: false 
 | |
|           schema:
 | |
|             type: string
 | |
|             enum: [public, restricted, private]
 | |
|         - in: query
 | |
|           name: name
 | |
|           required: false 
 | |
|           schema:
 | |
|             type: string
 | |
|             
 | |
|       get:
 | |
|         summary: get a list of article's data
 | |
|         tags:
 | |
|           - Users
 | |
|           - Guest
 | |
|           - Ext (scientific articles)
 | |
|         responses: 
 | |
|           '200':
 | |
|             description: OK
 | |
|             content: 
 | |
|               application/json:
 | |
|                 schema:
 | |
|                   type: array
 | |
|                   items:
 | |
|                     $ref: "#/components/schemas/DisplayArticle"
 | |
| 
 | |
| components:
 | |
|   securitySchemes:
 | |
|     bearer:
 | |
|       type: http
 | |
|       scheme: bearer
 | |
|   schemas:
 | |
|     User:
 | |
|       type: object 
 | |
|       properties:
 | |
|         regNo:
 | |
|           type: integer
 | |
|         photo:
 | |
|           type: object
 | |
|         lastName: 
 | |
|           type: string
 | |
|         firstName:
 | |
|           type: string
 | |
|         email:
 | |
|           type: string
 | |
|         address:
 | |
|           $ref: "#/components/schemas/Address"
 | |
|         birthDate:
 | |
|           type: string
 | |
|           description: Follow the iso 8601 ("YYYY-MM-DD")
 | |
|         role:
 | |
|           $ref: '#/components/schemas/Roles'
 | |
|       example:
 | |
|         {
 | |
|         "regNo": 42,
 | |
|         "lastName": "Doe" ,
 | |
|         "firstName": "John",
 | |
|         "email": "John.Doe@example.com",
 | |
|         "address": {
 | |
|           "address": "Rue de Tournais 42",
 | |
|           "country": "BE"},
 | |
|         "birthDate": "1941-02-22",
 | |
|         "role": "student"
 | |
|         }
 | |
|     Address:
 | |
|       type: object
 | |
|       properties:
 | |
|         address:
 | |
|           type: string
 | |
|         country:
 | |
|           type: string
 | |
|           description: Follow the ISO-3166-1 alpha-2 standard.
 | |
|       example:
 | |
|         {
 | |
|           "address": "Rue de Tournais 42",
 | |
|           "country": "BE"
 | |
|         }
 | |
|     Course:
 | |
|       type: object
 | |
|       properties:
 | |
|         id:
 | |
|           type: integer
 | |
|         name:
 | |
|           type: string
 | |
|         credits:
 | |
|           type: integer
 | |
|         faculty:
 | |
|           type: string
 | |
|         teachers:
 | |
|           type: integer 
 | |
|           description: user's id 
 | |
|         assistants:
 | |
|           type: array
 | |
|           items:
 | |
|             type: integer
 | |
|             description: user's id
 | |
|       example:
 | |
|         {
 | |
|         "id": 42,
 | |
|         "name": "Math pour l'info",
 | |
|         "credits": 11,
 | |
|         "faculty": "science",
 | |
|         "Teacher": 42,
 | |
|         "Assistants": [ ]
 | |
|         }
 | |
|     Cursus:
 | |
|       type: object
 | |
|       properties:
 | |
|         id:
 | |
|           type: integer
 | |
|         name:
 | |
|           type: string
 | |
|         courses:
 | |
|           type: array
 | |
|           items:
 | |
|             type: string
 | |
|       example:
 | |
|         {
 | |
|         "id": 42,
 | |
|         "courses": ['Math', 'Info']
 | |
|         }
 | |
|     Roles:
 | |
|       type: string
 | |
|       enum: [teacher, student, secretary]
 | |
| 
 | |
|     RegRequest:
 | |
|       type : object
 | |
|       properties:
 | |
|         Name :
 | |
|           type: string
 | |
|         Firstname :
 | |
|           type : string
 | |
|         Address :
 | |
|           $ref: "#/components/schemas/Address"
 | |
|         Email:
 | |
|           type : string
 | |
|         BirthDate:
 | |
|           type : string
 | |
|           description: Follow the iso 8601 ("YYYY-MM-DD")
 | |
|         Cursus:
 | |
|           type : integer
 | |
|           description : ID of a specific cursus
 | |
|         Photo:
 | |
|           type : string
 | |
|           description: Path of the picture that the user uploaded
 | |
| 
 | |
|         IdentityCard:
 | |
|           type : string
 | |
|           description: Path of the picture of the user's identity card
 | |
|         Degree:
 | |
|           type : string
 | |
|           description: Path of the pdf containing the user's degree
 | |
|         Certificate:
 | |
|           type : string
 | |
|           description: Path of the pdf containing the user's admission certificate (optionnal)
 | |
|         ForeignerCertificate:
 | |
|           type : string
 | |
|           description: Path of the pdf containing the user's foreigner certificate (optionnal)
 | |
|         State:
 | |
|           type : string
 | |
|     
 | |
|     
 | |
|     RRRequest:
 | |
|       type : object
 | |
|       properties :
 | |
|         RegNo : 
 | |
|           type : integer
 | |
|         NewCursusid : 
 | |
|           type : integer
 | |
|         State : 
 | |
|           type : string
 | |
|       
 | |
|     
 | |
|     SSRequest: 
 | |
|       type : object
 | |
|       properties : 
 | |
|         RegNo : 
 | |
|           type : integer
 | |
|         Amount : 
 | |
|           type : integer
 | |
|         Document : 
 | |
|           type : string
 | |
|           description : justification document for a scholarship
 | |
|               
 | |
|     UnRegRequest :
 | |
|       type : object
 | |
|       properties : 
 | |
|         RegNo : 
 | |
|           type : integer
 | |
|         State :
 | |
|           type : string
 | |
|           
 | |
|     ExempRequest :
 | |
|       type : object
 | |
|       properties :
 | |
|         RegNo : 
 | |
|           type : integer
 | |
|         Courseid :
 | |
|           type : integer
 | |
|         State :
 | |
|           type : string
 | |
|           
 | |
|     Article:
 | |
|       type: object
 | |
|       properties:
 | |
|         articleId: 
 | |
|           type: integer
 | |
|         access :
 | |
|           type : string
 | |
|         pdf :
 | |
|           type : string
 | |
|           description : file location
 | |
|         summary:
 | |
|           type : string
 | |
|         language:
 | |
|           type : string
 | |
|         title :
 | |
|           type : string 
 | |
|         date: 
 | |
|           type : string
 | |
|         views :
 | |
|           type : integer
 | |
|         authors:
 | |
|           type: array
 | |
|           items:
 | |
|             $ref: '#/components/schemas/User'
 | |
|           description: first user is the author, the remaining users are co-authors
 | |
|       example:
 | |
|         {
 | |
|         "articleId": 42,
 | |
|         "access": "private",
 | |
|         "pdf": "/articles/42",
 | |
|         "summary": "looks in details about graph's second theorem",
 | |
|         "language": "english",
 | |
|         "title": "graph's second theorem study",
 | |
|         "date":"2023-02-01",
 | |
|         "views": 420,
 | |
|         "authors" : []
 | |
|         }
 | |
|     DisplayArticle:   
 | |
|       type: object
 | |
|       properties:
 | |
|         articleId: 
 | |
|           type: integer
 | |
|         access:
 | |
|           type: string
 | |
|         summary:
 | |
|           type: string
 | |
|         title:
 | |
|           type: string 
 | |
|         author:
 | |
|           type: string
 | |
|           items:
 | |
|             $ref: '#/components/schemas/User'
 | |
|       example:
 | |
|         {
 | |
|         "articleId": 42,
 | |
|         "access": "private",
 | |
|         "summary": "looks in details about graph's second theorem",
 | |
|         "title": "graph's second theorem study",
 | |
|         "author" : "john doe"
 | |
|         }
 | |
|     Lesson :
 | |
|       type: object
 | |
|       properties:
 | |
|         id:
 | |
|           type: integer
 | |
|         date:
 | |
|           type: string
 | |
|           description: Follow the iso 8601 ("YYYY-MM-DD")
 | |
|         duration:
 | |
|           type: number
 | |
|           description: duration of a course in hours
 | |
|         classroom:
 | |
|           type: string
 | |
|         courseId:
 | |
|           type: integer
 | |
|       example:
 | |
|           {
 | |
|             "id": 12,
 | |
|             "date": "2023-12-01",
 | |
|             "duration": 1.5,
 | |
|             "classroom": "AMPHI01",
 | |
|             "courseId": 12
 | |
|           }
 | |
|     ScheduleRequest:
 | |
|       type: object
 | |
|       properties:
 | |
|         id:
 | |
|           type: integer
 | |
|         requestType:
 | |
|           type: string
 | |
|         lessonId:
 | |
|           type: integer
 | |
|         teacherId:
 | |
|           type: integer
 | |
|         newDate:
 | |
|           type: string
 | |
|           description: Follow the iso 8601 ("YYYY-MM-DD")
 | |
|         newClassroom:
 | |
|           type: string
 | |
|         newCourseId:
 | |
|           type: integer
 | |
|       example:
 | |
|         {
 | |
|           "id": 12,
 | |
|           "requestType": "moveLesson",
 | |
|           "lessonId": 52,
 | |
|           "teacherId": 12,
 | |
|           "newDate": "2023-12-20",
 | |
|           "newClassroom":,
 | |
|           "newCourseId":,
 | |
|         }
 | |
|     
 | |
|     Display:
 | |
|       type: object
 | |
|       properties:
 | |
|         id:
 | |
|           type: integer
 | |
|         timeMode:
 | |
|           type: string
 | |
|           description: Define the period displayed on the schedule (week,month,quadrimester..)
 | |
|         displayMode:
 | |
|           type: string
 | |
|         userId:
 | |
|           type: integer
 | |
|           description: Id of the user who owns this display
 | |
|       example:
 | |
|         {
 | |
|           "id": 12,
 | |
|           "timeMode": "month",
 | |
|           "displayMode": "grid",
 | |
|           "UserId": 12
 | |
|         }
 | |
| 
 | |
|   responses:
 | |
|     UnauthorizedError:
 | |
|       description: Unauthorized access or missing bearer 
 |