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
          }
        }
        

См. также

Предыдущая
Следующая