Для всех эндпоинтов кроме регистрации и входа нужен токен.
- POST
/user
- добавить пользователя.
Request body:
{
"email": "[email protected]",
"name": "Фамилия Имя Отчество",
"password": "deadinside69",
}
Response body:
{
"id": 1,
"token": "qwertyqwertyqwertyqwerty",
}
- GET
/user/{id}
- получить информацию о пользователе.
Response body:
{
"id": 1,
"name": "Фамилия Имя Отчество",
"email": "[email protected]",
"groups": [
{
"id": 1,
"name": "Преподаватели",
},
// ...
],
}
- POST
/user/login
- войти в аккаунт.
Request body:
{
"email": "[email protected]",
"password": "deadinside69",
}
Response body:
{
"id": 1,
"token": "qwertyqwertyqwertyqwerty",
}
- PATCH
/user
- обновить информацию о пользователе.
Request body:
{
"name": "Фамилия Имя Отчество",
"email": "[email protected]",
"password": "newPassword",
}
- DELETE
/user
- удалить пользователя.
- POST
/pool
- создать новый опрос.
Request body:
{
"name": "Название опроса",
"description": "Описание опроса",
"group_id": 1,
"is_anonymous": false,
"options": [
"Вариант 1",
"Вариант 2",
// ...
],
"open_for": 24,
}
Response body:
{
"id": 1,
}
- GET
/pool
- получить доступные голосования.
Response body:
[
{
"id": 1,
"name": "Название опроса",
"description": "Описание опроса",
"user": {
"id": 1,
"email": "[email protected]",
"name": "Фамилия Имя Отчество",
},
"is_anonymous": false,
"options": [
{"id": 1, "text": "Вариант 1", "count": 0},
{"id": 2, "text": "Вариант 2", "count": 0},
],
"created_at": "2023-11-23T13:19:46Z",
"expires_at": "2023-11-23T13:19:46Z",
},
// ...
]
- GET
/pool/{id}
- получить информацию о голосовании.
Response body:
{
"id": 1,
"name": "Название опроса",
"description": "Описание опроса",
"user": {
"id": 1,
"email": "[email protected]",
"name": "Фамилия Имя Отчество",
},
"is_anonymous": false,
"options": [
{"id": 1, "text": "Вариант 1", "count": 0},
{"id": 2, "text": "Вариант 2", "count": 0},
// ...
],
"created_at": "2023-11-23T13:19:46Z",
"expires_at": "2023-11-23T13:19:46Z",
}
-
DELETE
/pool/{id}
- удалить голосование. -
POST
/pool/{id}/vote
- проголосовать.
Request body:
{
"id": 1,
}
-
DELETE
/pool/{id}/vote
- отменить голос. -
GET
/pool/{pool_id}/vote/{option_id}
- получить пользователей, проголосовавших за вариант.
Response body:
[
{
"id": 1,
"name": "Фамилия Имя Отчество",
"email": "[email protected]",
},
// ...
]
-- GET /group
- получить все существующие группы.
Response body:
[
{
"id": 1,
"name": "Преподаватели",
},
{
"id": 2,
"name": "Все пользователи",
},
{
"id": 3,
"name": "Группа 1",
},
// ...
]
-- POST /group
- создать новую группу. Доступно только администраторам.
Request body:
{
"name": "Группа 2",
}
Response body:
{
"id": 4,
}
-- PATCH /group/{id}
- изменить группу. Доступно только администраторам.
Request body:
{
"name": "Группа 69",
}
-- DELETE /group/{id}
- удалить группу. Доступно только администраторам.
-- GET /group/{id}/user
- получить всех пользователей в группе.
Response body:
[
{
"id": 1,
"name": "Фамилия Имя Отчество",
"email": "[email protected]",
},
// ...
]
-- POST /group/{id}/user
- добавить пользователя в группу. Доступно только администраторам.
Request body:
{
"id": 1,
}
-- DELETE /group/{id}/user/{id}
- удалить пользователя из группы. Доступно только администраторам.
- POST
/chat/{id}
- отправить сообщение группе.
Request body:
{
"text": "Текст сообщения",
}
- GET
/chat/{id}?count=25&offset=0
- получить последние сообщения группы.
Request body:
[
{
"text": "Текст сообщения",
"user": {
"id": 1,
"email": "[email protected]",
"name": "Фамилия Имя Отчество",
},
"created_at": "2023-11-23T13:19:46Z",
},
// ...
]
- WS
/chat/{id}/ws
- подписаться на сообщения группы.
Message body:
{
"text": "Текст сообщения",
"user": {
"id": 1,
"email": "[email protected]",
"name": "Фамилия Имя Отчество",
},
"created_at": "2023-11-23T13:19:46Z",
}