---
# System prepended metadata

title: EndPoints

---

# 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