Сопоставления JSON

При использовании интерфейса REST Google Ads API вы работаете с JSON-представлениями тех же ресурсов и типов, которые определены в файлах дескрипторов .proto Google Ads API. Схема кодирования JSON соответствует канонической схеме кодирования, описанной в разделе «Сопоставление JSON» руководства по буферам протоколов.

Как правило, все сообщения верхнего уровня, поступающие и исходящие от служб , представляют собой отдельные объекты JSON. Большинство запросов на изменение содержат массив operations , который сам содержит множество операций create , update или delete . Аналогичным образом, ответы search представляют собой объекты JSON, содержащие массив results с набором результатов вашего запроса.

Идентификаторы преобразуются из Snake_case (в буферах протокола) в lowCamelCase в JSON. Одним из заметных предостережений в отношении этого правила является использование search или searchStream для отправки запросов на языке запросов Google Рекламы . Сам язык запросов использует змеиный регистр, независимо от того, какой интерфейс вы используете. Однако результаты запроса в REST возвращаются как обычные объекты JSON и имеют идентификаторы в нижнем регистре CamelCase.

Например, запрос на получение списка активных ключевых слов в учетной записи использует случай змей внутри самого запроса ( ad_group_criterion , а не adGroupCriterion ):

POST /v17/customers/CUSTOMER_ID/googleAds:searchStream HTTP/1.1
Host: googleads.googleapis.com
Content-Type: application/json
Authorization: Bearer ACCESS_TOKEN
developer-token: DEVELOPER_TOKEN

{
  "query": "SELECT ad_group_criterion.keyword.text
            FROM ad_group_criterion
            WHERE ad_group_criterion.type = 'KEYWORD'
            AND ad_group_criterion.status = 'ENABLED'"
}

Однако ответ представляет собой представление объектов в формате JSON (завернутое в массив JSON, поскольку этот запрос использует searchStream ) и вместо этого использует идентификатор CamelCase adGroupCriterion :

[
  {
    "results": [
      {
        "adGroupCriterion": {
          "resourceName": "customers/1842689525/adGroupCriteria/55771861891~10003060",
          "keyword": {
            "text": "pay per click"
          }
        }
      },
      ...
    ]
  }
]