Los equipos de ingeniería de software a menudo tienen dificultades para mantener la documentación de sus API sincronizada con bases de código que evolucionan rápidamente, lo que da lugar a endpoints rotos, parámetros faltantes y frustración entre los desarrolladores. Adoptar la metodología docs-as-code combinando Mintlify con GitHub permite a los equipos tratar la documentación con el mismo rigor de ingeniería que el código de la aplicación. Al alojar los archivos de documentación directamente en repositorios de Git, configurar despliegues automatizados a través de la GitHub App de Mintlify e integrar las especificaciones OpenAPI en los flujos de integración continua (CI), las organizaciones de ingeniería pueden generar automáticamente portales para desarrolladores interactivos y con diseño responsivo. Esta configuración elimina las actualizaciones manuales de documentación, garantiza que las referencias de la API coincidan con el código desplegado y establece un flujo de trabajo de revisión fluido mediante vistas previas en pull requests.
Descripción de la arquitectura Docs-as-Code con Mintlify y GitHub
Mintlify funciona bajo el principio de docs-as-code, donde los archivos fuente de la documentación residen dentro de un repositorio de GitHub junto al código de producción o adyacente a él. En lugar de depender de sistemas de gestión de contenidos (CMS) estáticos o plataformas wiki aisladas, la documentación se define utilizando Markdown, componentes MDX y archivos de configuración estructurados.
La arquitectura consta de cuatro componentes principales:
- Configuración (
mint.json): El archivo central de configuración que define los metadatos del sitio, la identidad de marca, los árboles de navegación, los ajustes de búsqueda y los enlaces a especificaciones OpenAPI externas o internas. - Archivos de contenido (
.mdx): Archivos de Markdown extendido que combinan el formateo de texto estándar con componentes interactivos estilo React (como tablas de parámetros, pestañas, acordeones desplegables y grupos de código). - Especificaciones OpenAPI (
openapi.json/openapi.yaml): Descripciones estandarizadas y legibles por máquina de las API REST que Mintlify analiza para generar referencias interactivas de endpoints y entornos de prueba de solicitudes ("Try It"). - Integración de Mintlify con GitHub: Una GitHub App nativa que escucha los webhooks del repositorio, activando compilaciones automáticas en la nube cuando se fusionan cambios en la rama de producción y generando entornos de vista previa para las pull requests.
+-----------------------------------------------------------------------+
| GitHub Repository |
| |
| +----------------+ +--------------------+ +---------------------+ |
| | mint.json | | docs/**/*.mdx | | openapi.json | |
| | (Site Config) | | (Guides & Pages) | | (API Specification) | |
| +----------------+ +--------------------+ +---------------------+ |
+-----------------------------------------------------------------------+
| ^
| (Push to main / Open PR) | (CI Auto-Sync)
v |
+-----------------------+ +-----------------------+
| Mintlify GitHub App | | GitHub Actions CI/CD |
| - Validates syntax | | - Extract spec from |
| - Builds static docs | | backend code |
| - Posts PR preview | | - Commit / Trigger |
+-----------------------+ +-----------------------+
|
v
+-----------------------------------------------------------------------+
| Production Documentation Site |
| (Interactive Developer Portal & Live API Playground) |
+-----------------------------------------------------------------------+
Configuración del repositorio de documentación
Los equipos de ingeniería pueden implementar Mintlify en un repositorio de documentación dedicado o dentro de un monorrepositorio de aplicación existente. Comenzar con una estructura de directorios clara garantiza una navegación intuitiva y límites limpios de CI/CD.
1. Estructura del repositorio
Un espacio de trabajo estándar de documentación con Mintlify sigue esta estructura de archivos:
my-docs-repo/
├── .github/
│ └── workflows/
│ └── sync-api-spec.yml
├── docs/
│ ├── api-reference/
│ │ ├── authentication.mdx
│ │ └── errors.mdx
│ ├── guides/
│ │ ├── quickstart.mdx
│ │ └── rate-limits.mdx
│ └── openapi.json
└── mint.json
2. Configuración de mint.json
El archivo mint.json controla el tema visual, la navegación principal y la ingesta de referencias de API. Los equipos configuran el array navigation para organizar las guías conceptuales y vincular automáticamente los endpoints de API definidos en la especificación OpenAPI:
{
"$schema": "https://mintlify.com/schema.json",
"name": "Acme Developer Platform",
"logo": {
"dark": "/logo/dark.svg",
"light": "/logo/light.svg"
},
"favicon": "/favicon.svg",
"colors": {
"primary": "#0F52BA",
"light": "#4B9CD3",
"dark": "#002D62"
},
"navigation": [
{
"group": "Getting Started",
"pages": [
"docs/guides/quickstart",
"docs/guides/rate-limits"
]
},
{
"group": "API Reference",
"pages": [
"docs/api-reference/authentication",
"docs/api-reference/errors"
],
"openapi": "docs/openapi.json"
}
],
"api": {
"baseUrl": "https://api.acme.com/v1"
}
}
3. Desarrollo local con la CLI de Mintlify
Los ingenieros deben verificar los cambios de documentación localmente antes de enviarlos a GitHub. La CLI de Mintlify proporciona un servidor de desarrollo local con recarga en caliente:
- Instala la CLI globalmente o ejecútala mediante
npx:npm install -g mint - Navega al directorio que contiene
mint.jsone inicia el servidor de desarrollo:mint dev - Abre
http://localhost:3000en un navegador. Cualquier modificación realizada en los archivos.mdx, enmint.jsono en el esquema OpenAPI se recargará de forma instantánea.
Automatización de despliegues con la GitHub App de Mintlify
El mecanismo central de automatización que conecta GitHub con Mintlify es la GitHub App de Mintlify. Una vez instalada, reemplaza los scripts manuales de compilación y despliegue.
Instalación y configuración de ramas
- Inicia sesión en el panel de control de Mintlify y dirígete a Settings > Git Settings.
- Haz clic en Install GitHub App y selecciona la organización y el repositorio de destino.
- Configura la rama de despliegue (Deployment Branch, habitualmente
main). Cada vez que se envíen o fusionen commits en esta rama, Mintlify activará una compilación de producción. - Si la documentación se encuentra dentro de una subcarpeta de un monorrepositorio (como
/docs), activa la opción de subdirectorio y especifica la ruta. Esto restringe las compilaciones para que Mintlify solo se active cuando cambien los archivos dentro de la carpeta de documentación.
Vistas previas en Pull Requests y controles de revisión
Cuando un ingeniero abre una pull request que modifica archivos de documentación, la GitHub App ejecuta automáticamente una comprobación de compilación y comenta en la PR con una URL de vista previa única:
- Control de calidad visual (Visual QA): Los revisores pueden inspeccionar los componentes MDX renderizados, el formato y los entornos de prueba interactivos directamente en el dominio de vista previa antes de fusionar.
- Validación de sintaxis: Si se introduce un elemento Markdown con formato incorrecto, un enlace interno roto o un esquema JSON no válido, la comprobación de compilación falla, impidiendo que la PR se fusione en
main. - Colaboración multifuncional: Los redactores técnicos, gerentes de producto y desarrolladores pueden revisar los cambios de texto dentro de la misma interfaz utilizada para las revisiones de código.
Automatización de actualizaciones de especificaciones OpenAPI mediante GitHub Actions
Mientras que las guías conceptuales se redactan manualmente en MDX, la documentación de referencia de la API siempre debe derivarse directamente del código fuente. Cuando los ingenieros de backend modifican las rutas de los endpoints, las cargas útiles de las solicitudes o los esquemas de respuesta, una canalización automatizada debe actualizar el archivo de especificación OpenAPI en el directorio de documentación.
Sincronización de especificaciones en un monorrepositorio
En un monorrepositorio donde el código del servicio de API (por ejemplo, FastAPI, Express, NestJS o Go) reside junto a la documentación, GitHub Actions puede generar la especificación más reciente en cada commit y mantener actualizada la carpeta de documentación.
El siguiente flujo de trabajo de GitHub Actions demuestra cómo extraer un esquema OpenAPI de un servicio de backend y activar un despliegue en Mintlify:
name: Sync OpenAPI Spec and Deploy Docs
on:
push:
branches:
- main
paths:
- 'services/api/**'
- 'docs/**'
jobs:
sync-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Python Environment
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install Dependencies
run: |
pip install -r services/api/requirements.txt
- name: Generate OpenAPI Specification
run: |
python -c "import json; from services.api.main import app; print(json.dumps(app.openapi()))" > docs/openapi.json
- name: Check for Spec Changes
id: git-diff
run: |
git diff --quiet docs/openapi.json || echo "changed=true" >> $GITHUB_OUTPUT
- name: Commit and Push Updated Spec
if: steps.git-diff.outputs.changed == 'true'
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add docs/openapi.json
git commit -m "chore(docs): auto-update openapi.json from backend"
git push origin main
- name: Trigger Mintlify Deployment
run: |
curl -X POST https://api.mintlify.com/api/deploy \
-H "Authorization: Bearer ${{ secrets.MINTLIFY_API_TOKEN }}"
Arquitectura de sincronización entre múltiples repositorios
En arquitecturas de microservicios donde los servicios de backend residen en repositorios independientes del portal de documentación centralizado, los equipos utilizan eventos de repository dispatch o llamadas directas a la API:
- CI del servicio: Cuando el servicio de backend compila en su propio repositorio, el CI genera
openapi.json. - Dispatch o PR: El flujo de trabajo utiliza un token de acceso personal de GitHub para enviar un evento de webhook al repositorio de documentación, abriendo una pull request automatizada con la especificación actualizada.
- Validación y fusión: El repositorio de documentación ejecuta el linting del esquema, genera una vista previa de Mintlify y fusiona la actualización tras su aprobación.
Prácticas recomendadas para la automatización de documentación de API
Para mantener una alta calidad de la documentación en equipos de ingeniería en crecimiento, implementa los siguientes estándares operativos:
| Práctica | Mecanismo de implementación | Beneficio |
|---|---|---|
| Validación de esquemas | Ejecutar mint validate o linters spectral en CI antes de fusionar. | Evita que esquemas OpenAPI defectuosos o tipos de parámetros no válidos lleguen a producción. |
| PRs atómicas de código y documentación | Exigir los cambios de código de la API y las actualizaciones de documentación correspondientes en la misma PR. | Elimina el desfase temporal entre el despliegue de una funcionalidad y la publicación de su documentación. |
| Seguridad de variables de entorno | Nunca incluir claves de API ni secretos de producción en los bloques de servidores de OpenAPI. | Protege la infraestructura al tiempo que permite a los usuarios introducir claves de prueba en los entornos de prueba interactivos. |
| Etiquetado de endpoints | Organizar las rutas de OpenAPI con tags coherentes en las anotaciones del código. | Mintlify agrupa automáticamente los endpoints en secciones de navegación estructuradas en función de las etiquetas. |
| Automatización del registro de cambios (Changelog) | Generar notas de la versión en docs/changelog.mdx mediante GitHub Releases o etiquetas de Git. | Mantiene a los usuarios informados sobre desuso de funciones, ajustes de límites de velocidad y nuevas características. |
Al tratar la documentación de la API como código, alojar los archivos fuente en GitHub y automatizar las canalizaciones de despliegue y especificaciones, los equipos de ingeniería de software pueden erradicar la desincronización de la documentación, acelerar la incorporación de desarrolladores y ofrecer un portal de API interactivo que se mantiene preciso con cada lanzamiento.