В этом руководстве описывается общая структура всех вызовов API.
Если вы используете клиентскую библиотеку для взаимодействия с API, вам не нужно знать подробности запроса. Однако при тестировании и отладке вам может пригодиться знание структуры вызова API.
Google Ads API – это gRPC API с привязками REST. Это означает, что вызывать API можно двумя способами.
Предпочтительный вариант
- Создайте тело запроса в виде буфера протокола.
- Отправьте его на сервер по протоколу HTTP/2.
- Десериализуйте ответ в буфер протокола.
- Проанализируйте полученные данные.
В большинстве наших документов описывается использование gRPC.
Необязательно:
- Создайте тело запроса в виде объекта JSON.
- Отправьте его на сервер по протоколу HTTP 1.1.
- Десериализуйте ответ как объект JSON.
- Проанализируйте полученные данные.
Подробную информацию об использовании REST можно найти в руководстве по интерфейсу REST.
Идентификаторы ресурсов
Объекты в Google Ads API адресуются с помощью структурированных названий ресурсов и составных идентификаторов.
Названия ресурсов
Большинство объектов в API идентифицируются по строкам названий ресурсов. Эти строки также служат URL при использовании интерфейса REST. Структура названий ресурсов описана в документации по REST API.
Составные идентификаторы
Если идентификатор объекта не является глобально уникальным, для него создается составной идентификатор, который получается путем добавления к идентификатору объекта идентификатора его родительского объекта и тильды (~).
Например, у AdGroupAd шаблон названия ресурса выглядит так: customers/{customer_id}/adGroupAds/{ad_group_id}~{ad_id}. Поскольку составной идентификатор объединяет идентификатор родительской группы объявлений (ad_group.id) и идентификатор базового объявления (ad_group_ad.ad.id), мы добавляем идентификатор группы объявлений перед идентификатором объявления:
AdGroupIdиз123+~+AdIdиз45678= составная группа объявлений идентификатор объявления123~45678.
Заголовки запроса
Ниже перечислены HTTP-заголовки (или метаданные gRPC), которые сопровождают тело запроса:
Авторизация
Вам необходимо включить токен доступа OAuth 2.0 в форме Authorization: Bearer
YOUR_ACCESS_TOKEN, который идентифицирует либо управляющий аккаунт, действующий от имени клиента, либо рекламодателя, напрямую управляющего собственным аккаунтом. Инструкции по получению токена доступа можно найти в руководстве по OAuth2. Токен доступа действителен в течение часа после получения. По истечении этого срока его необходимо обновить. Обратите внимание, что наши клиентские библиотеки автоматически обновляют токены с истекшим сроком действия.
Если возникают ошибки авторизации, убедитесь, что вы используете правильные учетные данные и у вас достаточно разрешений. Ошибка USER_PERMISSION_DENIED указывает на то, что у аутентифицированного пользователя может не быть доступа к аккаунту клиента, указанному в запросе. Если ваш проект Google Cloud одобрен только для доступа Test и вы отправляете запрос, предназначенный для рабочего аккаунта, API возвращает AuthorizationError.CLOUD_PROJECT_NOT_APPROVED_FOR_PRODUCTION в версии 25 и более поздних (или AuthorizationError.ACTION_NOT_PERMITTED в версии 24 и более ранних).
Подробнее об уровнях доступа в Google Рекламе…
login-customer-id
Идентификатор клиента, который будет использоваться в запросе, без дефисов (-). Если вы получили доступ к аккаунту клиента через управляющий аккаунт, этот заголовок обязателен и должен содержать идентификатор клиента управляющего аккаунта. Если при аутентификации через управляющий аккаунт не указать login-customer-id, возникнет ошибка AuthorizationError.USER_PERMISSION_DENIED. Подробнее о распространенных ошибках… Подробное описание того, как разрешается доступ к аккаунту, можно найти в руководстве Модель доступа OAuth.
https://googleads.googleapis.com/v26/customers/1234567890/campaignBudgets:mutate
Установка значения login-customer-id аналогична выбору аккаунта в интерфейсе Google Рекламы после входа в систему или нажатия на изображение профиля в правом верхнем углу.
Если вы не добавите этот заголовок, по умолчанию будет использоваться operating customer.
linked-customer-id
Этот заголовок является обязательным и используется партнерами (например, сторонними поставщиками аналитики приложений или партнерами по обработке данных) при работе со связанным аккаунтом Google Рекламы. В этом заголовке должен быть указан идентификатор клиента аккаунта Google Рекламы, у которого есть связь с продуктом.
Рассмотрим сценарий, в котором партнеру нужно выполнить вызовы API к аккаунту Google Рекламы на основе связи с продуктом.
- Рекламодатель. Аккаунт Google Рекламы, которым управляет или который обновляет вызов API.
Идентификатор аккаунта рекламодателя указан в запросе. В REST это параметр пути
customerId(например,customers/1111111111/...), а в gRPC – полеcustomer_idв запросе. - Партнер. Аккаунт партнера (например, стороннего сервиса аналитики приложений или партнера по обработке данных).
- Связанный аккаунт. Аккаунт Google Рекламы, у которого есть связь с продуктом Партнера, предоставляющая Партнеру доступ к Рекламодателю.
Пользователь, у которого есть доступ к аккаунту Партнера, выполняет вызовы API, чтобы совершать действия с объектами в аккаунте Рекламодателя (например, загружать конверсии или управлять списками пользователей). Связанный аккаунт может быть аккаунтом рекламодателя или управляющим аккаунтом аккаунта рекламодателя.
Заголовки запроса должны быть заданы следующим образом:
Authorization– маркер доступа OAuth 2.0 для пользователя, у которого есть доступ к Partner.login-customer-id– идентификатор клиента аккаунта партнера. У аутентифицированного пользователя должен быть доступ к этому аккаунту.linked-customer-id– идентификатор клиента связанного аккаунта. Этот заголовок указывает, что авторизация для этого запроса зависит от связи продукта связанного аккаунта с партнером.
Возможны два сценария связывания:
- Если аккаунт Рекламодатель напрямую связан с аккаунтом Партнер, то Связанный аккаунт – это Рекламодатель, а в качестве значения
linked-customer-idнужно указать идентификатор клиента для аккаунта Рекламодатель. - Если аккаунт Рекламодатель управляется управляющим аккаунтом, который связан с аккаунтом Партнер, то Связанный аккаунт – это управляющий аккаунт, а в поле
linked-customer-idдолжен быть указан идентификатор клиента управляющего аккаунта.
Пример 1. Прямая ссылка
Если аккаунт рекламодателя 1111111111 напрямую связан с партнерским аккаунтом 2222222222, а вызов API нацелен на customers/1111111111/...:
Authorization: Bearer YOUR_ACCESS_TOKEN
login-customer-id: 2222222222
linked-customer-id: 1111111111
Пример 2. Ссылка на управляющий аккаунт
Если аккаунт рекламодателя 1111111111 управляется управляющим аккаунтом 3333333333, управляющий аккаунт 3333333333 связан с аккаунтом партнера 2222222222, а вызов API предназначен для customers/1111111111/...:
Authorization: Bearer YOUR_ACCESS_TOKEN
login-customer-id: 2222222222
linked-customer-id: 3333333333
Заголовки ответа
Вместе с телом ответа возвращаются следующие заголовки (или завершающие метаданные gRPC). Рекомендуем регистрировать эти значения для отладки.
request-id
request-id – это строка, которая уникальным образом идентифицирует запрос. Укажите это значение при обращении в службу поддержки, чтобы помочь устранить неполадки, связанные с неудачными или непредвиденными запросами API.