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 
 |