polls.question.add

Scope: polls

Кто может вызывать: Редактирование опроса: canEditVote (администратор модуля/опроса или права на канал). Подробнее: Права доступа

Создание вопроса. fieldType — xmlId или numeric id из polls.question.type.list.

HTTP: POST

Побочные эффекты: Для типов NUMBER, FLOAT, SCALE автоматически создаются служебные ответы (min/max и т.п.) — см. раздел Ответы.

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

Параметр Тип Обяз. Описание
voteId int да ID родительского опроса (обязательно при создании)
question string да Текст вопроса (alias: title; обязательно при создании)
fieldType string нет Тип: xmlId или числовой ID из polls.question.type.list (alias: type)
active string нет Y/N или bool
cSort int нет Сортировка (alias: sort)
required string нет Y/N или bool
diagram string нет Показывать на диаграмме: Y/N
diagramType string нет Тип диаграммы
questionType string нет html или text
imageId int нет ID файла изображения
dependsOnQuestionId int нет ID вопроса-условия (alias: dependedQuestionId)
dependsOnAnswerId int нет ID ответа-условия; первый/основной ответ для зависимости
dependsOnAnswerIds array нет ID ответов-условий для мультивыбора
ufDiagramColumnCount string нет Количество колонок диаграммы (UF)
fields object нет Необязательная обёртка с теми же полями

Ответы

RADIO, CHECKBOX, DROPDOWN и др.

polls.question.add создаёт только вопрос. Варианты добавляйте отдельными вызовами polls.answer.add — поля элемента те же, что у метода (проверено на voteId 11, questionId 53):

{
          "questionId": 53,
          "message": "Option A",
          "cSort": 100,
          "active": "Y"
        }
        

После двух таких вызовов polls.answer.list?filter[questionId]=53 вернул:

[
          { "id": 205, "message": "Option A", "cSort": 100, "active": "Y", "counter": 0, "imageId": 0, "comment": 0, "color": "" },
          { "id": 206, "message": "Option B", "cSort": 200, "active": "Y", "counter": 0, "imageId": 0, "comment": 0, "color": "" }
        ]
        

NUMBER, FLOAT, SCALE

Служебные ответы создаются из полей верхнего уровня запроса. Aliases: min/minVal, max/maxVal, mantissa/floatCount, scaleStep/dotCount, scaleLeft/scaleSignL, scaleRight/scaleSignR.

NUMBER — запрос:

{
          "voteId": 11,
          "question": "REST doc test NUMBER v2",
          "fieldType": "NUMBER",
          "minVal": "1",
          "maxVal": "100"
        }
        

polls.answer.list?filter[questionId]=56 → два ответа с message "1" (cSort 100) и "100" (cSort 200).

SCALE — запрос:

{
          "voteId": 11,
          "question": "REST doc test SCALE",
          "fieldType": "SCALE",
          "minVal": "0",
          "maxVal": "10",
          "scaleStep": "1",
          "scaleLeft": "Bad",
          "scaleRight": "Good"
        }
        

polls.answer.list?filter[questionId]=55 → пять ответов: min "0", max "10", step "1", подписи "Bad" / "Good".

FLOAT — дополнительно mantissa (число знаков после запятой); при minVal/maxVal/mantissa: "0"/"5"/"2" создаются три служебных ответа с теми же message.

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

Ответ в конверте модуля: result.result — созданный вопрос (как polls.question.get); result.error. Ключи total/next для не-list методов могут отсутствовать в сериализации, если не переданы.

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

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

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

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

curl -X POST "https://{портал}/rest/{user_id}/{webhook_code}/polls.question.add.json" \
          -H "Content-Type: application/json" \
          -H "Accept: application/json" \
          -d '{
          "voteId": 15,
          "question": "Ваш вариант?",
          "fieldType": "RADIO",
          "active": "Y"
        }'
        

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

{
          "result": {
            "result": {
              "id": 69,
              "question": "Doc Q?",
              "fieldType": {
                "id": 0,
                "xmlId": "RADIO"
              },
              "cSort": 100,
              "required": "N",
              "diagram": "Y",
              "counter": 0,
              "imageId": 0,
              "dependsOnQuestionId": 0,
              "dependsOnAnswerId": 0
            },
            "error": null
          },
          "time": {
            "start": 1787319174,
            "finish": 1787319174.118574,
            "duration": 0.11857390403747559,
            "processing": 0,
            "date_start": "2026-08-21T16:32:54+03:00",
            "date_finish": "2026-08-21T16:32:54+03:00"
          }
        }
        
Предыдущая
Следующая