# Oakland

## API Endpoints
Base endpoint: `/api/v1`
### Index
1. [Person Service](#Person-Service)
1.1. [Persson](#Person)
1.2. [Hobby](#Hobby)
2. [Student Service](#Student-Service)
3. [School Service](#School-Service)
3.1. [Degree](#Degree)
3.2. [Student Class](#Student-Class)
### Person Service
#### Person
#### `/person`
- [x] `GET`: Get all the People.
- [x] `POST`: Create a new Person.
#### `/person/{person-id}`
- [x] `GET`: Get a Person, support extended mode.
- [x] `PATCH`: Edit a Person.
- [x] `DELETE`: Delete a Person.
#### `/person/{person-id}/hobby`
- [x] `POST`: Add a Hobby to a Person.
#### `/person/{person-id}/hobby/{hobby-id}`
- [x] `DELETE`: Delete a Hobby from a Person.
#### Hobby
#### `/hobby`
- [x] `GET`: Get all the hobbies.
- [x] `POST`: Create a new Hobby.
#### `/hobby/{hobby-id}`
- [x] `GET`: Get a Hobby.
- [x] `PATCH`: Edit a Hobby.
- [x] `DELETE`: Delete a Hobby.
### Student Service
#### `/student`
- [x] `GET`: Get all the students.
- [x] `POST`: Create a new Student.
#### `/student/{student-id}`
- [x] `GET`: Get a Student.
- [x] `PATCH`: Edit a Student.
- [x] `DELETE`: Delete a Student.
#### `/student/{student-id}/student-class`
- [ ] `GET`: Get all the Student Classes.
- [x] `POST`: Add the Student to the Student Class.
- [x] `DELETE`: Delete all the Student Class.
#### `/student/{student-id}/degree`
- [ ] `GET`: Get the Student's Degrees.
- [x] `POST`: Add the Degree to Student.
- [x] `DELETE`: Delete all the Student's Degrees.
#### `/student/{student-id}/degree/{degree_id}`
- [x] `DELETE`: Delete the Degree from Student.
#### `/student/person/{person_id}`
- [x] `DELETE`: Delete Person.
#### `/student/student-class/{student_class_id}`
- [x] `GET`: Get all the Students in the Student Class.
- [x] `DELETE`: Delete Student Class from all Students.
#### `/student/degree/{degree_id}`
- [x] `GET`: Get all the Students with the Degree.
- [x] `DELETE`: Delete Degree from all Students.
### School Service
#### Degree
#### `/degree`
- [x] `GET`: Get all the degrees.
- [x] `POST`: Create a new degree.
#### `/degree/{degree-id}`
- [x] `GET`: Get a degree.
- [x] `PATCH`: Edit a degree.
- [x] `DELETE`: Delete a degree.
#### Student Class
#### `/student-class`
- [x] `GET`: Get all the classes.
- [x] `POST`: Create a new class.
#### `/student-class/{class-id}`
- [x] `GET`: Get a class.
- [x] `PATCH`: Edit a class.
- [x] `DELETE`: Delete a class.
#### `/student-class/{class-id}/student`
- [ ] `GET`: Get a class.
## Use cases
### Service Personne:
Le service Personne est utilisé pour récupérer et mettre à jour des informations sur les individus associés à l'école, telles que leur nom, leurs coordonnées et leurs centres d'intérêt.
Il doit permettre de créer, modifier et supprimer les personnes.
### Service Étudiant:
Le service Étudiant est utilisé pour récupérer et mettre à jour des informations sur les étudiants, telles que leur statut d'inscription, leur année universitaire et leurs relevés de notes.
Il doit permettre de créer, modifier et supprimer les personnes.
### Service École:
Le service École gère les diplômes de l'école, y compris la création de nouveaux diplômes, la mise à jour de diplômes existants et la suppression de diplômes. Pareil pour les promotions des étudiants et étudiantes.
Il pourrait également être utilisé pour gérer les cours.