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). - Уведомление автору опроса (не всегда): если у опроса
notify≠N, задан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"
}
}
См. также
Предыдущая
Следующая