GestionHoraire #6

Merged
Wal merged 5 commits from GestionHoraire into master 2023-12-13 15:00:49 +01:00
Showing only changes of commit b00ab09079 - Show all commits

View File

@ -11,39 +11,108 @@ servers:
paths:
/ping:
get:
summary: Test if the api is up.
summary: Check the API status
responses:
default:
description: Standard response to ping
description: pong
content:
text/plain:
schema:
type: string
example: pong
/user:
put:
summary: create a new user
/users:
get:
summary: list all users
tags:
- users
- SI
security:
- bearer: []
responses:
parameters:
- in: query
name: type
required: false
schema:
type: string
enum: [teacher, student, secretary]
responses:
'200':
description: User created
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/User"
'401':
$ref: '#/components/responses/UnauthorizedError'
/user/{mat}:
/user:
get:
summary: get user's info
summary: get informations about yourself
tags:
- users
- Users
responses:
'200':
description: User found
description: Ok
content:
application/json:
schema:
$ref: "#/components/schemas/User"
Wal marked this conversation as resolved
Review

ce endpoint permet l'accés à "information about yourself" donc je ne vois pas comment il pourrais être paramètrisé par sa fonction ^^

ce endpoint permet l'accés à "information about yourself" donc je ne vois pas comment il pourrais être paramètrisé par sa fonction ^^
post:
summary: Create user
tags:
- 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")
example:
{
"LastName": "Doe" ,
"FirstName": "John",
"Email": "John.Doe@example.com",
"Address": {
"Address": "Rue de Tournais 42",
"Country": "BE"},
"BirthDate": "1941-02-22",
}
responses:
'201':
description: User created
'401':
$ref: '#/components/responses/UnauthorizedError'
patch:
summary: Change informations about yourself
tags:
- 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/{mat}:
parameters:
- name: mat
in: path
@ -51,42 +120,459 @@ paths:
required: true
schema:
type: integer
/cursus/{id}:
get:
summary: Voir les informations sur un Cursus
summary: Get user's informations
tags:
- Admin
responses:
'200':
description: User found
content:
application/json:
schema:
$ref: "#/components/schemas/User"
patch:
summary: Alter user's informations
tags:
- Admin
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:
- 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}:
get:
summary: see courses informations
tags:
- Courses
responses:
'200':
description: Cursus found
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Course'
parameters:
- name: id
in: path
required: true
schema:
type: integer
delete:
summary: delete a course
tags:
- Courses
- Secretariat
security:
- bearer: []
responses:
'201':
description: Success
'401':
$ref: '#/components/responses/UnauthorizedError'
patch:
summary: Change course options
tags:
- 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: object
$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: Course modified
'401':
$ref: '#/components/responses/UnauthorizedError'
/cursus:
post:
summary: Create a cursus
tags:
- 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:
- cursus
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Cursus'
/courses/{id}:
get:
summary: Voir les informations sur un cours*
tags:
- Courses
responses:
put:
summary: Créer un nouveau cours
tags:
- Courses
security:
- bearer: []
responses:
parameters:
- name: id
in: path
required: true
schema:
type: integer
delete:
summary: Suprimer un cours
summary: Delete cursus
tags:
- Courses
- cursus
security:
- bearer: []
responses:
'201':
description: Success
'401':
$ref: '#/components/responses/UnauthorizedError'
patch:
summary: Modify cursus
tags:
- 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:
type: object
$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'
/lesson:
post:
summary: Create a new lesson
tags:
- Secretariat
- lesson
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 created
'401':
$ref: '#/components/responses/UnauthorizedError'
/lesson/{id}:
parameters:
- name: id
in: path
Wal marked this conversation as resolved
Review

Pour l'instant pour que ça fasse plus bô j'ai mis tout les tags en commençant avec une majuscule. c'est mineur mais ça serait cool ^^

Pour l'instant pour que ça fasse plus bô j'ai mis tout les tags en commençant avec une majuscule. c'est mineur mais ça serait cool ^^
required: true
schema:
type: integer
get:
summary : See lesson's informations
tags:
- Users
- lesson
responses:
'200':
description: OK
content:
tonitch marked this conversation as resolved
Review

Tu ne précises pas qui donne le cours, jsp si c'est un problème mais du coup il y a plusieurs personnes qui peuvent le donner comme prof référant ou assistant.

Tu ne précises pas qui donne le cours, jsp si c'est un problème mais du coup il y a plusieurs personnes qui peuvent le donner comme prof référant ou assistant.
Review

