Создание спецификации

В Яндекс.Толоке в настройках проекта должна быть указана спецификация входных и выходных данных. Если вы используете конструктор шаблонов в интерфейсе Толоки, то спецификация создается автоматически.

Внимание. Создание спецификации работает в тестовом режиме — перепроверяйте результат. Если возникнут проблемы, обратитесь в службу поддержки.

Заполнение входных данных

Поля входных данных создаются из кода на вкладке Пример входных данных. Указывайте максимально подробный пример, чтобы получить готовую спецификацию. Например, если есть необязательные поля, укажите и их.

Примеры:

В этом примере в спецификации будет создано поле question с типом строка.

{
  "question": "Do you like dogs?"
}

По умолчанию все поля входных данных в спецификации помечаются обязательными. Чтобы сделать поле необязательным, надо в конфигурации в компоненте data.input задать свойство default.

Заполнение выходных данных

Поля выходных данных создаются на основе того, в каких компонентах используется data.output, а также какие значения в нем разрешены.

Примеры:

В этом примере в спецификации будет поле verdict с типом логический.

{
  "type": "field.radio-group",
  "options": [
    {
      "label": "Да",
      "value": true
    },
    {
      "label": "Нет",
      "value": false
    }
  ],
  "data": {
    "type": "data.output",
    "path": "verdict"
  }
}
Примечание. Если в выходных данных будут значения разных типов, то в спецификации будет указан тип JSON.

Как редактировать спецификацию

Вы можете изменить спецификацию в настройках проекта Яндекс.Толоки двумя способами: в обычном режиме или в режиме JSON. Режим JSON дает больше возможностей: вы можете делать скрытыми входные данные и использовать регулярные выражения для валидации выходных данных.

Чтобы добавить поле в обычном режиме, нажмите кнопку Добавить поле.

Чтобы редактировать существующее поле, наведите курсор на поле и нажмите кнопку .

Пояснения к настройке полей

Параметр

Параметр в JSON

Описание

Название

id

Идентификатор поля. Допустимы латинские буквы, цифры, дефис и нижнее подчеркивание.

Тип

type

Тип данных:

  • строка — string;

  • ссылка — url;

  • логический — boolean;

  • число — number;

  • дробное число — float;

  • файл — file;
  • географические координаты — coordinates;

  • объект JSON — json.

Для массивов в режиме JSON к типу добавляется префикс array_. Например: array_file.

Обязательное поле

required

Обязательность объекта при загрузке заданий для входных данных.

Обязательность ответа исполнителя для выходных данных.

По умолчанию поле необязательное — false.

Скрытое поле

hidden

Позволяет скрыть данные от исполнителя. Если этого не сделать, исполнители могут получить значение поля программно. Параметр можно настроить в режиме JSON.

Например, вы можете скрыть идентификатор assigment_id, который вам понадобится при выполнении отложенной приемки в отдельном проекте.

По умолчанию поле открытое — false.

Массив array_<тип> Массив объектов одного типа. Используется, например, для загрузки нескольких фотографий исполнителем.

В режиме JSON массив — это отдельный тип данных. Например: "type": "array_file".

Мин. элементов

min_size Минимальное число элементов в массиве.
Макс. элементов max_size Максимальное число элементов в массиве.

Допустимые значения

allowed_values

Допустимые значения для строк, дробных и целых чисел, логического типа данных.

Мин. длина

min_length

Минимальная длина строки.

Макс. длина

max_length Максимальная длина строки

Мин. значение

min_value Минимальное значений для дробных и целых чисел.

Макс. значение

max_value Максимальное значений для дробных и целых чисел.
Текущее положение

current_location

Сохранение текущих координат исполнителя (true/false). Только для типа данных coordinates. Используется в заданиях для мобильного приложения.

По умолчанию false.

Шаблон pattern

Регулярное выражение, которому должна соответствовать строка. Параметр можно настроить в режиме JSON.

Рекомендации

  • Если вы редактируете обязательные поля, изменения применятся только к новым пулам заданий. Например, если вам пришлось исправить ошибку в проекте, клонируйте пул или создайте новый. Существующие пулы заданий будут работать в соответствии со старой версией проекта.

  • В выходных данных используйте проверку значений и не забывайте помечать поле обязательным, если исполнитель всегда должен заполнить его.
  • Делайте поле скрытым, если не хотите, чтобы исполнители могли получить к нему доступ. Это возможно, даже если вы не отображаете это поле в интерфейсе.

    Например, вы передаете в задании служебные данные товара, которые не нужны исполнителям: артикул или номер партии. Или вы модерируете комментарии и вам нужны в результатах персональные данные авторов для последующей обработки данных, но исполнители не должны иметь к ним доступ.

    Чтобы создать скрытое поле, добавьте его в спецификацию самостоятельно, затем в режиме JSON добавьте к этому полю параметр "hidden": true. Эти действия надо выполнять в Толоке при настройке проекта. Скрытое поле сохранится при повторной генерации спецификации с помощью Конструктора шаблонов.