Url: https://technical-test-api.onrender.com
Les tokens générés sont des JWT.
accessToken : Un jeton utilisé pour accéder aux API sécurisées, qui expire rapidement pour minimiser le risque en cas de compromission. Il contient généralement des informations d'identification de l'utilisateur et des droits d'accès. Expire au bout de 5 minutes
refreshToken : Un jeton plus durable utilisé pour obtenir un nouvel accessToken une fois que l'accessToken initial a expiré. Son utilisation renforce la sécurité en limitant la fréquence de saisie des informations d'authentification par l'utilisateur. Expire au bout de 15 minutes
Processus d'utilisation : L'utilisateur se connecte, reçoit à la fois un accessToken et un refreshToken. L'accessToken est utilisé pour les requêtes subséquentes jusqu'à son expiration.
Renouvellement : À l'expiration de l'accessToken, le refreshToken est envoyé à un point d'API spécifique pour obtenir un nouvel accessToken sans que l'utilisateur n'ait le besoin de se reconnecter.
Temps d'expiration :
AccessToken: 5 minutes
refreshToken: 15 minutes
POST /signin
content-type: application/json
{
"email": string,
"password": string
}
200:
{
"accessToken": string,
"refreshToken": string
}
400:
{
"error": "incorrect_credentials",
"message": "Email or password is not correct. Check them twice",
}
Demande un nouvel accessToken et refreshToken.
POST /refresh
content-type: application/json
{
"refreshToken": string
}
200:
{
"accessToken": string,
"refreshToken": string
}
401:
{
"error": "no_token",
"message": "User must provide a token",
}
401:
{
"error": "expired_token",
"message": "Token is expired",
}
GET /users
content-type: application/json
headers:
- authorization: accessToken
200:
[{
"id": string,
"firstName": string,
"lastName": string,
"position": string
}]
POST /users
content-type: application/json
headers:
- authorization: accessToken
{
"firstName": string,
"lastName": string,
"position": string
}
200:
{
"id": string,
"firstName": string,
"lastName": string,
"position": string
}
400:
{
"error": "invalid_data",
"message": "Data are not correct",
}
PATCH /users/:id
content-type: application/json
headers:
- authorization: accessToken
{
"firstName": string, // nullable
"lastName": string, // nullable
"position": string // nullable
}
200:
{
"id": string,
"firstName": string,
"lastName": string,
"position": string
}
404:
{
"error": "user_not_found",
"message": "User not found",
}
DELETE /users/:id
content-type: application/json
headers:
- authorization: accessToken
201: Ok
404:
{
"error": "user_not_found",
"message": "User not found",
}
{
"error": string,
"message": string
}