A API SOAP do Ad Manager é uma API legada para leitura e gravação dos dados do Ad Manager e execução de relatórios. Se você puder migrar, recomendamos usar a API do Ad Manager (Beta). No entanto, as versões da API SOAP do Ad Manager são compatíveis com o ciclo de vida típico delas. Para mais informações, consulte a programação de descontinuação da API SOAP do Ad Manager.
O guia a seguir descreve as diferenças entre a API SOAP do Ad Manager e a API do Ad Manager (Beta).
Aprender
Os métodos de serviço padrão da API SOAP do Ad Manager têm conceitos equivalentes na API Ad Manager. A API Ad Manager também tem métodos para ler entidades únicas. A tabela a seguir mostra um exemplo de mapeamento para métodos Order:
| Método SOAP | Métodos REST |
|---|---|
getOrdersByStatement
|
networks.orders.get networks.orders.list |
Autenticar
Para autenticar com a API Ad Manager (Beta), use suas credenciais atuais da API SOAP do Ad Manager ou crie novas. Com qualquer uma das opções, primeiro ative a API Ad Manager no projeto do Google Cloud. Para mais detalhes, consulte Autenticação.
Se você estiver usando uma biblioteca de cliente, configure o Application Default Credentials definindo a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS como o caminho do arquivo de chave da conta de serviço. Para mais detalhes, consulte
Como o Application Default Credentials funciona.
Se você estiver usando credenciais de aplicativo instalado, crie um arquivo JSON no seguinte formato e defina a variável de ambiente para o caminho dele:
{
"client_id": "CLIENT_ID",
"client_secret": "CLIENT_SECRET",
"refresh_token": "REFRESH_TOKEN",
"type": "authorized_user"
}
Substitua os seguintes valores:
CLIENT_ID: seu ID de cliente novo ou atual.CLIENT_SECRET: o novo ou atual segredo do cliente.REFRESH_TOKEN: seu token de atualização novo ou atual.
Linux ou macOS
export GOOGLE_APPLICATION_CREDENTIALS=KEY_FILE_PATHWindows
set GOOGLE_APPLICATION_CREDENTIALS=KEY_FILE_PATH
Entender as diferenças entre filtros
A linguagem de consulta da API Ad Manager (Beta) é compatível com todos os recursos da linguagem de consulta do editor (PQL), mas há diferenças significativas na sintaxe.
Este exemplo para listar objetos Order ilustra as principais mudanças, como
a remoção de variáveis de vinculação, operadores sensíveis a maiúsculas e minúsculas e a substituição de
cláusulas ORDER BY e LIMIT por campos separados:
API SOAP do Ad Manager
<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 Ad Manager (Beta)
Formato JSON
{
"filter": "displayName = \"PG_*\" AND updateTime > \"2024-01-01T00:00:00-5:00\"",
"pageSize": 500,
"orderBy": "name"
}
Codificado para URL
GET https://admanager.googleapis.com/v1/networks/123/orders?filter=displayName+%3D+\"PG_*\"+AND+updateTime+%3E+\"2024-01-01T00%3A00%3A00-5%3A00\"
A API Ad Manager (Beta) é compatível com todos os recursos da PQL, com as seguintes diferenças de sintaxe em relação à API SOAP do Ad Manager:
Os operadores
ANDeORdiferenciam maiúsculas de minúsculas na API do Ad Manager (Beta). As letras minúsculasandeorsão tratadas como strings de pesquisa literal simples, um recurso da API do Ad Manager (Beta) para pesquisar em todos os campos.Usar operadores em maiúsculas
// Matches unarchived Orders where order.notes has the value 'lorem ipsum'. notes = "lorem ipsum" AND archived = falseMinúsculas tratadas como literal
// 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 = falseO caractere
*é um curinga para correspondência de strings. A API Ad Manager (Beta) não é compatível com o operadorlike.PQL da API SOAP do Ad Manager
// Matches orders where displayName starts with the string 'PG_' displayName like "PG_%"API Ad Manager (Beta)
// Matches orders where displayName starts with the string 'PG_' displayName = "PG_*"Os nomes de campo precisam aparecer no lado esquerdo de um operador de comparação:
Filtro válido
updateTime > "2024-01-01T00:00:00Z"Filtro inválido
"2024-01-01T00:00:00Z" < updateTimeA API do Ad Manager (Beta) não é compatível com variáveis de vinculação. Todos os valores precisam ser inline.
Os literais de string que contêm espaços precisam ser colocados entre aspas duplas, por exemplo,
"Foo bar". Não é possível usar aspas simples para envolver literais de string.
Remover cláusulas "ORDER BY"
Especificar uma ordem de classificação é opcional na API Ad Manager (Beta). Se você quiser especificar uma ordem de classificação para o conjunto de resultados, remova a cláusula ORDER BY da PQL e defina o campo orderBy:
GET networks/${NETWORK_CODE}/orders?orderBy=updateTime+desc
Migrar de offsets para tokens de paginação
A API do Ad Manager (Beta) usa tokens de paginação em vez de cláusulas LIMIT e OFFSET para percorrer grandes conjuntos de resultados.
A API Ad Manager (Beta) usa um parâmetro pageSize para controlar o tamanho da página.
Ao contrário da cláusula LIMIT na API SOAP do Ad Manager, omitir um tamanho de página não retorna todo o conjunto de resultados. Em vez disso, o método "list" usa um tamanho de página padrão de 50. O exemplo a seguir define pageSize e pageToken como parâmetros de URL:
# Initial request
GET networks/${NETWORK_CODE}/orders?pageSize=50
# Next page
GET networks/${NETWORK_CODE}/orders?pageSize=50&pageToken=${TOKEN_FROM_INITIAL_REQUEST}
Ao contrário da API SOAP do Ad Manager, a API do Ad Manager (Beta) pode retornar menos resultados do que o tamanho da página solicitado, mesmo que haja mais páginas. Use o campo nextPageToken para determinar se há mais resultados.
Embora um deslocamento não seja necessário para a paginação, você pode usar o campo skip para multithreading. Ao usar várias linhas de execução, use o token de paginação da
primeira página para garantir que você esteja lendo do mesmo conjunto de resultados:
# 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
Migrar relatórios
A API SOAP só pode ler e gerar relatórios na ferramenta de relatórios descontinuada. Por outro lado, a API REST só pode ler, gravar e executar Relatórios interativos.
As ferramentas e APIs de relatórios têm um espaço de ID diferente. O ID de um
SavedQuery na API SOAP não pode ser usado na API REST.
Se você estiver usando o SavedQuery, migre o relatório para um relatório interativo na interface e crie um mapeamento entre os dois espaços de ID. Para mais informações sobre a migração de relatórios, consulte Migrar relatórios para os Relatórios interativos.
Entender as diferenças entre as APIs
Há algumas diferenças entre como as APIs SOAP e REST processam definições e resultados de relatórios:
A SOAP API adicionava automaticamente uma dimensão
IDcorrespondente aos resultados quando um relatório solicitava apenas oNAME. Na API REST, é necessário adicionar explicitamente a dimensãoIDaoReportDefinitionpara que ela seja incluída nos resultados.A API SOAP não tinha tipos explícitos para métricas. A API REST define um tipo de dados, documentado no valor de enumeração
Dimension. As dimensõesENUMsão enums abertos. É necessário processar valores de enum novos e desconhecidos ao analisar os resultados.A API SOAP separou
DimensionseDimensionAttributes. A API REST tem uma enumeraçãoDimensionunificada que contém os dois.A API SOAP não tinha um limite para o número de dimensões. Os relatórios interativos têm um limite de 10 dimensões na interface e na API. As dimensões que detalham pelo mesmo espaço de ID são contadas como uma única dimensão. Por exemplo, incluir
ORDER_NAME,ORDER_IDeORDER_START_DATEconta como uma dimensão ao calcular o limite.