Это сервис для организации "Тайного Санты", написанный на Go и ванильных HTML, CSS и JS
POST /register - Регистрация пользователя
Описание: выполняет регистрацию
Тело запроса:
{
"name": "string",
"username": "string",
"password": "string"
}
POST /login - Вход в аккаунт
Описание: выполняет вход (выдает токен аутентификации пользователя)
Тело запроса:
{
"username": "string",
"password": "string"
}
Тело ответа: токен
GET /me - Информация о текущем пользователе
Требования: аутентификация
Описание: предоставляет информацию о пользователе, в аккаунт которого выполнен вход
POST /rooms - Создание комнаты
Описание: создает комнату
Тело запроса:
{
"name": "string",
"description": "string"
}
GET /rooms - Список моих комнат
Требования: аутентификация
Описание: выдает список созданных пользователем комнат
Тело ответа:
{
"rooms": [
{
"id": 1,
"name": "Комната 1",
"description": "Описание",
"max_participants": 30,
"created_at": "2024-12-29T10:15:46Z"
}
]
}
DELETE /rooms/{id} - Удаление комнаты
Требования: аутентификация; вы должны быть владельцем комнаты
Описание: удаляет комнату с id, равным {id}
POST /rooms/{id}/participants - Вход в комнату
Требования: аутентификация; участие в комнате
Описание: добавляет пользователя в указанную комнату
DELETE /rooms/{id}/participants/me - Выход из комнаты
Требования: аутентификация; участие в комнате
Описание: удаляет пользователя из указанной комнаты
GET /rooms/{id}/wish - Мое желание
Требования: аутентификация; участие в комнате
Описание: возвращает желание пользователя в указанной комнате
Тело ответа:
{
"wish": "Желание"
}
PATCH /rooms/{id}/wish - Обновление желания
Требования: аутентификация; участие в комнате
Описание: обновляет желание пользователя в указанной комнате
Тело запроса:
{
"wish": "Новое желание"
}
GET /rooms/{id}/participants - Список участников комнаты
Требования: аутентификация; вы должны быть владельцем комнаты
Описание: выдает список участников указанной комнаты
Тело ответа:
{
"participants": [
{
"id": 1,
"user_id": 1,
"room_id": 1,
"wish": "Желание",
"gives_to": 2
},
{
"id": 2,
"user_id": 2,
"room_id": 1,
"wish": "Желание",
"gives_to": 1
}
]
}
POST /rooms/{id}/participants/distribute - Распределить дарящих
Требования: аутентификация; вы должны быть владельцем комнаты
Описание: распределяет, кто кому дарит в указанной комнате