При использовании REST-интерфейса Google Ads API вы работаете с JSON-представлениями тех же ресурсов и типов, которые определены в файлах дескрипторов .proto Google Ads API. Схема кодирования JSON соответствует канонической схеме кодирования, описанной в разделе «Сопоставление JSON» руководства по языку протоколов буферов.
Как правило, все сообщения верхнего уровня, отправляемые сервисам и получаемые от них, представляют собой отдельные JSON-объекты. Большинство запросов на изменение содержат массив operations
, который, в свою очередь, содержит множество операций create
, update
и delete
. Аналогично, ответы search
представляют собой JSON-объекты, содержащие массив results
с набором результатов вашего запроса.
Идентификаторы преобразуются из snake_case (в буферах протокола) в lowerCamelCase в JSON. Важное замечание к этому правилу относится к использованию search
или searchStream
для отправки запросов Google Ads на языке запросов . Сам язык запросов использует snakeCase независимо от используемого интерфейса. Однако результаты запроса в REST возвращаются как обычные JSON-объекты с идентификаторами в lowerCamelCase.
Например, запрос на выборку списка активных ключевых слов в учетной записи использует Snake Case внутри самого запроса ( ad_group_criterion
, а не adGroupCriterion
):
POST /v21/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" } } }, ... ] } ]