# EndPoints
1. token
2. revoke
3. is_login - пока не знаю, нужен ли
# POST - token
## Request Body
* username: обязательный только при grant_type = password
* password: обязательный только при grant_type = password
* grant_type: password | refresh_token
* visitorId: string;
## Request Header
* Cookie: используется только при grant_type = refresh_token, устанавливается браузером автоматически после удачного запроса token
пользователь вводит username и password, visitorId это уникальный идентификатор браузера или устройства (использую @fingerprintjs/fingerprintjs, пример значения: '7ab69d11f81ad35a7d9ae896a4779070'), если username и password верны, то сервер отправляет клиенту access token и uuid refresh token, uuid refresh token передается в header Set-Cookies.
## Успешный Response
### Response Header
* Set-Cookie параметры:
* HttpOnly (не возможно прочитать из js);
* maxAge время жизни;
* path путь при котором используется cookie;
### Response Body
* access_token;
* type: всегда значение 'bearer';
* возможны дополнительные параметры, например userId, role;
пример успешного ответа:
```
Set-Cookie: refreshToken='c84f18a2-c6c7-4850-be15-93f9cbaef3b3'; HttpOnly // для браузера
{
body: {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1bmNvbCIsImlhdCI6MTY2NTk4NTQwMSwiZXhwIjoxNjY1OTg5MDAxfQ.sP8qypy1Rl543mtCln6R2aK2TMuJqHmDhF-fAYFnScQ",
"type": "bearer"
}
}
```
## Error Response
### Response Body
* status: number;
* message: string;
пример ответа при ошибке:
```
{
"status": 401,
"message": "invalid refresh token"
}
```
# POST revoke
# Request Body
* visitorId: string;
## Request Header
* Cookie: устанавливается браузером автоматически после удачного запроса token
ответы от сервера анологичны POST-запросу token