Documentação da API

Esta página aborda padrões para documentar APIs usando especificações OpenAPI em todos os serviços da Decentraland.

Objetivos

Nossa abordagem de documentação de API garante:

  • Padronização - Especificações OpenAPI consistentes em todos os serviços

  • Automação - Validação, empacotamento e implantação via GitHub Actions

  • Centralização - Toda a documentação de serviço publicada através do GitBook

  • Propriedade - A documentação vive em cada repositório de serviço

  • Acessibilidade - Referências de API atualizadas e amigáveis para contribuintes


Estrutura do Repositório

Cada repositório de serviço DEVE incluir um /docs diretório com a seguinte estrutura:

/docs
  openapi.yaml        # Fonte de verdade (OpenAPI 3.1)
  openapi.json        # Auto-gerado no CI para Hugo/renderers
  index.html          # Documentação autônoma auto-gerada (opcional)

Requisitos de Arquivo

openapi.yaml

  • DEVE ser o arquivo fonte canônico

  • DEVE usar a especificação OpenAPI 3.1

  • PODE ter um prefixo identificador do serviço (por exemplo, worlds-openapi.yaml)

  • PODE dividir em components/ ou examples/ diretórios, se necessário

openapi.json

  • Auto-gerado durante o CI/CD

  • Usado pelo Hugo e outros renderers

  • Não editar manualmente

index.html

  • Documentação autônoma auto-gerada

  • Construído usando Redocly

  • Implantado no GitHub Pages


Padrões OpenAPI

Ao escrever openapi.yaml, siga estas convenções para garantir consistência e clareza.

Resumo do Endpoint

DEVE refletir o caminho real do endpoint:

Operation ID

DEVE incluir o nome do serviço para unicidade global:

Convenção de nomenclatura: {serviceName}_{operationDescription}

  • Use camelCase

  • Seja descritivo, mas conciso

  • Inclua contexto do método HTTP quando útil (por exemplo, createUser, deleteParcel)

Versionamento

DEVE use versionamento semântico (MAJOR.MINOR.PATCH) em info.version:

Regras para incremento de versão:

  • MAJOR: Mudanças incompatíveis (quebra de compatibilidade na API)

  • MINOR: Nova funcionalidade (compatível com versões anteriores)

  • PATCH: Correções de bugs (compatível com versões anteriores)

Tags e Agrupamento

DEVE use tags para agrupar endpoints relacionados:

circle-info

As operações são agrupadas por tag na navegação do GitBook. Agrupe endpoints relacionados sob a mesma tag para melhor organização.

Exemplo Completo


Desenvolvimento Local

Visualizar Documentação Localmente

Use o Redocly CLI para visualizar sua documentação OpenAPI:

Adicionar ao package.json

Adicione um script de build para conveniência:

Instalar Redocly CLI

Validar Especificação OpenAPI


Configuração de Automação

Passo 1: Configurar Secrets do GitBook

Para publicar specs de API no GitBook, adicione estes secrets ao seu repositório:

Settings → Secrets and variables → Actions → New repository secret

Nome do Secret
Descrição
Onde Encontrar

GITBOOK_ORGANIZATION_ID

O ID da sua organização no GitBook

GitBook Settings → Organization

GITBOOK_TOKEN

Token da API do GitBook

GitBook Settings → API Tokens

circle-exclamation

Passo 2: Adicionar Workflow do GitHub Actions

Criar .github/workflows/build-api-docs.yml no seu repositório:

Parâmetros:

  • api-spec-file: Caminho para sua especificação OpenAPI (normalmente docs/openapi.yaml)

  • output-file: Onde gerar docs em HTML

  • output-directory: Diretório para os arquivos de saída

  • api-spec-name: Nome único para sua especificação de API (usado no GitBook)

  • node-version: Versão do Node.js a ser usada

Este workflow irá:

  1. ✅ Validar a especificação OpenAPI

  2. ✅ Empacotar a especificação em um único arquivo

  3. ✅ Construir documentação estática em HTML usando Redocly

  4. ✅ Implantar automaticamente no GitHub Pages

  5. ✅ Publicar a spec no GitBook (se os secrets estiverem configurados)