Vu qu'il stock IDcourse (que j'aurais personellement nommé CourseID) l'enseignant est sensé être dedans non ?

Vu qu'il stock IDcourse (que j'aurais personellement nommé CourseID) l'enseignant est sensé être dedans non ?
Review

alors oui le courseId donne accès à un array de profs mais du coup on sait pas spécifier lequel donne le cours dans son implémentation

alors oui le courseId donne accès à un array de profs mais du coup on sait pas spécifier lequel donne le cours dans son implémentation
Review

Jcomptais mettre les teachers quand cetait theorique et examen et les assistants quand c'est tp mais apres jpeux spécifier meme si sur l'hyperplannng et tout il y a la liste des profs qui peuvent donner cours

Jcomptais mettre les teachers quand cetait theorique et examen et les assistants quand c'est tp mais apres jpeux spécifier meme si sur l'hyperplannng et tout il y a la liste des profs qui peuvent donner cours
application/json:
schema:
$ref: '#/components/schemas/Lesson'
patch:
summary : Modify Lesson
tags:
- Secretariat
- lesson
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
security:
- bearer: []
responses:
'201':
description: Success
'401':
$ref: '#/components/responses/UnauthorizedError'
/request:
post:
Wal marked this conversation as resolved
Review

Du coup, est-ce qu'il y aurrait pas moyen qu'un professeur demande de mettre à l'horaire que finalement ça sera son assistant qui donnera le cours ? (c'est des détails en vrai mais autant y réfléchir un peu)

Du coup, est-ce qu'il y aurrait pas moyen qu'un professeur demande de mettre à l'horaire que finalement ça sera son assistant qui donnera le cours ? (c'est des détails en vrai mais autant y réfléchir un peu)
Review

Imo ca devient trop spécifique et les assistants peuvent donner que les tps selon moi et au pire le prof peut demander. et ca peux meme aller dans la gestion de cours qui est pas mon dos comme cest une autre extension perso

Imo ca devient trop spécifique et les assistants peuvent donner que les tps selon moi et au pire le prof peut demander. et ca peux meme aller dans la gestion de cours qui est pas mon dos comme cest une autre extension perso
summary: Create a new request
tags:
- Teacher
- request
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
id:
type: integer
requestType:
type: string
lessonId:
type: integer
responses:
'201':
description: Request created
/request/{id}:
parameters:
- name: id
in: path
required: true
schema:
type: integer
get:
summary : See request information
tags:
Wal marked this conversation as resolved
Review

faut juste voir avec @LeoMoulin que ces endpoints ne soient pas en conflits ?

faut juste voir avec @LeoMoulin que ces endpoints ne soient pas en conflits ?
- Teacher
- Secretariat
- request
responses:
'200':
Wal marked this conversation as resolved
Review

tu as laissé request ici peut-être le changer en ScheduleRequest ?

tu as laissé request ici peut-être le changer en ScheduleRequest ?
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Request'
patch:
summary : Modify request
Wal marked this conversation as resolved Outdated

ici tu as oublié de changer, c'est encore l'ancienne version où le prof n'as pas le choix de quand son cours est déplacé ni où.

ici tu as oublié de changer, c'est encore l'ancienne version où le prof n'as pas le choix de quand son cours est déplacé ni où.
tags:
- Teacher
- request
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
Wal marked this conversation as resolved Outdated

quand il y a un 'security' tag c'est toujours bien d'envisager l'erreur de permission:

        '401':
          $ref: '#/components/responses/UnauthorizedError'
quand il y a un 'security' tag c'est toujours bien d'envisager l'erreur de permission: ```yaml '401': $ref: '#/components/responses/UnauthorizedError' ```
id:
type: integer
requestType:
type: string
lessonId:
type: integer
responses:
'201':
description: Request modified
delete:
summary: Delete request
tags:
- Teacher
Wal marked this conversation as resolved Outdated

de nouveau request -> ScheduleRequest ?

de nouveau request -> ScheduleRequest ?
- Secretariat
- request
responses:
'201':
description: Success
/display:
post:
summary: Create a new display
tags:
- display
requestBody:
required: true
Wal marked this conversation as resolved Outdated

de nouveau request -> ScheduleRequest ?

de nouveau request -> ScheduleRequest ?
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
id:
type: integer
time:
type: string
Wal marked this conversation as resolved
Review

Je ne pense pas que tu puisse changer l'id d'un request.

