1
0
forked from PGL/Clyde
Clyde/Documents/proto/general/openapi.yaml

305 lines
6.3 KiB
YAML

openapi: 3.0.0
info:
title: ClydeAPI
description: Clyde's api
version: 0.0.1
servers:
- url: https://clyde.herisson.ovh/api
description: default api point for clyde's service
paths:
/ping:
get:
summary: Test if the api is up.
responses:
default:
description: Standard response to ping
content:
text/plain:
schema:
type: string
example: pong
/requests:
post:
summary: Faire une demande
tags:
- Student
responses:
'201':
description: Demande envoyée
/users:
get:
summary: Listere les utilisateurs
tags:
- SI
security:
- bearer: []
responses:
default:
description: Success
/user: # registration
post:
summary: Créer un utilisateur
tags:
- users
responses:
'200':
description: User created
'401':
$ref: '#/components/responses/UnauthorizedError'
patch:
summary: modifier ses informations
tags:
- users
security:
- bearer: []
responses:
'200':
description: Informaitions modifiées
'401':
$ref: '#/components/responses/UnauthorizedError'
/user/{mat}:
get:
summary: get user's info
tags:
- Admin
responses:
'200':
description: User found
content:
application/json:
schema:
$ref: "#/components/schemas/User"
parameters:
- name: mat
in: path
description: Matricule of the user (unique id)
required: true
schema:
type: integer
patch:
summary: modifier les informations d'un utilisateur
tags:
- Admin
security:
- bearer: []
responses:
'200':
description: Informaitions modifiées
'401':
$ref: '#/components/responses/UnauthorizedError'
/users/requests:
get:
summary: Lister les requetes d'utilisateurs
security:
- bearer: []
tags:
- Secretaria
- SI
responses:
'200':
description: Liste les requètes
/user/{mat}/validate/{id}:
patch:
summary: Valider un utilisateur
tags:
- Secretaria
- SI
security:
- bearer: []
parameters:
- name: mat
in: path
description: matricule de l'utilisateur
required: true
schema:
type: integer
- name: id
in: path
description: Identifiant de la demande
required: true
schema:
type: integer
- name: answer
in: header
description: valide l'utilisateur ou non
schema:
type: boolean
responses:
'200':
description: Informaitions modifiées
'401':
$ref: '#/components/responses/UnauthorizedError'
/courses/{id}:
get:
summary: Voir les informations sur un cours*
tags:
- Courses
responses:
'202':
description: success
parameters:
- name: id
in: path
required: true
schema:
type: integer
delete:
summary: Suprimer un cours
tags:
- Courses
- Secretaria
security:
- bearer: []
responses:
'202':
description: success
patch:
summary: Changer les options du cours
tags:
- Secretaria
- Courses
security:
- bearer: []
parameters:
- name: professeur
in: header
required: true
schema:
type: string
responses:
'202':
description: Bien ouej
/cursus:
post:
summary: Créer un nouveau cours
tags:
- cursus
security:
- bearer: []
responses:
'202':
description: success
/cursus/{id}:
get:
summary: Voir les informations sur un cursus
tags:
- cursus
responses:
'202':
description: success
parameters:
- name: id
in: path
required: true
schema:
type: integer
delete:
summary: Suprimer un cursus
tags:
- cursus
security:
- bearer: []
responses:
'202':
description: success
patch:
summary: Changer les options du cursus
tags:
- cursus
security:
- bearer: []
responses:
'202':
description: Bien ouej
/courses:
post:
summary: Créer un nouveau cours
tags:
- Courses
- Secretaria
security:
- bearer: []
responses:
'202':
description: success
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")
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,
}
Address:
type: object
properties:
Address:
type: string
Country:
type: string
description: Follow the ISO-3166-1 alpha-2 standard.
example:
{
"Address": "Rue de Tounais 42",
"Country": "BE"
}
Cursus:
type: object
properties:
Id:
type: integer
Courses:
type: array
items:
type: string
example:
{
"id": 42,
"courses": ['Math', 'Info']
}
responses:
UnauthorizedError:
description: Access token is missing or invalid