DEV Community

Cover image for Como Gerar e Hospedar Documentação API com Bruno?
Lucas
Lucas

Posted on • Originally published at apidog.com

Como Gerar e Hospedar Documentação API com Bruno?

Se você adotou o Bruno, provavelmente foi pelo fluxo offline-first: coleções em arquivos .bru, versionadas no Git junto com o código e sem dependência de uma conta na nuvem. Isso funciona bem para testar APIs internamente, mas cria uma lacuna quando alguém pergunta: “onde está a documentação pública?” ou “você pode me enviar um link?”.

Experimente o Apidog hoje

O Bruno é ótimo para enviar requisições e manter coleções no repositório. Ele não foi projetado, porém, para publicar um portal de documentação hospedado, compartilhável e interativo. Neste guia, você verá o que o Bruno entrega, onde ele para e como transformar sua especificação OpenAPI em uma URL de documentação utilizável por frontend, QA, parceiros e consumidores externos.

O que uma documentação de API precisa entregar

Antes de escolher uma ferramenta, defina o resultado esperado. Na prática, uma documentação de API útil precisa de três coisas:

  • Uma URL compartilhável: consumidores devem conseguir abrir a documentação sem clonar o repositório ou instalar um cliente de API.
  • Sincronização com o contrato da API: se a especificação muda, a documentação também precisa refletir essa mudança.
  • Execução interativa de requisições: além de ler endpoints, o usuário deve conseguir testar chamadas com parâmetros, headers, autenticação e exemplos.

Quando esses três pontos existem, a documentação vira referência operacional. Quando falta um deles, o time volta a responder dúvidas manualmente.

O que o Bruno oferece para documentação

O Bruno tem uma base interessante para documentação interna.

As coleções são armazenadas em arquivos .bru, que são texto simples. Isso permite abrir uma requisição no repositório e inspecionar método, URL, headers e body. O Bruno também suporta um bloco docs por requisição e uma visualização Markdown dentro do aplicativo.

Exemplo conceitual de uma requisição documentada em .bru:

meta {
  name: Criar usuário
  type: http
}

post {
  url: {{baseUrl}}/users
  body: json
  auth: bearer
}

headers {
  Content-Type: application/json
}

body:json {
  {
    "name": "Ana",
    "email": "ana@example.com"
  }
}

docs {
  Cria um novo usuário no sistema.

  Campos obrigatórios:
  - name
  - email
}
Enter fullscreen mode Exit fullscreen mode

Esse modelo funciona bem quando:

  • todo o time usa Bruno;
  • todos têm acesso ao repositório;
  • a documentação é consumida principalmente por engenheiros internos;
  • a revisão acontece via pull request.

A limitação aparece na publicação.

O Bruno não inclui um portal de documentação pública hospedado, gerado automaticamente e acessível por uma URL estável. A visualização de documentação existe dentro do app, mas depende de o usuário ter o Bruno instalado e a coleção clonada.

O problema: documentação vira um pipeline paralelo

Quando a equipe precisa publicar documentação fora do Bruno, o caminho comum costuma ser:

  1. exportar a coleção ou gerar uma especificação OpenAPI;
  2. usar um gerador estático de documentação;
  3. configurar hospedagem;
  4. manter um pipeline de build;
  5. garantir que tudo continue sincronizado.

Esse fluxo funciona, mas adiciona manutenção.

O risco é criar duas fontes de verdade:

  • a coleção usada para testar;
  • a documentação publicada para consumidores.

Quando elas divergem, a documentação perde confiabilidade.

Use docs-as-code como princípio

Uma abordagem mais sustentável é tratar a documentação como saída da especificação, não como um documento separado.

Em um fluxo docs-as-code, a API é descrita em uma especificação legível por máquina, normalmente OpenAPI. Essa especificação fica no Git, passa por pull requests e funciona como contrato.

A partir dela, você pode gerar:

  • documentação;
  • mocks;
  • testes;
  • SDKs;
  • exemplos de requisição.

O ponto principal é simples: edite o contrato uma vez e gere os artefatos a partir dele.

Um exemplo mínimo de OpenAPI:

openapi: 3.0.3
info:
  title: API de Usuários
  version: 1.0.0

servers:
  - url: https://api.exemplo.com

paths:
  /users:
    post:
      summary: Criar usuário
      description: Cria um novo usuário no sistema.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
                - email
              properties:
                name:
                  type: string
                  example: Ana
                email:
                  type: string
                  format: email
                  example: ana@example.com
      responses:
        "201":
          description: Usuário criado
Enter fullscreen mode Exit fullscreen mode

Com esse contrato, a documentação não precisa ser reescrita manualmente. Ela pode ser renderizada a partir da especificação.

Gere e hospede documentação a partir da especificação