Je ne pense pas que tu puisse changer l'id d'un request.
display:
type: string
Wal marked this conversation as resolved Outdated

ici aussi oubli de dernière version

ici aussi oubli de dernière version
userId:
type: integer
responses:
'201':
description: display created
/display/{id}:
parameters:
- name: id
in: path
required: true
schema:
Wal marked this conversation as resolved Outdated

de nouveau request -> ScheduleRequest ?

de nouveau request -> ScheduleRequest ?

j'ai jamais vu un aussi gros copier-collé que depuis math podcast

j'ai jamais vu un aussi gros copier-collé que depuis math podcast
type: integer
get:
summary : See display information
tags:
- Users
- display
responses:
'200':
Wal marked this conversation as resolved
Review

summary permet une courte description. il y'a également le tag description qui peut être pratique pour une plus grande description.

Dans ce cas ci ça pourrais peut être être utile ? display peut être ambigu ?

summary permet une courte description. il y'a également le tag `description` qui peut être pratique pour une plus grande description. Dans ce cas ci ça pourrais peut être être utile ? display peut être ambigu ?
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Display'
patch:
summary : Modify display
tags:
- Users
- display
requestBody:
Wal marked this conversation as resolved
Review

l'id ne pourrais pas

l'id ne pourrais pas
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
id:
type: integer
time:
type: string
display:
type: string
userId:
type: integer
responses:
'201':
description: Display modified
components:
securitySchemes:
@ -97,54 +583,82 @@ components:
User:
type: object
properties:
RegNo:
regNo:
type: integer
Photo:
photo:
type: object
LastName:
lastName:
type: string
FirstName:
firstName:
type: string
Email:
email:
type: string
Address:
address:
$ref: "#/components/schemas/Address"
BirthDate:
birthDate:
type: string
description: Follow the iso 8601 ("YYYY-MM-DD")
StaffMember:
type: boolean
example:
{
"RegNo": 42,
"LastName": "Doe" ,
"FirstName": "John",
"Email": "John.Doe@example.com",
"Address": {
"Address": "Rue de Tounais 42",
"Country": "BE"},
"BirthDate": "1941-02-22",
"StaffMember": true
"regNo": 42,
Wal marked this conversation as resolved
Review

l'id ne pourrais pas être changé ici non plus.

l'id ne pourrais pas être changé ici non plus.
"lastName": "Doe" ,
"firstName": "John",
"email": "John.Doe@example.com",
"address": {
"address": "Rue de Tounais 42",
"country": "BE"},
"birthDate": "1941-02-22",
"staffMember": true,
}
Address:
type: object
properties:
Address:
address:
type: string
Country:
country:
type: string
description: Follow the ISO-3166-1 alpha-2 standard.
example:
{
"Address": "Rue de Tounais 42",
"Country": "BE"
"address": "Rue de Tounais 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:
id:
type: integer
Courses:
name:
type: string
courses:
type: array
items:
type: string
@ -153,6 +667,63 @@ components:
"id": 42,
"courses": ['Math', 'Info']
}
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
course:
$ref: "#/components/schemas/Course"
example:
{
"id": 12,
"date": "2023-12-01",
"duration": 1.5,
"classroom": "AMPHI01",
"course": }
Request:
type: object
properties:
id:
type: integer
requestType:
type: string
lessonId:
type: integer
example:
{
"id": 12,
"requestType": "delete",
"lessonId": 72
}
Display:
type: object
Wal marked this conversation as resolved
Review

C'est sympa de faire des schema pour avoir une bonne description mais il ne sont jamais utilisé. pour les utiliser tu peux faire
$ref: <path/to/source>

par example pour utiliser Lesson tu peux faire $ref: '#/components/schemas/Lesson qui va être remplacé par tout ce qui est dans ce tag ci!

C'est sympa de faire des schema pour avoir une bonne description mais il ne sont jamais utilisé. pour les utiliser tu peux faire `$ref: <path/to/source>` par example pour utiliser Lesson tu peux faire `$ref: '#/components/schemas/Lesson` qui va être remplacé par tout ce qui est dans ce tag ci!
properties:
id:
type: integer
time:
type: string
description: Define the period displayed on the schedule (week,month,quadrimester..)
display:
type: string
userId:
type: integer
description: Id of the user who owns this display
example:
{
"id": 12,
"time": "month",
"display": "grid",
"UserId": 12
}
responses:
UnauthorizedError:
description: Access token is missing or invalid
description: Unauthorized access or missing bearer