polls.voting.submit

Scope: polls

Кто может вызывать: Пользователь с правом голосования в опросе; опрос активен и доступен. Подробнее: Права доступа

Отправка голоса пользователя.

HTTP: POST

Побочные эффекты:

  • Записывает голос в b_vote_event / b_vote_event_answer (тот же путь, что UI через CVote::keepVoting / voteFor).
  • Сохраняет комментарии к вопросам (comment_{questionId}), если переданы.
  • Переголосование (revote): если пользователь уже голосовал и polls.voting.canRevote для него возвращает canRevote: true, новый submit заменяет бюллетень. После успешного голосования срабатывает событие onAfterVoting → обработчик Polls\Events\Vote\ReVote удаляет предыдущие события голосования этого пользователя в этом опросе (CVoteEvent::Delete).
  • Уведомление автору опроса (не всегда): если у опроса notifyN, задан authorId и голосующий — не автор, вызывается sendVotingMessage (IM при notify = I, иначе e-mail). См. поле notify в polls.vote.get / polls.vote.add.
  • При установленном модуле statistic может добавляться запись в статистику посещений (CStatEvent::AddCurrent).

Повторный submit без права на revote не перезаписывает голос — вернётся VALIDATION_ERROR.

Параметры метода

Параметр Тип Обяз. Описание
voteId int да ID опроса (aliases: id, elementId)
answers object да Бюллетень: объект «questionId → ответы» или массив {questionId, answerId, message}
userId int нет ID пользователя портала, от имени которого голосуют. По умолчанию — пользователь вебхука/OAuth. Голосование за другого — только при canEdit.

Возвращаемые данные

Ответ в конверте модуля: result.result{ success, voteId, userId }; result.error. Ключи total/next для не-list методов могут отсутствовать в сериализации, если не переданы.

Обработка ошибок

Справочник кодов: Коды ошибок.

Код Описание
UNAUTHORIZED Пользователь не авторизован
INTERNAL_ERROR Внутренняя ошибка сервера
ACCESS_DENIED Нет прав на операцию
NOT_FOUND Сущность не найдена
VALIDATION_ERROR Некорректные или неполные параметры

Пример запроса (POST)

curl -X POST "https://{портал}/rest/{user_id}/{webhook_code}/polls.voting.submit.json" \
          -H "Content-Type: application/json" \
          -H "Accept: application/json" \
          -d '{
          "voteId": 15,
          "answers": "{\"52\":{\"answerId\":193}}"
        }'
        

Пример ответа

{
          "result": {
            "result": {
              "success": true,
              "voteId": 27,
              "userId": 1
            },
            "error": null
          },
          "time": {
            "start": 1787319175,
            "finish": 1787319175.416966,
            "duration": 0.41696596145629883,
            "processing": 0,
            "date_start": "2026-08-21T16:32:55+03:00",
            "date_finish": "2026-08-21T16:32:55+03:00"
          }
        }
        

См. также

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