API Ad Manager SOAP — это устаревший API для чтения и записи данных Ad Manager, а также для создания отчетов. Если у вас есть возможность миграции, мы рекомендуем использовать API Ad Manager (бета-версия). Однако версии API Ad Manager SOAP поддерживаются в течение их обычного жизненного цикла. Для получения дополнительной информации см. график прекращения поддержки API Ad Manager SOAP.
В данном руководстве описаны различия между SOAP API менеджера рекламы и API менеджера рекламы (бета-версия).
Учиться
Стандартные методы сервиса SOAP API Ad Manager имеют эквивалентные концепции в API Ad Manager. API Ad Manager также содержит методы для чтения отдельных сущностей. В следующей таблице показан пример сопоставления методов Order :
| метод SOAP | REST-методы |
|---|---|
getOrdersByStatement | networks.orders.getnetworks.orders.list |
Аутентификация
Для аутентификации в API Ad Manager (бета-версия) вы можете использовать существующие учетные данные SOAP API Ad Manager или создать новые. В любом случае, сначала необходимо включить API Ad Manager в вашем проекте Google Cloud. Дополнительные сведения см. в разделе «Аутентификация» .
Если вы используете клиентскую библиотеку, настройте учетные данные приложения по умолчанию, установив переменную среды GOOGLE_APPLICATION_CREDENTIALS , указав путь к файлу ключа вашей учетной записи службы. Дополнительные сведения см. в разделе «Как работают учетные данные приложения по умолчанию» .
Если вы используете учетные данные установленного приложения, создайте JSON-файл в следующем формате и установите переменную среды, указав вместо этого путь к нему:
{
"client_id": "CLIENT_ID",
"client_secret": "CLIENT_SECRET",
"refresh_token": "REFRESH_TOKEN",
"type": "authorized_user"
}
Замените следующие значения:
-
CLIENT_ID: Ваш новый или существующий идентификатор клиента. -
CLIENT_SECRET: Ваш новый или существующий секретный ключ клиента. REFRESH_TOKEN: Ваш новый или существующий токен обновления.
Linux или macOS
export GOOGLE_APPLICATION_CREDENTIALS=KEY_FILE_PATHWindows
set GOOGLE_APPLICATION_CREDENTIALS=KEY_FILE_PATH
Разберитесь в различиях фильтров.
Язык запросов API Ad Manager (бета-версия) поддерживает все функции языка запросов издателя (PQL), но существуют существенные синтаксические различия.
Этот пример вывода списка объектов Order иллюстрирует основные изменения, такие как удаление переменных привязки, операторов с учетом регистра и замена предложений ORDER BY и LIMIT отдельными полями:
SOAP API менеджера рекламы
<filterStatement>
<query>WHERE name like "PG_%" and lastModifiedDateTime >= :lastModifiedDateTime ORDER BY id ASC LIMIT 500</query>
<values>
<key>lastModifiedDateTime</key>
<value xmlns:ns2="https://www.google.com/apis/ads/publisher/v202502" xsi:type="ns2:DateTimeValue">
<value>
<date>
<year>2024</year>
<month>1</month>
<day>1</day>
</date>
<hour>0</hour>
<minute>0</minute>
<second>0</second>
<timeZoneId>America/New_York</timeZoneId>
</value>
</value>
</values>
</filterStatement>
API менеджера рекламы (бета-версия)
формат JSON
{
"filter": "displayName = \"PG_*\" AND updateTime > \"2024-01-01T00:00:00-5:00\"",
"pageSize": 500,
"orderBy": "name"
}
URL-кодированный
GET https://admanager.googleapis.com/v1/networks/123/orders?filter=displayName+%3D+\"PG_*\"+AND+updateTime+%3E+\"2024-01-01T00%3A00%3A00-5%3A00\"
API Ad Manager (бета-версия) поддерживает все возможности PQL, но отличается от SOAP API Ad Manager следующим синтаксисом:
В API Ad Manager (бета-версия) операторы
ANDиORчувствительны к регистру . Строчущие буквыandиorобрабатываются как простые строковые литералы поиска, что является особенностью API Ad Manager (бета-версия) для поиска по полям.Используйте операторы в верхнем регистре.
// Matches unarchived Orders where order.notes has the value 'lorem ipsum'. notes = "lorem ipsum" AND archived = falseСтрочные буквы рассматриваются как буквальные.
// Matches unarchived Orders where order.notes has the value 'lorem ipsum' // and any field in the order has the literal value 'and'. notes = "lorem ipsum" and archived = falseСимвол
*является подстановочным знаком для сопоставления строк. API Ad Manager (бета-версия) не поддерживает операторlike.Менеджер рекламы SOAP API PQL
// Matches orders where displayName starts with the string 'PG_' displayName like "PG_%"API менеджера рекламы (бета-версия)
// Matches orders where displayName starts with the string 'PG_' displayName = "PG_*"Названия полей должны располагаться слева от оператора сравнения:
Действительный фильтр
updateTime > "2024-01-01T00:00:00Z"Неверный фильтр
"2024-01-01T00:00:00Z" < updateTimeAPI Ad Manager (бета-версия) не поддерживает переменные привязки. Все значения должны быть встроены непосредственно в код.
Строковые литералы, содержащие пробелы, должны быть заключены в двойные кавычки, например,
"Foo bar". Одинарные кавычки для заключения строковых литералов недопустимы.
Удалить сортировку по пунктам
В API Ad Manager (бета-версия) указание порядка сортировки является необязательным. Если вы хотите указать порядок сортировки для вашего набора результатов, удалите предложение PQL ORDER BY и вместо этого установите поле orderBy :
GET networks/${NETWORK_CODE}/orders?orderBy=updateTime+desc
Переход от смещений к токенам пагинации
API Ad Manager (бета-версия) использует токены пагинации вместо операторов LIMIT и OFFSET для постраничного просмотра больших наборов результатов.
API Ad Manager (бета-версия) использует параметр pageSize для управления размером страницы. В отличие от предложения LIMIT в SOAP API Ad Manager, отсутствие указания размера страницы не возвращает весь набор результатов. Вместо этого метод list использует размер страницы по умолчанию, равный 50 В следующем примере параметры pageSize и pageToken задаются в URL-адресе:
# Initial request
GET networks/${NETWORK_CODE}/orders?pageSize=50
# Next page
GET networks/${NETWORK_CODE}/orders?pageSize=50&pageToken=${TOKEN_FROM_INITIAL_REQUEST}
В отличие от SOAP API Ad Manager, API Ad Manager (бета-версия) может возвращать меньше результатов, чем запрошенный размер страницы, даже если есть дополнительные страницы. Используйте поле nextPageToken , чтобы определить, есть ли дополнительные результаты.
Хотя для постраничной навигации смещение не обязательно, вы можете использовать поле skip для многопоточности. При многопоточности используйте токен постраничной навигации с первой страницы, чтобы гарантировать чтение из одного и того же набора результатов:
# First thread
GET networks/${NETWORK_CODE}/orders?pageSize=50&pageToken=${TOKEN_FROM_INITIAL_REQUEST}
# Second thread
GET networks/${NETWORK_CODE}/orders?pageSize=50&pageToken=${TOKEN_FROM_INITIAL_REQUEST}&skip=50
Миграционные отчеты
API SOAP позволяет читать и запускать отчеты только в устаревшем инструменте «Отчеты». В свою очередь, API REST позволяет читать, записывать и запускать только интерактивные отчеты.
Инструменты создания отчетов и API используют разные пространства идентификаторов . Идентификатор объекта SavedQuery в SOAP API нельзя использовать в REST API.
Если вы используете SavedQuery , вы можете преобразовать отчет в интерактивный отчет в пользовательском интерфейсе и создать сопоставление между двумя пространствами идентификаторов. Дополнительную информацию о преобразовании отчетов см. в разделе «Преобразование отчетов в интерактивные отчеты» .
Разберитесь в различиях API.
Существуют некоторые различия в том, как SOAP API и REST API обрабатывают определения отчетов и результаты:
В SOAP API соответствующий параметр
IDавтоматически добавлялся к результатам, если отчет запрашивал толькоNAME. В REST API необходимо явно добавить параметрIDвReportDefinition, чтобы он был включен в результаты.В SOAP API не было явных типов для метрик. В REST API определяется тип данных, описанный в значении перечисления
Dimension. Обратите внимание, что измеренияENUMявляются открытыми перечислениями . При разборе результатов необходимо обрабатывать новые и неизвестные значения перечислений.В SOAP API разделялись
DimensionsиDimensionAttributes). В REST API используется унифицированное перечислениеDimension, содержащее оба типа данных.В SOAP API не было ограничений на количество измерений. В интерактивных отчетах как в пользовательском интерфейсе, так и в API существует ограничение в 10 измерений. Измерения, которые разбиваются по одному и тому же диапазону идентификаторов, считаются одним измерением. Например, включение
ORDER_NAME,ORDER_IDиORDER_START_DATEучитывается как одно измерение при расчете лимита.