É aqui que o Apidog entra no fluxo.

O Apidog trabalha com uma abordagem centrada na especificação e permite gerar um portal de documentação interativo e hospedado diretamente da sua OpenAPI, sem montar um pipeline separado de documentação estática.

Captura de tela do Apidog mostrando a geração de documentação.

Na prática, você pode:

  • importar uma especificação OpenAPI;
  • gerar documentação automaticamente;
  • publicar em uma URL compartilhável;
  • configurar domínio personalizado;
  • permitir testes interativos com o painel “experimente”;
  • manter a documentação alinhada à especificação.

Como a mesma especificação também pode alimentar testes e mocks, você evita manter descrições duplicadas da mesma API.

Passo a passo: da especificação à URL pública

Use este fluxo quando você já tiver uma especificação OpenAPI ou puder gerar uma a partir da coleção Bruno.

Etapa Ação Resultado
1 Importe ou escreva sua especificação OpenAPI no Apidog Endpoints, schemas e exemplos são preenchidos automaticamente
2 Abra as configurações de documentação do projeto A documentação é gerada a partir da especificação, pronta para configurar
3 Escolha a visibilidade e (opcionalmente) um domínio personalizado A documentação pode ser pública, privada ou protegida por senha
4 Publique Um site de documentação ao vivo e hospedado é criado em uma URL estável
5 Compartilhe o link Os consumidores leem a documentação e executam requisições “experimente”

Fluxo recomendado:

Coleção Bruno
      ↓
Exportação/conversão para OpenAPI
      ↓
Importação no Apidog
      ↓
Geração da documentação
      ↓
Publicação em URL compartilhável
Enter fullscreen mode Exit fullscreen mode

Se você já mantém OpenAPI no Git, o fluxo fica ainda mais direto:

openapi.yaml
      ↓
Apidog
      ↓
Documentação hospedada + testes interativos
Enter fullscreen mode Exit fullscreen mode

Como manter a documentação sincronizada

Uma documentação publicada só é útil se permanecer correta. O problema em setups manuais é que alguém altera a API e esquece de atualizar o site de docs.

Com documentação gerada a partir da especificação, o processo fica mais previsível:

  1. o desenvolvedor altera a especificação;
  2. a mudança passa por revisão no pull request;
  3. a documentação publicada reflete o novo contrato;
  4. consumidores acessam a versão atualizada.

Exemplo: se você adiciona um campo ao schema de resposta, ele aparece na documentação gerada. Se remove ou descontinua um endpoint, essa mudança também passa pelo contrato.

O trabalho de manter a especificação correta passa a ser o mesmo trabalho de manter a documentação correta.

Quando usar Bruno, OpenAPI e Apidog juntos

Uma forma prática de organizar o fluxo é:

  • use Bruno para coleções locais e testes internos versionados no Git;
  • use OpenAPI como contrato formal da API;
  • use Apidog para gerar documentação hospedada, interativa e compartilhável.

Isso evita abandonar o que já funciona no Bruno, mas resolve a parte que ele não cobre nativamente: publicação de documentação.

FAQ

O Bruno pode gerar e hospedar documentação pública de API?

O Bruno fornece arquivos .bru legíveis e uma visualização Markdown dentro do aplicativo. Esses recursos funcionam bem para documentação interna versionada no Git.

Ele não inclui, porém, um portal público hospedado, gerado automaticamente e acessível por uma URL compartilhável. Para publicar documentação pública, normalmente é necessário exportar ou converter a coleção para uma especificação e usar outra ferramenta de documentação.

Como obtenho uma URL compartilhável para minha documentação de API?

Descreva sua API em OpenAPI e use uma ferramenta que gere documentação hospedada a partir dessa especificação.

No Apidog, o fluxo é:

  1. importar a especificação;
  2. configurar visibilidade;
  3. opcionalmente definir domínio personalizado;
  4. publicar;
  5. compartilhar a URL gerada.

O resultado é um site de documentação com endpoints, schemas, exemplos e painel interativo de teste.

Preciso abandonar minhas coleções Bruno?

Não. Você pode continuar usando Bruno para coleções locais e converter a coleção para OpenAPI quando precisar publicar documentação.

A migração acontece na camada da especificação. Assim, você mantém o hábito docs-as-code e adiciona uma etapa de publicação mais adequada para consumidores externos.

Qual é a melhor fonte da verdade: coleção ou especificação?

Para documentação pública e integrações externas, a especificação OpenAPI costuma ser a melhor fonte da verdade, porque é legível por ferramentas e pode gerar documentação, mocks, testes e clientes.

A coleção pode continuar útil para execução local e fluxos internos, mas a documentação publicada deve vir do contrato formal da API.

Top comments (0)