Um público inteiro, seja qual for a origem dele
const url = 'https://dash.owiew.com/v1/t/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/publicos/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://dash.owiew.com/v1/t/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/publicos/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Authorization: Bearer <token>'O cabeçalho comum mais os blocos que AQUELA origem tem.
Desenhe pela PRESENÇA de cada bloco, nunca pelo valor de origem. Um montado traz briefing, sugestao, redes e termos; um semelhante traz lista, qualidade, exportacoes e termos. Uma origem nova não deve quebrar quem só sabia das duas.
Só a declaração existe no banco. A proposta é recalculada a cada leitura, a partir do repertório vigente — a mesma requisição pode devolver outro ranking amanhã sem ninguém ter editado nada. É de propósito: uma sugestão gravada continuaria recomendando o que o catálogo já desaprendeu, e sem sintoma nenhum, porque a linha estaria lá, íntegra, apenas velha.
Se você guarda esta resposta, não trate a diferença entre duas leituras como mudança do cliente: compare publico, briefing e lista, que são as partes declaradas.
Nenhum modelo de linguagem participa disto. As regras são determinísticas e o texto livre do briefing entra apenas como palavra-chave para ordenar os termos.
Continua sem nenhum contato, nem resumido. Os resumos só saem pela exportação, que exige publico.exportar e não está nesta especificação.
Exige a permissão publico.read.
Authorizations
Seção intitulada “Authorizations”Parameters
Seção intitulada “Parameters”Path Parameters
Seção intitulada “Path Parameters”O cliente. Vem SEMPRE do caminho — nunca de cabeçalho, nunca de cookie. Ele é conferido contra o token: um identificador que não bata com o do token devolve 403, e não uma resposta vazia.
O recurso. Um identificador que exista, mas pertença a outro cliente, responde 404 — não 403, e não uma resposta vazia.
Responses
Seção intitulada “Responses”OK
Um público, seja qual for a origem dele.
Só publico vem sempre. Os outros oito blocos dependem da origem, e a ausência de um deles é a resposta certa e não uma falha: desenhe pela presença, nunca pelo valor de origem.
Nada além de publico, briefing e lista existe no banco. sugestao, redes e termos são recalculados a cada leitura: a mesma requisição pode devolver outro ranking amanhã, sem ninguém ter editado nada. Guardar esta resposta e comparar com a de ontem como se fosse mudança do cliente produz alerta falso.
object
Identidade e ORIGEM de um público. É a única parte da resposta que as duas origens sempre trazem.
object
De onde ele veio. montado saiu do questionário de briefing; semelhante saiu de um CSV de clientes importado.
Ela não decide sozinha o que a resposta traz. Quem integra deve desenhar pela PRESENÇA de cada bloco — uma origem nova aqui não deve quebrar um cliente que só sabia das duas.
O que o cliente DECLAROU sobre o próprio negócio. É declaração de gente: nenhuma API descobre que a pousada atende num raio de 40 km, e nada aqui pode ser reconstruído depois a partir das plataformas.
object
A faixa (t1–t6), não o valor.
Só os campos da abrangência escolhida vêm preenchidos; os outros vêm vazios ou null.
object
Siglas, quando estados.
Quando cidades.
Quando raio.
Em quilômetros, quando raio.
ISO de 2 letras, quando internacional.
CALCULADO, não declarado: raio, ou cidades com no máximo três municípios. É o que faz rede de alcance largo cair no ranking.
Texto livre. Nenhum modelo de linguagem o lê: ele entra só como palavra-chave para ordenar os termos sugeridos.
A DISCORDÂNCIA do cliente com a proposta — a única parte dela que é persistida. Discordância é declaração; recomendação é cálculo.
object
0 = não ajustado.
0 = não ajustado.
Vazio = não ajustado.
CALCULADO: nenhum dos cinco acima foi preenchido.
O sujeito do token verificado de quem criou. Nunca vem do corpo da requisição.
O recorte proposto, já com o ajuste do cliente aplicado. Só em origem: montado.
object
equilibrado na proposta original. O gênero NÃO é presumido a partir da categoria do produto — recortar por ele é escolha do cliente, e o motivo genero_nao_presumido diz isso na tela.
Quem decide a compra. Só vem em b2b e ambos; em B2C é null. Sem vocabulário fechado declarado — ver a dívida da entrega de 2026-09-28.
Em DIAS.
Em DIAS. É o que define a janela de atribuição honesta: medir uma venda de ciclo de 45 dias numa janela de 7 faz o canal parecer ruim quando ele não é.
O cliente corrigiu algo da proposta original.
Por que este recorte, eixo por eixo.
object
Código fechado, traduzido na tela. É CÓDIGO e não frase: a frase muda, e uma frase gravada em 2026 continuaria aparecendo depois de o texto ter sido reescrito. Código desconhecido deve ser exibido CRU, nunca omitido — a linha que some leva junto a informação de que ela existia.
O eixo do briefing que originou o motivo (ticket, mercado, tangibilidade, natureza). Pode vir vazio: há motivos sem eixo, como genero_nao_presumido e custo_acima_da_mediana.
As dez redes, ordenadas por nota decrescente e desempatadas por id. Vêm sempre todas, inclusive as que não servem — saber que uma rede foi considerada e reprovada é informação; ela sumir da lista não é. Só em origem: montado.
object
Serve para ORDENAR, e só. Não é previsão de resultado, nem probabilidade, nem score de confiança. A diferença entre 78 e 74 não significa nada fora da ordem.
O que pesou a favor. Pode vir vazio.
object
Código fechado, traduzido na tela. É CÓDIGO e não frase: a frase muda, e uma frase gravada em 2026 continuaria aparecendo depois de o texto ter sido reescrito. Código desconhecido deve ser exibido CRU, nunca omitido — a linha que some leva junto a informação de que ela existia.
O eixo do briefing que originou o motivo (ticket, mercado, tangibilidade, natureza). Pode vir vazio: há motivos sem eixo, como genero_nao_presumido e custo_acima_da_mediana.
O que pesou contra. A rede em PRIMEIRO lugar também costuma trazer ressalvas, e isso não é defeito — primeira colocada sem nenhuma ressalva é sinal de repertório pobre, não de rede perfeita.
object
Código fechado, traduzido na tela. É CÓDIGO e não frase: a frase muda, e uma frase gravada em 2026 continuaria aparecendo depois de o texto ter sido reescrito. Código desconhecido deve ser exibido CRU, nunca omitido — a linha que some leva junto a informação de que ela existia.
O eixo do briefing que originou o motivo (ticket, mercado, tangibilidade, natureza). Pode vir vazio: há motivos sem eixo, como genero_nao_presumido e custo_acima_da_mediana.
Termos de segmentação para procurar no Gerenciador de cada plataforma.
Vêm nas DUAS origens. Num público montado eles saem do briefing; num semelhante eles são os termos de segmentação de PÚBLICO SEMELHANTE — o que procurar no Gerenciador depois de subir o arquivo. Um import que só entrega download é um download, e não um público.
object
Mapa plataforma → texto a digitar na busca de segmentação dela.
São TEXTOS, nunca identificadores de interesse. Resolver o id que a Meta ou o Google usa exige a API de busca de segmentação de cada uma, que não é chamada aqui — e inventar um id seria a pior coisa que este produto poderia fazer.
Plataforma AUSENTE do mapa significa que não há equivalente honesto lá. A ausência é informação: ela não é preenchida com string vazia.
object
Palavras que, citadas pelo cliente, fazem este termo subir. Usadas só para ordenar.
O cabeçalho da base que originou um público semelhante. Nenhum contato vem aqui, nem resumido.
A lista é a unidade de BASE LEGAL e de RETENÇÃO: base_legal, retencao_dias e expira_em valem para todos os contatos dela, e é por isso que apagar o público apaga os contatos junto.
object
Escolhida ANTES do primeiro byte subir. Base legal escolhida depois do upload é justificativa, não fundamento.
Prazo declarado, em dias. O piso de 1 existe para que zero não vire, por engano de tela, uma lista que nunca vence.
Quando a lista deve ser apagada. É GRAVADO, não derivado da leitura — quem apaga é uma rotina de retenção, e ela não deve reimplementar a regra de prazo.
Mudar retencao_dias não move este campo sozinho. Prorrogar é escrever os dois, e isso é decisão consciente em vez de efeito colateral.
O sujeito do token verificado de quem subiu a lista. Nunca vem do corpo. Numa tabela com base legal declarada, ‘quem subiu isto’ é a primeira pergunta de qualquer apuração.
O que a importação encontrou no arquivo. São contagens de LINHA, e toda decisão sobre a base sai daqui.
object
Total de linhas do arquivo original.
Linhas que viraram contato único. NÃO É ALCANCE — ver o cabeçalho deste arquivo.
Descartadas por repetir a chave. Proporção alta quase sempre denuncia exportação bagunçada de CRM, não base ruim.
Linhas sem e-mail nem telefone. Proporção alta quase sempre revela COLUNA MAPEADA ERRADA — nome e cidade sozinhos não casam ninguém em plataforma nenhuma.
Códigos, não frases — frase gravada envelhece junto com o texto que a substituiu.
Dois avisos da MESMA faixa podem sair juntos: entre 100 e 999 aproveitadas, serve_so_na_meta e acima_do_minimo_abaixo_do_recomendado vêm os dois. Uma interface que espere um só mostra metade do diagnóstico.
Uma entrada por plataforma com formato de exportação implementado, em ordem fixa: meta, google, tiktok. Só em origem: semelhante.
object
O piso publicado da plataforma, comparado contra aproveitadas.
Repete qualidade.aproveitadas, para a comparação ficar lado a lado.
aproveitadas >= minimo.
É UX, não controle. Ele existe para a tela não desenhar um botão que vai responder 403, e é calculado contra o token DESTA requisição. Quem decide o download é o servidor, que exige publico.exportar na própria rota de exportação — o endereço é digitável, e é o tipo de coisa que alguém manda num chat.
Só em origem: semelhante: um público montado não tem arquivo para exportar, e pedir a exportação dele responde 409 ORIGEM_INCOMPATIVEL — nunca 404 (o público existe e está na tela de quem pediu) e nunca 400 (a requisição está inteiramente correta).
Example
{ "publico": { "origem": "montado" }, "sugestao": { "objetivo": "alcance" }, "termos": [ { "eixo": "interesse" } ], "lista": { "base_legal": "consentimento" }, "qualidade": { "avisos": [ "mapeamento_provavelmente_errado" ] }, "exportacoes": [ { "plataforma": "meta" } ]}Token ausente, malformado ou vencido.
object
object
Código estável, seguro para comparar.
Texto para pessoa. Pode mudar entre versões — não decida nada a partir dele.
Identificador da ocorrência. Cite-o ao pedir suporte.
Example generated
{ "error": { "code": "example", "message": "example", "trace_id": "example" }}O token é válido, e o escopo não. Ou ele foi emitido para outro cliente, ou o papel não inclui a permissão da rota. NÃO é 404 de propósito: esconder um erro de escopo atrás de ‘não encontrado’ faz quem integra procurar o problema no lugar errado.
object
object
Código estável, seguro para comparar.
Texto para pessoa. Pode mudar entre versões — não decida nada a partir dele.
Identificador da ocorrência. Cite-o ao pedir suporte.
Example generated
{ "error": { "code": "example", "message": "example", "trace_id": "example" }}