Большинство ресурсов изменяются (создаются, обновляются или удаляются) с помощью метода Mutate
. Метод Mutate
вызывается как HTTP- POST
на URL-адрес ресурса, соответствующий шаблону имени ресурса, без завершающего идентификатора ресурса. Идентификаторы ресурсов, подлежащих мутации, вместо этого передаются в теле JSON-запроса. Это позволяет отправлять один вызов API, содержащий несколько операций над различными ресурсами.
Например, название ресурса кампании имеет следующий формат:
customers/CUSTOMER_ID/campaigns/CAMPAIGN_ID
Чтобы получить URL-адрес, используемый для мутационных кампаний, опустите конечный идентификатор ресурса и добавьте :mutate
:
https://googleads.googleapis.com/v20/customers/CUSTOMER_ID/campaigns:mutate
Сообщение Mutate
содержит JSON-объект верхнего уровня с массивом operations
, который может содержать множество объектов operation
. Каждая операция, в свою очередь, может быть одной из следующих: create
, update
или remove
. Это единственно возможные операции mutate.
POST /v20/customers/CUSTOMER_ID/campaigns:mutate HTTP/1.1 Host: googleads.googleapis.com Content-Type: application/json Authorization: Bearer ACCESS_TOKEN developer-token: DEVELOPER_TOKEN { "operations": [ ... ] }
Большинство сервисов поддерживают тысячи операций в одном вызове API. В руководстве «Системные ограничения» описаны ограничения на размер запросов.
Операции в рамках одного API-запроса по умолчанию выполняются как один набор действий, то есть либо все они выполняются успешно, либо весь пакет завершается ошибкой, если какая-либо одна операция завершается неудачей. Некоторые сервисы поддерживают атрибут partialFailure
для изменения этого поведения. Подробнее о семантике операций mutate см. в разделе « Ресурсы по мутациям» .
Создавать
Операции создания создают новые сущности и должны включать полное JSON-представление ресурса, который вы собираетесь создать.
POST /v20/customers/CUSTOMER_ID/campaigns:mutate HTTP/1.1 Host: googleads.googleapis.com Content-Type: application/json Authorization: Bearer ACCESS_TOKEN developer-token: DEVELOPER_TOKEN { "operations": [ { "create": { "name": "An example campaign", "status": "PAUSED", "campaignBudget": "customers/CUSTOMER_ID/campaignBudgets/CAMPAIGN_BUDGET_ID", "advertisingChannelType": "SEARCH", "networkSettings": { "targetGoogleSearch": true, "targetSearchNetwork": true, "targetContentNetwork": true, "targetPartnerSearchNetwork": false }, "target_spend": {} } } ] }
Обновлять
Операции обновления выполняют разреженные обновления существующего ресурса. Вам нужно только указать поля, которые вы хотите изменить.
Чтобы указать поля, которые нужно обновить, задайте атрибут updateMask
, указав список имён полей, разделённых запятыми. Это особенно полезно, если у вас уже есть полностью сформированное JSON-представление объекта (например, возвращённое предыдущим вызовом API), но вы хотите изменить только определённые поля. Вместо того, чтобы удалять JSON-объект, вы можете просто перечислить имена полей, которые нужно изменить, в updateMask
и отправить весь JSON-объект.
В примере ниже изменяется name
и status
существующей кампании с заданным resourceName
.
POST /v20/customers/CUSTOMER_ID/campaigns:mutate HTTP/1.1 Host: googleads.googleapis.com Content-Type: application/json Authorization: Bearer ACCESS_TOKEN developer-token: DEVELOPER_TOKEN { "operations": [ { "updateMask": "name,status", "update": { "resourceName": "customers/CUSTOMER_ID/campaigns/CAMPAIGN_ID", "name": "My renamed campaign", "status": "PAUSED", } } ] }
Удалять
Операции удаления фактически удаляют объект, присваивая ему статус REMOVED
в Google Ads. Для удаления требуется только имя resourceName
.
POST /v20/customers/CUSTOMER_ID/campaigns:mutate HTTP/1.1 Host: googleads.googleapis.com Content-Type: application/json Authorization: Bearer ACCESS_TOKEN developer-token: DEVELOPER_TOKEN { "operations": [ { "remove": "customers/CUSTOMER_ID/campaigns/CAMPAIGN_ID" } ] }