ipr.course.review.add
Scope:
iprКто может вызывать: Любой авторизованный пользователь — за себя. Писать отзыв от имени другого пользователя (
userId) и задаватьdateможет только администратор. Подробнее: Модель доступа
Создаёт или обновляет (upsert) отзыв пользователя о курсе: текст и/или оценку 1..5. У пользователя один отзыв на курс. Это единственный метод записи отзывов и оценок: отдельных методов «обновить» и «оценить» нет.
HTTP: POST
Побочные эффекты: Создаёт или обновляет сообщение форума в теме COURSE_<id> (тема создаётся автоматически при первом отзыве; автор сообщения — целевой пользователь) и строку оценки курса. Рейтинг курса в ipr.course.get / ipr.course.list пересчитывается. Клиентская цитата (quoteMessage) не принимается.
Параметры метода
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
courseId |
int |
да | ID курса |
text |
string |
условно | Текст отзыва, до 10000 символов; пустая строка очищает текст |
rating |
int |
условно | Оценка 1..5 |
userId |
int |
нет | Автор отзыва. По умолчанию — текущий пользователь; другой — только администратор |
date |
string |
нет | Только администратор. Дата сообщения и оценки: YYYY-MM-DD или YYYY-MM-DD HH:MM:SS, не в будущем |
Нужен хотя бы один из text / rating. Ключ, который не передан, не изменяется: так можно сменить оценку, не трогая текст, и наоборот.
Возвращаемые данные
Отзыв пользователя в форме элемента ipr.course.review.list. Если сохранена только оценка (текста нет), возвращается id: null, text: null, date: null и заполненный rating.
Обработка ошибок
Справочник кодов: error-codes.md.
| Код | Описание |
|---|---|
UNAUTHORIZED |
Пользователь не авторизован |
VALIDATION_ERROR |
Не передан ни text, ни rating; rating не целое 1..5; text длиннее 10000 символов; некорректный date. В error.details.reason: rating, forum_module, forum_not_configured (модуль форума недоступен или не настроен) |
NOT_FOUND |
Курс не найден |
PERMISSION_DENIED |
userId чужого пользователя или date переданы не администратором |
INTERNAL_ERROR |
Внутренняя ошибка сервера |
Пример запроса (POST)
curl -X POST "https://{портал}/rest/{user_id}/{webhook_code}/ipr.course.review.add.json"
-H "Content-Type: application/json"
-H "Accept: application/json"
--data '{
"courseId": 305,
"text": "Полезный курс, много практики",
"rating": 5
}'
Пример ответа
{
"result": {
"result": {
"id": 88001,
"courseId": 305,
"userId": 15,
"authorName": "Иван Петров",
"text": "Полезный курс, много практики",
"date": "2026-10-12 12:00:00",
"rating": 5
},
"total": null,
"next": null,
"error": null
}
}