For the complete documentation index, see llms.txt. This page is also available as Markdown.

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:

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

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


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