A API SOAP do Ad Manager é uma API legada para ler e gravar dados do Ad Manager e gerar relatórios. Se for possível migrar, recomendamos usar a API Ad Manager (Beta). No entanto, as versões da API SOAP do Ad Manager têm suporte ao ciclo de vida normal. 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 fazer a autenticação com a API Ad Manager (Beta), use suas credenciais da API SOAP do Ad Manager ou crie novas. Em qualquer uma das opções, primeiro é necessário ativar a API Ad Manager no seu projeto do Google Cloud. Para mais detalhes, consulte Autenticação.
Se você estiver usando uma biblioteca de cliente, configure as credenciais padrão do aplicativo 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 formato abaixo e defina a variável de ambiente como o caminho:
{
"client_id": "CLIENT_ID",
"client_secret": "CLIENT_SECRET",
"refresh_token": "REFRESH_TOKEN",
"type": "authorized_user"
}
Substitua os seguintes valores:
CLIENT_ID
: o ID do cliente novo ou atual.CLIENT_SECRET
: o segredo de cliente novo ou atual.REFRESH_TOKEN
: o token de atualização novo ou atual.
Linux ou macOS
export GOOGLE_APPLICATION_CREDENTIALS=KEY_FILE_PATH
Windows
set GOOGLE_APPLICATION_CREDENTIALS=KEY_FILE_PATH
Entender as diferenças entre os filtros
A linguagem de consulta da API Ad Manager (Beta) oferece suporte a todos os recursos da linguagem de consulta do editor (PQL, na sigla em inglês), mas há diferenças significativas na sintaxe.
Este exemplo de listagem de objetos Order
ilustra as principais mudanças, como
a remoção de variáveis de vinculação, operadores sensíveis a maiú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"
}
URL codificado
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) oferece suporte a todos os recursos do PQL, com as seguintes diferenças de sintaxe em relação à API SOAP do Ad Manager:
Os operadores
AND
eOR
diferenciam maiúsculas de minúsculas na API Ad Manager (Beta).and
eor
em letras minúsculas são tratados como strings de pesquisa literais, um recurso na API Ad Manager (Beta) para pesquisar em vários campos.Usar operadores em maiúsculas
// Matches unarchived Orders where order.notes has the value 'lorem ipsum'. notes = "lorem ipsum" AND archived = false
Letras minúsculas tratadas como literais
// 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
O caractere
*
é um curinga para correspondência de strings. A API Ad Manager (Beta) não oferece suporte ao 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 dos campos 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" < updateTime
A API 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 de ordenação
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
do PQL e defina o campo orderBy
:
GET networks/${NETWORK_CODE}/orders?orderBy=updateTime+desc
Migrar de deslocamentos para tokens de paginação
A API Ad Manager (Beta) usa tokens de paginação em vez de cláusulas LIMIT
e OFFSET
para percorrer conjuntos grandes 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 de lista 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 outras páginas. Use o campo nextPageToken
para determinar se há outros resultados.
Embora um deslocamento não seja necessário para a paginação, é possível 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