Passo 3: Habilitar GitHub Pages

Configure o GitHub Pages no seu repositório:

  1. Vá para Settings → Pages

  2. Em Build and deployment:

    • Defina Source para GitHub Actions

  3. Certifique-se de que existe um environment chamado github-pages

  4. Salvar configurações

Após a primeira execução bem-sucedida do workflow, sua documentação estará disponível em:

  • Docs HTML: https://decentraland.github.io/<repo>/index.html

  • Spec OpenAPI: https://decentraland.github.io/<repo>/openapi.yaml

  • JSON Empacotado: https://decentraland.github.io/<repo>/openapi.json

circle-check

Adicionando ao GitBook

Uma vez que sua documentação de API esteja implantada, adicione-a à documentação centralizada do GitBook.

Adição Manual (Processo Atual)

  1. Navegue até o espaço do GitBook

  2. Vá para a Referência de API seção

  3. Clique em Add API Reference

  4. Insira os detalhes do seu serviço:

    • Name: O nome do seu serviço (por exemplo, "Social Service")

    • OpenAPI URL: https://decentraland.github.io/{repo-name}/openapi.yaml

  5. Salvar

Recursos de Integração do GitBook

O GitBook irá automaticamente:

  • Analisar sua especificação OpenAPI

  • Gerar documentação interativa de API

  • Criar navegação de endpoints baseada em tags

  • Fornecer funcionalidade "Try it"

  • Manter docs sincronizados quando você atualizar a spec


Fluxo de Configuração Completo

Configuração Inicial

spinner

Atualizações Contínuas

spinner

Boas Práticas

Qualidade da Documentação

  • Seja descritivo: Escreva resumos e descrições claras

  • Forneça exemplos: Inclua exemplos de requisição/resposta

  • Documente erros: Descreva todas as possíveis respostas de erro

  • Use components: Reutilize schemas via $ref para evitar duplicação

  • Adicione descrições: Todo parâmetro, propriedade e resposta deve ter uma descrição

Exemplo com Melhores Práticas

Reutilização de Schemas

Schemas de Segurança


Validação e Verificações de Qualidade

Validação Pré-Commit

Adicione um hook pre-commit ou verificação no CI:

Regras Comuns de Validação

  • Todos os paths têm operation IDs

  • Todas as operações têm tags

  • Todos os parâmetros têm descrições

  • Todas as respostas estão documentadas

  • Exemplos são fornecidos

  • Schemas são referenciados corretamente


Solução de Problemas

Workflow Falha

Problema: O workflow do GitHub Actions falha

Soluções:

  • Verifique os logs do workflow para erros de validação

  • Execute redocly lint docs/openapi.yaml localmente

  • Verifique caminhos de arquivos na configuração do workflow

  • Certifique-se de que os secrets estejam configurados corretamente

GitHub Pages Não Funciona

Problema: Docs não aparecem na URL do GitHub Pages

Soluções:

  • Verifique se o GitHub Pages está habilitado nas configurações do repositório

  • Verifique se o workflow foi concluído com sucesso

  • Aguarde alguns minutos para o GitHub Pages atualizar

  • Verifique se o github-pages environment existe

GitBook Não Está Sincronizando

Problema: GitBook não mostra docs de API atualizados

Soluções:

  • Verifique se os secrets do GitBook estão corretos

  • Verifique se a URL OpenAPI é acessível

  • Dispare manualmente uma atualização no GitBook

  • Verifique se a especificação OpenAPI é válida


Migração de Documentação Existente

Se você tiver documentação de API existente:

  1. Exportar para OpenAPI: Converter docs existentes para o formato OpenAPI 3.1

  2. Validar: Usar redocly lint para garantir conformidade

  3. Adicionar workflow: Configurar automação do GitHub Actions

  4. Testar: Verificar se os docs são construídos e implantados corretamente

  5. Atualizar links: Apontar links da documentação antiga para a nova URL do GitHub Pages

  6. Arquivar documentos antigos: Manter documentos antigos para referência durante a transição


Próximos Passos

Recursos

Atualizado