Consumir um relatório pela API

Modificado em Seg, 26 Out na (o) 5:46 PM

Todo relatório da área administrativa pode ser extraído pela API, em JSON, sem abrir a tela. Este artigo mostra como fazer a chamada, quanto tempo ela pode levar e como ler o resultado.

Neste artigo

  1. Antes de começar
  2. Executar o relatório
  3. Relatórios grandes
  4. Cuidados
  5. Problemas comuns

Antes de começar

Executar o relatório

1Faça a chamada

GET https://sandbox.engage.bz/api/v1/{customer_id}/reports/legacy/{guid_report}/{admin_id}/json
Authorization: Bearer {access_token}

No Postman: pasta 05 - Relatórios, request Consumir relatório (JSON).

Request Consumir relatório (JSON) no Postman com resposta 200 e os registros do relatório; nomes de usuário ocultados

SegmentoO que é
{customer_id}A sua instância. Precisa ser a mesma usada para gerar o token
{guid_report}O relatório. Aceita o guid_report (recomendado) ou o id numérico da instância
{admin_id}Obrigatório na rota, mas o valor não muda o resultado. Use o user_id do próprio usuário de serviço, que volta no POST /auth

Os filtros, quando houver, vão na query string — veja Parâmetros de filtro dos relatórios.

Importante

Quem define quais dados o relatório enxerga é o usuário do token, não o admin_id da rota. Esse usuário precisa pertencer à mesma instância do customer_id: token de uma instância em rota de outra devolve HTTP 401.

2Aguarde a resposta

A chamada é bloqueante. A API coloca o relatório numa fila, aguarda o processamento e só então devolve os dados. Não existe HTTP 202, número de processamento nem rota para consultar o andamento: a conexão fica aberta até o fim.

  • Configure o timeout do seu cliente HTTP para 60 minutos. É o tempo máximo que a API aguarda o processamento. Passou disso, a chamada falha.
  • Execute um relatório por vez com o mesmo usuário. Veja o motivo em "Cuidados", abaixo.

Atenção

Em homologação, o processamento de relatórios é ligado sob demanda. Depois de um período sem uso, a primeira chamada leva de 2 a 4 minutos a mais só para começar. As seguintes saem no tempo normal.

3Leia o resultado

A resposta é um array JSON simples. Cada objeto é uma linha do relatório, e as chaves são os nomes das colunas. Exemplo do relatório "27 - Assinatura de certificados" (valores ilustrativos):

[
  {
    "UsuarioID": 415322,
    "NomeUsuario": "João da Silva",
    "LoginUsuario": "joao.silva",
    "StatusUsuario": "Ativo",
    "NomeTrilha": "Trilha de Integração",
    "DataAssinaturaCertificado": ""
  }
]

Não há envelope nem paginação, e as colunas mudam de um relatório para outro.

Cuidado

HTTP 200 com [] (array vazio) não é erro de sintaxe. Significa que o usuário do token não alcança esses dados ou que os filtros zeraram o resultado. Antes de concluir que não há dados, compare com o mesmo relatório na tela do Admin.

Relatórios grandes

Em instâncias grandes, um relatório passa facilmente de 200 mil linhas e estoura o tempo de processamento. A saída é sempre filtrar:

  • Por período: startDate e endDate, ou o par de datas próprio do relatório (por exemplo, roundCompletionDateStartDate e roundCompletionDateEndDate).
  • Por ambiente: competitionId.
  • Em janelas menores: extraia mês a mês e junte os resultados do seu lado.

Dica

Os nomes dataInicio e dataFim, citados em material antigo, não existem na API. Se enviados, são ignorados e o relatório volta inteiro.

Cuidados

  • Duas chamadas iguais ao mesmo tempo dividem o resultado. Se o mesmo usuário pedir o mesmo relatório enquanto o primeiro ainda processa, a segunda chamada não gera um processamento novo: recebe o resultado da primeira, mesmo que os filtros sejam diferentes. Execute as chamadas em sequência.
  • Parâmetro com nome errado é descartado em silêncio. O filtro não é aplicado e o relatório volta maior do que o esperado. Confira a grafia.
  • Use sempre a rota terminada em /json. A variante sem /json devolve planilha e não é suportada para integração.
  • Não envie environmentId. Ele não filtra nada: só marca a origem da chamada no log de auditoria, e o padrão já é o correto para integração.

Problemas comuns

O que apareceCausa provávelO que fazer
HTTP 401customer_id da rota diferente do token, ou usuário sem a permissão Gerenciar relatóriosConfira a instância e a permissão do usuário de serviço
HTTP 404 — O relatório informado não existe.id numérico que não existe nesta instância, ou relatório inativoUse o guid_report devolvido pela listagem
HTTP 500 — Relatorio com GUID '...' nao encontrado para o customer '...'GUID que não está cadastrado na instânciaListe os relatórios e use o guid_report devolvido
HTTP 400 — O relatório '...' informado foi descontinuado.O relatório foi substituído por uma versão novaUse o ID indicado na própria mensagem
HTTP 200 com []Escopo do usuário do token, ou filtros que zeraram o resultadoCompare com a tela do Admin e tire os filtros um a um
Resultado com filtros diferentes dos enviadosDuas chamadas do mesmo relatório em paralelo, com o mesmo usuárioExecute em sequência
Erro depois de cerca de 60 minutos, ou timeout do seu ladoVolume grande demais, ou timeout do cliente HTTP curtoFiltre por período ou ambiente e configure o timeout para 60 minutos

Próximo passo

Para recortar o resultado por período, ambiente ou usuário, veja Parâmetros de filtro dos relatórios. Para levar o relatório ao Excel ou ao Power BI, veja Relatório no Power Query (Excel e Power BI).

Precisa de ajuda?

Escreva para meajuda@engage.bz informando o customer_id, o ambiente, o guid_report e a resposta completa da chamada. Nunca envie senhas, tokens ou o client_secret por e-mail.

Este artigo foi útil?

Que bom!

Obrigado pelo seu feedback

Desculpe! Não conseguimos ajudar você

Obrigado pelo seu feedback

Deixe-nos saber como podemos melhorar este artigo!

Selecione pelo menos um dos motivos
A verificação do CAPTCHA é obrigatória.

Feedback enviado

Agradecemos seu esforço e tentaremos corrigir o artigo