Documentación de API
Esta página cubre los estándares para documentar APIs usando especificaciones OpenAPI en todos los servicios de Decentraland.
Objetivos
Nuestro enfoque de documentación de API garantiza:
Estandarización - Especificaciones OpenAPI consistentes en todos los servicios
Automatización - Validación, empaquetado y despliegue mediante GitHub Actions
Centralización - Toda la documentación de servicios publicada a través de GitBook
Propiedad - La documentación vive en el repositorio de cada servicio
Accesibilidad - Referencias de API amigables para contribuidores y actualizadas
Estructura del repositorio
Cada repositorio de servicio DEBE incluir un /docs directorio con la siguiente estructura:
/docs
openapi.yaml # Fuente de verdad (OpenAPI 3.1)
openapi.json # Generado automáticamente en CI para Hugo/renderers
index.html # Documentación independiente generada automáticamente (opcional)Requisitos de archivos
openapi.yaml
openapi.yamlDEBE ser el archivo fuente canónico
DEBE usar la especificación OpenAPI 3.1
PUEDE tener un prefijo que identifique el servicio (p. ej.,
worlds-openapi.yaml)PUEDE dividirse en
components/oexamples/directorios si es necesario
openapi.json
openapi.jsonGenerado automáticamente durante CI/CD
Usado por Hugo y otros renderers
No editar manualmente
index.html
index.htmlDocumentación independiente generada automáticamente
Construido usando Redocly
Desplegado en GitHub Pages
Estándares OpenAPI
Al escribir openapi.yaml, sigue estas convenciones para asegurar consistencia y claridad.
Resumen del endpoint
DEBE refleja la ruta real del endpoint:
Operation ID
DEBE incluye el nombre del servicio para unicidad global:
Convención de nombres: {serviceName}_{operationDescription}
Usa camelCase
Sé descriptivo pero conciso
Incluye el contexto del método HTTP cuando sea útil (p. ej.,
createUser,deleteParcel)
Versionado
DEBE usa versionado semántico (MAJOR.MINOR.PATCH) en info.version:
Reglas para incrementar la versión:
MAJOR: Cambios incompatibles (cambios rompientes en la API)
MINOR: Nueva funcionalidad (compatible hacia atrás)
PATCH: Correcciones de bugs (compatible hacia atrás)
Etiquetas y agrupación
DEBE usa tags para agrupar endpoints relacionados:
Ejemplo completo
Desarrollo local
Previsualizar documentación localmente
Usa Redocly CLI para previsualizar tu documentación OpenAPI:
Agregar a package.json
Agrega un script de build por conveniencia:
Instalar Redocly CLI
Validar especificación OpenAPI
Configuración de automatización
Paso 1: Configurar secretos de GitBook
Para publicar especificaciones de API en GitBook, agrega estos secretos a tu repositorio:
Settings → Secrets and variables → Actions → New repository secret
GITBOOK_ORGANIZATION_ID
El ID de tu organización en GitBook
GitBook Settings → Organization
GITBOOK_TOKEN
Token de la API de GitBook
GitBook Settings → API Tokens
Estos secretos DEBEN estar configurados para que el flujo de trabajo automatizado publique en GitBook.
Paso 2: Agregar workflow de GitHub Actions
Crear .github/workflows/build-api-docs.yml en tu repositorio:
Parámetros:
api-spec-file: Ruta a tu especificación OpenAPI (usualmentedocs/openapi.yaml)output-file: Dónde generar la documentación HTMLoutput-directory: Directorio para los archivos de salidaapi-spec-name: Nombre único para tu especificación de API (usado en GitBook)node-version: Versión de Node.js a usar
Este workflow hará:
✅ Validar la especificación OpenAPI
✅ Empaquetar la especificación en un único archivo
✅ Construir documentación HTML estática usando Redocly
✅ Desplegar automáticamente en GitHub Pages
✅ Publicar la especificación en GitBook (si los secretos están configurados)
Paso 3: Habilitar GitHub Pages
Configura GitHub Pages en tu repositorio:
Ve a Settings → Pages
Bajo Build and deployment:
Establece Source a GitHub Actions
Asegúrate de que exista un environment llamado github-pages
Guardar configuraciones
Después de la primera ejecución exitosa del workflow, tu documentación estará disponible en:
Docs HTML:
https://decentraland.github.io/<repo>/index.htmlEspecificación OpenAPI:
https://decentraland.github.io/<repo>/openapi.yamlJSON empaquetado:
https://decentraland.github.io/<repo>/openapi.json
Estas URLs permanecen válidas mientras el repositorio exista y GitHub Pages esté habilitado.
Agregar a GitBook
Una vez que tu documentación de API esté desplegada, agrégala a la documentación centralizada en GitBook.
Adición manual (proceso actual)
Navega al espacio de GitBook
Ve a la API Reference sección
Haz clic en Add API Reference
Introduce los detalles de tu servicio:
Name: El nombre de tu servicio (p. ej., "Social Service")
OpenAPI URL:
https://decentraland.github.io/{repo-name}/openapi.yaml
Guardar
Funciones de integración de GitBook
GitBook hará automáticamente:
Parsear tu especificación OpenAPI
Generar documentación interactiva de la API
Crear navegación de endpoints basada en tags
Proveer funcionalidad de "Try it"
Mantener la documentación sincronizada cuando actualices la especificación
Flujo de configuración completo
Configuración inicial
Actualizaciones continuas
Buenas prácticas
Calidad de la documentación
Sé descriptivo: Escribe resúmenes y descripciones claras
Proporciona ejemplos: Incluye ejemplos de request/response
Documenta errores: Describe todas las posibles respuestas de error
Usa components: Reutiliza esquemas vía
$refpara evitar duplicaciónAgrega descripciones: Cada parámetro, propiedad y respuesta debe tener una descripción
Ejemplo con buenas prácticas
Reutilización de esquemas
Esquemas de seguridad
Validaciones y controles de calidad
Validación pre-commit
Agrega un hook pre-commit o una comprobación en CI:
Reglas comunes de validación
Todas las paths tienen operation IDs
Todas las operaciones tienen tags
Todos los parámetros tienen descripciones
Todas las respuestas están documentadas
Se proporcionan ejemplos
Los esquemas están referenciados correctamente
Solución de problemas
El workflow falla
Problema: El workflow de GitHub Actions falla
Soluciones:
Revisa los logs del workflow por errores de validación
Ejecuta
redocly lint docs/openapi.yamllocalmenteVerifica las rutas de archivos en la configuración del workflow
Asegúrate de que los secretos estén configurados correctamente
GitHub Pages no funciona
Problema: Los docs no aparecen en la URL de GitHub Pages
Soluciones:
Verifica que GitHub Pages esté habilitado en la configuración del repositorio
Comprueba que el workflow se haya completado exitosamente
Espera unos minutos para que GitHub Pages se actualice
Verifica que el
github-pagesenvironment exista
GitBook no se sincroniza
Problema: GitBook no muestra la documentación de API actualizada
Soluciones:
Verifica que los secretos de GitBook sean correctos
Comprueba que la URL OpenAPI sea accesible
Forzar una actualización manual en GitBook
Verifica que la especificación OpenAPI sea válida
Migración desde documentación existente
Si tienes documentación de API existente:
Exportar a OpenAPI: Convertir la documentación existente al formato OpenAPI 3.1
Validar: Usar
redocly lintpara asegurar el cumplimientoAgregar workflow: Configurar la automatización con GitHub Actions
Probar: Verificar que la documentación se compile y despliegue correctamente
Actualizar enlaces: Apuntar los enlaces de la documentación antigua a la nueva URL de GitHub Pages
Archivar la documentación antigua: Mantener la documentación antigua como referencia durante la transición
Próximos pasos
Revisar el Well-Known Components estándares para la implementación de la API
Ver Testing Standards para las pautas de pruebas de la API
Consulta ejemplos de API existentes en el API Reference sección
Related Standards
Gestión de dependencias - Gestión de dependencias npm y peerDependencies
Well-Known Components - Arquitectura WKC para servicios
Testing Standards - Patrones de pruebas para servicios
Recursos
OpenAPI Specification: spec.openapis.org
Redocly CLI: redocly.com/docs/cli
Integración de API de GitBook: docs.gitbook.com
Repositorio de Platform Actions: github.com/decentraland/platform-actions
Última actualización