Размещение заданий
Перед началом работы
Выберите платформу, чтобы получить OAuth-токен:
- Зарегистрируйтесь на платформе, если вы не делали этого ранее.
- Получите OAuth-токен в кабинете заказчика.
- Для публикации необходимо предварительно пополнить баланс счета.
Создайте проект
Запрос
Воспользуйтесь методом POST /api/v1/projects
:
Отправьте запрос из командной строки с помощью утилиты cURL:
curl -X POST \
-H 'Authorization: OAuth PlaceYourRealOAuthToken_Here' \
-H 'Content-Type: application/json' \
-d '{
"public_name": "Cat or dog",
"public_description": "What kind of animal is on the picture?",
"public_instructions": "Look at the picture. Is it a dog or a cat? Choose the correct answer.",
"task_spec": {
"input_spec": {
"image": {
"type": "url",
"required": true,
"hidden": false
}
},
"output_spec": {
"result": {
"type": "string",
"required": true,
"hidden": false,
"allowed_values": ["cat","dog"]
}
},
"view_spec": {
"lock": {
"core": "1.7.0",
"view.list": "1.0.5",
"view.image": "1.2.0",
"plugin.toloka": "1.1.8",
"field.radio-group": "1.1.10",
"condition.required": "1.1.5"
},
"type": "tb",
"config": "{\"view\": {\"items\": [{\"url\": {\"path\": \"image\", \"type\": \"data.input\"}, \"ratio\": [1, 1], \"type\": \"view.image\"}, {\"data\": {\"path\": \"result\", \"type\": \"data.output\"}, \"validation\": {\"type\": \"condition.required\"}, \"options\": [{\"label\": \"Cat\", \"value\": \"cat\"}, {\"label\": \"Dog\", \"value\": \"dog\"}], \"type\": \"field.radio-group\"}], \"type\": \"view.list\"}, \"plugins\": [{\"layout\": {\"kind\": \"scroll\", \"taskWidth\": 400}, \"type\": \"plugin.toloka\"}]}",
"settings": {
"showSkip": true,
"showTimer": true,
"showTitle": true,
"showFinish": true,
"showSubmit": true,
"showMessage": true,
"showFullscreen": true,
"showInstructions": true
}
}
},
"assignments_issuing_type": "AUTOMATED"
}' \
https://tasks.yandex.ru/api/v1/projects
Заполните поля:
1. Request URL
https://tasks.yandex.ru/api/v1/projects
2. Headers
Authorization: OAuth PlaceYourRealOAuthToken_Here
Content-Type: application/json
3. Body
{
"public_name": "Cat or dog",
"public_description": "What kind of animal is on the picture?",
"public_instructions": "Look at the picture. Is it a dog or a cat? Choose the correct answer.",
"task_spec": {
"input_spec": {
"image": {
"type": "url",
"required": true,
"hidden": false
}
},
"output_spec": {
"result": {
"type": "string",
"required": true,
"hidden": false,
"allowed_values": [
"cat",
"dog"
]
}
},
"view_spec": {
"lock": {
"core": "1.7.0",
"view.list": "1.0.5",
"view.image": "1.2.0",
"plugin.toloka": "1.1.8",
"field.radio-group": "1.1.10",
"condition.required": "1.1.5"
},
"type": "tb",
"config": "{\"view\": {\"items\": [{\"url\": {\"path\": \"image\", \"type\": \"data.input\"}, \"ratio\": [1, 1], \"type\": \"view.image\"}, {\"data\": {\"path\": \"result\", \"type\": \"data.output\"}, \"validation\": {\"type\": \"condition.required\"}, \"options\": [{\"label\": \"Cat\", \"value\": \"cat\"}, {\"label\": \"Dog\", \"value\": \"dog\"}], \"type\": \"field.radio-group\"}], \"type\": \"view.list\"}, \"plugins\": [{\"layout\": {\"kind\": \"scroll\", \"taskWidth\": 400}, \"type\": \"plugin.toloka\"}]}",
"settings": {
"showSkip": true,
"showTimer": true,
"showTitle": true,
"showFinish": true,
"showSubmit": true,
"showMessage": true,
"showFullscreen": true,
"showInstructions": true
}
}
},
"assignments_issuing_type": "AUTOMATED"
}
В примере приведены основные параметры, которые необходимы для создания простейшего проекта. Более подробное описание всех параметров запроса приведено в разделе Создать проект.
Ответ
В ответе на запрос вы получите JSON-объект созданного проекта. Объект будет содержать идентификатор проекта (id
).
{
"id": "12345",
"public_name": "Cat or dog",
"public_description": "What kind of animal is on the picture?",
...
}
Важно
id
потребуется для создания пулов в проекте — укажите его в запросе на добавление пула.
Добавьте пул
Запрос
В приведенном примере кода подставьте значения параметров:
- в
project_id
вместо{project_id}
— идентификатор проекта, для которого создан пул (id
, полученный в ответ на запрос на добавление проекта); - в
will_expire
вместо{close_date}
— дату и время по UTC в формате ISO 8601:YYYY-MM-DDThh:mm:ss[.sss]
, когда пул нужно закрыть, даже если не все страницы заданий выполнены.
Затем отправьте POST
-запрос к /api/v1/pools
:
Отправьте запрос из командной строки с помощью утилиты cURL:
curl -X POST \
-H 'Authorization: OAuth PlaceYourRealOAuthToken_Here' \
-H 'Content-Type: application/json' \
-d '{
"project_id": "{project_id}",
"private_name": "Cat pool 1",
"may_contain_adult_content": true,
"will_expire": "{close_date}",
"reward_per_assignment": 2,
"assignment_max_duration_seconds": 60,
"filter": {
"and": [
{
"or": [
{
"category": "profile",
"key": "languages",
"operator": "IN",
"value": "RU"
}
]
}
]
},
"quality_control": {
"captcha_frequency": "LOW",
"configs": [
{
"collector_config": {
"type": "CAPTCHA",
"parameters": {
"history_size": 10
}
},
"rules": [
{
"conditions": [
{
"key": "stored_results_count",
"operator": "EQ",
"value": 10
},
{
"key": "success_rate",
"operator": "LTE",
"value": 70.0
}
],
"action": {
"type": "RESTRICTION_V2",
"parameters": {
"scope": "PROJECT",
"duration_unit": "DAYS",
"duration": 3,
"private_comment": "Incorrect captcha input"
}
}
}
]
}
]
},
"mixer_config": {
"real_tasks_count": 3,
"golden_tasks_count": 0,
"training_tasks_count": 0
},
"defaults": {
"default_overlap_for_new_task_suites": 3
}
}' \
https://tasks.yandex.ru/api/v1/pools
Заполните поля:
1. Request URL
https://tasks.yandex.ru/api/v1/pools
2. Headers
Authorization: OAuth PlaceYourRealOAuthToken_Here
Content-Type: application/json
3. Body
{
"project_id": "{project_id}",
"private_name": "Cat pool 1",
"may_contain_adult_content": true,
"will_expire": "{close_date}",
"reward_per_assignment": 2,
"assignment_max_duration_seconds": 60,
"filter": {
"and": [
{
"or": [
{
"category": "profile",
"key": "languages",
"operator": "IN",
"value": "RU"
}
]
}
]
},
"quality_control": {
"captcha_frequency": "LOW",
"configs": [
{
"collector_config": {
"type": "CAPTCHA",
"parameters": {
"history_size": 10
}
},
"rules": [
{
"conditions": [
{
"key": "stored_results_count",
"operator": "EQ",
"value": 10
},
{
"key": "success_rate",
"operator": "LTE",
"value": 70
}
],
"action": {
"type": "RESTRICTION_V2",
"parameters": {
"scope": "PROJECT",
"duration_unit": "DAYS",
"duration": 3,
"private_comment": "Incorrect captcha input"
}
}
}
]
}
]
},
"mixer_config": {
"real_tasks_count": 3,
"golden_tasks_count": 0,
"training_tasks_count": 0
},
"defaults": {
"default_overlap_for_new_task_suites": 3
}
}
В примере приведены основные параметры, которые необходимы для создания простейшего пула. Более подробное описание всех параметров запроса содержится в разделе Создать пул.
Ответ
В ответе на запрос вы получите JSON-объект созданного пула. Объект будет содержать идентификатор пула (id
).
{
"id": "9876543",
"project_id": "12345",
"private_name": "Cat pool 1",
...
}
Важно
id
потребуется для добавления заданий в пул — укажите его в запросе на загрузку заданий.
Загрузите задания
Запрос
В приведенном примере кода подставьте значения параметров:
- в
input_values
вместоhttps://example.com/image_1.jpg
–https://example.com/image_3.jpg
— конкретные значения для входных данных, которые были определены в параметреinput_spec
проекта (в данном примере — адреса изображений для разметки, замените примеры на реальные ссылки); - в
pool_id
вместо{pool_id}
— идентификатор пула, в который загружается задание (id
, полученный в ответ на запрос на добавление пула).
Затем отправьте POST
-запрос к /api/v1/tasks
:
Отправьте запрос из командной строки с помощью утилиты cURL:
curl -X POST \
-H 'Authorization: OAuth PlaceYourRealOAuthToken_Here' \
-H 'Content-Type: application/json' \
-d '[
{
"input_values": {
"image": "https://example.com/image_1.jpg"
},
"pool_id": "<pool id>",
"overlap": 2
},
{
"input_values": {
"image": "https://example.com/image_2.jpg"
},
"pool_id": "<pool id>",
"overlap": 2
},
{
"input_values": {
"image": "https://example.com/image_3.jpg"
},
"pool_id": "<pool id>",
"overlap": 2
}
]' \
https://tasks.yandex.ru/api/v1/tasks
Заполните поля:
1. Request URL
https://tasks.yandex.ru/api/v1/tasks
2. Headers
Authorization: OAuth PlaceYourRealOAuthToken_Here
Content-Type: application/json
3. Body
[
{
"input_values": {
"image": "https://example.com/image_1.jpg"
},
"pool_id": "<pool id>",
"overlap": 2
},
{
"input_values": {
"image": "https://example.com/image_2.jpg"
},
"pool_id": "<pool id>",
"overlap": 2
},
{
"input_values": {
"image": "https://example.com/image_3.jpg"
},
"pool_id": "{pool_id}",
"overlap": 2
}
]
В примере приведены основные параметры, которые необходимы для загрузки простейших заданий. Более подробное описание всех параметров заданий приведено в разделе Создать одно или несколько заданий.
Проверьте корректность пула и отправьте его на модерацию
-
Проверьте, возможен ли запуск пула. Отправьте запрос вида:
cURLPostmanОтправьте запрос из командной строки с помощью утилиты cURL:
curl -X GET \ -H 'Authorization: OAuth PlaceYourRealOAuthToken_Here' \ -H 'Content-Type: application/json' \ https://tasks.yandex.ru/api/new/requester/pools/{pool_id}/validate
Заполните поля:
1. Request URL
https://tasks.yandex.ru/api/new/requester/pools/:id/validate
2. Headers
Authorization: OAuth PlaceYourRealOAuthToken_Here Content-Type: application/json
-
В ответ вы получите массив объектов. Найдите среди них объект с полем
type
, имеющим значениеMUST_PASS_MODERATION
:[ { "type": "MUST_PASS_MODERATION", "active": true, "blocker": true } ]
В зависимости от значения поля
active
выполните дальнейшие действия:Если значение равно
true
Отправьте пул на модерацию:
cURLPostmanОтправьте запрос из командной строки с помощью утилиты cURL:
curl -X PUT \ -H 'Authorization: OAuth PlaceYourRealOAuthToken_Here' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{"status":"READY"}' \ https://tasks.yandex.ru/api/new/requester/poolModeration/{pool_id}
Заполните поля:
1. Request URL
https://tasks.yandex.ru/api/new/requester/poolModeration/:id
2. Headers
Authorization: OAuth PlaceYourRealOAuthToken_Here Content-Type: application/json Accept: application/json
3. Body
{"status": "READY"}
В ответ вы получите подтверждение, что пул отправлен на модерацию:
{ "poolId": 12133, "projectId": 1024, "requesterId": "2e217f15335a50ee0324fe5f149ce1fc", "snapshotMajorVersion": 2, "status": "READY" }
Если значение равно
false
Откройте пул и проверьте задания от лица исполнителя.
Запустите пул
Внимание
Запускайте пул только в том случае, если он не находится на модерации и значение поля active
объекта с типом MUST_PASS_MODERATION
равно false
.
Перед запуском
Перед запуском пула перейдите в интерфейс Яндекс Заданий, выберите пул, нажмите кнопку Предпросмотр и проверьте отображение заданий.
Запрос
В path-параметр {pool_id}
подставьте id
пула, который нужно запустить (id
, полученный в ответе на запрос на добавление пула), и воспользуйтесь методом POST
:
Отправьте запрос из командной строки с помощью утилиты cURL:
curl -X POST \
-H 'Authorization: OAuth PlaceYourRealOAuthToken_Here' \
-H 'Content-Type: application/json' \
https://tasks.yandex.ru/api/v1/pools/{pool_id}/open
Заполните поля:
1. Request URL
https://tasks.yandex.ru/api/v1/pools/:id/open
2. Headers
Authorization: OAuth PlaceYourRealOAuthToken_Here
Content-Type: application/json
Проверьте задания
После запуска пула убедитесь, что все настройки и отображение заданий корректны. Для этого зайдите в Яндекс Задания под логином исполнителя и откройте карточку с созданными заданиями.
Что дальше
Почитайте инструкцию по получению результатов.