> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Gerar e baixar um relatório (API)

> Envie um template ao Reporter, peça um relatório a partir dele, acompanhe o status e baixe o arquivo.

Transforme um template e os dados das suas fontes de dados em um arquivo de relatório e baixe o arquivo quando ele estiver pronto.

## Participantes

***

* **Sua instituição.** O seu sistema que chama a API do Reporter.
* **Reporter.** Verifica o template e o pedido, gera o relatório e entrega o arquivo.

## Antes de começar

***

* Você tem um bearer token que o Access Manager emite para o Reporter.
* Você conectou cada fonte de dados que seu template lê. Veja [Conectar uma fonte de dados](https://docs.lerian.studio/pt/diagrams/lerian-products/reporter-connect-a-data-source.md).

## Diagrama

***

![Gerar e baixar um relatório](https://mintcdn.com/lerian-49cb71fc/WuRfbo_y9uSbzyyX/images/pt/d2/id-reporter-generate-a-report.svg?fit=max\&auto=format\&n=WuRfbo_y9uSbzyyX\&q=85\&s=a365b6ba4b45a65c929620cbfa034d2b)

## Passo a passo pela API

***

| # | Origem | Destino | Mensagem | API da Lerian | O que acontece |
| - | - | - | - | - | - |
| 1 | Sua instituição | Reporter | API da Lerian | [`POST /v1/templates`](https://docs.lerian.studio/pt/reference/products/reporter/upload-template) | Envie o template como formulário multipart com o arquivo `template`, `outputFormat`, `description` e `category`. |
| 2 | Reporter | Reporter | Etapa interna | | O Reporter verifica cada fonte de dados, tabela e campo que o template lê contra o esquema da fonte de dados. |
| 3 | Reporter | Sua instituição | Resposta | | O Reporter devolve o template com seu `id`. |
| 4 | Sua instituição | Reporter | API da Lerian | [`POST /v1/reports`](https://docs.lerian.studio/pt/reference/products/reporter/create-report) | Envie `templateId` e `filters`. Adicione `parameters` quando o template os declara, e uma chave `X-Idempotency`. |
| 5 | Reporter | Reporter | Etapa interna | | O Reporter verifica os filtros e os parâmetros, registra o relatório e começa a geração. |
| 6 | Reporter | Sua instituição | Resposta | | O Reporter devolve o relatório com seu `id` e o status `Processing`. |
| 7 | Reporter | Reporter | Etapa interna | | O Reporter extrai os dados de cada fonte de dados. O relatório termina como `Finished`, `Partial` ou `Error`. Para `Finished` e `Partial`, o Reporter renderiza o template e guarda o arquivo. |
| 8 | Sua instituição | Reporter | API da Lerian | [`GET /v1/reports/{id}`](https://docs.lerian.studio/pt/reference/products/reporter/check-report-status) | Leia o relatório. |
| 9 | Reporter | Sua instituição | Resposta | | O Reporter devolve o relatório com seu `status`. |
| 10 | Sua instituição | Reporter | API da Lerian | [`GET /v1/reports/{id}/download`](https://docs.lerian.studio/pt/reference/products/reporter/download-report) | Baixe o arquivo de um relatório `Finished`. |
| 11 | Reporter | Sua instituição | Resposta | | O Reporter devolve o arquivo com o tipo de conteúdo do formato dele e o header `X-Report-Status`. |

## Regras

***

* O `outputFormat` é `html`, `pdf`, `csv`, `xml` ou `txt`. Escreva um template `pdf` em HTML. A `description` e a `category` são obrigatórias.
* O Reporter recusa um template que lê uma fonte de dados, tabela ou campo que não existe. Quando o Reporter não alcança uma fonte de dados, ele cria o template e devolve um aviso.
* Um filtro só pode nomear uma tabela que o template lê.
* O Reporter recusa um pedido sem um parâmetro obrigatório que não tem valor padrão.
* Quando você registrou mais de uma instituição no Reporter, envie `institution` com um ID de instituição ou com `all`.
* Por 30 segundos, uma repetição com a mesma chave `X-Idempotency` devolve o primeiro relatório, com o header `X-Idempotency-Replayed: true`.
* O Reporter recusa o download enquanto o relatório está `Processing` e quando ele está `Partial` ou `Error`.

## Como saber que terminou

***

O relatório mostra `Finished`, e o download devolve o arquivo com `X-Report-Status: Finished`.

## O que pode dar errado

***

| Situação | O que você vê | O que fazer |
| - | - | - |
| O template lê uma fonte de dados que não existe | `400` com `RPT-0031` | Conecte a fonte de dados ou corrija o nome dela no template. |
| Um filtro nomeia uma tabela que o template não lê | `400` com `RPT-0076` | Filtre uma das tabelas que a mensagem lista. |
| O mesmo pedido ainda está em andamento | `409` com `RPT-0039` | Liste os relatórios do template antes de enviar o pedido de novo. |
| O pedido excede o tempo limite | Nenhuma resposta | O relatório pode existir. [Liste os relatórios](https://docs.lerian.studio/pt/reference/products/reporter/retrieve-reports.md) do template com `template_id` antes de enviar o pedido de novo. |
| Você baixa antes de o relatório ficar `Finished` | `422` com `RPT-0029` | Leia o status e baixe quando ele mostrar `Finished`. |
| O relatório termina como `Partial` ou `Error` | `metadata` descreve o que falhou | Leia a causa e depois peça um novo relatório. |

## Relacionados

***

* [Conectar uma fonte de dados](https://docs.lerian.studio/pt/diagrams/lerian-products/reporter-connect-a-data-source.md)
* [Receber o resultado do relatório como evento](https://docs.lerian.studio/pt/diagrams/lerian-products/reporter-receive-the-report-result.md)
* [Como funciona a geração de relatórios](https://docs.lerian.studio/pt/products/reporter/how-report-generation-works.md)
* [Motor de templates do Reporter](https://docs.lerian.studio/pt/products/reporter/reporter-template-engine.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.