Validador de bid response OpenRTB
Confira uma resposta de lance em busca de campos ausentes, preços mal tipados e macros esquecidas.
O Validador de bid response OpenRTB roda inteiramente no seu navegador, então respostas com ids de acordo e preços reais são conferidas no seu dispositivo.
Validar uma requisição de lance
Sobre Validador de bid response OpenRTB
A resposta de lance é a metade curta da conversa OpenRTB, e quase tudo o que dá errado nela é estrutural e não engenhoso: um lance sem impid que o ligue a uma impressão, um preço enviado como string, um criativo que nunca declara o domínio do anunciante, ou um aviso de vitória que esquece a macro de preço de leilão e por isso reporta um preço de fechamento errado. Este validador percorre a resposta como um exchange faria, separando os campos que a especificação exige daqueles que compradores e publishers rejeitam na prática. Cada achado traz um caminho JSON e aponta o lance específico.
Recursos
- Confere os campos obrigatórios na resposta, no seatbid e no lance
- Erros, avisos e notas separados, cada um com seu caminho JSON
- Checagem de tipos em preço, dimensões, adomain e campos de identificador
- Tratamento consciente de versão para mtype, que chegou na OpenRTB 2.6
- Sinaliza avisos de vitória sem macro de preço e URLs de notificação inseguras
- Valida respostas sem lance e seus códigos nbr
- Detecta ids de lance duplicados e vários lances na mesma impressão
- Tabelas de referência de motivos de não lance e tipos de mídia
Como usar Validador de bid response OpenRTB
- Cole o JSON que o seu bidder devolveu
- Escolha a versão do protocolo que o exchange usa
- Resolva primeiro os erros e depois os avisos
- Use o caminho JSON de cada achado para localizar o lance afetado
Exemplo
Entrada
{ "id": "1", "seatbid": [{ "bid": [{ "id": "b1", "impid": "1", "price": "2.15" }] }] }
Saída
error seatbid[0].bid[0].price — price has to be a number, not a string
Um preço entre aspas é o motivo mais comum de um lance ser descartado em silêncio.
Erros comuns e solução de problemas
- O lance é válido aqui mas o exchange descarta assim mesmo. — Exchanges acrescentam requisitos próprios: um id de seat que reconheçam, categorias de uma taxonomia específica ou um criativo já aprovado. Consulte o guia de integração deles junto com isto.
- Um aviso sobre adomain em um anúncio próprio. — Preencha assim mesmo. Publishers bloqueiam por domínio de anunciante, e um lance sem ele costuma ser descartado antes de qualquer outra análise.
- mtype é sinalizado em uma integração 2.5. — Ele chegou na OpenRTB 2.6 e um exchange 2.5 o ignora. Ajuste o seletor de versão para o protocolo que o exchange realmente roda; enviá-lo não faz mal.
- Um array seatbid vazio gera só um aviso. — Porque é legal, ainda que pouco útil. A forma limpa de recusar é um HTTP 204, ou uma resposta com código nbr para o exchange registrar por que você passou.
Perguntas frequentes
- Quais campos são obrigatórios em uma resposta de lance OpenRTB?
- A resposta precisa de um id que devolva o da requisição. Cada lance precisa de id, um impid correspondente a uma impressão, um preço e o criativo como adm ou nurl. O resto é opcional na especificação, mas não na prática.
- O que significa o campo nbr?
- Motivo de não lance. É um código inteiro que explica por que nenhum lance foi devolvido — 2 para requisição inválida, 8 para usuário não reconhecido — e permite ao exchange reportar por que um bidder passa.
- Por que nurl precisa da macro AUCTION_PRICE?
- Porque o exchange substitui nela o preço de fechamento quando o lance vence. Sem a macro, o aviso de vitória dispara sem preço e seus logs registram o lance em vez do que você pagou.
- Qual a diferença entre adm e nurl?
- adm traz o criativo embutido na resposta; nurl é uma URL que o exchange chama para buscá-lo ao vencer. Hoje o criativo embutido domina porque elimina uma ida e volta.
- mtype substitui algo da 2.5?
- Ele torna explícito o que antes era deduzido. Na 2.5 o tipo de mídia vinha do objeto que a impressão carregava, o que quebrava com impressões multiformato; na 2.6 o lance declara sem ambiguidade.
Ferramentas relacionadas
Todas as ferramentas de ArrayKit