Мутировать

Большинство ресурсов изменяются (создаются, обновляются или удаляются) с использованием метода Mutate . Метод Mutate вызывается как HTTP POST для URL-адреса конкретного ресурса, который соответствует шаблону имени ресурса, без завершающего идентификатора ресурса. Вместо этого идентификаторы ресурсов, подлежащих изменению, отправляются в теле запроса JSON. Это позволяет вам отправить один вызов API, который содержит несколько операций с разными ресурсами.

Например, имя ресурса кампании имеет следующий формат:

customers/CUSTOMER_ID/campaigns/CAMPAIGN_ID

Чтобы получить URL-адрес, используемый для изменения кампаний, опустите конечный идентификатор ресурса и добавьте :mutate :

https://googleads.googleapis.com/v17/customers/CUSTOMER_ID/campaigns:mutate

Сообщение Mutate содержит объект JSON верхнего уровня с массивом operations , который может содержать множество объектов operation . Каждая операция, в свою очередь, может быть одной из: create , update или remove . Это единственные возможные операции изменения.

POST /v17/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 , позволяющий изменить это поведение. См. «Изменение ресурсов» для получения более подробной информации о семантике операции изменения.

Создавать

Операции создания создают новые сущности и должны включать полное JSON-представление ресурса, который вы собираетесь создать.

POST /v17/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 /v17/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",
      }
    }
  ]
}

Удалять

Операции удаления эффективно удаляют объект, устанавливая его статус Google Рекламы на REMOVED . Требуется только resourceName которое нужно удалить.

POST /v17/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"
    }
  ]
}