Урок 8. Как вносить изменения через API
Все методы, изменяющие данные, — например, методы add
, update
, delete
— принимают на вход массив объектов. Каждый объект в запросе обрабатывается отдельно. Например, если приложение отправило запрос на создание 100 объявлений и в 10 из них возникла ошибка, то остальные 90 объявлений будут успешно созданы. Сервер API вернет идентификаторы для 90 созданных объявлений и ошибки для остальных 10.
Внимание
Идентификатор объекта возвращается только в случае успешного выполнения операции (при этом могут быть также выданы предупреждения).
Ошибки, исключающие возможность выполнения запроса (например, неверный формат или отсутствие обязательного параметра), приведут к полному отклонению запроса.
Ваше приложение должно учитывать это при взаимодействии с API и корректно обрабатывать возвращаемые сервером ошибки.
Как редактировать параметры объектов
При изменении объекта с помощью метода update
нет необходимости передавать все параметры объекта. Достаточно указать идентификатор объекта и те параметры, которые требуется изменить. Остальные параметры изменены не будут. При этом сервер Директа все равно проверит объект целиком и, если с новыми значениями объект некорректен, вернет ошибку.
Тренировка в Песочнице
В предыдущем уроке мы получили список всех кампаний. Теперь продолжим работу с одной из них: включим раздельное управление ставками на поиске и в сетях.
cURL
curl -k -H "Authorization: Bearer ТОКЕН" -d '{"method":"update","params":{"Campaigns":[{"Id":ИДЕНТИФИКАТОР_КАМПАНИИ,"TextCampaign":{"BiddingStrategy":{"Network":{"BiddingStrategyType":"MAXIMUM_COVERAGE"}}}}]}}' https://api-sandbox.direct.yandex.com/json/v5/campaigns
cURL для Windows
curl -k -H "Authorization: Bearer ТОКЕН" -d "{\"method\":\"update\",\"params\":{\"Campaigns\":[{\"Id\":ИДЕНТИФИКАТОР_КАМПАНИИ,\"TextCampaign\":{\"BiddingStrategy\":{\"Network\":{\"BiddingStrategyType\":\"MAXIMUM_COVERAGE\"}}}}]}}" https://api-sandbox.direct.yandex.com/json/v5/campaigns
Запрос
{
"method": "update",
"params": {
"Campaigns": [{
"Id": ИДЕНТИФИКАТОР_КАМПАНИИ,
"TextCampaign": {
"BiddingStrategy": {
"Network": {
"BiddingStrategyType": "MAXIMUM_COVERAGE"
}
}
}
}]
}
}
Ответ
{
"result": {
"UpdateResults": [{
"Id": ИДЕНТИФИКАТОР_КАМПАНИИ
}]
}
}
Задание
Мы подготовили несколько примеров и для других сервисов. Попробуйте воспроизвести эти запросы в Песочнице.
Сервис AdGroups
Добавление группы объявлений.
{% cut "cURL" %}
curl -k -H "Authorization: Bearer ТОКЕН" -d '{"method":"add","params":{"AdGroups":[{"Name":"Новая группа","CampaignId":ИДЕНТИФИКАТОР_КАМПАНИИ,"RegionIds":[213]}]}}' https://api-sandbox.direct.yandex.com/json/v5/adgroups
{% endcut %}
{% cut "cURL для Windows" %}
curl -k -H "Authorization: Bearer ТОКЕН" -d "{\"method\":\"add\",\"params\":{\"AdGroups\":[{\"Name\":\"Новая группа\",\"CampaignId\":ИДЕНТИФИКАТОР_КАМПАНИИ,\"RegionIds\":[213]}]}}" https://api-sandbox.direct.yandex.com/json/v5/adgroups
{% endcut %}
{% cut "Запрос" %}
{
"method": "add",
"params": {
"AdGroups": [{
"Name": "Новая группа",
"CampaignId": ИДЕНТИФИКАТОР_КАМПАНИИ,
"RegionIds": [213]
}]
}
}
{% endcut %}
{% cut "Ответ" %}
{
"result": {
"AddResults": [{
"Id": ИДЕНТИФИКАТОР_ГРУППЫ
}]
}
}
{% endcut %}
Сервис Ads
Добавление объявления в группу.
{% cut "cURL" %}
curl -k -H "Authorization: Bearer ТОКЕН" -d '{"method":"add","params":{"Ads":[{"AdGroupId":ИДЕНТИФИКАТОР_ГРУППЫ,"TextAd":{"Title":"Заголовок объявления","Text":"Текст объявления","Mobile":"NO","Href":"http://example.com"}}]}}' https://api-sandbox.direct.yandex.com/json/v5/ads
{% endcut %}
{% cut "cURL для Windows" %}
curl -k -H "Authorization: Bearer ТОКЕН" -d "{\"method\":\"add\",\"params\":{\"Ads\":[{\"AdGroupId\":ИДЕНТИФИКАТОР_ГРУППЫ,\"TextAd\":{\"Title\":\"Заголовок объявления\",\"Text\":\"Текст объявления\",\"Mobile\":\"NO\",\"Href\":\"http://example.com\"}}]}}" https://api-sandbox.direct.yandex.com/json/v5/ads
{% endcut %}
{% cut "Запрос" %}
{
"method": "add",
"params": {
"Ads": [{
"AdGroupId": "ИДЕНТИФИКАТОР_ГРУППЫ",
"TextAd": {
"Title": "Заголовок объявления",
"Text": "Текст объявления",
"Mobile": "NO",
"Href": "http://example.com"
}
}]
}
}
{% endcut %}
{% cut "Ответ" %}
{
"result": {
"AddResults": [{
"Id": ИДЕНТИФИКАТОР_ОБЪЯВЛЕНИЯ
}]
}
}
{% endcut %}
Сервис Keywords
Добавление ключевой фразы.
{% cut "cURL" %}
curl -k -H "Authorization: Bearer ТОКЕН" -d '{"method":"add","params":{"Keywords":[{"Keyword":"Новая фраза","AdGroupId":ИДЕНТИФИКАТОР_ГРУППЫ,"Bid":300000}]}}' https://api-sandbox.direct.yandex.com/json/v5/keywords
{% endcut %}
{% cut "cURL для Windows" %}
curl -k -H "Authorization: Bearer ТОКЕН" -d "{\"method\":\"add\",\"params\":{\"Keywords\":[{\"Keyword\":\"Новая фраза\",\"AdGroupId\":ИДЕНТИФИКАТОР_ГРУППЫ,\"Bid\":300000}]}}" https://api-sandbox.direct.yandex.com/json/v5/keywords
{% endcut %}
{% cut "Запрос" %}
{
"method": "add",
"params": {
"Keywords": [{
"Keyword": "Новая фраза",
"AdGroupId": ИДЕНТИФИКАТОР_ГРУППЫ,
"Bid": 300000
}]
}
}
{% endcut %}
{% cut "Ответ" %}
{
"result": {
"AddResults": [{
"Id": ИДЕНТИФИКАТОР_ФРАЗЫ
}]
}
}
{% endcut %}
Сервис KeywordBids
Изменение ставки для одной ключевой фразы.
{% cut "cURL" %}
curl -k -H "Authorization: Bearer ТОКЕН" -d '{"method":"set","params":{"KeywordBids":[{"KeywordId":ИДЕНТИФИКАТОР_ФРАЗЫ,"SearchBid":400000}]}}' https://api-sandbox.direct.yandex.com/json/v5/keywordbids
{% endcut %}
{% cut "cURL для Windows" %}
curl -k -H "Authorization: Bearer ТОКЕН" -d "{\"method\":\"set\",\"params\":{\"KeywordBids\":[{\"KeywordId\":ИДЕНТИФИКАТОР_ФРАЗЫ,\"SearchBid\":400000}]}}" https://api-sandbox.direct.yandex.com/json/v5/keywordbids
{% endcut %}
{% cut "Запрос" %}
<pre >{ "method": "set", "params": { "KeywordBids": [{ "KeywordId": ИДЕНТИФИКАТОР_ФРАЗЫ, "SearchBid": 400000 }] } }</pre>
{% endcut %}
{% cut "Ответ" %}
{
"result": {
"SetResults": [{
"KeywordId": ИДЕНТИФИКАТОР_ФРАЗЫ
}]
}
}
{% endcut %}
Что дальше
Итак, вы научились выполнять запросы в Песочнице как для получения, так и для изменения данных. Остались последние шаги — перейти от тренировок в Песочнице к реальной работе.