POST http://host/registration
Пример тела запроса:
{
"fullName": "Имя пользователя",
"birthDate": "ДД-ММ-ГГГГ",
"email": "[email protected]",
"password": "STRONG_PASSWORD",
"confirmPassword": "STRONG_PASSWORD"
}
Валидация:
1. Проверка наличия всех полей
2. Проверка зарегистрированного пользователя с таким email
3. Проверка даты рождения (дата рождения не может быть позже сегодняшней даты)
4. Проверка формата email
5. Проверка совпадения паролей
6. Проверка сложности пароля (минимум 8 символов, одна заглавная буква, одна цифра и специальный символ)
В случае успеха возвращает:
{
"token": "ТОКЕН ПОЛЬЗОВАТЕЛЯ" (токен живет 1 час)
}
POST http://host/login
Пример тела запроса:
{
"email": "[email protected]",
"password": "STRONG_PASSWORD"
}
Валидация:
1. Проверка наличия всех полей
2. Проверка зарегистрированного пользователя с таким email
3. Проверка пароля
В случае успеха возвращает:
{
"token": "ТОКЕН ПОЛЬЗОВАТЕЛЯ" (токен живет 1 час)
}
POST http://host/logout (Выполняется с Bearer Token)
Валидация:
Проверка корректности токена
В случае успеха возвращает:
{
"message": "Вы успешно вышли из системы."
}
GET http://host/profile (Выполняется с Bearer Token)
Валидация:
Проверка корректности токена
В случае успеха возвращает:
{
"name": "Имя пользователя",
"email": "[email protected]",
"birthDate": "ДД-ММ-ГГГГ",
}
PUT http://host/profile (Выполняется с Bearer Token)
Пример тела запроса:
{
"fullName": "НОВОЕ ИМЯ",
"birthDate": "ДД-ММ-ГГГГ"
}
Валидация:
1. Проверка корректности токена
2. Проверка наличия полей в теле запроса
3. Проверка даты рождения (дата рождения не может быть позже сегодняшней даты)
В случае успеха возвращает:
{
"message": "Данные пользователя успешно обновлены."
}
GET http://host/groups (Выполняется с Bearer Token)
Валидация:
Проверка корректности токена
В случае успеха возвращает:
[
{
"id": "GUID группы",
"name": "Имя группы"
},
{
"id": "GUID группы",
"name": "Имя группы"
}, ...
]
POST http://host/groups (Выполняется с Bearer Token)
Пример тела запроса:
{
"groupName": "ИМЯ ГРУППЫ"
}
Валидация:
1. Проверка корректности токена
2. Проверка прав (создавать группы может только администратор)
3. Проверка названия группы (1 название = 1 группа)
В случае успеха возвращает:
{
"id": "GUID группы",
"name": "Имя группы"
}
PUT http://host/groups/{id} (Выполняется с Bearer Token)
id = GUID группы
Пример тела запроса:
{
"groupName": " НОВОЕ ИМЯ ГРУППЫ"
}
Валидация:
1. Проверка корректности токена
2. Проверка прав (редактировать группы может только администратор)
3. Проверка названия группы (1 название = 1 группа)
В случае успеха возвращает:
{
"message": "Данные группы успешно обновлены."
}
DELETE http://host/groups/{id} (Выполняется с Bearer Token)
id = GUID группы
Валидация:
1. Проверка корректности токена
2. Проверка прав (удалять группы может только администратор)
В случае успеха возвращает:
{
"message": "Группа успешно удалена"
}
GET http://host/groups/{id} (Выполняется с Bearer Token)
id = GUID группы
Валидация:
Проверка корректности токена
В случае успеха возвращает:
[
{
"id": "GUID курса",
"name": "Имя курса",
"startYear": ГГГГ,
"maximumStudentsCount": N,
"remainingSlotsCount": N,
"status": "Статус курса",
"semester": "Семестр"
}, ...
]
GET http://host/courses/{id}/details (Выполняется с Bearer Token)
id = GUID курса
Валидация:
Проверка корректности токена
В случае успеха возвращает:
{
"id": "GUID курса",
"name": "Имя курса",
"startYear": ГГГГ,
"maximumStudentsCount": N,
"studentsEnrolledCount": N,
"studentsInQueueCount": N,
"requirements": "Требования",
"annotations": "Аннотации",
"status": "Статус",
"semester": "Семестр",
"students": [
{
"name": "Имя студента",
"email": "[email protected]"
}, ...
],
"teachers": [
{
"name": "Имя преподавателя",
"email": "[email protected]",
"isMain": true
}, ...
],
"notifications": [
{
"text": "Текст уведомления",
"isImportant": true
}, ...
]
}
POST http://host/courses/{id}/status (Выполняется с Bearer Token)
id = GUID курса
Пример тела запроса:
{
"status": "Статус"
}
Валидация:
1. Проверка корректности токена
2. Проверка полей тела запроса
3. Статус может быть только: 'OpenForAssigning', 'Started', 'Finished'
4. Проверка прав доступа. Менять статус могут только преподаватели данного курса или администраторы
В случае успеха возвращает:
{
"message": "Статус успешно обновлен."
}
POST http://host/courses/{id}/notifications (Выполняется с Bearer Token)
id = GUID курса
Пример тела запроса:
{
"text": "Текст уведомления",
"isImportant": true
}
Валидация:
1. Проверка корректности токена
2. Проверка полей тела запроса
3. isImportant может быть только: true или false
4. Проверка прав доступа. Создавать уведомления могут только преподаватели данного курса или администраторы
В случае успеха возвращает:
{
"id": "GUID курса",
"name": "Имя курса",
"startYear": ГГГГ,
"maximumStudentsCount": N,
"studentsEnrolledCount": N,
"studentsInQueueCount": N,
"requirements": "Требования",
"annotations": "Аннотации",
"status": "Статус",
"semester": "Семестр",
"students": [
{
"name": "Имя студента",
"email": "[email protected]"
}, ...
],
"teachers": [
{
"name": "Имя преподавателя",
"email": "[email protected]",
"isMain": true
}, ...
],
"notifications": [
{
"text": "Текст уведомления",
"isImportant": true
}, ...
]
}
POST http://host/courses/{id}/teachers (Выполняется с Bearer Token)
id = GUID курса
Пример тела запроса:
{
"userId": "GUID пользователя"
}
Валидация:
1. Проверка корректности токена
2. Проверка полей тела запроса
3. Проверить, существует ли пользователь с таким GUID
4. Проверка прав доступа. Добавлять преподавателей могут только администраторы
5. Является ли преподаватель уже преподавателем
В случае успеха возвращает:
"teachers": [
{
"name": "Имя преподавателя",
"email": "[email protected]",
"isMain": true
}, ...
]
POST http://host/courses/{id}/sign-up (Выполняется с Bearer Token)
id = GUID курса
Валидация:
1. Проверка корректности токена
2. Является ли пользователь преподавателем
3. Проверить, существует ли курс таким GUID
4. Подана ли заявка ранее
5. Открыт ли курс для записи
В случае успеха возвращает:
{
"message": "Заявка на курс отправлена"
}
POST http://host/courses/{id_1}/student-status/{id_2} (Выполняется с Bearer Token)
id_1 = GUID курса
id_2 = GUID студента
Пример тела запроса:
{
"status": "Статус"
}
Валидация:
1. Проверка корректности токена
2. Проверка полей тела запроса
3. Проверка статуса. Может быть только 'Accepted', 'Declined'
4. Проверить, существует ли студент на курсе с таким GUID
5. Проверить, существует ли курс с таким GUID
6. Проверка прав. Изменять статус может только преподаватель курса или администратор
В случае успеха возвращает:
{
"message": "Статус успешно обновлен."
}
POST http://host/courses/{id_1}/marks/{id_2} (Выполняется с Bearer Token)
id_1 = GUID курса
id_2 = GUID студента
Пример тела запроса:
{
"markType": "тип оценки",
"mark": "оценка"
}
Валидация:
1. Проверка корректности токена
2. Проверка полей тела запроса
3. Проверка типа оценки. Может быть только 'Midterm', 'Final'
4. Проверить, существует ли студент на курсе с таким GUID
5. Проверить, существует ли курс с таким GUID
6. Проверка прав. Выставлять оценки может только преподаватель курса или администратор
7. Оценка может принимать значения 'NotDefined', 'Passed', 'Failed'
8. Проверка, что студент зачислен на курс
В случае успеха возвращает:
{
"message": "Оценка успешно обновлена."
}
GET http://host/courses/my (Выполняется с Bearer Token)
Валидация:
Проверка корректности токена
В случае успеха возвращает:
[
{
"id": "GUID курса",
"name": "Имя курса",
"startYear": ГГГГ,
"maximumStudentsCount": N,
"remainingSlotsCount": N,
"status": "Статус курса",
"semester": "Семестр"
}, ...
]
GET http://host/courses/teaching (Выполняется с Bearer Token)
Валидация:
Проверка корректности токена
В случае успеха возвращает:
[
{
"id": "GUID курса",
"name": "Имя курса",
"startYear": ГГГГ,
"maximumStudentsCount": N,
"remainingSlotsCount": N,
"status": "Статус курса",
"semester": "Семестр"
}, ...
]
PUT http://host/courses/{id}/requirements-and-annotations (Выполняется с Bearer Token)
id = GUID курса
Пример тела запроса:
{
"requirements": "Требования",
"annotations": "Аннотации"
}
Валидация:
1. Проверка корректности токена
2. Проверка поля requirements
3. Проверка поля annotations
4. Проверка тела запроса
5. Проверка прав доступа
В случае успеха возвращает:
{
"message": "Аннотации успешно обновлены."
}
PUT http://host/courses/{id} (Выполняется с Bearer Token)
id = GUID курса
Пример тела запроса:
{
"name": "Имя курса",
"startYear": ГГГГ,
"maximumStudentsCount": N,
"semester": "Семестр",
"requirements": "Требования",
"annotations": "Аннотации",
"mainTeacherId": "ID преподавателя"
}
Валидация:
1. Проверка корректности токена
2. Проверка поля name (1 имя = 1 курс в группе)
3. Проверка поля startYear (год начала не меньше текущего)
4. Проверка поля semester ('Autumn', 'Spring')
5. Проверка поля requirements
6. Проверка поля annotations
7. Проверка поля mainTeacherId (пользователь существует)
8. Проверка прав доступа
P.s. maximumStudentsCount поле валидируется только на условие положительного числа. maximumStudentsCount может быть меньше, чем студентов на курсе
В случае успеха возвращает:
{
"message": "Курс успешно обновлен."
}
DELETE http://host/courses/{id} (Выполняется с Bearer Token)
id = GUID курса
Валидация:
1. Проверка корректности токена
2. Проверка прав доступа
3. Проверка существования курса
В случае успеха возвращает:
{
"message": "Курс, студенты курса, преподаватели курса и уведомления курса удалены!"
}
DELETE http://host/courses/{id_1}/{id_2} (Выполняется с Bearer Token)
id_1 = GUID группы
id_2 = GUID преподавателя
Валидация:
1. Проверка корректности токена
2. Проверка прав доступа
3. Проверка существования курса
3. Проверка существования преподавателя
В случае успеха возвращает:
{
"message": "Преподаватель удален."
}
GET http://host/users (Выполняется с Bearer Token)
Валидация:
Проверка корректности токена
В случае успеха возвращает:
[
{
"id": "GUID пользователя",
"name": "Имя пользователя",
"email": "[email protected]"
}, ...
]
GET http://host/roles (Выполняется с Bearer Token)
Валидация:
Проверка корректности токена
В случае успеха возвращает:
[
{
"Admin": "false"
},
{
"Course id": "GUID курса",
"Main teacher": false,
"Base teacher": false,
"Student": true
}, ...
]
GET http://host/report (Выполняется с Bearer Token)
Валидация:
1. Проверка корректности токена
2. Проверка прав доступа
В случае успеха возвращает:
[
{
"fullName": "Имя преподавателя",
"id": "GUID преподавателя",
"campusGroupReports": [
{
"name": "Имя курса",
"id": "GUID курса",
"averagePassed": N,
"averageFailed": N
}, ...
]
},.
]