diff --git a/es/advanced/dashboard/permissions.mdx b/es/advanced/dashboard/permissions.mdx deleted file mode 100644 index 48f5721b4..000000000 --- a/es/advanced/dashboard/permissions.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: 'Permisos del editor' -description: 'Permite que más miembros de tu equipo actualicen tu documentación' ---- - -Un editor tiene acceso a tu dashboard y al editor web. - -Cualquiera puede contribuir a tu documentación trabajando localmente y enviando cambios a tu repositorio, pero hay diferencias clave en cómo se publican los cambios: - -* **Cambios de editor**: Cuando un editor publica a través del editor web o fusiona una solicitud de extracción en el repositorio de tu documentación, los cambios se implementan automáticamente en tu sitio en vivo. -* **Cambios de no editor**: Cuando alguien que no es editor fusiona una solicitud de extracción en tu repositorio, debes activar manualmente una implementación desde tu dashboard para que esos cambios aparezcan en tu sitio en vivo. - - - -
- ## Agregar editores -
- -De forma predeterminada, el miembro del equipo que creó tu organización en Mintlify tiene acceso de editor. Agrega editores adicionales en la página [Members](https://dashboard.mintlify.com/settings/organization/members) de tu dashboard. - -Los asientos de editor se facturan según el uso y puedes tener tantos editores como necesites. Consulta nuestra [página de precios](https://mintlify.com/pricing) para más detalles. diff --git a/es/advanced/dashboard/roles.mdx b/es/advanced/dashboard/roles.mdx deleted file mode 100644 index 0f04f94f9..000000000 --- a/es/advanced/dashboard/roles.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Roles" -description: "Controla el acceso a tu dashboard con roles." ---- - - - La funcionalidad RBAC está disponible en el [plan Enterprise](https://mintlify.com/pricing?ref=rbac). - - -Mintlify ofrece dos niveles de acceso al dashboard: Editor y Administrador. - -A continuación se describen las acciones que están restringidas al rol de Administrador: - -| | Editor | Administrador | -| ----------------------- | :----: | :-----------: | -| Actualizar roles de usuario | ❌ | ✅ | -| Eliminar usuarios | ❌ | ✅ | -| Invitar usuarios administradores | ❌ | ✅ | -| Gestionar y actualizar la facturación | ❌ | ✅ | -| Actualizar el dominio personalizado | ❌ | ✅ | -| Actualizar la source de Git | ❌ | ✅ | -| Eliminar la organización | ❌ | ✅ | - -Las demás acciones del dashboard están disponibles para ambos roles. - -Puedes invitar a tantos administradores como quieras, pero recomendamos limitar el acceso de administrador a quienes lo necesiten. diff --git a/es/advanced/dashboard/sso.mdx b/es/advanced/dashboard/sso.mdx deleted file mode 100644 index cc3d31796..000000000 --- a/es/advanced/dashboard/sso.mdx +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: "Inicio de sesión único (SSO)" -description: "Personaliza cómo tu equipo puede acceder a tu dashboard de administración" ---- - - - La funcionalidad de SSO está disponible en el [plan Enterprise](https://mintlify.com/pricing?ref=sso). - - -Usa el inicio de sesión único en tu dashboard mediante SAML y OIDC. Si usas Okta, Google Workspace o Microsoft Entra, contamos con documentación específica por proveedor para configurar SSO. Si usas otro proveedor, [contáctanos](mailto:support@mintlify.com). - -
- ## Okta -
- - - - - - En `Applications`, haz clic para crear una nueva integración de aplicación con SAML 2.0. - - - Ingresa lo siguiente: - * Single sign-on URL (proporcionada por Mintlify) - * Audience URI (proporcionada por Mintlify) - * Name ID Format: `EmailAddress` - * Attribute Statements: - | Name | Name format | Value - | ---- | ----------- | ----- - | `firstName` | Basic | `user.firstName` | - | `lastName` | Basic | `user.lastName` | - - - Una vez configurada la aplicación, ve a la pestaña de inicio de sesión y envíanos la metadata URL. - Habilitaremos la conexión por nuestra parte con esta información. - - - - - - - En `Applications`, haz clic para crear una nueva integración de aplicación con OIDC. - Debes elegir el tipo de aplicación `Web Application`. - - - Selecciona el tipo de concesión Authorization Code y proporciona la Redirect URI que te dio Mintlify. - - - Una vez configurada la aplicación, ve a la pestaña General y localiza el Client ID y el client secret. - Por favor, facilítanos estos datos de forma segura, junto con la URL de tu instancia de Okta (por ejemplo, `.okta.com`). Puedes enviarlos mediante un servicio como 1Password o SendSafely. - - - - - -
- ## Google Workspace -
- - - - - - En `Web and mobile apps`, selecciona `Add custom SAML app` en el menú desplegable `Add app`. - - ![](/images/gsuite-add-custom-saml-app.png) - - - - Copia la SSO URL, el Entity ID y el certificado x509 proporcionados y envíalos al equipo de Mintlify. - - ![](/images/gsuite-saml-metadata.png) - - - - En la página Service provider details, introduce lo siguiente: - * ACS URL (proporcionado por Mintlify) - * Entity ID (proporcionado por Mintlify) - * Name ID format: `EMAIL` - * Name ID: `Basic Information > Primary email` - - - ![](/images/gsuite-sp-details.png) - - - En la página siguiente, introduce las siguientes declaraciones de atributos: - | Google Directory Attribute | App Attribute | - | -------------------------- | ------------- | - | `First name` | `firstName` | - | `Last name` | `lastName` | - - Cuando completes este paso y los usuarios estén asignados a la aplicación, avísanos y habilitaremos el SSO para tu cuenta. - - - - - -
- ## Microsoft Entra -
- - - - - - 1. En "Enterprise applications", selecciona **New application**. - 2. Selecciona **Create your own application** y elige "Integrate any other application you don't find in the gallery (Non-gallery)." - - - Ve a la página de configuración de Single Sign-On y selecciona **SAML**. En "Basic SAML Configuration", ingresa lo siguiente: - * Identifier (Entity ID): el Audience URI proporcionado por Mintlify. - * Reply URL (Assertion Consumer Service URL): la ACS URL proporcionada por Mintlify. - - Deja los demás valores en blanco y selecciona **Save**. - - - Edita la sección Attributes & Claims: - 1. Selecciona **Unique User Identifier (Name ID)** en "Required Claim". - 2. Cambia el atributo Source para usar `user.primaryauthoritativeemail`. - 3. En Additional claims, crea las siguientes claims: - | Name | Value | - | ---- | ----- | - | `firstName` | `user.givenname` | - | `lastName` | `user.surname` | - - - Una vez que la aplicación esté configurada, ve a la sección "SAML Certificates" y envíanos el App Federation Metadata URL. - Habilitaremos la conexión por nuestra parte con esta información. - - - Ve a "Users and groups" en tu aplicación de Entra y añade a los usuarios que deben tener acceso a tu dashboard. - - - - \ No newline at end of file diff --git a/es/advanced/subpath/cloudflare.mdx b/es/advanced/subpath/cloudflare.mdx deleted file mode 100644 index 5cf1837e4..000000000 --- a/es/advanced/subpath/cloudflare.mdx +++ /dev/null @@ -1,208 +0,0 @@ ---- -title: "Cloudflare" -description: "Aloja la documentación en una subruta personalizada con Cloudflare Workers" ---- - -import Propagating from "/snippets/es/custom-subpath-propagating.mdx"; - -Para alojar tu documentación en una subruta personalizada como `yoursite.com/docs` con Cloudflare, necesitas crear y configurar un Cloudflare Worker. - - - Antes de empezar, necesitas una cuenta de Cloudflare y un nombre de dominio (puede gestionarse dentro o fuera de Cloudflare). - - - -
- ## Estructura del repositorio -
- -Tus archivos de documentación deben organizarse dentro de tu repositorio para que coincidan con la estructura de subruta que elijas. Por ejemplo, si quieres que tu documentación esté en `yoursite.com/docs`, crea un directorio `docs/` con todos tus archivos de documentación. - -
- ## Configura un Cloudflare Worker -
- -Crea un Cloudflare Worker siguiendo la [guía de inicio de Cloudflare Workers](https://developers.cloudflare.com/workers/get-started/dashboard/), si aún no lo has hecho. - - - Si tu proveedor de DNS es Cloudflare, no habilites el proxy para el registro CNAME. - - -
- ### Proxies con implementaciones de Vercel -
- -Si usas Cloudflare como proxy con implementaciones de Vercel, debes asegurarte de una configuración adecuada para evitar conflictos con la verificación del domain de Vercel y el aprovisionamiento de certificados SSL. - -Una configuración de proxy incorrecta puede impedir que Vercel aprovisione certificados SSL de Let's Encrypt y causar fallas en la verificación del domain. - -
- #### Lista obligatoria de rutas permitidas -
- -Tu Cloudflare Worker debe permitir el tráfico hacia estas rutas específicas sin bloquear ni redirigir: - -- `/.well-known/acme-challenge/*` - Obligatorio para la verificación de certificados de Let's Encrypt -- `/.well-known/vercel/*` - Obligatorio para la verificación del domain en Vercel - -Aunque Cloudflare maneja automáticamente muchas reglas de verificación, crear reglas personalizadas adicionales puede bloquear inadvertidamente este tráfico crítico. - -
- #### Requisitos para el reenvío de encabezados -
- -Asegúrate de que el encabezado `HOST` se reenvíe correctamente en la configuración de tu Worker. Si los encabezados no se reenvían correctamente, las solicitudes de verificación fallarán. - -
- ### Configurar el enrutamiento -
- -En tu dashboard de Cloudflare, selecciona **Edit Code** y agrega el siguiente script en el código de tu Worker. Consulta la [documentación de Cloudflare](https://developers.cloudflare.com/workers-ai/get-started/dashboard/#development) para obtener más información sobre cómo editar un Worker. - - - Reemplaza `[SUBDOMAIN]` por tu subdomain único, `[YOUR_DOMAIN]` por la URL base de tu sitio web y `/docs` por la subruta deseada si es diferente. - - -```javascript -addEventListener("fetch", (event) => { - event.respondWith(handleRequest(event.request)); -}); - -async function handleRequest(request) { - try { - const urlObject = new URL(request.url); - - // Si la solicitud es a una ruta de verificación de Vercel, permitir que pase - if (urlObject.pathname.startsWith('/.well-known/')) { - return await fetch(request); - } - - // Si la solicitud es al subdirectorio docs - if (/^\/docs/.test(urlObject.pathname)) { - // Entonces hacer proxy a Mintlify - const DOCS_URL = "[SUBDOMAIN].mintlify.dev"; - const CUSTOM_URL = "[YOUR_DOMAIN]"; - - let url = new URL(request.url); - url.hostname = DOCS_URL; - - let proxyRequest = new Request(url, request); - - proxyRequest.headers.set("Host", DOCS_URL); - proxyRequest.headers.set("X-Forwarded-Host", CUSTOM_URL); - proxyRequest.headers.set("X-Forwarded-Proto", "https"); - // Si se despliega en Vercel, preservar la IP del cliente - proxyRequest.headers.set("CF-Connecting-IP", request.headers.get("CF-Connecting-IP")); - - return await fetch(proxyRequest); - } - } catch (error) { - // Si no se encuentra ninguna acción, ejecutar la solicitud normal - return await fetch(request); - } -} -``` - -Selecciona **Deploy** y espera a que los cambios se propaguen. - - - - -
- ### Prueba tu Worker -
- -Después de desplegar tu código, prueba tu Worker para asegurarte de que dirige a tu documentación de Mintlify. - -1. Prueba usando la URL de vista previa del Worker: `your-worker.your-subdomain.workers.dev/docs` -2. Verifica que el Worker dirige a tu documentación de Mintlify y a tu sitio web. - -
- ### Agregar domain personalizado -
- -1. En tu [dashboard de Cloudflare](https://dash.cloudflare.com/), ve a tu Worker. -2. Ve a **Settings > Domains & Routes > Add > Custom Domain**. -3. Agrega tu domain. - - - Recomendamos agregar tu domain tanto con `www.` como sin `www.` al inicio. - - -Consulta [Add a custom domain](https://developers.cloudflare.com/workers/configuration/routing/custom-domains/#add-a-custom-domain) en la documentación de Cloudflare para obtener más información. - -
- ### Resolver conflictos de DNS -
- -Si tu domain ya apunta a otro servicio, debes eliminar el registro de DNS existente. Tu Cloudflare Worker debe estar configurado para controlar todo el tráfico de tu domain. - -1. Elimina el registro de DNS existente para tu domain. Consulta [Eliminar registros de DNS](https://developers.cloudflare.com/dns/manage-dns-records/how-to/create-dns-records/#delete-dns-records) en la documentación de Cloudflare para obtener más información. -2. Vuelve a tu Worker y añade tu domain personalizado. - -
- ## Enrutamiento personalizado en Webflow -
- -Si usas Webflow para alojar tu sitio principal y quieres servir la documentación de Mintlify en `/docs` en el mismo domain, necesitarás configurar enrutamiento personalizado con Cloudflare Workers para redirigir mediante proxy todo el tráfico que no sea de docs hacia tu sitio principal. - - - Asegúrate de que tu sitio principal esté configurado en una página de aterrizaje antes de implementar este Worker, o los visitantes de tu sitio principal verán errores. - - -1. En Webflow, configura una página de aterrizaje para tu sitio principal, por ejemplo `landing.yoursite.com`. Esta será la página que verán los visitantes cuando entren a tu sitio. -2. Implementa tu sitio principal en la página de aterrizaje. Esto garantiza que tu sitio principal siga siendo accesible mientras configuras el Worker. -3. Para evitar conflictos, actualiza cualquier URL absoluta en tu sitio principal para que sea relativa. -4. En Cloudflare, selecciona **Edit Code** y agrega el siguiente script en el código de tu Worker. - - Reemplaza `[SUBDOMAIN]` por tu subdomain única, `[YOUR_DOMAIN]` por la URL base de tu sitio web, `[LANDING_DOMAIN]` por la URL de tu página de aterrizaje y `/docs` por la subruta que desees si es distinta. - -```javascript - addEventListener("fetch", (event) => { - event.respondWith(handleRequest(event.request)); - }); - async function handleRequest(request) { - try { - const urlObject = new URL(request.url); - - // Si la solicitud es a una ruta de verificación de Vercel, permitir que pase - if (urlObject.pathname.startsWith('/.well-known/')) { - return await fetch(request); - } - - // Si la solicitud es al subdirectorio docs - if (/^\/docs/.test(urlObject.pathname)) { - // Proxy a Mintlify - const DOCS_URL = "[SUBDOMAIN].mintlify.dev"; - const CUSTOM_URL = "[YOUR_DOMAIN]"; - let url = new URL(request.url); - url.hostname = DOCS_URL; - let proxyRequest = new Request(url, request); - proxyRequest.headers.set("Host", DOCS_URL); - proxyRequest.headers.set("X-Forwarded-Host", CUSTOM_URL); - proxyRequest.headers.set("X-Forwarded-Proto", "https"); - // Si se despliega en Vercel, preservar la IP del cliente - proxyRequest.headers.set("CF-Connecting-IP", request.headers.get("CF-Connecting-IP")); - return await fetch(proxyRequest); - } - // Enrutar todo lo demás al sitio principal - const MAIN_SITE_URL = "[LANDING_DOMAIN]"; - if (MAIN_SITE_URL && MAIN_SITE_URL !== "[LANDING_DOMAIN]") { - let mainSiteUrl = new URL(request.url); - mainSiteUrl.hostname = MAIN_SITE_URL; - return await fetch(mainSiteUrl, { - method: request.method, - headers: request.headers, - body: request.body - }); - } - } catch (error) { - // Si no se encuentra ninguna acción, servir la solicitud regular - return await fetch(request); - } - } -``` - -5. Selecciona **Deploy** y espera a que los cambios se propaguen. - - diff --git a/es/advanced/subpath/route53-cloudfront.mdx b/es/advanced/subpath/route53-cloudfront.mdx deleted file mode 100644 index d338f3998..000000000 --- a/es/advanced/subpath/route53-cloudfront.mdx +++ /dev/null @@ -1,237 +0,0 @@ ---- -title: "AWS Route 53 y CloudFront" -sidebarTitle: "AWS" -description: "Aloja la documentación en una subruta personalizada usando servicios de AWS" ---- - -import Propagating from "/snippets/es/custom-subpath-propagating.mdx"; - -Para alojar tu documentación en una subruta personalizada como `yoursite.com/docs` con AWS Route 53 y CloudFront, debes configurar tu proveedor de DNS para que apunte a tu distribución de CloudFront. - - -
- ## Estructura del repositorio -
- -Los archivos de documentación deben organizarse dentro de tu repositorio para que coincidan con la estructura de subruta que elijas. Por ejemplo, si quieres que tu documentación esté en `yoursite.com/docs`, crea un directorio `docs/` con todos tus archivos de documentación. - -
- ## Descripción general -
- -Redirige el tráfico a estas rutas con una política de caché **CachingDisabled**: - -- `/.well-known/acme-challenge/*` - Obligatorio para la verificación de certificados de Let's Encrypt -- `/.well-known/vercel/*` - Obligatorio para la verificación del domain -- `/docs/*` - Obligatorio para el enrutamiento por subruta -- `/docs/` - Obligatorio para el enrutamiento por subruta - -Redirige el tráfico a esta ruta con una política de caché **CachingEnabled**: - -- `/mintlify-assets/_next/static/*` -- `Default (*)` - La página de inicio de tu sitio web - -Todos los comportamientos deben tener una **política de solicitud de origen** de `AllViewerExceptHostHeader`. - -![Página de CloudFront "Behaviors" con 4 comportamientos: `/docs/*`, `/docs`, `Default` y `/.well-known/*`.](/images/cloudfront/all-behaviors.png) - -
- ## Crear una distribución de CloudFront -
- -1. Ve a [CloudFront](https://aws.amazon.com/cloudfront) en la consola de AWS. -2. Selecciona **Create distribution**. - - - ![Página de CloudFront Distributions con el botón "Create distribution" resaltado.](/images/cloudfront/create-distribution.png) - - -3. En Origin domain, introduce `[SUBDOMAIN].mintlify.dev`, donde `[SUBDOMAIN]` es el subdomain único de tu proyecto. - - - ![Página de CloudFront "Create distribution" mostrando "acme.mintlify.dev" como el origin domain.](/images/cloudfront/origin-name.png) - - -4. En "Web Application Firewall (WAF)", habilita las protecciones de seguridad. - - - ![Opciones de Web Application Firewall (WAF) con "Enable security protections" seleccionado.](/images/cloudfront/enable-security-protections.png) - - -5. Deja el resto de la configuración con los valores predeterminados. -6. Selecciona **Create distribution**. - -
- ## Agregar origen predeterminado -
- -1. Después de crear la distribución, ve a la pestaña "Origins". - - - ![Una distribución de CloudFront con la pestaña "Origins" resaltada.](/images/cloudfront/origins.png) - - -2. Busca tu URL de staging que refleje el dominio principal. Esto varía mucho según dónde esté alojada tu landing page. Por ejemplo, la URL de staging de Mintlify es [mintlify-landing-page.vercel.app](https://mintlify-landing-page.vercel.app). - - - Si tu landing page está alojada en Webflow, usa la URL de staging de Webflow. Se verá como `.webflow.io`. - - Si usas Vercel, usa el domain `.vercel.app` disponible para cada proyecto. - - -3. Crea un nuevo Origin y agrega tu URL de staging como el "Origin domain". - - - ![Página de CloudFront "Create origin" con un campo de entrada "Origin domain" resaltado.](/images/cloudfront/default-origin.png) - - -A estas alturas, deberías tener dos Origins: uno con `[SUBDOMAIN].mintlify.app` y otro con tu URL de staging. - - - ![Página de CloudFront "Origins" con dos orígenes: uno para `mintlify` y otro para `mintlify-landing-page`.](/images/cloudfront/final-origins.png) - - -
- ## Configurar comportamientos -
- -Los comportamientos en CloudFront permiten controlar la lógica de subrutas. A grandes rasgos, queremos implementar la siguiente lógica: - -- **Si un usuario llega a tu subruta personalizada**, dirigir a `[SUBDOMAIN].mintlify.dev`. -- **Si un usuario llega a cualquier otra página**, dirigir a la página de inicio actual. - -1. Ve a la pestaña "Behaviors" de tu distribución de CloudFront. - - - ![Pestaña "Behaviors" de CloudFront resaltada.](/images/cloudfront/behaviors.png) - - -2. Selecciona el botón **Create behavior** y crea los siguientes comportamientos. - -
- ### `/.well-known/*` -
- -Crea comportamientos para las rutas de verificación de dominio de Vercel con un **Patrón de ruta** de `/.well-known/*` y configura **Origin and origin groups** a la URL de tu documentación. - -Para "Cache policy", selecciona **CachingDisabled** para asegurarte de que estas solicitudes de verificación se transmitan sin caché. - - - ![Página de CloudFront "Create behavior" con un "Path pattern" de "/.well-known/*" y "Origin and origin groups" apuntando a la URL de staging.](/images/cloudfront/well-known-policy.png) - - - -Si `.well-known/*` es demasiado genérico, puedes acotarlo a un mínimo de 2 comportamientos para Vercel: - - `/.well-known/vercel/*` - Obligatorio para la verificación de dominio de Vercel - - `/.well-known/acme-challenge/*` - Obligatorio para la verificación de certificados de Let's Encrypt - - -
- ### Tu subruta personalizada -
- -Crea un comportamiento con un **Patrón de ruta** para la subruta que elijas, por ejemplo `/docs`, con **Origin and origin groups** apuntando a la URL `.mintlify.dev` (en nuestro caso `acme.mintlify.dev`). - -- Configura "Cache policy" en **CachingOptimized**. -- Configura "Origin request policy" en **AllViewerExceptHostHeader**. -- Configura "Viewer Protocol Policy" en **Redirect HTTP to HTTPS**. - - - ![Página de CloudFront "Create behavior" con un "Path pattern" de "/docs/*" y "Origin and origin groups" apuntando a la URL `acme.mintlify.dev`.](/images/cloudfront/behavior-1.png) - - -
- ### Tu subruta personalizada con comodín -
- -Crea un comportamiento con un **Patrón de ruta** de la subruta que elijas seguida de `/*`, por ejemplo `/docs/*`, y **Origen y grupos de orígenes** apuntando a la misma URL `.mintlify.dev`. - -Estos ajustes deben coincidir exactamente con el comportamiento de tu subruta base, con la excepción del **Patrón de ruta**. - -- Establece "Cache policy" en **CachingOptimized**. -- Establece "Origin request policy" en **AllViewerExceptHostHeader**. -- Establece "Viewer protocol policy" en **Redirect HTTP to HTTPS**. - -
- ### `/mintlify-assets/_next/static/*` -
- -- Configura "Cache policy" en **CachingOptimized** - - Configura "Origin request policy" en **AllViewerExceptHostHeader** - - Configura "Viewer protocol policy" en **Redirect HTTP to HTTPS** - -
- ### `Default (*)` -
- -Por último, vamos a editar el comportamiento `Default (*)`. - - - ![Una distribución de CloudFront con el comportamiento "Default (*)" seleccionado y el botón Edit enfatizado.](/images/cloudfront/default-behavior-1.png) - - -1. Cambia **Origin and origin groups** del comportamiento predeterminado a la URL de staging (en nuestro caso, `mintlify-landing-page.vercel.app`). - - - ![Página de CloudFront "Edit behavior" con el campo de entrada "Origin and origin groups" resaltado.](/images/cloudfront/default-behavior-2.png) - - -2. Selecciona **Guardar cambios**. - -
- ### Comprueba que los comportamientos estén configurados correctamente -
- -Si seguiste los pasos anteriores, tus comportamientos deberían verse así: - - - ![Página de CloudFront “Behaviors” con 4 comportamientos: `/docs/*`, `/docs`, `Default` y `/.well-known/*`.](/images/cloudfront/all-behaviors.png) - - -
- ## Vista previa de la distribución -
- -Ahora puedes comprobar si tu distribución está configurada correctamente yendo a la pestaña "General" y visitando la URL de **Distribution domain name**. - - - ![Pestaña "General" de CloudFront con la URL de "Distribution domain name" resaltada.](/images/cloudfront/preview-distribution.png) - - -Todas las páginas deberían redirigir a tu página de inicio principal, pero si agregas la subruta que elegiste, por ejemplo `/docs`, a la URL, deberías ver que te lleva a tu instancia de documentación de Mintlify. - -
- ## Conectar con Route53 -
- -Ahora llevaremos la funcionalidad de la distribución de CloudFront a tu domain principal. - - - Para esta sección, también puedes consultar la guía oficial de AWS sobre [Configurar - Amazon Route 53 para enrutar el tráfico a una - distribución de CloudFront](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-cloudfront-distribution.html#routing-to-cloudfront-distribution-config) - - -1. Ve a [Route53](https://aws.amazon.com/route53) en la consola de AWS. -2. Ve a la "Hosted zone" de tu domain principal. -3. Selecciona **Create record**. - - - ![Página de "Records" de Route 53 con el botón "Create record" resaltado.](/images/cloudfront/route53-create-record.png) - - -4. Activa `Alias` y luego, en **Route traffic to**, elige la opción `Alias to CloudFront distribution`. - - - ![Página "Create record" de Route 53 con el interruptor "Alias" y el menú "Route traffic to" resaltados.](/images/cloudfront/create-record-alias.png) - - -5. Selecciona **Create records**. - - - Es posible que debas eliminar el registro A existente si ya hay uno. - - -Tu documentación ahora está disponible en la subruta que elegiste para tu domain principal. - - \ No newline at end of file diff --git a/es/advanced/subpath/vercel.mdx b/es/advanced/subpath/vercel.mdx deleted file mode 100644 index d2301dcb7..000000000 --- a/es/advanced/subpath/vercel.mdx +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: "Vercel" -description: "Aloja la documentación en una subruta personalizada con Vercel" ---- - -import { VercelJsonGenerator } from "/snippets/es/vercel-json-generator.mdx"; - - -
- ## archivo vercel.json -
- -El archivo `vercel.json` define cómo se compila y se implementa tu proyecto. Se ubica en el directorio raíz y controla varios aspectos de la implementación, como el enrutamiento, las redirecciones, los encabezados y la configuración de compilación. - -Usamos la configuración `rewrites` para hacer de proxy las solicitudes desde tu dominio principal hacia tu documentación. - -Las reescrituras mapean las solicitudes entrantes a distintos destinos sin cambiar la URL en el navegador. Cuando alguien visita `yoursite.com/docs`, Vercel obtendrá internamente el contenido desde `your-subdomain.mintlify.dev/docs`, pero la persona seguirá viendo `yoursite.com/docs` en su navegador. Esto difiere de las redirecciones, que enviarían a los usuarios a una URL completamente distinta. - -Puedes personalizar la subruta con cualquier valor que prefieras, como `/docs`, `/help` o `/guides`. Además, puedes usar subrutas profundamente anidadas como `/product/docs`. - -
- ## Estructura del repositorio -
- -Tus archivos de documentación deben estar organizados dentro de tu repositorio para que coincidan con la estructura de la subruta que elijas. Por ejemplo, si quieres tu documentación en `yoursite.com/docs`, deberías crear un directorio `docs/` con todos tus archivos de documentación. - -
- ## Configuración -
- -Para alojar tu documentación en una subruta personalizada con Vercel, agrega la siguiente configuración a tu archivo `vercel.json`. Este ejemplo usa `/docs`, pero puedes reemplazarlo por cualquier subruta: - -```json -{ - "rewrites": [ - { - "source": "/docs", - "destination": "https://[subdomain].mintlify.dev/docs" - }, - { - "source": "/docs/:match*", - "destination": "https://[subdomain].mintlify.dev/docs/:match*" - } - ] -} -``` - -* **`source`**: El patrón de ruta en tu domain que activa la reescritura. -* **`destination`**: A dónde se debe enrutar por proxy la solicitud. -* **`:match*`**: Un comodín que captura cualquier segmento de ruta después de tu subruta. - -Para obtener más información, consulta [Configuring projects with vercel.json: Rewrites](https://vercel.com/docs/projects/project-configuration#rewrites) en la documentación de Vercel. - - -
- ### Generar redirecciones -
- -Ingresa tu subdomain y el subdirectorio personalizado para generar las redirecciones de tu archivo `vercel.json`. - - - -
- ## Uso de proxies externos con Vercel -
- -Si utilizas un proxy externo (como Cloudflare o AWS CloudFront) delante de tu implementación en Vercel, debes configurarlo correctamente para evitar conflictos con la verificación del domain de Vercel y el aprovisionamiento de certificados SSL. - -Una configuración incorrecta del proxy puede impedir que Vercel aprovisione certificados SSL de Let's Encrypt y provocar fallos en la verificación del domain. - -Consulta los [proveedores compatibles](https://vercel.com/guides/how-to-setup-verified-proxy#supported-providers-verified-proxy-lite) en la documentación de Vercel. - -
- ### Lista obligatoria de rutas permitidas -
- -Tu proxy externo debe permitir el tráfico a estas rutas específicas sin bloquear, redirigir ni aplicar un almacenamiento en caché agresivo: - -- `/.well-known/acme-challenge/*` - Obligatorio para la verificación de certificados de Let's Encrypt -- `/.well-known/vercel/*` - Obligatorio para la verificación de domain de Vercel -- `/mintlify-assets/_next/static/*` - Obligatorio para los recursos estáticos - -Estas rutas deben pasar directamente a tu implementación en Vercel sin modificaciones. - -
- ### Requisitos para el reenvío de encabezados -
- -Asegúrate de que tu proxy reenvíe correctamente el encabezado `HOST`. Sin un reenvío adecuado de ese encabezado, las solicitudes de verificación fallarán. - -
- ### Probar la configuración de tu proxy -
- -Para verificar que tu proxy esté configurado correctamente: - -1. Comprueba que `https://[yourdomain].com/.well-known/vercel/` devuelva una respuesta. -2. Asegúrate de que los certificados SSL se estén aprovisionando correctamente en tu dashboard de Vercel. -3. Verifica que la verificación del domain se complete correctamente. \ No newline at end of file diff --git a/es/analytics/improving-docs.mdx b/es/analytics/improving-docs.mdx deleted file mode 100644 index 32884af38..000000000 --- a/es/analytics/improving-docs.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: "Mejorar tu documentación" -description: "Usa datos de Analytics para mejorar tu documentación" ---- - -Mejora tu documentación a partir de datos cuantitativos y cualitativos de tu dashboard de Analytics. - -
- ## Insights entre Analytics -
- -Combina información de múltiples fuentes de Analytics para obtener una visión integral de tu documentación. - -
- ### Correlaciona tráfico y satisfacción -
- -- **Alto tráfico y bajas valoraciones**: Páginas populares con una experiencia de usuario deficiente. Prioriza mejorar estas páginas. -- **Bajo tráfico y altas valoraciones**: Documentación que funciona bien, pero puede no ser fácil de descubrir. Considera promocionar estas páginas. -- **Alto tráfico y altas valoraciones**: Los mayores éxitos de tu documentación. Revisa estas páginas para inspirarte y mejorar el resto de tu contenido. - -
- ### Alinea la intención de búsqueda con el rendimiento del contenido -
- -- **Alto volumen de búsqueda y pocas vistas de página**: Problemas de descubrimiento. Considera reubicar estas páginas o revisar su frontmatter. -- **Términos de búsqueda populares y resultados con baja confianza**: Oportunidad por brecha de contenido. Considera agregar más contenido o nuevo contenido sobre estos temas. -- **Búsquedas más populares y comentarios negativos en las páginas correspondientes**: Problemas de experiencia del usuario. Revisa las páginas para ver si responden a la necesidad del usuario que motivó la búsqueda. - -
- ## Convierte las ideas en acción -
- -Usa estos patrones de Analytics combinados para priorizar las mejoras de tu documentación: - -- **Soluciona primero los problemas de mayor impacto**: Las páginas populares con malas calificaciones de feedback afectan a más usuarios. -- **Cubre las brechas de contenido confirmadas**: Las búsquedas de baja confianza y alto volumen indican necesidades de los usuarios no satisfechas. -- **Responde al feedback de los usuarios**: El feedback contextual y sobre fragmentos de código puede señalar áreas específicas de mejora. -- **Alinea la búsqueda con el contenido**: Asegúrate de que tus temas más buscados tengan páginas completas y bien organizadas. -- **Supervisa las tendencias de búsqueda en alza sin páginas populares existentes**: Nuevas oportunidades de contenido. \ No newline at end of file diff --git a/es/api-playground/customization/adding-sdk-examples.mdx b/es/api-playground/customization/adding-sdk-examples.mdx deleted file mode 100644 index 998496a30..000000000 --- a/es/api-playground/customization/adding-sdk-examples.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: "Agregar ejemplos de SDK" -description: "Muestra fragmentos de código específicos por idioma junto a tus endpoints de API para enseñar a los desarrolladores cómo usar tus SDK" ---- - -Si tus usuarios interactúan con tu API mediante un SDK en lugar de directamente a través de una solicitud de red, puedes usar la extensión `x-codeSamples` para agregar ejemplos de código a tu documento de OpenAPI y mostrarlos en tus páginas de OpenAPI. - -Esta propiedad se puede agregar a cualquier método de solicitud y tiene el siguiente esquema. - - - El idioma del ejemplo de código. - - - - La etiqueta del ejemplo. Es útil cuando se proporcionan varios ejemplos para un mismo endpoint. - - - - El código fuente del ejemplo. - - -Aquí tienes un ejemplo de fragmentos de código para una aplicación de seguimiento de plantas, que incluye tanto una herramienta de CLI en Bash como un SDK de JavaScript. - -```yaml -paths: - /plants: - get: - # ... - x-codeSamples: - - lang: bash - label: Listar todas las plantas sin regar - source: | - planter list -u - - lang: javascript - label: Listar todas las plantas sin regar - source: | - const planter = require('planter'); - planter.list({ unwatered: true }); - - lang: bash - label: Listar todas las plantas en maceta - source: | - planter list -p - - lang: javascript - label: Listar todas las plantas en maceta - source: | - const planter = require('planter'); - planter.list({ potted: true }); -``` diff --git a/es/api-playground/customization/complex-data-types.mdx b/es/api-playground/customization/complex-data-types.mdx deleted file mode 100644 index 4359dbe1c..000000000 --- a/es/api-playground/customization/complex-data-types.mdx +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: "Tipos de datos complejos" -description: "Describe APIs con esquemas flexibles, propiedades opcionales y múltiples formatos de datos usando los keywords `oneOf`, `anyOf` y `allOf`" ---- - -Cuando tu API acepta varios formatos de datos, tiene campos condicionales o utiliza patrones de herencia, los keywords de composición de esquemas de OpenAPI te ayudan a documentar estas estructuras flexibles. Con `oneOf`, `anyOf` y `allOf`, puedes describir APIs que procesan distintos tipos de entrada o combinan varios esquemas en modelos de datos completos. - - - -
- ## Palabras clave `oneOf`, `anyOf`, `allOf` -
- -Para tipos de datos complejos, OpenAPI proporciona palabras clave para combinar esquemas: - -* `allOf`: Combina varios esquemas (como fusionar objetos o extender un esquema base). Opera como un operador `and`. -* `anyOf`: Acepta datos que coincidan con cualquiera de los esquemas proporcionados. Opera como un operador `or`. -* `oneOf`: Acepta datos que coincidan exactamente con uno de los esquemas proporcionados. Opera como un operador `exclusive-or`. - -Mintlify trata `oneOf` y `anyOf` de manera idéntica, ya que la diferencia práctica rara vez afecta el uso de la API. - -Para consultar las especificaciones detalladas de estas palabras clave, revisa la [documentación de OpenAPI](https://swagger.io/docs/specification/data-models/oneof-anyof-allof-not/). - -La palabra clave `not` no es compatible actualmente. - -
- ### Combinación de esquemas con `allOf` -
- -Cuando usas `allOf`, Mintlify realiza cierto preprocesamiento en tu documento de OpenAPI para mostrar combinaciones complejas de manera legible. Por ejemplo, cuando combinas dos esquemas de objeto con `allOf`, Mintlify unifica las propiedades de ambos en un solo objeto. Esto resulta especialmente útil al aprovechar los [components](https://swagger.io/docs/specification/components/) reutilizables de OpenAPI. - -```yaml -org_with_users: - allOf: - - $ref: '#/components/schemas/Org' - - type: object - properties: - users: - type: array - description: Una matriz que contiene todos los usuarios de la organización -# ... -components: - schemas: - Org: - type: object - properties: - id: - type: string - description: El ID de la organización -``` - - - - - El ID de la organización - - - - Un arreglo que contiene a todos los usuarios de la organización - - - - -
- ### Proporcionar opciones con `oneOf` y `anyOf` -
- -Cuando usas `oneOf` o `anyOf`, las opciones se muestran en un contenedor con pestañas. Especifica un campo `title` en cada subesquema para asignar nombres a tus opciones. Por ejemplo, así podrías mostrar dos tipos diferentes de direcciones de entrega: - -```yaml -delivery_address: - oneOf: - - title: StreetAddress - type: object - properties: - address_line_1: - type: string - description: La dirección postal del destinatario - # ... - - title: POBox - type: object - properties: - box_number: - type: string - description: El número del apartado postal - # ... -``` - - -
- - - - La dirección de la vivienda - - - - - - El número del apartado postal - - - -
-
diff --git a/es/api-playground/customization/managing-page-visibility.mdx b/es/api-playground/customization/managing-page-visibility.mdx deleted file mode 100644 index d3d7eafb6..000000000 --- a/es/api-playground/customization/managing-page-visibility.mdx +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: "Administrar la visibilidad de las páginas" -description: "Controla qué endpoints de tu especificación de OpenAPI aparecen en la navegación de tu documentación" ---- - -Puedes controlar qué operaciones de OpenAPI se publican como páginas de documentación y su visibilidad en la navegación. Esto es útil para endpoints internos, operaciones en desuso, funciones beta o endpoints que deberían ser accesibles mediante una URL directa pero no detectables a través de la navegación del sitio. - -Si tus páginas se generan automáticamente a partir de un documento de OpenAPI, puedes gestionar la visibilidad de las páginas con las extensiones `x-hidden` y `x-excluded`. - - - -
- ## `x-hidden` -
- -La extensión `x-hidden` crea una página para un endpoint, pero la oculta de la navigation. La página solo es accesible si se navega directamente a su URL. - -Algunos casos de uso comunes de `x-hidden` son: - -- Endpoints que deseas documentar, pero no destacar. -- Páginas a las que enlazarás desde otro contenido. -- Endpoints para usuarios específicos. - - - -
- ## `x-excluded` -
- -La extensión `x-excluded` excluye por completo un endpoint de tu documentación. - -Los casos de uso comunes de `x-excluded` son: - -- Endpoints internos únicamente. -- Endpoints en desuso que no quieres documentar. -- Funcionalidades beta que aún no están listas para la documentación pública. - - - -
- ## Implementación -
- -Añade la extensión `x-hidden` o `x-excluded` bajo el método HTTP en tu especificación de OpenAPI. - -Aquí tienes ejemplos de cómo usar cada propiedad en un documento de esquema de OpenAPI para un endpoint y una ruta de webhook. - -```json {11, 19} -"paths": { - "/plants": { - "get": { - "description": "Devuelve todas las plantas de la tienda", - "parameters": { /*...*/ }, - "responses": { /*...*/ } - } - }, - "/hidden_plants": { - "get": { - "x-hidden": true, - "description": "Devuelve todas las plantas algo secretas de la tienda", - "parameters": { /*...*/ }, - "responses": { /*...*/ } - } - }, - "/secret_plants": { - "get": { - "x-excluded": true, - "description": "Devuelve todas las plantas ultra secretas de la tienda (¡no publiques este endpoint!)", - "parameters": { /*...*/ }, - "responses": { /*...*/ } - } - } -}, -``` - -```json {9, 15} -"webhooks": { - "/plants_hook": { - "post": { - "description": "Webhook para información sobre una nueva planta agregada a la tienda", - } - }, - "/hidden_plants_hook": { - "post": { - "x-hidden": true, - "description": "Webhook para información algo secreta sobre una nueva planta agregada a la tienda" - } - }, - "/secret_plants_hook": { - "post": { - "x-excluded": true, - "description": "Webhook para información ultra secreta sobre una nueva planta agregada a la tienda (¡no publiques este endpoint!)" - } - } -} -``` diff --git a/es/api-playground/customization/multiple-responses.mdx b/es/api-playground/customization/multiple-responses.mdx deleted file mode 100644 index 84f555ebf..000000000 --- a/es/api-playground/customization/multiple-responses.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: "Multiple responses" -description: "Mostrar variaciones de respuesta para el mismo endpoint" ---- - -Si tu API devuelve respuestas diferentes según los parámetros de entrada, el contexto del usuario u otras condiciones de la solicitud, puedes documentar varios ejemplos de respuesta con la propiedad `examples`. - -Esta propiedad se puede añadir a cualquier respuesta y tiene el siguiente esquema. - -```yaml -responses: - "200": - description: Respuesta exitosa - content: - application/json: - schema: - $ref: "#/components/schemas/YourResponseSchema" - examples: - us: - summary: Respuesta para Estados Unidos - value: - countryCode: "US" - currencyCode: "USD" - taxRate: 0.0825 - gb: - summary: Respuesta para Reino Unido - value: - countryCode: "GB" - currencyCode: "GBP" - taxRate: 0.20 -``` diff --git a/es/api-playground/migrating-from-mdx.mdx b/es/api-playground/migrating-from-mdx.mdx deleted file mode 100644 index c89b5d4c9..000000000 --- a/es/api-playground/migrating-from-mdx.mdx +++ /dev/null @@ -1,163 +0,0 @@ ---- -title: "Migración de páginas de API en MDX a navigation de OpenAPI" -sidebarTitle: "Migración desde MDX" -description: "Actualiza de páginas individuales de endpoints en MDX a una generación automatizada con OpenAPI y navigation flexible" -icon: "arrow-big-right-dash" ---- - -Si actualmente usas páginas individuales en `MDX` para los endpoints de tu API, puedes migrar a la generación automática de páginas a partir de tu especificación de OpenAPI, conservando la personalización de las páginas individuales. Esto puede ayudarte a reducir la cantidad de archivos que debes mantener y a mejorar la coherencia de tu documentación de API. - -Puedes definir metadata y contenido para cada endpoint en tu especificación de OpenAPI y organizar los endpoints donde quieras en tu navigation. - -
- ## Migración con la CLI -
- -El comando `mint migrate-mdx` es la forma recomendada de migrar de páginas de endpoint en MDX a páginas autogeneradas. - -Este comando: - -* Analiza la estructura de navigation en `docs.json`. -* Identifica las páginas MDX que generan páginas de endpoints de OpenAPI. -* Extrae el contenido de archivos MDX y lo mueve a la extensión `x-mint` en tu especificación de OpenAPI. -* Actualiza tu `docs.json` para referenciar directamente los endpoints de OpenAPI en lugar de archivos MDX. -* Elimina los archivos MDX originales de endpoints. - - - Si ya tienes `x-mint` definido para un endpoint y también tienes una página MDX con contenido para ese endpoint, el contenido de MDX sobrescribirá la configuración existente de `x-mint`. - - Si tienes varias páginas MDX para el mismo endpoint con contenido diferente, el script usará el contenido de la página que aparezca de última en tu `docs.json`. - - La herramienta de migración no admite la vista previa de los cambios antes de aplicarlos. - - - - - Asegúrate de que tu especificación de OpenAPI sea válida e incluya todos los endpoints que deseas documentar. - - Cualquier página MDX que quieras migrar debe tener el frontmatter `openapi:` que haga referencia a un endpoint. - - - Valida tu archivo de OpenAPI usando el [Swagger Editor](https://editor.swagger.io/) o la [Mint CLI](https://www.npmjs.com/package/mint). - - - - - Si es necesario, instala o actualiza la [Mint CLI](/es/installation). - - - - ```bash - mint migrate-mdx - ``` - - - -
- ## Pasos de migración manual -
- - - - Asegúrate de que tu especificación de OpenAPI sea válida e incluya todos los endpoints que quieres documentar. - - Para los endpoints cuyo metadata o contenido quieras personalizar, agrega la extensión `x-mint` al endpoint. Consulta [x-mint extension](/es/api-playground/openapi-setup#x-mint-extension) para más detalles. - - Para los endpoints que quieras excluir de tu documentación, agrega la extensión `x-hidden` al endpoint. - - - Valida tu archivo de OpenAPI con el [Swagger Editor](https://editor.swagger.io/) o la [Mint CLI](https://www.npmjs.com/package/mint). - - - - - Reemplaza las referencias a páginas `MDX` por endpoints de OpenAPI en tu `docs.json`. - - ```json - "navigation": { - "groups": [ - { - "group": "API Reference", - "openapi": "/path/to/openapi.json", - "pages": [ - "overview", - "authentication", - "introduction", - "GET /health", - "quickstart", - "POST /users", - "GET /users/{id}", - "advanced-features" - ] - } - ] - } - ``` - - - - Después de verificar que tu nueva navegación funciona correctamente, elimina los archivos de endpoint en `MDX` que ya no necesites. - - - - - -Puedes personalizar cómo aparece la documentación de tu API en tu navigation. - -
- ### navigation con contenido mixto -
- -Combina páginas de API generadas automáticamente con otras páginas: - -```json -"navigation": { - "groups": [ - { - "group": "Referencia de API", - "openapi": "openapi.json", - "pages": [ - "api/overview", - "GET /users", - "POST /users", - "api/autenticacion" - ] - } - ] -} -``` - -
- ### Varias versiones de la API -
- -Organiza distintas versiones de la API usando pestañas o groups: - -```json -"navigation": { - "tabs": [ - { - "tab": "API v1", - "openapi": "specs/v1.json" - }, - { - "tab": "API v2", - "openapi": "specs/v2.json" - } - ] -} -``` - -
- ## Cuándo usar páginas individuales de `MDX` -
- -Considera mantener páginas individuales de `MDX` cuando necesites: - -* Contenido personalizado amplio por endpoint, como componentes de React o ejemplos extensos. -* Diseños de página únicos. -* Enfoques de documentación experimentales para endpoints específicos. - -Para la mayoría de los casos de uso, la navigation de OpenAPI ofrece mejor mantenibilidad y coherencia. diff --git a/es/authentication-personalization/authentication-setup.mdx b/es/authentication-personalization/authentication-setup.mdx deleted file mode 100644 index 23f76c8d0..000000000 --- a/es/authentication-personalization/authentication-setup.mdx +++ /dev/null @@ -1,322 +0,0 @@ ---- -title: "Configuración de autenticación" -description: "Controla la privacidad de tu documentación mediante la autenticación de usuarios" -icon: "file-lock" -keywords: ['auth'] ---- - - - Los [planes Pro](https://mintlify.com/pricing?ref=authentication) incluyen autenticación con contraseña. - - Los [planes Enterprise](https://mintlify.com/pricing?ref=authentication) incluyen todos los métodos de autenticación. - - -La autenticación requiere que los usuarios inicien sesión antes de acceder a tu documentación. - -
- ## Modos de Autenticación -
- -Elige entre autenticación completa o parcial según tus necesidades de control de acceso. - -**Autenticación completa**: Todas las páginas están protegidas. Los usuarios deben iniciar sesión antes de acceder a cualquier contenido. - -**Autenticación parcial**: Algunas páginas son públicas, mientras que otras requieren autenticación. Los usuarios pueden navegar el contenido público libremente y autenticarse solo al acceder a páginas protegidas. - -Al configurar cualquiera de los métodos de handshake a continuación, selecciona **Autenticación completa** o **Autenticación parcial** en la configuración de tu dashboard. - -
- ## Configuración de la autenticación -
- -Selecciona el método de enlace (handshake) que deseas configurar. - - - - - La autenticación con contraseña solo proporciona control de acceso y **no** admite la personalización de contenido. - - - ### Requisitos previos - - * Tus requisitos de seguridad permiten compartir contraseñas entre usuarios. - - ### Implementación - - - - 1. En tu dashboard, ve a [Autenticación](https://dashboard.mintlify.com/settings/deployment/authentication). - 2. Selecciona **Autenticación completa** o **Autenticación parcial**. - 3. Selecciona **Contraseña**. - 4. Ingresa una contraseña segura. - 5. Selecciona **Guardar cambios**. - - - - Comparte de forma segura la contraseña y la URL de la documentación con los usuarios autorizados. - - - - ## Ejemplo - - Tu documentación está alojada en `docs.foo.com` y necesitas un control de acceso básico sin rastrear a usuarios individuales. Quieres impedir el acceso público manteniendo una configuración sencilla. - - **Crea una contraseña segura** en tu dashboard. **Comparte las credenciales** con los usuarios autorizados. ¡Listo! - - - - ### Requisitos previos - - * Tus usuarios de la documentación también son tus editores. - - ### Implementación - - - - 1. En tu dashboard, ve a [Authentication](https://dashboard.mintlify.com/settings/deployment/authentication). - 2. Selecciona **Full Authentication** o **Partial Authentication**. - 3. Selecciona **Mintlify Auth**. - 4. Selecciona **Enable Mintlify Auth**. - - - - 1. En tu dashboard, ve a [Members](https://dashboard.mintlify.com/settings/organization/members). - 2. Agrega a cada persona que deba tener acceso a tu documentación. - 3. Asigna los roles adecuados según sus permisos de edición. - - - - ### Ejemplo - - Tu documentación está alojada en `docs.foo.com` y tu equipo usa el dashboard para editarla. Quieres restringir el acceso solo a los miembros del equipo. - - **Habilita la autenticación de Mintlify** en la configuración de tu dashboard. - - **Verifica el acceso del equipo** comprobando que todos los miembros estén agregados a tu organización. - - - - ### Requisitos previos - - * Un servidor OAuth u OIDC que admita el Authorization Code Flow. - * Capacidad para crear un endpoint de API accesible mediante tokens de acceso de OAuth (opcional, para habilitar funciones de personalización). - - ### Implementación - - - - 1. En tu dashboard, ve a [Autenticación](https://dashboard.mintlify.com/settings/deployment/authentication). - 2. Selecciona **Autenticación completa** o **Autenticación parcial**. - 3. Selecciona **OAuth** y configura estos campos: - - * **Authorization URL**: Tu endpoint de OAuth. - * **Client ID**: Tu identificador de cliente de OAuth 2.0. - * **Client Secret**: Tu secreto de cliente de OAuth 2.0. - * **Scopes**: Permisos a solicitar. Copia la cadena de scope **completa** (por ejemplo, para un scope como `provider.users.docs`, copia el `provider.users.docs` completo). Usa varios scopes si necesitas distintos niveles de acceso. - * **Token URL**: Tu endpoint de intercambio de tokens de OAuth. - * **Info API URL** (opcional): Endpoint para obtener información del usuario para personalización. Si se omite, el flujo de OAuth solo se usará para verificar la identidad y la información del usuario estará vacía. - * **Logout URL**: La URL de cierre de sesión nativa de tu proveedor de OAuth. Si tu proveedor tiene un parámetro `returnTo` o similar, haz que apunte de vuelta a la URL de tu documentación. - - 4. Selecciona **Guardar cambios**. - - - - 1. Copia la **Redirect URL** desde tu [configuración de autenticación](https://dashboard.mintlify.com/settings/deployment/authentication). - 2. Agrega la redirect URL como una URL de redirección autorizada en tu servidor OAuth. - - - - Para habilitar funciones de personalización, crea un endpoint de API que: - - * Acepte tokens de acceso de OAuth para autenticación. - * Devuelva datos de usuario en el formato `User`. Consulta [User data format](/es/authentication-personalization/personalization-setup#user-data-format) para más información. - - Agrega la URL de este endpoint al campo **Info API URL** en tu [configuración de autenticación](https://dashboard.mintlify.com/settings/deployment/authentication). - - - - ### Ejemplo - - Tu documentación está alojada en `foo.com/docs` y tienes un servidor OAuth existente en `auth.foo.com` que admite el Authorization Code Flow. - - **Configura los detalles de tu servidor OAuth** en tu dashboard: - - * **Authorization URL**: `https://auth.foo.com/authorization` - * **Client ID**: `ydybo4SD8PR73vzWWd6S0ObH` - * **Scopes**: `['provider.users.docs']` - * **Token URL**: `https://auth.foo.com/exchange` - * **Info API URL**: `https://api.foo.com/docs/user-info` - * **Logout URL**: `https://auth.foo.com/logout?returnTo=https%3A%2F%2Ffoo.com%2Fdocs` - - **Crea un endpoint de información de usuario** en `api.foo.com/docs/user-info`, que requiera un token de acceso de OAuth con el scope `provider.users.docs` y que devuelva: - - ```json - { - "content": { - "firstName": "Jane", - "lastName": "Doe" - }, - "groups": ["engineering", "admin"] - } - ``` - - **Configura tu servidor de OAuth para permitir redirecciones** a tu URL de callback. - - - - ### Requisitos previos - - * Un sistema de autenticación que pueda generar y firmar JWT (JSON Web Token). - * Un servicio de backend que pueda crear URL de redirección. - - ### Implementación - - - - 1. En tu dashboard, ve a [Autenticación](https://dashboard.mintlify.com/settings/deployment/authentication). - 2. Selecciona **Autenticación completa** o **Autenticación parcial**. - 3. Selecciona **JWT**. - 4. Ingresa la URL de tu flujo de inicio de sesión existente y selecciona **Guardar cambios**. - 5. Selecciona **Generar nueva clave**. - 6. Almacena tu clave de forma segura donde tu backend pueda acceder a ella. - - - - Modifica tu flujo de inicio de sesión existente para incluir estos pasos después de autenticar al usuario: - - * Crea un JWT que contenga la información del usuario autenticado en el formato `User`. Consulta [Formato de datos de usuario](/es/authentication-personalization/personalization-setup#user-data-format) para más información. - * Firma el JWT con tu clave secreta, usando el algoritmo EdDSA. - * Crea una URL de redirección de vuelta a la ruta `/login/jwt-callback` de tu documentación, incluyendo el JWT como hash. - - - - ### Ejemplo - - Tu documentación está alojada en `docs.foo.com` con un sistema de autenticación existente en `foo.com`. Quieres extender tu flujo de inicio de sesión para conceder acceso a la documentación mientras mantienes tu documentación separada de tu dashboard (o no tienes un dashboard). - - Crea un endpoint de inicio de sesión en `https://foo.com/docs-login` que extienda tu autenticación existente. - - Después de verificar las credenciales del usuario: - - * Genera un JWT con datos del usuario en el formato de Mintlify. - * Firma el JWT y redirige a `https://docs.foo.com/login/jwt-callback#{SIGNED_JWT}`. - - - ```ts TypeScript - import * as jose from 'jose'; - import { Request, Response } from 'express'; - - const TWO_WEEKS_IN_MS = 1000 * 60 * 60 * 24 * 7 * 2; - - const signingKey = await jose.importPKCS8(process.env.MINTLIFY_PRIVATE_KEY, 'EdDSA'); - - export async function handleRequest(req: Request, res: Response) { - const user = { - expiresAt: Math.floor((Date.now() + TWO_WEEKS_IN_MS) / 1000), // 2 week session expiration - groups: res.locals.user.groups, - content: { - firstName: res.locals.user.firstName, - lastName: res.locals.user.lastName, - }, - }; - - const jwt = await new jose.SignJWT(user) - .setProtectedHeader({ alg: 'EdDSA' }) - .setExpirationTime('10 s') // 10 second JWT expiration - .sign(signingKey); - - return res.redirect(`https://docs.foo.com/login/jwt-callback#${jwt}`); - } - ``` - - ```python Python - import jwt # pyjwt - import os - - from datetime import datetime, timedelta - from fastapi.responses import RedirectResponse - - private_key = os.getenv(MINTLIFY_JWT_PEM_SECRET_NAME, '') - - @router.get('/auth') - async def return_mintlify_auth_status(current_user): - jwt_token = jwt.encode( - payload={ - 'exp': int((datetime.now() + timedelta(seconds=10)).timestamp()), # 10 second JWT expiration - 'expiresAt': int((datetime.now() + timedelta(weeks=2)).timestamp()), # 1 week session expiration - 'groups': ['admin'] if current_user.is_admin else [], - 'content': { - 'firstName': current_user.first_name, - 'lastName': current_user.last_name, - }, - }, - key=private_key, - algorithm='EdDSA' - ) - - return RedirectResponse(url=f'https://docs.foo.com/login/jwt-callback#{jwt_token}', status_code=302) - ``` - - - ### Redirección de usuarios no autenticados - - Cuando un usuario no autenticado intenta acceder a una página protegida, su destino previsto se conserva en la redirección a tu URL de inicio de sesión: - - 1. El usuario intenta visitar una página protegida: `https://docs.foo.com/quickstart`. - 2. Redirige a tu URL de inicio de sesión con un parámetro de query de redirección: `https://foo.com/docs-login?redirect=%2Fquickstart`. - 3. Después de la autenticación, redirige a `https://docs.foo.com/login/jwt-callback?redirect=%2Fquickstart#{SIGNED_JWT}`. - 4. El usuario llega a su destino original. - - - -
- ## Hacer públicas las páginas -
- -Cuando se utiliza la autenticación parcial, todas las páginas están protegidas de forma predeterminada. Puedes hacer que páginas específicas sean visibles sin autenticación, ya sea a nivel de página o de grupo, con la propiedad `public`. - -
- ### A nivel de página -
- -Para hacer que una página sea pública, agrega `public: true` al frontmatter de la página. - -```mdx Public page example ---- -title: "Página pública" -public: true ---- -``` - -
- ### Nivel de grupo -
- -Para hacer públicas todas las páginas de un grupo, agrega `"public": true` debajo del nombre del grupo en el objeto `navigation` de tu `docs.json`. - -```json Public group example -{ - "navigation": { - "groups": [ - { - "group": "Grupo público", - "public": true, - "icon": "play", - "pages": [ - "quickstart", - "installation", - "settings" - ] - }, - { - "group": "Grupo privado", - "icon": "pause", - "pages": [ - "private-information", - "secret-settings" - ] - } - ] - } -} -``` diff --git a/es/authentication-personalization/personalization-setup.mdx b/es/authentication-personalization/personalization-setup.mdx deleted file mode 100644 index 77dcaba51..000000000 --- a/es/authentication-personalization/personalization-setup.mdx +++ /dev/null @@ -1,392 +0,0 @@ ---- -title: "Configuración de personalización" -description: "Permite que los usuarios inicien sesión para disfrutar de experiencias de documentación personalizadas" -icon: "user-cog" ---- - -La personalización adapta tu documentación a cada usuario cuando inicia sesión. Por ejemplo, puedes autocompletar sus API keys, mostrar contenido específico según su plan o rol, u ocultar secciones a las que no necesitan acceder. - - - -
- ## Funciones de personalización -
- -Personaliza el contenido con estas capacidades de personalización. - -
- ### Prefill de la key de la API -
- -Completa automáticamente los campos del área de pruebas de la API con valores específicos del usuario al devolver nombres de campo que coincidan en tus datos de usuario. Los nombres de campo en tus datos de usuario deben coincidir exactamente con los nombres del área de pruebas de la API para que el autocompletado funcione. - -
- ### Contenido MDX dinámico -
- -Muestra contenido dinámico en función de información del usuario como su nombre, plan u organización usando la variable `user`. - -```jsx -¡Bienvenido de vuelta, {user.firstName}! Tu plan {user.org?.plan} incluye... -``` - -Consulte la sección [Formato de datos de usuario](#user-data-format) a continuación para ver ejemplos detallados y guía de implementación. - -
- ### Visibilidad de la página -
- -Limite qué páginas son visibles para sus usuarios agregando campos `groups` al frontmatter de sus páginas. De forma predeterminada, todas las páginas son visibles para todos los usuarios. - -Los usuarios solo verán las páginas de los `groups` a los que pertenecen. - -```mdx ---- -title: "Gestión de tus usuarios" -description: "Agregar y eliminar usuarios de tu organización" -groups: ["admin"] ---- -``` - - -
- ## Formato de datos de usuario -
- -Al implementar la personalización, tu sistema devuelve los datos de usuario en un formato específico que permite personalizar el contenido. Estos datos pueden enviarse como un objeto JSON en bruto o dentro de un JWT (JSON Web Token) firmado, según tu método de handshake. La estructura de los datos es la misma en ambos casos. - -```tsx -type User = { - expiresAt?: number; - groups?: string[]; - content?: Record; - apiPlaygroundInputs?: { - header?: Record; - query?: Record; - cookie?: Record; - server?: Record; - }; -}; -``` - - - Tiempo de expiración de la sesión en **segundos desde el epoch**. Si el usuario carga una página después de este tiempo, sus datos almacenados se eliminan automáticamente y deberá volver a autenticarse. - Para handshakes con JWT: Esto difiere del claim `exp` del JWT, que determina cuándo un JWT se considera inválido. Por seguridad, establece el claim `exp` del JWT en una duración corta (10 segundos o menos). Usa `expiresAt` para la duración real de la sesión (de horas a semanas). - - - - Lista de grupos a los que pertenece el usuario. Las páginas con `groups` coincidentes en su frontmatter serán visibles para este usuario. - - **Ejemplo**: Un usuario con `groups: ["admin", "engineering"]` puede acceder a páginas etiquetadas con los grupos `admin` o `engineering`. - - - - Datos personalizados accesibles en tu contenido `MDX` a través de la variable `user`. Úsalo para personalización dinámica en toda tu documentación. - - **Ejemplo básico**: - - ```json - { "firstName": "Ronan", "company": "Acme Corp", "plan": "Enterprise" } - ``` - - **Uso en `MDX`**: - - ```mdx - Welcome back, {user.firstName}! Your {user.plan} plan includes... - ``` - - Con los datos de `user` del ejemplo, se renderizaría como: Welcome back, Ronan! Your Enterprise plan includes... - - **Renderizado condicional avanzado**: - - ```jsx - Authentication is an enterprise feature. { - user.org === undefined - ? <>To access this feature, first create an account at the Mintlify dashboard. - : user.org.plan !== 'enterprise' - ? <>You are currently on the ${user.org.plan ?? 'free'} plan. See our pricing page for information about upgrading. - : <>To request this feature for your enterprise org, contact your admin. - } - ``` - - - La información en `user` solo está disponible para usuarios que han iniciado sesión. Para los usuarios que han cerrado sesión, el valor de `user` será `{}`. Para evitar que la página falle en usuarios que no han iniciado sesión, usa siempre el encadenamiento opcional en tus campos de `user`. Por ejemplo, `{user.org?.plan}`. - - - - - Valores específicos del usuario que rellenan previamente los campos del área de pruebas de la API. Ahorra tiempo al autocompletar sus datos cuando prueban APIs. - - **Ejemplo**: - - ```json - { - "header": { "X-API-Key": "user_api_key_123" }, - "server": { "subdomain": "foo" }, - "query": { "org_id": "12345" } - } - ``` - - Si un usuario realiza solicitudes en un subdominio específico, puedes enviar `{ server: { subdomain: 'foo' } }` como un campo `apiPlaygroundInputs`. Este valor se rellenará previamente en cualquier página de la API con el valor `subdomain`. - - Los campos `header`, `query` y `cookie` solo se rellenarán previamente si forman parte de tu [esquema de seguridad de OpenAPI](https://swagger.io/docs/specification/authentication/). Si un campo está en las secciones `Authorization` o `Server`, se rellenará previamente. Crear un parámetro de cabecera estándar llamado `Authorization` no habilitará esta función. - - -
- ### Datos de usuario de ejemplo -
- -```json -{ - "expiresAt": 1735689600, - "groups": ["admin", "beta-users"], - "content": { - "firstName": "Jane", - "lastName": "Smith", - "company": "TechCorp", - "plan": "Enterprise", - "region": "us-west" - }, - "apiPlaygroundInputs": { - "header": { - "Authorization": "Bearer abc123", - "X-Org-ID": "techcorp" - }, - "server": { - "environment": "production", - "region": "us-west" - } - } -} -``` - - -
- ## Configuración de la personalización -
- -Selecciona el método de autenticación que deseas configurar. - - - - - - ### Requisitos previos - - * Un sistema de inicio de sesión que pueda generar y firmar JWT - * Un servicio backend que pueda crear URL de redirección - - ### Implementación - - - - 1. En tu dashboard, ve a [Autenticación](https://dashboard.mintlify.com/settings/deployment/authentication). - 2. Selecciona **Personalization**. - 3. Selecciona **JWT**. - 4. Ingresa la URL de tu flujo de inicio de sesión existente y selecciona **Guardar cambios**. - 5. Selecciona **Generate new key**. - 6. Almacena tu key de forma segura donde tu backend pueda acceder a ella. - - - - Modifica tu flujo de inicio de sesión existente para incluir estos pasos después de que el usuario inicie sesión: - - * Crea un JWT que contenga la información del usuario autenticado en el formato `User`. Consulta la sección [User data format](#user-data-format) más arriba para obtener más información. - * Firma el JWT con la key secreta, usando el algoritmo ES256. - * Crea una URL de redirección de vuelta a tu documentación, incluyendo el JWT como hash. - - - - ### Ejemplo - - Tu documentación está alojada en `docs.foo.com`. Quieres que tu documentación esté separada de tu dashboard (o no tienes un dashboard) y habilitar la personalización. - - Genera un secreto JWT. Luego crea un endpoint de inicio de sesión en `https://foo.com/docs-login` que inicie un flujo de inicio de sesión hacia tu documentación. - - Después de verificar las credenciales del usuario: - - * Genera un JWT con los datos del usuario en el formato de Mintlify. - * Firma el JWT y redirige a `https://docs.foo.com#{SIGNED_JWT}`. - - ```ts - import * as jose from 'jose'; - import { Request, Response } from 'express'; - - const TWO_WEEKS_IN_MS = 1000 * 60 * 60 * 24 * 7 * 2; - - const signingKey = await jose.importPKCS8(process.env.MINTLIFY_PRIVATE_KEY, 'ES256'); - - export async function handleRequest(req: Request, res: Response) { - const user = { - expiresAt: Math.floor((Date.now() + TWO_WEEKS_IN_MS) / 1000), - groups: res.locals.user.groups, - content: { - firstName: res.locals.user.firstName, - lastName: res.locals.user.lastName, - }, - }; - - const jwt = await new jose.SignJWT(user) - .setProtectedHeader({ alg: 'ES256' }) - .setExpirationTime('10 s') - .sign(signingKey); - - return res.redirect(`https://docs.foo.com#${jwt}`); - } - ``` - - ### Conservación de anclas de página - - Para redirigir a los usuarios a secciones específicas después de iniciar sesión, usa este formato de URL: `https://docs.foo.com/page#jwt={SIGNED_JWT}&anchor={ANCHOR}`. - - **Ejemplo**: - - * URL original: `https://docs.foo.com/quickstart#step-one` - * URL de redirección: `https://docs.foo.com/quickstart#jwt={SIGNED_JWT}&anchor=step-one` - - - - ### Requisitos previos - - * Un servidor OAuth que sea compatible con el flujo Authorization Code con PKCE - * Capacidad para crear un endpoint de API accesible mediante tokens de acceso de OAuth - - ### Implementación - - - - Crea un endpoint de API que: - - * Acepte tokens de acceso de OAuth para la autenticación. - * Devuelva datos de usuario en el formato `User`. Consulta la sección [User data format](#user-data-format) anterior para obtener más información. - * Defina los scopes de acceso. - - - - 1. En tu dashboard, ve a [Authentication](https://dashboard.mintlify.com/settings/deployment/authentication). - 2. Selecciona **Personalization**. - 3. Selecciona **OAuth** y configura estos campos: - - * **Authorization URL**: Tu endpoint de autorización de OAuth. - * **Client ID**: Tu identificador de cliente de OAuth 2.0. - * **Scopes**: Permisos a solicitar. Copia la cadena de scope **completa** (por ejemplo, para un scope como `provider.users.docs`, copia el `provider.users.docs` completo). Debe coincidir con los scopes del endpoint que configuraste en el primer paso. - * **Token URL**: Tu endpoint de intercambio de tokens de OAuth. - * **Info API URL**: Endpoint para obtener datos de usuario para la personalización. Creado en el primer paso. - - 4. Selecciona **Guardar cambios** - - - - 1. Copia la **Redirect URL** de tu [authentication settings](https://dashboard.mintlify.com/settings/deployment/authentication). - 2. Agrega esta URL como URL de redirección autorizada en la configuración de tu servidor OAuth. - - - - ### Ejemplo - - Tu documentación está alojada en `foo.com/docs` y tienes un servidor OAuth existente que admite el flujo PKCE. Quieres personalizar tu documentación según los datos del usuario. - - **Crea un endpoint de información de usuario** en `api.foo.com/docs/user-info`, que requiera un token de acceso de OAuth con el scope `provider.users.docs` y responda con los datos personalizados del usuario: - - ```json - { - "content": { - "firstName": "Jane", - "lastName": "Doe" - }, - "groups": ["engineering", "admin"] - } - ``` - - **Configura los detalles de tu servidor OAuth** en tu dashboard: - - * **Authorization URL**: `https://auth.foo.com/authorization` - * **Client ID**: `ydybo4SD8PR73vzWWd6S0ObH` - * **Scopes**: `['docs-user-info']` - * **Token URL**: `https://auth.foo.com/exchange` - * **Info API URL**: `https://api.foo.com/docs/user-info` - - **Configura tu servidor OAuth** para permitir redirecciones a tu URL de retorno. - - - - ### Requisitos previos - - * Un dashboard o portal de usuario con autenticación de sesión basada en cookies. - * Capacidad para crear un endpoint de API en el mismo origen o subdomain que tu dashboard. - * Si tu dashboard está en `foo.com`, la **API URL** debe comenzar con `foo.com` o `*.foo.com`. - * Si tu dashboard está en `dash.foo.com`, la **API URL** debe comenzar con `dash.foo.com` o `*.dash.foo.com`. - * Tu documentación está alojada en el mismo domain o subdomain que tu dashboard. - * Si tu dashboard está en `foo.com`, tu **documentación** debe estar alojada en `foo.com` o `*.foo.com`. - * Si tu dashboard está en `*.foo.com`, tu **documentación** debe estar alojada en `foo.com` o `*.foo.com`. - - ### Implementación - - - - Crea un endpoint de API que: - - * Use tu autenticación de sesión existente para identificar a los usuarios - * Devuelva datos de usuario en el formato `User` (consulta la sección [Formato de datos de usuario](#user-data-format) anterior) - * Si el domain de la API y el domain de la documentación **no coinciden exactamente**: - - * Agrega el domain de la documentación al encabezado `Access-Control-Allow-Origin` de tu API (no debe ser `*`). - * Establece el encabezado `Access-Control-Allow-Credentials` de tu API en `true`. - - - Habilita los encabezados CORS solo en este endpoint específico, no en toda tu API del dashboard. - - - - - 1. En tu dashboard, ve a [Autenticación](https://dashboard.mintlify.com/settings/deployment/authentication). - 2. Selecciona **Personalization**. - 3. Selecciona **Shared Session**. - 4. Ingresa tu **Info API URL**, que es el endpoint del primer paso. - 5. Ingresa tu **Login URL**, donde los usuarios inician sesión en tu dashboard. - 6. Selecciona **Guardar cambios**. - - - - ### Ejemplos - - #### Dashboard en subdomain, documentación en subdomain - - Tienes un dashboard en `dash.foo.com`, que usa autenticación de sesión basada en cookies. Las rutas de tu API del dashboard están alojadas en `dash.foo.com/api`. Quieres configurar la personalización para tu documentación alojada en `docs.foo.com`. - - **Proceso de configuración**: - - 1. **Crea el endpoint** `dash.foo.com/api/docs/user-info` que identifique a los usuarios mediante autenticación de sesión y responda con sus datos de usuario. - 2. **Agrega encabezados CORS** solo para esta ruta: - * `Access-Control-Allow-Origin`: `https://docs.foo.com` - * `Access-Control-Allow-Credentials`: `true` - 3. **Configura la API URL** en la configuración de autenticación: `https://dash.foo.com/api/docs/user-info`. - - #### Dashboard en subdomain, documentación en raíz - - Tienes un dashboard en `dash.foo.com`, que usa autenticación de sesión basada en cookies. Las rutas de tu API del dashboard están alojadas en `dash.foo.com/api`. Quieres configurar la personalización para tu documentación alojada en `foo.com/docs`. - - **Proceso de configuración**: - - 1. **Crea el endpoint** `dash.foo.com/api/docs/user-info` que identifique a los usuarios mediante autenticación de sesión y responda con sus datos de usuario. - 2. **Agrega encabezados CORS** solo para esta ruta: - * `Access-Control-Allow-Origin`: `https://foo.com` - * `Access-Control-Allow-Credentials`: `true` - 3. **Configura la API URL** en la configuración de autenticación: `https://dash.foo.com/api/docs/user-info`. - - #### Dashboard en raíz, documentación en raíz - - Tienes un dashboard en `foo.com/dashboard`, que usa autenticación de sesión basada en cookies. Las rutas de tu API del dashboard están alojadas en `foo.com/api`. Quieres configurar la personalización para tu documentación alojada en `foo.com/docs`. - - **Proceso de configuración**: - - 1. **Crea el endpoint** `foo.com/api/docs/user-info` que identifique a los usuarios mediante autenticación de sesión y responda con sus datos de usuario. - 2. **Configura la API URL** en la configuración de autenticación: `https://foo.com/api/docs/user-info` - - - No se necesita configuración de CORS ya que el dashboard y la documentación comparten el mismo domain. - - - - - diff --git a/es/code.mdx b/es/code.mdx deleted file mode 100644 index ca64949cd..000000000 --- a/es/code.mdx +++ /dev/null @@ -1,419 +0,0 @@ ---- -title: "Código" -description: "Muestra código en línea y bloques de código" -icon: "code" ---- - -
- ## Agregar ejemplos de código -
- -Puedes agregar fragmentos de código en línea o bloques de código. Los bloques de código admiten opciones meta para el resaltado de sintaxis, títulos, resaltado de líneas, icon y más. - -
- ### Código en línea -
- -Para indicar una `palabra` o `frase` como código, enciérrala entre comillas invertidas (`). - -```mdx -Para marcar una `palabra` o `frase` como código, enciérrala entre comillas invertidas (`). -``` - -
- ### Bloques de código -
- -Usa [bloques de código cercados](https://www.markdownguide.org/extended-syntax/#fenced-code-blocks) encerrando el código entre tres acentos graves. Los bloques de código se pueden copiar y, si tienes el assistant activado, los usuarios pueden pedir a la IA que explique el código. - -Especifica el lenguaje de programación para el resaltado de sintaxis y para habilitar opciones meta. Agrega cualquier opción meta, como un title o icon, después del lenguaje. - - - ```java HelloWorld.java example lines icon="java" - class HelloWorld { - public static void main(String[] args) { - System.out.println("Hello, World!"); - } - } - ``` - - ````mdx Format - ```java HelloWorld.java lines icon="java" - class HelloWorld { - public static void main(String[] args) { - System.out.println("Hello, World!"); - } - } - ``` - ```` - - -
- ## Opciones de bloque de código -
- -Puedes añadir opciones de metadatos a tus bloques de código para personalizar su apariencia. - - - Debes especificar un lenguaje de programación para un bloque de código antes de añadir cualquier otra opción de metadatos. - - -
- ### Sintaxis de las opciones -
- -* **Opciones de cadena y booleanas**: Envuélvelas con `""`, `''` o sin comillas. -* **Opciones de expresión**: Envuélvelas con `{}`, `""` o `''`. - -
- ### Resaltado de sintaxis -
- -Activa el resaltado de sintaxis especificando el lenguaje de programación después de las comillas invertidas de apertura de un bloque de código. - -Usamos [Shiki](https://shiki.style/) para el resaltado de sintaxis y admitimos todos los lenguajes disponibles. Consulta la lista completa de [lenguajes](https://shiki.style/languages) en la documentación de Shiki. - -Personaliza globalmente los temas de los bloques de código usando `styling.codeblocks` en tu archivo `docs.json`. Establece temas simples como `system` o `dark`, o configura [temas de Shiki](https://shiki.style/themes) personalizados para los modos claro y oscuro. Consulta [Configuración](/es/settings#styling) para ver las opciones disponibles. - - - ```java Ejemplo de resaltado de sintaxis - class HelloWorld { - public static void main(String[] args) { - System.out.println("Hello, World!"); - } - } - ``` - - ````mdx Format - ```java - class HelloWorld { - public static void main(String[] args) { - System.out.println("Hello, World!"); - } - } - ``` - ```` - - -
- ### Twoslash -
- -En los bloques de código de JavaScript y TypeScript, usa `twoslash` para habilitar información de tipos interactiva. Los usuarios pueden pasar el cursor sobre variables, funciones y parámetros para ver tipos y errores como en un IDE. - - - ```ts twoslash Ejemplo de Twoslash - type Pet = "cat" | "dog" | "hamster"; - - function adoptPet(name: string, type: Pet) { - return `${name} the ${type} is now adopted!`; - } - - // Pasa el cursor para ver los tipos inferidos - const message = adoptPet("Mintie", "cat"); - ``` - - ````mdx Format - ```ts twoslash - type Pet = "cat" | "dog" | "hamster"; - - function adoptPet(name: string, type: Pet) { - return `${name} the ${type} is now adopted!`; - } - - // Pasa el cursor para ver los tipos inferidos - const message = adoptPet("Mintie", "cat"); - ``` - ```` - - -
- ### Título -
- -Añade un título para etiquetar tu ejemplo de código. Usa `title="Tu título"` o una cadena en una sola línea. - - - ```javascript Ejemplo de título - const hello = "world"; - ``` - - ````mdx Format - ```javascript Ejemplo de título - const hello = "world"; - ``` - ```` - - -
- ### Icono -
- -Agrega un icono a tu bloque de código usando la propiedad `icon`. Consulta [Iconos](/es/components/icons) para ver todas las opciones disponibles. - - - ```javascript Ejemplo de icono icon="square-js" - const hello = "world"; - ``` - - ````mdx Formato - ```javascript icon="square-js" - const hello = "world"; - ``` - ```` - - -
- ### Resaltado de líneas -
- -Resalta líneas específicas en tus bloques de código usando `highlight` con los números de línea o los rangos que quieras resaltar. - - - ```javascript Ejemplo de resaltado de líneas highlight={1-2,5} - const greeting = "Hello, World!"; - function sayHello() { - console.log(greeting); - } - sayHello(); - ``` - - ````mdx Formato - ```javascript highlight={1-2,5} - const greeting = "Hello, World!"; - function sayHello() { - console.log(greeting); - } - sayHello(); - ``` - ```` - - -
- ### Enfoque de líneas -
- -Resalta líneas específicas en tus bloques de código usando `focus` con números de línea o rangos. - - - ```javascript Line focus example focus= {2,4-5} - const greeting = "Hello, World!"; - function sayHello() { - console.log(greeting); - } - sayHello(); - ``` - - ````mdx Format - ```javascript focus={2,4-5} - const greeting = "Hello, World!"; - function sayHello() { - console.log(greeting); - } - sayHello(); - ``` - ```` - - -
- ### Mostrar números de línea -
- -Muestra los números de línea en el lado izquierdo de tu bloque de código usando `lines`. - - - ```javascript Ejemplo de números de línea lines - const greeting = "Hello, World!"; - function sayHello() { - console.log(greeting); - } - sayHello(); - ``` - - ````mdx Format - ```javascript lines - const greeting = "Hello, World!"; - function sayHello() { - console.log(greeting); - } - sayHello(); - ``` - ```` - - -
- ### Expandible -
- -Permite que los usuarios expandan y contraigan bloques de código largos usando `expandable`. - - - ```python Expandable example expandable - from datetime import datetime, timedelta - from typing import Dict, List, Optional - from dataclasses import dataclass - - @dataclass - class Book: - title: str - author: str - isbn: str - checked_out: bool = False - due_date: Optional[datetime] = None - - class Library: - def __init__(self): - self.books: Dict[str, Book] = {} - self.checkouts: Dict[str, List[str]] = {} # patron -> list of ISBNs - - def add_book(self, book: Book) -> None: - if book.isbn in self.books: - raise ValueError(f"Book with ISBN {book.isbn} already exists") - self.books[book.isbn] = book - - def checkout_book(self, isbn: str, patron: str, days: int = 14) -> None: - if patron not in self.checkouts: - self.checkouts[patron] = [] - - book = self.books.get(isbn) - if not book: - raise ValueError("Book not found") - - if book.checked_out: - raise ValueError("Book is already checked out") - - if len(self.checkouts[patron]) >= 3: - raise ValueError("Patron has reached checkout limit") - - book.checked_out = True - book.due_date = datetime.now() + timedelta(days=days) - self.checkouts[patron].append(isbn) - - def return_book(self, isbn: str) -> float: - book = self.books.get(isbn) - if not book or not book.checked_out: - raise ValueError("Book not found or not checked out") - - late_fee = 0.0 - if datetime.now() > book.due_date: - days_late = (datetime.now() - book.due_date).days - late_fee = days_late * 0.50 - - book.checked_out = False - book.due_date = None - - # Remove from patron's checkouts - for patron, books in self.checkouts.items(): - if isbn in books: - books.remove(isbn) - break - - return late_fee - - def search(self, query: str) -> List[Book]: - query = query.lower() - return [ - book for book in self.books.values() - if query in book.title.lower() or query in book.author.lower() - ] - - def main(): - library = Library() - - # Add some books - books = [ - Book("The Hobbit", "J.R.R. Tolkien", "978-0-261-10295-4"), - Book("1984", "George Orwell", "978-0-452-28423-4"), - ] - - for book in books: - library.add_book(book) - - # Checkout and return example - library.checkout_book("978-0-261-10295-4", "patron123") - late_fee = library.return_book("978-0-261-10295-4") - print(f"Late fee: ${late_fee:.2f}") - - if __name__ == "__main__": - main() - ``` - - ````text Format - ```python expandable - from datetime import datetime, timedelta - from typing import Dict, List, Optional - from dataclasses import dataclass - - # ... - - if __name__ == "__main__": - main() - ``` - ```` - - -
- ### Ajuste -
- -Activa el ajuste de texto para líneas largas usando `wrap`. Esto evita el desplazamiento horizontal y facilita la lectura de líneas extensas. - - - ```javascript Wrap example wrap - const greeting = "Hello, World! I am a long line of text that will wrap to the next line."; - function sayHello() { - console.log(greeting); - } - sayHello(); - ``` - - ````mdx Format - ```javascript wrap - const greeting = "Hello, World! I am a long line of text that will wrap to the next line."; - function sayHello() { - console.log(greeting); - } - sayHello(); - ``` - ```` - - -
- ### Diff -
- -Muestra un diff visual de las líneas añadidas o eliminadas en tus bloques de código. Las líneas añadidas se resaltan en verde y las eliminadas se resaltan en rojo. - -Para crear diffs, agrega estos comentarios especiales al final de las líneas en tu bloque de código: - -* `// [!code ++]`: Marca una línea como añadida (resaltado en verde). -* `// [!code --]`: Marca una línea como eliminada (resaltado en rojo). - -Para varias líneas consecutivas, especifica el número de líneas después de dos puntos: - -* `// [!code ++:3]`: Marca la línea actual y las dos siguientes como añadidas. -* `// [!code --:5]`: Marca la línea actual y las cuatro siguientes como eliminadas. - -La sintaxis del comentario debe coincidir con tu lenguaje de programación (por ejemplo, `//` para JavaScript o `#` para Python). - - - ```js Diff example lines - const greeting = "Hello, World!"; // [!code ++] - function sayHello() { - console.log("Hello, World!"); // [!code --] - console.log(greeting); // [!code ++] - } - sayHello(); - ``` - - ````text Format - ```js lines - const greeting = "Hello, World!"; // [!code ++] - function sayHello() { - console.log("Hello, World!"); // [!code --] - console.log(greeting); // [!code ++] - } - sayHello(); - ``` - ```` - \ No newline at end of file diff --git a/es/components/files.mdx b/es/components/files.mdx deleted file mode 100644 index 27aaf153f..000000000 --- a/es/components/files.mdx +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: "Archivos" -description: "Sirve recursos estáticos desde tu documentación" -icon: "folder" ---- - -Mintlify sirve automáticamente recursos estáticos desde tu repositorio de documentación en la ruta correspondiente de tu domain. Por ejemplo, si tienes `/images/my-logo.png` en tu repositorio, el archivo de imagen estará disponible en `https://docs.your-project.com/images/my-logo.png`. - -Esto funciona para cualquier tipo de archivo que quieras poner a disposición de tus usuarios, incluidos imágenes, PDF, videos o esquemas. - -Los archivos deben pesar menos de 20 MB para imágenes y 100 MB para otros tipos de archivo. - -
- ## Extensiones de archivo compatibles -
- -Mintlify admite las siguientes extensiones de archivos estáticos. - -
- ### Formatos de imagen -
- -- `.jpeg`, `.jpg`, `.jfif`, `.pjpeg`, `.pjp` -- `.png` -- `.svg`, `.svgz` -- `.ico` -- `.webp` -- `.gif`, `.apng` -- `.avif` -- `.bmp` -- `.tiff`, `.tif` - -
- ### Formatos de vídeo -
- -- `.mp4` -- `.webm` -- `.ogg` -- `.avi` -- `.mov` -- `.wmv` -- `.flv` -- `.mkv` -- `.m4v` - -
- ### Formatos de audio -
- -- `.mp3` -- `.wav` -- `.flac` -- `.aac` -- `.ogg` -- `.wma` -- `.m4a` - -
- ### Formatos de documento -
- -- `.pdf` -- `.txt` -- `.doc`, `.docx` -- `.xls`, `.xlsx` -- `.ppt`, `.pptx` -- `.rtf` -- `.odt`, `.ods`, `.odp` - -
- ### Formatos de datos -
- -- `.csv` -- `.tsv` -- `.xml` - -
- ## Organización de archivos -
- -Organiza tus archivos en carpetas para que tu repositorio sea fácil de navegar: - -```text -/your-project - |- docs.json - |- images/ - |- logo.png - |- screenshots/ - |- dashboard.png - |- assets/ - |- whitepaper.pdf - |- demo-video.mp4 -``` - -Los archivos se sirven desde la raíz de tu domain, por lo que la estructura de tu repositorio se corresponde directamente con la estructura de la URL. Siguiendo el ejemplo anterior, `assets/whitepaper.pdf` estaría disponible en `https://docs.your-project.com/assets/whitepaper.pdf`. diff --git a/es/editor/branches.mdx b/es/editor/branches.mdx deleted file mode 100644 index 84dcb1909..000000000 --- a/es/editor/branches.mdx +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: "Trabajar con branches" -description: "Usa branches para realizar y revisar cambios sin afectar tu documentación en producción" ---- - -Los branches son una característica del control de versiones que apuntan a confirmaciones específicas en tu repositorio. Tu rama de implementación, normalmente llamada `main`, representa el contenido que se usa para compilar tu documentación en producción. Todos los demás branches son independientes de tu documentación en producción, a menos que decidas fusionarlos en tu rama de implementación. - -Los branches te permiten crear instancias separadas de tu documentación para hacer cambios, recibir revisiones y probar nuevos enfoques antes de publicar. Tu equipo puede trabajar en branches para actualizar diferentes partes de tu documentación al mismo tiempo sin afectar lo que los usuarios ven en tu sitio en producción hasta que publiques cualquier cambio. - -Recomendamos trabajar siempre desde branches al actualizar la documentación para mantener estable tu sitio en producción y habilitar flujos de revisión. - - - - Pon nombres claros a los branches para que tu equipo entienda en qué estás trabajando. - - Elimina los branches después de fusionarlos para mantener tu repositorio organizado. - - Informa a tu equipo cuando estés trabajando en cambios importantes que puedan afectar su trabajo. - - -
- ## Crear una branch -
- -1. Selecciona el nombre de la branch en la barra de herramientas del editor (normalmente `main` por defecto). -2. Selecciona **New Branch**. -3. Escribe un nombre descriptivo para tu branch, como `update-getting-started` o `fix-api-examples`. -4. Selecciona **Create Branch**. - -
- ## Guardar cambios en una branch -
- -Para guardar tus cambios en una branch, selecciona el botón **Guardar cambios** en la esquina superior derecha del editor. Esto crea una confirmación y envía tu trabajo a tu branch. - -
- ## Cambiar de branch -
- -1. Selecciona el nombre de la branch en la barra de herramientas del editor. -2. Selecciona la branch a la que quieres cambiar en el menú desplegable. - - - Los cambios no guardados se perderán al cambiar de branch. Asegúrate de guardar o publicar tu trabajo antes de cambiar de branch. - \ No newline at end of file diff --git a/es/editor/git-concepts.mdx b/es/editor/git-concepts.mdx deleted file mode 100644 index dac21455e..000000000 --- a/es/editor/git-concepts.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: "Conceptos de Git" -description: "Aprende los fundamentos de Git para el flujo de trabajo de documentación como código" ---- - -Git es un sistema de control de versiones que te permite realizar un seguimiento de los cambios en tu documentación y colaborar con los miembros del equipo. Con Git, para cada archivo de tu proyecto puedes ver qué cambió, cuándo y por qué. Git también facilita volver a versiones anteriores de los archivos si alguna vez lo necesitas. - -El editor web realiza algunas operaciones de Git en segundo plano. Comprender estos conceptos te ayudará a trabajar de forma más eficaz con el editor web y a colaborar con los miembros del equipo que trabajan en sus entornos de desarrollo locales. - -
- ## Conceptos fundamentales de Git -
- - - - La fuente de tu documentación, donde se almacenan todos los archivos y su historial. El editor web se conecta a tu repositorio para acceder al contenido y modificarlo. - - - - Una instantánea guardada de tus cambios en un momento específico. Cada confirmación incluye un mensaje que describe qué cambió y crea un registro permanente en el historial de tu proyecto. - - - - Una branch apunta a una confirmación específica en tu repositorio. Tu documentación en producción se compila a partir de una rama de implementación. Puedes tener cualquier cantidad de otras branches con cambios que aún no se han publicado en tu documentación en producción. Si deseas incorporar los cambios de una branch en tu documentación en producción, puedes fusionarla en tu rama de implementación mediante una solicitud de extracción. - - Usa branches para trabajar en cambios sin afectar tu documentación en producción, experimentar de forma segura con nuevas funcionalidades y obtener revisiones antes de publicar. - - - - La branch principal de tu proyecto desde la cual se compila el contenido de tu documentación en producción. Los cambios en esta branch se publican automáticamente en tu sitio de documentación. A menudo se llama `main`, pero puedes establecer cualquier branch como tu rama de implementación. - - - - Una forma de proponer fusionar tus cambios en una branch en tu documentación en producción. Permite revisión y discusión antes de que los cambios se publiquen. Comúnmente llamada PR, y también denominada merge request en GitLab. - - - - Un diff (o diferencia) muestra los cambios entre dos versiones de un archivo. Al revisar solicitudes de extracción, los diffs resaltan lo que se agregó, eliminó o modificó, lo que facilita identificar qué cambió. - - - -
- ## Cómo utiliza Git el editor web -
- -El editor web se conecta a tu repositorio de Git mediante la [Aplicación de GitHub](/es/settings/github) o la [integración con GitLab](/es/settings/gitlab) y automatiza operaciones comunes de Git. - -Cuando: - -* **Abres un archivo**: El editor obtiene la versión más reciente de tu repositorio y garantiza que siempre trabajes con contenido actualizado. -* **Realizas cambios**: El editor registra tus cambios como un borrador que puede convertirse en una confirmación cuando estés listo para guardar tu trabajo. -* **Guardar cambios**: El editor realiza una confirmación con tus cambios, preservando tu trabajo en el historial del proyecto. -* **Creas una branch**: El editor crea una nueva branch en tu repositorio que puede ser utilizada por cualquier persona con acceso al repositorio para colaborar y revisar cambios. -* **Publicas en tu rama de implementación**: El editor realiza una confirmación y hace push directamente a tu rama de implementación, lo que publica tus cambios de inmediato. -* **Publicas en otras branches**: El editor crea una solicitud de extracción, lo que te permite recibir comentarios de otras personas antes de fusionar tus cambios en tu rama de implementación. - -
- ## Mejores prácticas de Git -
- -Cada equipo desarrollará sus propios flujos de trabajo y preferencias, pero estas son algunas prácticas recomendadas generales para empezar. - -* **Escribe mensajes de confirmación descriptivos**: Sé específico sobre qué cambió usando un lenguaje activo. -* **Usa nombres de branch descriptivos**: Los nombres de branch deben explicar el trabajo que se está realizando y ser significativos para alguien que esté viendo las branches en tu repositorio. -* **Mantén las branches enfocadas**: Mantén los cambios en una branch enfocados en una tarea o proyecto específicos. -* **Elimina las branches después de hacer merge**: Elimina las branches cuando ya no las necesites para mantener tu repositorio ordenado. \ No newline at end of file diff --git a/es/guides/assistant.mdx b/es/guides/assistant.mdx deleted file mode 100644 index 97f6e6d31..000000000 --- a/es/guides/assistant.mdx +++ /dev/null @@ -1,156 +0,0 @@ ---- -title: "Assistant" -description: "Ayuda a los usuarios a tener éxito con tu producto y a encontrar respuestas más rápido" -icon: "bot" ---- - - - El assistant se habilita automáticamente en los [planes Pro y Custom](https://mintlify.com/pricing?ref=assistant). - - -
- ## Acerca del assistant -
- -El assistant responde preguntas sobre tu documentación mediante consultas en lenguaje natural. Está integrado directamente en tu sitio de documentación, ofreciendo a los usuarios acceso inmediato a ayuda contextual. - -El assistant utiliza RAG agente (generación aumentada por recuperación) con llamadas a herramientas impulsadas por Claude Sonnet 4. Cuando los usuarios hacen preguntas, el assistant: - -* **Busca y recupera** contenido relevante de tu documentación para ofrecer respuestas precisas. -* **Cita las fuentes** y proporciona enlaces navegables que llevan a los usuarios directamente a las páginas referenciadas. -* **Genera ejemplos de código que se pueden copiar** para ayudar a los usuarios a implementar soluciones a partir de tu documentación. - -Cada mensaje enviado al assistant cuenta para el límite de mensajes de tu plan. Si superas ese límite, los mensajes adicionales generarán cargos por excedente. Puedes establecer límites de gasto o desactivar el assistant cuando alcances tu límite de mensajes. - -Puedes ver el uso del assistant desde tu dashboard para comprender el comportamiento de los usuarios y la efectividad de la documentación. Exporta y analiza los datos de búsqueda para ayudar a identificar: - -* Preguntas frecuentes que podrían necesitar mejor cobertura. -* Brechas de contenido donde los usuarios tienen dificultades para encontrar respuestas. -* Temas populares que podrían beneficiarse de contenido adicional. - -
- ## Configuración del assistant -
- -El assistant está habilitado de forma predeterminada para los planes Pro y Custom. Puedes administrar el assistant desde tu [dashboard](https://dashboard.mintlify.com/products/assistant/settings), incluyendo habilitarlo o deshabilitarlo, configurar el manejo de respuestas y establecer un límite de gasto. - -
- ### Estado del assistant -
- -Alterna el estado del assistant para habilitarlo o deshabilitarlo en tu sitio de documentación. - -
- ### Desvío del assistant -
- -Permite que el assistant redirija las preguntas sin respuesta a tu equipo de soporte. Proporciona una dirección de correo electrónico que el assistant dará a los usuarios que hagan preguntas que no pueda responder. - -
- ### Buscar sitios -
- - - La búsqueda de sitios está en beta. Para habilitarla en tu sitio de documentación, [contacta a nuestro equipo de ventas](mailto:gtm@mintlify.com). - - -Configura los sitios que el assistant puede consultar para obtener contexto adicional al responder preguntas. - -* Los sitios deben ser de acceso público. -* No se admiten sitios que requieran JavaScript para cargarse. - -Puedes usar la siguiente sintaxis de filtrado al configurar sitios externos: - -* **Filtrado a nivel de domain** - * `example.com`: Buscar solo en el domain `example.com` - * `docs.example.com`: Buscar solo en el subdomain `docs.example.com` - * `*.example.com`: Buscar todos los subdomains de `example.com` -* **Filtrado a nivel de ruta** - * `docs.example.com/api`: Buscar todas las páginas bajo la subruta `/api` -* **Múltiples patrones** - * Agrega varias entradas para abarcar diferentes secciones de los sitios - -
- ### Límite de gasto -
- -Establece un límite de gasto para controlar qué sucede si alcanzas tu cupo de mensajes. De forma predeterminada, el assistant seguirá respondiendo las preguntas de los usuarios después de que alcances tu cupo de mensajes, lo que genera cargos por excedente. - -En la pestaña **Billing** de la página [Assistant Configurations](https://dashboard.mintlify.com/products/assistant/settings), puedes establecer un límite de gasto para los mensajes del assistant más allá de tu cupo. Cuando alcanzas tu límite de gasto, el assistant se desactiva hasta que se restablece tu cupo de mensajes. - -También puedes configurar alertas de uso para recibir un correo electrónico cuando alcances cierto porcentaje de tu límite de gasto. - -
- ## Uso del assistant -
- -Los usuarios pueden acceder al assistant de tres maneras: - -* **Atajo de teclado**: Command + I (Ctrl + I en Windows) -* **Botón del assistant** junto a la barra de búsqueda - Barra de búsqueda y botón del assistant en modo claro. - Barra de búsqueda y botón del assistant en modo oscuro. -* **URLs** con `?assistant=open` al final abrirán el assistant cuando cargue la página. Por ejemplo, [https://mintlify.com/docs?assistant=open](https://mintlify.com/docs?assistant=open). - -Estos métodos abren un panel de chat en el lado derecho de tu documentación. Los usuarios pueden hacer cualquier pregunta y el assistant buscará una respuesta en tu documentación. Si no se encuentra información relevante, el assistant indicará que no puede responder la pregunta. - -
- ## Hacer que el contenido sea apto para la IA -
- -Estructura tu documentación para ayudar al assistant a proporcionar respuestas precisas y relevantes. Una organización clara y un contexto completo benefician tanto a las personas lectoras como a la comprensión de la IA. - - - * Usa marcado semántico. - * Escribe encabezados descriptivos para las secciones. - * Crea una jerarquía de información lógica. - * Usa un formato coherente en toda tu documentación. - * Incluye metadata completa en el frontmatter de la página. - * Divide los bloques largos de texto en párrafos más cortos. - - - - * Define términos y siglas específicas cuando se introduzcan por primera vez. - * Proporciona suficiente contenido conceptual sobre funcionalidades y procedimientos. - * Incluye ejemplos y casos de uso. - * Haz referencias cruzadas a temas relacionados. - * Agrega [páginas ocultas](/es/guides/hidden-pages) con contexto adicional que las personas usuarias no necesitan, pero a las que el assistant puede hacer referencia. - - -
- ## Exportar y analizar consultas -
- -Revisa y exporta consultas desde tu dashboard para comprender cómo las personas interactúan con tu documentación e identificar oportunidades de mejora. Algunas formas en que el análisis de consultas puede ayudarte a mejorar tu documentación: - -* Identificar brechas de contenido donde las consultas frecuentes reciben respuestas insuficientes. -* Descubrir patrones de comportamiento de los usuarios y necesidades de información comunes a partir de los temas y patrones en las consultas. -* Priorizar las páginas con mayor tráfico para mejorar su precisión y calidad. - -Puedes explorar las consultas desde tu [dashboard](https://dashboard.mintlify.com/products/assistant), pero para obtener insights más potentes recomendamos exportar un archivo `CSV` con tus consultas, respuestas y fuentes para analizarlo con tu herramienta de IA preferida. - -1. Ve a la [página del assistant](https://dashboard.mintlify.com/products/assistant) en tu dashboard. -2. Selecciona **Export to CSV**. -3. Analiza los datos exportados con tu herramienta preferida. - - - * Resume los temas más comunes de las consultas. - * Enumera las consultas que no tengan fuentes citadas. - * Encuentra patrones en interacciones sin éxito. - \ No newline at end of file diff --git a/es/guides/changelogs.mdx b/es/guides/changelogs.mdx deleted file mode 100644 index 1f4de0877..000000000 --- a/es/guides/changelogs.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -title: "Cambios" -description: "Publica actualizaciones de producto en tu documentación con un canal RSS al que los usuarios pueden suscribirse" -icon: "newspaper" ---- - -Crea una página de cambios para tu documentación añadiendo [componentes Update](/es/components/update) a una página. - -Consulta el [registro de cambios de Mintlify](/es/changelog) como ejemplo: en cada actualización puedes incluir enlaces, imágenes, texto y demos de tus nuevas funciones. - -
- ## Configurar tu página de cambios -
- - - - 1. Crea una nueva página en tu documentación, por ejemplo `changelog.mdx` o `updates.mdx`. - 2. Agrega la página de cambios a tu esquema de navigation en tu `docs.json`. - - - - Agrega un `Update` por cada entrada del registro. - - Incluye información relevante como lanzamientos de funciones, correcciones de errores u otros anuncios. - - - -```mdx Example changelog.mdx ---- -title: "Cambios" -description: "Actualizaciones del producto y anuncios" ---- - - Se añadió un nuevo sabor Wintergreen. - - Se lanzó una nueva versión del sabor Spearmint, ahora con 10% más menta. - - - - Se lanzó una nueva versión del sabor Spearmint. - -``` - -
- ## Personalización de tu página de cambios -
- -Controla cómo las personas navegan por tu página de cambios y se mantienen al día con la información de tu producto. - -
- ### Tabla de contenidos -
- -Cada propiedad `label` de un `Update` crea automáticamente una entrada en la tabla de contenidos de la barra lateral derecha. Esta es la navigation predeterminada para tu página de cambios. - - - Página de cambios con la tabla de contenidos mostrada en modo claro. - - Página de cambios con la tabla de contenidos mostrada en modo oscuro. - - -
- ### Filtros de etiquetas -
- -Agrega `tags` a tus componentes `Update` para reemplazar la tabla de contenidos por filtros de etiquetas. Los usuarios pueden filtrar la página de cambios seleccionando una o más etiquetas: - -```mdx Tag filters example wrap - - Se agregó un nuevo sabor Wintergreen. - - Se lanzó una nueva versión del sabor Spearmint, ahora con 10% más menta. - - - - Se lanzó una nueva versión del sabor Spearmint. - - - - Se marcó como en desuso el sabor Peppermint. - - Se lanzó una nueva versión del sabor Spearmint. - -``` - - - Registro de cambios en modo claro con el filtro de etiqueta Peppermint seleccionado. - - Registro de cambios en modo oscuro con el filtro de etiqueta Peppermint seleccionado. - - - - La tabla de contenido y los filtros del registro de cambios se ocultan cuando se usan los modos de página `custom`, `center` o `wide`. Más información sobre los [modos de página](/es/pages#page-mode). - - -
- ### Registros de cambios suscribibles -
- -El uso de componentes `Update` crea un feed RSS al que te puedes suscribir en la URL de tu página con `/rss.xml` añadido. Por ejemplo, `mintlify.com/docs/changelog/rss.xml`. - -Las entradas se añaden al feed RSS cuando se publican nuevos componentes `Update` y cuando se agregan nuevos encabezados dentro de etiquetas `` existentes. - -Los encabezados de nivel superior de los componentes `Update` se usan como títulos de las entradas del feed RSS, y las entradas enlazan a sus anclas de encabezado en tu documentación. - -```xml Example RSS feed - - - - <![CDATA[Actualizaciones del producto]]> - - https://mintlify.com/docs - RSS for Node - Mon, 21 Jul 2025 21:21:47 GMT - - - https://mintlify.com/docs - - <![CDATA[Junio 2025]]> - https://mintlify.com/docs/changelog#june-2025 - https://mintlify.com/docs/changelog#june-2025 - Mon, 23 Jun 2025 16:54:22 GMT - - - -``` - -Los feeds RSS pueden integrarse con Slack, el correo electrónico u otras herramientas de suscripción para notificar a los usuarios sobre cambios en el producto. Algunas opciones incluyen: - -* [Slack](https://slack.com/help/articles/218688467-Add-RSS-feeds-to-Slack) -* [Correo electrónico](https://zapier.com/apps/email/integrations/rss/1441/send-new-rss-feed-entries-via-email) vía Zapier -* Bots de Discord como [Readybot](https://readybot.io) o [RSS Feeds to Discord Bot](https://rss.app/en/bots/rssfeeds-discord-bot) - -Para que el feed RSS sea fácil de descubrir, puedes mostrar un botón con el icono de RSS que enlace al feed en la parte superior de la página. Agrega `rss: true` al frontmatter de la página: - -```mdx ---- -rss: true ---- -``` - - - Página de cambios en modo claro con el botón del feed RSS habilitado. - - Página de cambios en modo oscuro con el botón del feed RSS habilitado. - diff --git a/es/guides/csp-configuration.mdx b/es/guides/csp-configuration.mdx deleted file mode 100644 index ebd223841..000000000 --- a/es/guides/csp-configuration.mdx +++ /dev/null @@ -1,157 +0,0 @@ ---- -title: "Configuración de Content Security Policy (CSP)" -sidebarTitle: "Configuración de CSP" -description: "Lista de permitidos del domain y configuraciones de encabezados para proxies inversos, firewalls y redes que aplican políticas de seguridad estrictas" ---- - -Content Security Policy (CSP) es un estándar de seguridad que ayuda a prevenir ataques de cross-site scripting (XSS) al controlar qué recursos puede cargar una página web. Mintlify sirve una CSP predeterminada que protege a la mayoría de los sitios. Si alojas tu documentación detrás de un proxy inverso o un firewall que sobrescribe la CSP predeterminada, es posible que debas configurar los encabezados de CSP para que las funciones funcionen correctamente. - -
- ## Directivas CSP -
- -Las siguientes directivas de CSP se utilizan para controlar qué recursos se pueden cargar: - -- `script-src`: Controla qué scripts se pueden ejecutar -- `style-src`: Controla qué hojas de estilo se pueden cargar -- `font-src`: Controla qué fuentes se pueden cargar -- `img-src`: Controla qué imágenes, iconos y logotipos se pueden cargar -- `connect-src`: Controla a qué URL se puede conectar para llamadas a la API y conexiones WebSocket -- `frame-src`: Controla qué URL se pueden insertar en frames o iframes -- `default-src`: Valor predeterminado para otras directivas cuando no se especifican explícitamente - -
- ## Lista de permitidos de dominios -
- -| Dominio | Propósito | Directiva CSP | Obligatorio | -|:-------|:--------|:--------------|:-------| -| `d4tuoctqmanu0.cloudfront.net` | KaTeX CSS, fuentes | `style-src`, `font-src` | Obligatorio | -| `*.mintlify.dev` | Contenido de la documentación | `connect-src`, `frame-src` | Obligatorio | -| `*.mintlify.com` | Dashboard, API, proxy de Analytics | `connect-src` | Obligatorio | -| `leaves.mintlify.com` | API del assistant | `connect-src` | Obligatorio | -| `d3gk2c5xim1je2.cloudfront.net` | Iconos, imágenes, logotipos | `img-src` | Obligatorio | -| `d1ctpt7j8wusba.cloudfront.net` | Archivos de versión y lanzamiento de Mint | `connect-src` | Obligatorio | -| `mintcdn.com` | Imágenes, favicons | `img-src`, `connect-src` | Obligatorio | -| `*.mintcdn.com` | Imágenes, favicons | `img-src`, `connect-src` | Obligatorio | -| `api.mintlifytrieve.com` | API de búsqueda | `connect-src` | Obligatorio | -| `cdn.jsdelivr.net` | Recursos de emoji para imágenes OG | `script-src`, `img-src` | Obligatorio | -| `fonts.googleapis.com` | Google Fonts | `style-src`, `font-src` | Opcional | -| `www.googletagmanager.com` | Google Analytics/GTM | `script-src`, `connect-src` | Opcional | -| `cdn.segment.com` | Segment Analytics | `script-src`, `connect-src` | Opcional | -| `plausible.io` | Plausible Analytics | `script-src`, `connect-src` | Opcional | -| `us.posthog.com` | PostHog Analytics | `connect-src` | Opcional | -| `cdn.getkoala.com` | Koala Analytics | `script-src` | Opcional | -| `tag.clearbitscripts.com` | Seguimiento de Clearbit | `script-src` | Opcional | -| `cdn.heapanalytics.com` | Heap Analytics | `script-src` | Opcional | -| `chat.cdn-plain.com` | Widget de chat de Plain | `script-src` | Opcional | -| `chat-assets.frontapp.com` | Widget de chat de Front | `script-src` | Opcional | -| `browser.sentry-cdn.com` | Seguimiento de errores de Sentry | `script-src`, `connect-src` | Opcional | -| `js.sentry-cdn.com` | SDK de JavaScript de Sentry | `script-src` | Opcional | - -
- ## Ejemplo de configuración de CSP -
- - - Incluye solo los domain de los servicios que uses. Elimina cualquier domain de Analytics que no hayas configurado para tu documentación. - - -```text wrap -Content-Security-Policy: -default-src 'self'; -script-src 'self' 'unsafe-inline' 'unsafe-eval' cdn.jsdelivr.net www.googletagmanager.com cdn.segment.com plausible.io -us.posthog.com cdn.getkoala.com tag.clearbitscripts.com cdn.heapanalytics.com chat.cdn-plain.com chat-assets.frontapp.com -browser.sentry-cdn.com js.sentry-cdn.com; -style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; -font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; -img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net; -connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com -api.mintlifytrieve.com www.googletagmanager.com cdn.segment.com plausible.io us.posthog.com browser.sentry-cdn.com; -frame-src 'self' *.mintlify.dev; -``` - - -
- ## Configuraciones comunes según el tipo de proxy -
- -La mayoría de los proxies inversos permiten añadir encabezados personalizados. - -
- ### Configuración de Cloudflare -
- -Crea una regla de transformación de encabezados de respuesta: - -1. En tu dashboard de Cloudflare, ve a **Rules > Overview**. -2. Selecciona **Create rule > Response Header Transform Rule**. -3. Configura la regla: - -- **Modify response header**: Set static - - **Header name**: `Content-Security-Policy` - - **Header value**: - ```text wrap - default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' cdn.jsdelivr.net; style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net; connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com api.mintlifytrieve.com; frame-src 'self' *.mintlify.dev; - ``` - -4. Publica la regla. - -
- ### Configuración de AWS CloudFront -
- -Agrega una política de encabezados de respuesta en CloudFront: - -```json -{ -"ResponseHeadersPolicy": { - "Name": "MintlifyCSP", - "Config": { - "SecurityHeadersConfig": { - "ContentSecurityPolicy": { - "ContentSecurityPolicy": "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' cdn.jsdelivr.net; style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net; connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com api.mintlifytrieve.com; frame-src 'self' *.mintlify.dev;", - "Override": true - } - } - } - } -} -``` - - -
- ### Configuración de Vercel -
- -Agrega en tu `vercel.json`: - -```json -{ -"headers": [ - { - "source": "/(.*)", - "headers": [ - { - "key": "Content-Security-Policy", - "value": "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' cdn.jsdelivr.net; style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net; connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com api.mintlifytrieve.com; frame-src 'self' *.mintlify.dev;" - } - ] - } - ] -} -``` - - -
- ## Solución de problemas -
- -Identifica infracciones de CSP en la consola de tu navegador: - -1. Abre las herramientas de desarrollo de tu navegador. -2. Ve a la pestaña **Console**. -3. Busca errores que empiecen por: - - `Content Security Policy: The page's settings blocked the loading of a resource` - - `Refused to load the script/stylesheet because it violates the following Content Security Policy directive` - - `Refused to connect to because it violates the following Content Security Policy directive` \ No newline at end of file diff --git a/es/guides/deployments.mdx b/es/guides/deployments.mdx deleted file mode 100644 index 2c9c435cc..000000000 --- a/es/guides/deployments.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: "Implementaciones" -description: "Soluciona problemas de tus implementaciones" -icon: "boxes" ---- - -Tu sitio de documentación se implementa automáticamente cuando haces push de cambios al repositorio conectado. Para ello, la Aplicación de GitHub de Mintlify debe estar correctamente instalada y conectada. - -Si tus cambios más recientes no aparecen en el sitio en producción, primero verifica que la Aplicación de GitHub esté instalada en la cuenta u organización propietaria de tu repositorio de documentación. Consulta [Solución de problemas de GitHub](/es/settings/github#troubleshooting) para más información. - -Si la Aplicación de GitHub está conectada pero los cambios siguen sin implementarse, puedes activar manualmente una reconstrucción desde tu dashboard. - -
- ## Activar una implementación manualmente -
- - - - Comprueba que tu confirmación más reciente aparece en tu repositorio de documentación y que no presentó errores. - - - - Ve a tu [dashboard](https://dashboard.mintlify.com) y selecciona el botón de implementación. - - - El botón de actualización manual resaltado con un rectángulo naranja. - - El botón de actualización manual resaltado con un rectángulo naranja. - - - diff --git a/es/guides/hidden-page-example.mdx b/es/guides/hidden-page-example.mdx deleted file mode 100644 index d509142bf..000000000 --- a/es/guides/hidden-page-example.mdx +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: "Ejemplo de página oculta" -description: "Casos de uso comunes de las páginas ocultas" -icon: "eye-off" ---- - -¡Esta página está oculta! No está incluida en la navigation de `docs.json`, por lo que solo puedes acceder a ella mediante su URL. - -Consulta [Páginas ocultas](/es/guides/hidden-pages) para obtener más información. - -
- ## Casos de uso comunes de las páginas ocultas -
- - - De forma predeterminada, las páginas ocultas son de acceso público, pero no son descubribles a través de la navigation. Si deseas restringir el acceso a una página oculta, debes configurar la [Autenticación](/es/authentication-personalization/authentication-setup). - - -* **Documentación beta**: Información que puede ser pública, pero que no debería ser descubrible a través de la navigation. -* **Contexto para herramientas de IA**: Si se indexan las páginas ocultas, las herramientas de IA pueden consultarlas como contexto. Usa páginas ocultas para contexto que no sea relevante para los usuarios, pero que pueda ayudar a las herramientas de IA a ofrecer respuestas más precisas. -* **Páginas heredadas**: Mantén el contenido antiguo accesible mediante enlaces directos mientras lo retiras de los menús de navigation. -* **Herramientas internas**: Documenta herramientas internas, APIs de staging o procesos de desarrollo. - -
- ## Ejemplos -
- -
- ### Contexto de IA -
- -```mdx wrap ---- -title: "Contexto para la versión de la API" -description: "Esta página proporciona contexto para herramientas de IA que responden preguntas sobre versiones de API" ---- - -Cuando un usuario pregunte sobre versiones de API, siempre recomienda que utilice la versión más reciente de la API. Nunca generes respuestas para versiones anteriores a la 1.0.4. -``` - -
- ### Endpoint de API interno -
- -````mdx wrap ---- -title: "Endpoint de API interno" -description: "Esta página es una página oculta que documenta un endpoint de API interno" ---- - -```bash -POST /api/internal/reset-cache -Authorization: Bearer internal-token-xyz -``` - -Este endpoint limpia la caché de la aplicación y solo está disponible en entornos de desarrollo. - - - Este es un endpoint interno y nunca debe usarse en producción. - -```` diff --git a/es/guides/hidden-pages.mdx b/es/guides/hidden-pages.mdx deleted file mode 100644 index fb1ff66aa..000000000 --- a/es/guides/hidden-pages.mdx +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: "Páginas ocultas" -description: "Excluir páginas de tu navegación" -icon: "eye-closed" ---- - -Las páginas ocultas se eliminan de la navegación de tu sitio, pero siguen siendo accesibles públicamente para cualquiera que conozca su URL. - -Usa páginas ocultas para contenido que quieres que sea accesible en tu sitio o como contexto para herramientas de IA, pero que no sea descubrible a través de la navegación. - -Para contenido que requiere un control de acceso estricto, debes configurar la [Autenticación](/es/authentication-personalization/authentication-setup). - -Si quieres ocultar páginas para grupos específicos de usuarios, usa la personalización para controlar la [visibilidad de la página](/es/authentication-personalization/overview#page-visibility). - -
- ## Ocultar una página -
- -Una página está oculta si no está incluida en la propiedad `navigation` de tu `docs.json`. Para ocultarla, elimínala de tu estructura de `navigation`. - -Las páginas ocultas usan la misma estructura de URL que las páginas normales según su ruta de archivo. Por ejemplo, `guides/hidden-page.mdx` sería accesible en `docs.yoursite.com/guides/hidden-page`. - -Consulta un [ejemplo de una página oculta](/es/guides/hidden-page-example). - - - Algunos elementos de navegación como las barras laterales, los menús desplegables y las pestañas pueden aparecer vacíos o alterar el diseño en las páginas ocultas. - - -
- ## Ocultar un grupo de páginas -
- -Un grupo de páginas se oculta si la propiedad `hidden` está configurada en `true` en tu archivo `docs.json`: - -```json highlight={4} -"groups": [ - { - "group": "Primeros pasos", - "hidden": true, - "pages": [ - "index", - "quickstart" - ] - }, - { - "group": "Guías", - "pages": [ - "guides/hidden-page.mdx", - "guides/hidden-groups.mdx" - ] - } -] -``` - -En este ejemplo, el grupo `Getting started` está oculto, pero el grupo `Guides` está visible. - -
- ### Ocultar una Tab -
- -También puedes ocultar una Tab agregando la propiedad `hidden` a tu archivo `docs.json`: - -```json highlight={4} -"tabs": [ - { - "tab": "Inicio", - "hidden": true, - "pages": [ - "index", - "quickstart" - ] - } -] -``` - -
- ## Búsqueda, SEO e indexación de IA -
- -De forma predeterminada, las páginas ocultas se excluyen de la indexación para los motores de búsqueda, la búsqueda interna de tu documentación y como contexto para el assistant de IA. Para incluir páginas ocultas en los resultados de búsqueda y como contexto para el assistant, agrega la propiedad `seo` a tu `docs.json`: - -```json -"seo": { - "indexing": "all" -} -``` - -Para excluir una página específica, agrega `noindex: true` a su frontmatter. diff --git a/es/guides/migration.mdx b/es/guides/migration.mdx deleted file mode 100644 index 2d89617ff..000000000 --- a/es/guides/migration.mdx +++ /dev/null @@ -1,201 +0,0 @@ ---- -title: "Migraciones" -description: "Cómo migrar tu documentación desde la plataforma actual" -icon: "import" ---- - -Esta guía te ayuda a trasladar tu documentación existente a Mintlify. Elige la migración automatizada para las plataformas compatibles o la migración manual para tener control total del proceso. - -
- ## Elige tu ruta de migración -
- - - - Si migras desde Docusaurus, ReadMe o GitBook, usa nuestras herramientas para automatizar la migración. - - - - Si migras desde cualquier otra plataforma, sigue nuestra guía para migrar tu contenido. - - - - - - Migra tu documentación usando el [paquete @mintlify/scraping](https://www.npmjs.com/package/@mintlify/scraping). El paquete extrae tu contenido y lo convierte para usar componentes de Mintlify. - - ### Plataformas Compatibles - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -} - horizontal - /> - - - -} - horizontal - /> - - - -} - horizontal - /> - - - Si tu documentación está alojada en otra plataforma, consulta los pasos de migración manual. - - ### Instalación del scraper - - Instala el paquete `@mintlify/scraping` para empezar. - - ```bash - npm install @mintlify/scraping@latest -g - ``` - - ### Extracción de páginas y secciones - - La herramienta de migración detecta automáticamente tu plataforma de documentación y convierte tu contenido. Los archivos preparados se almacenan localmente en `./docs` de forma predeterminada. - - Para sitios de documentación grandes, migra secciones más pequeñas de forma gradual en lugar de migrar todo el sitio de una sola vez. - - **Migrar secciones completas:** - - ```bash - mintlify-scrape section https://your-docs-site.com/docs - ``` - - **Migrar páginas individuales:** - - ```bash - mintlify-scrape page https://your-docs-site.com/docs/getting-started - ``` - - **Migrar especificaciones de OpenAPI:** - - ```bash - mintlify-scrape openapi-file [nombreArchivoOpenApi] - ``` - - ### Añade contenido preparado a tu proyecto de Mintlify - - Después de extraer el contenido de tu plataforma de documentación existente, estás listo para crear tu documentación en Mintlify. - - Confirma que todas tus páginas han sido migradas y luego añade estos archivos al repositorio de documentación que creaste durante el proceso de configuración inicial. Normalmente se trata de un repositorio de GitHub. - - - - Migra tu documentación desde cualquier plataforma con control total sobre el proceso. - - ### Migración de contenido - - Para migrar tu contenido a Mintlify, necesitarás: - - * Un `docs.json` válido para la configuración de tu sitio y la navigation. Consulta [Configuración global](/es/settings) y [Navegación](/es/navigation) para obtener más información. - * Un archivo `MDX` para cada página de tu documentación. Consulta [Páginas](/es/pages) para obtener más información. - * (Opcional) Una especificación OpenAPI para las páginas de endpoints de tu API. Consulta [Configuración de OpenAPI](/es/api-playground/openapi-setup) para obtener más información. - - 1. Si tu contenido ya está en formato `MDX`, copia las páginas a tu proyecto de Mintlify. De lo contrario, convierte tu contenido al formato `MDX`. - 2. Crea tu `docs.json` haciendo referencia a las rutas de tus páginas `MDX`. - 3. Si tienes especificaciones OpenAPI, agrégalas a tu `docs.json` y configura el área de pruebas de la API. - - ### Migración de recursos - - 1. Copia los recursos al directorio `images/` de tu repositorio. - 2. Actualiza las referencias en tus archivos `MDX`: - ```mdx - ![Alt text](/images/screenshot.png) - ``` - - - -
- ## Lista de verificación posterior a la migración -
- -Después de completar tu migración (automática o manual), te recomendamos verificar: - -* Que todas las páginas se rendericen -* Que la navigation funcione como se espera -* Que los enlaces internos se resuelvan correctamente -* Que las imágenes y los recursos se carguen correctamente -* Que los bloques de código se muestren con el resaltado de sintaxis adecuado -* Que la búsqueda funcione -* Que la implementación esté configurada -* Que el dominio personalizado esté configurado diff --git a/es/guides/monorepo.mdx b/es/guides/monorepo.mdx deleted file mode 100644 index 3f514a72f..000000000 --- a/es/guides/monorepo.mdx +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: "Configuración de monorepo" -description: "Despliega tu documentación desde un repositorio que contiene múltiples proyectos" -icon: "folder-git" ---- - -Configura Mintlify para desplegar la documentación desde un directorio específico dentro de un monorepo. Esta configuración te permite mantener la documentación junto a tu código en repositorios que contienen múltiples proyectos o servicios. - - - -
- ## Requisitos previos -
- -* Acceso de administrador a tu proyecto de Mintlify. -* Archivos de documentación organizados en un directorio dedicado dentro de tu monorepo. -* Un `docs.json` válido en tu directorio de documentación. - - - -
- ## Configurar la implementación en monorepo -
- - - -Ve a [Git Settings](https://dashboard.mintlify.com/settings/deployment/git-settings) en tu dashboard. - - -El panel de configuración del proyecto en el menú Git Settings. El interruptor Set up as monorepo está activado y se especifica una ruta al directorio /docs. -El panel de configuración del proyecto en el menú Git Settings. El interruptor Set up as monorepo está activado y se especifica una ruta al directorio /docs. - - - - -1. Activa el interruptor **Set up as monorepo**. -2. Ingresa la ruta relativa a tu directorio de documentación. Por ejemplo, si tu documentación está en el directorio `docs`, ingresa `/docs`. - - No incluyas una barra al final de la ruta. - -3. Selecciona **Guardar cambios**. - - diff --git a/es/guides/reverse-proxy.mdx b/es/guides/reverse-proxy.mdx deleted file mode 100644 index 2263181fc..000000000 --- a/es/guides/reverse-proxy.mdx +++ /dev/null @@ -1,160 +0,0 @@ ---- -title: "Proxy inverso" -description: "Configura un proxy inverso personalizado para servir tu documentación" ---- - - - Las configuraciones de proxy inverso solo están disponibles en los [planes Custom](https://mintlify.com/pricing?ref=reverse-proxy). - - -Para servir tu documentación a través de un proxy inverso personalizado, debes configurar reglas de enrutamiento, políticas de caché y reenvío de encabezados. - -Cuando implementes un proxy inverso, supervisa posibles problemas con la verificación del domain, el aprovisionamiento de certificados SSL, los flujos de Autenticación, el rendimiento y el seguimiento de Analytics. - -
- ## Configuración de enrutamiento -
- -Encamina (proxy) estas rutas a tu subdomain de Mintlify con las políticas de caché indicadas: - -| Ruta | Destino | Caché | -|------|---------|-------| -| `/.well-known/acme-challenge/*` | `.mintlify.app` | Sin caché | -| `/.well-known/vercel/*` | `.mintlify.app` | Sin caché | -| `/mintlify-assets/_next/static/*` | `.mintlify.app` | Caché habilitada | -| `/_mintlify/*` | `.mintlify.app` | Sin caché | -| `/*` | `.mintlify.app` | Sin caché | -| `/` | `.mintlify.app` | Sin caché | - -
- ## Configuración obligatoria de encabezados -
- -Configura tu proxy inverso con estos requisitos de encabezados: - -- **Origin**: Contiene el subdomain de destino `.mintlify.app` -- **X-Forwarded-For**: Conserva la IP del cliente -- **X-Forwarded-Proto**: Conserva el protocolo original (HTTP/HTTPS) -- **X-Real-IP**: Reenvía la IP real del cliente -- **User-Agent**: Reenvía el agente de usuario - - - Asegúrate de no reenviar el encabezado `Host` - - -
- ## Ejemplo de configuración de Nginx -
- -```nginx -server { - listen 80; - server_name .com; - - # Rutas de verificación de Let's Encrypt - location ~ ^/\.well-known/acme-challenge/ { - proxy_pass https://.mintlify.app; - proxy_set_header Origin .mintlify.app; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header User-Agent $http_user_agent; - - # Deshabilitar caché para rutas de verificación - add_header Cache-Control "no-cache, no-store, must-revalidate"; - } - - # Rutas de verificación de Vercel - location ~ ^/\.well-known/vercel/ { - proxy_pass https://.mintlify.app; - proxy_set_header Origin .mintlify.app; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header User-Agent $http_user_agent; - - # Deshabilitar caché para rutas de verificación - add_header Cache-Control "no-cache, no-store, must-revalidate"; - } - - # Recursos estáticos con caché - location ~ ^/mintlify-assets/_next/static/ { - proxy_pass https://.mintlify.app; - proxy_set_header Origin .mintlify.app; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header User-Agent $http_user_agent; - - # Habilitar caché para recursos estáticos - add_header Cache-Control "public, max-age=86400"; - } - - # Rutas específicas de Mintlify - location ~ ^/_mintlify/ { - proxy_pass https://.mintlify.app; - proxy_set_header Origin .mintlify.app; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header User-Agent $http_user_agent; - - # Deshabilitar caché para rutas de Mintlify - add_header Cache-Control "no-cache, no-store, must-revalidate"; - } - - # Ruta raíz - location = / { - proxy_pass https://.mintlify.app; - proxy_set_header Origin .mintlify.app; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header User-Agent $http_user_agent; - - # Deshabilitar caché para contenido dinámico - add_header Cache-Control "no-cache, no-store, must-revalidate"; - } - - # Todas las demás rutas de documentación - location / { - proxy_pass https://.mintlify.app; - proxy_set_header Origin .mintlify.app; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header User-Agent $http_user_agent; - - # Deshabilitar caché para contenido dinámico - add_header Cache-Control "no-cache, no-store, must-revalidate"; - } -} -``` - - -
- ## Solución de problemas -
- -
- ### Error 404 -
- -**Síntomas**: La documentación se carga, pero las funcionalidades no funcionan. Las llamadas a la API fallan. - -**Causa**: Se está reenviando el encabezado `Host` o falta el encabezado `Origin`. - -**Solución**: - -- Elimina el reenvío del encabezado `Host` -- Configura el encabezado `Origin` como `.mintlify.app` - -
- ### Problemas de rendimiento -
- -**Síntomas**: Carga lenta de páginas y cambios en el diseño. - -**Causa**: Configuración de caché incorrecta. - -**Solución**: Habilita el caché solo para las rutas `/mintlify-assets/_next/static/*`. \ No newline at end of file diff --git a/es/image-embeds.mdx b/es/image-embeds.mdx deleted file mode 100644 index b448ea967..000000000 --- a/es/image-embeds.mdx +++ /dev/null @@ -1,194 +0,0 @@ ---- -title: "Imágenes y contenido incrustado" -description: "Agrega imágenes, videos e iframes" -icon: "image" ---- - -Agrega imágenes, incrusta videos e incluye contenido interactivo con iframes en tu documentación. - - - Fotografía de un paisaje con flores moradas en primer plano, montañas al fondo y un cielo azul con nubes dispersas. - - -
- ## Imágenes -
- -Añade imágenes para aportar contexto visual, ejemplos o elementos decorativos a tu documentación. - -
- ### Sintaxis básica de imágenes -
- -Usa la [sintaxis de Markdown](https://www.markdownguide.org/basic-syntax/#images) para agregar imágenes a tu documentación: - -```mdx -![Texto alternativo que describe la imagen](/path/to/image.png) -``` - - - Incluye siempre un texto alternativo descriptivo para mejorar la accesibilidad y el SEO. El texto alternativo debe describir claramente lo que muestra la imagen. - - -Los archivos de imagen deben pesar menos de 20 MB. Para archivos más grandes, aloja las imágenes en un servicio CDN como [Amazon S3](https://aws.amazon.com/s3) o [Cloudinary](https://cloudinary.com). - -
- ### Inserciones de imágenes en HTML -
- -Para tener más control sobre la visualización de imágenes, utiliza etiquetas `` de HTML: - -```html -Interfaz principal del dashboard -``` - -
- #### Desactivar la función de zoom -
- -Para desactivar el zoom predeterminado al hacer clic en las imágenes, añade la propiedad `noZoom`: - -```html highlight="4" -Texto alternativo descriptivo -``` - - - -Para convertir una imagen en un enlace clicable, envuelve la imagen en una etiqueta de enlace y agrega la propiedad `noZoom`: - -```html - - Logo de Mintlify - -``` - - - Las imágenes dentro de etiquetas de enlace muestran automáticamente el cursor de puntero para indicar que se pueden hacer clic. - - -
- #### Imágenes para los modos claro y oscuro -
- -Para mostrar imágenes diferentes según el tema claro u oscuro, usa clases de Tailwind CSS: - -```html - -Interfaz en modo claro - - -Interfaz en modo oscuro -``` - -
- ## Videos -
- -Mintlify admite [etiquetas HTML en Markdown](https://www.markdownguide.org/basic-syntax/#html), lo que te da flexibilidad para crear contenido enriquecido. - - - Incluye siempre texto alternativo dentro de los elementos de video para los navegadores que no admiten la reproducción de video. - - -
- ### Inserciones de YouTube -
- -Inserta videos de YouTube mediante elementos iframe: - -```html - -``` - - - -``` - - - - - Aprende a usar el componente Frame para mostrar imágenes. - \ No newline at end of file diff --git a/es/list-table.mdx b/es/list-table.mdx deleted file mode 100644 index 8e105ac28..000000000 --- a/es/list-table.mdx +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: "Listas y tablas" -description: "Mostrar información en listas y tablas" -icon: "list" ---- - - - -
- ## Listas -
- -Las listas siguen la [sintaxis oficial de Markdown](https://www.markdownguide.org/basic-syntax/#lists-1). - -
- ### Lista ordenada -
- -Para crear una lista ordenada, añade números seguidos de un punto antes de cada elemento. - -1. Primer elemento -2. Segundo elemento -3. Tercer elemento -4. Cuarto elemento - -```mdx -1. Primer elemento -2. Segundo elemento -3. Tercer elemento -4. Cuarto elemento -``` - -
- ### Lista sin ordenar -
- -Para crear una lista sin ordenar, agrega guiones (`-`), asteriscos (`*`) o signos más (`+`) antes de cada elemento. - -* Primer elemento -* Segundo elemento -* Tercer elemento -* Cuarto elemento - -```mdx -- Primer elemento -- Segundo elemento -- Tercer elemento -- Cuarto elemento -``` - -
- ### Lista anidada -
- -Indenta los elementos de la lista para anidarlos. - -* Primer elemento -* Segundo elemento - * Elemento adicional - * Elemento adicional -* Tercer elemento - -```mdx -- Primer elemento -- Segundo elemento - - Elemento adicional - - Elemento adicional -- Tercer elemento -``` - - -
- ## Tablas -
- -Las tablas siguen la [sintaxis oficial de Markdown](https://www.markdownguide.org/extended-syntax/#tables). - -Para añadir una tabla, usa tres o más guiones (`---`) para crear el encabezado de cada columna y usa barras verticales (`|`) para separar cada columna. Por compatibilidad, también debes añadir una barra vertical al inicio y al final de la fila. - -| Propiedad | Descripción | -| --------- | ------------------------------------ | -| Nombre | Nombre completo del usuario | -| Edad | Edad indicada | -| Ingreso | Si el usuario se unió a la comunidad | - -```mdx -| Property | Descripción | -| -------- | ------------------------------------- | -| Name | Nombre completo del usuario | -| Age | Edad reportada | -| Joined | Si el usuario se unió a la comunidad | -``` diff --git a/es/navigation.mdx b/es/navigation.mdx deleted file mode 100644 index 20df83d65..000000000 --- a/es/navigation.mdx +++ /dev/null @@ -1,619 +0,0 @@ ---- -title: "Navigation" -description: "Estructura y personaliza la jerarquía de navegación de tu documentación" -icon: "map" ---- - -La propiedad [navigation](es/settings#param-navigation) en `docs.json` controla la estructura y la jerarquía de la información de tu documentación. - -Con una configuración de navegación adecuada, puedes organizar tu contenido para que los usuarios encuentren exactamente lo que buscan. - -
- ## Páginas -
- -Las páginas son el componente de navegación más fundamental. Cada página corresponde a un archivo MDX que compone tu documentación. - - - - - -En el objeto `navigation`, `pages` es un array donde cada elemento debe referenciar la ruta a un [archivo de página](es/pages). - -```json -{ - "navigation": { - "pages": [ - "settings", - "pages", - "navigation", - "themes", - "custom-domain" - ] - } -} -``` - -
- ## Grupos -
- -Usa grupos para organizar la navegación de la barra lateral en secciones. Los grupos pueden anidarse, etiquetarse con etiquetas y personalizarse con iconos. - - - - - -En el objeto `navigation`, `groups` es un arreglo donde cada entrada es un objeto que requiere un campo `group` y un campo `pages`. Los campos `icon`, `tag` y `expanded` son opcionales. - -```json -{ - "navigation": { - "groups": [ - { - "group": "Primeros pasos", - "icon": "play", - "expanded": false, - "pages": [ - "quickstart", - { - "group": "Edición", - "icon": "pencil", - "pages": [ - "installation", - "editor" - ] - } - ] - }, - { - "group": "Escribiendo contenido", - "icon": "notebook-text", - "tag": "NEW", - "pages": [ - "writing-content/page", - "writing-content/text" - ] - } - ] - } -} -``` - -
- ### Estado expandido predeterminado -
- -Configura `expanded: true` en un grupo para que se muestre expandido de forma predeterminada en la barra lateral de navigation. Esto es útil para resaltar secciones importantes o mejorar la facilidad de descubrimiento del contenido clave. - -```json -{ - "group": "Comenzar", - "expanded": true, - "pages": ["quickstart", "installation"] -} -``` - -
- ## Tabs -
- -Tabs crean secciones diferenciadas de tu documentación con rutas de URL separadas. Tabs generan una barra de navegación horizontal en la parte superior de tu documentación que permite a los usuarios cambiar entre secciones. - - - - - -En el objeto `navigation`, `tabs` es un arreglo donde cada elemento es un objeto que requiere un campo `tab` y puede incluir otros campos de navegación como groups, pages, icon o enlaces a páginas externas. - -```json -{ - "navigation": { - "tabs": [ - { - "tab": "Referencia de API", - "icon": "square-terminal", - "pages": [ - "api-reference/get", - "api-reference/post", - "api-reference/delete" - ] - }, - { - "tab": "SDK", - "icon": "code", - "pages": [ - "sdk/fetch", - "sdk/create", - "sdk/delete" - ] - }, - { - "tab": "Blog", - "icon": "newspaper", - "href": "https://external-link.com/blog" - } - ] - } -} -``` - - - -Los menús añaden elementos de navegación desplegables a una Tab. Usa menús para ayudar a los usuarios a ir directamente a páginas específicas dentro de una Tab. - -En el objeto `navigation`, `menu` es un arreglo donde cada entrada es un objeto que requiere un campo `item` y puede contener otros campos de navegación como groups, pages, icons o enlaces a páginas externas. - -```json -{ - "navigation": { - "tabs": [ - { - "tab": "Herramientas para desarrolladores", - "icon": "square-terminal", - "menu": [ - { - "item": "Referencia de API", - "icon": "rocket", - "groups": [ - { - "group": "Endpoints principales", - "icon": "square-terminal", - "pages": [ - "api-reference/get", - "api-reference/post", - "api-reference/delete" - ] - } - ] - }, - { - "item": "SDK", - "icon": "code", - "description": "Los SDK se utilizan para interactuar con la API.", - "pages": [ - "sdk/fetch", - "sdk/create", - "sdk/delete" - ] - } - ] - } - ] - } -} -``` - -
- ## Anclas -
- -Las anclas agregan elementos de navegación persistentes en la parte superior de la barra lateral. Úsalas para seccionar tu contenido, ofrecer acceso rápido a recursos externos o crear llamadas a la acción destacadas. - - - - - -En el objeto `navigation`, `anchors` es un arreglo en el que cada entrada es un objeto que requiere un campo `anchor` y puede incluir otros campos de navegación como groups, páginas, iconos o enlaces a páginas externas. - -```json -{ - "navigation": { - "anchors": [ - { - "anchor": "Documentación", - "icon": "book-open", - "pages": [ - "quickstart", - "development", - "navigation" - ] - }, - { - "anchor": "Referencia de la API", - "icon": "square-terminal", - "pages": [ - "api-reference/get", - "api-reference/post", - "api-reference/delete" - ] - }, - { - "anchor": "Blog", - "href": "https://external-link.com/blog" - } - ] - } -} -``` - -Para los anclajes que dirigen únicamente a enlaces externos, usa la palabra clave `global`. Los anclajes dentro de un objeto `global` deben tener un campo `href` y no pueden apuntar a una ruta relativa. - -Los anclajes globales son especialmente útiles para enlazar a recursos que no forman parte de tu documentación, pero que deberían estar fácilmente accesibles para tus usuarios, como un blog o un portal de soporte. - -```json -{ - "navigation": { - "global": { - "anchors": [ - { - "anchor": "Comunidad", - "icon": "house", - "href": "https://slack.com" - }, - { - "anchor": "Blog", - "icon": "pencil", - "href": "https://mintlify.com/blog" - } - ] - }, - "tabs": /*...*/ - } -} -``` - - - -Los menús desplegables están en un menú desplegable en la parte superior de la barra lateral de la navegación. Cada elemento del menú dirige a una sección de tu documentación. - - - - - -En el objeto `navigation`, `dropdowns` es un arreglo donde cada entrada es un objeto que requiere el campo `dropdown` y puede incluir otros campos de navegación como groups, pages, icon, o enlaces a páginas externas. - -```json -{ - "navigation": { - "dropdowns": [ - { - "dropdown": "Documentación", - "icon": "book-open", - "pages": [ - "quickstart", - "development", - "navigation" - ] - }, - { - "dropdown": "Referencia de API", - "icon": "square-terminal", - "pages": [ - "api-reference/get", - "api-reference/post", - "api-reference/delete" - ] - }, - { - "dropdown": "Blog", - "href": "https://external-link.com/blog" - } - ] - } -} -``` - -
- ## OpenAPI -
- -Integra especificaciones de OpenAPI directamente en tu estructura de navigation para generar automáticamente la documentación de tu API. Crea secciones de API dedicadas o ubica páginas de endpoints dentro de otros componentes de navigation. - -Define una especificación de OpenAPI predeterminada en cualquier nivel de tu jerarquía de navigation. Los elementos hijos heredarán esta especificación a menos que definan la suya propia. - -```json -{ - "navigation": { - "groups": [ - { - "group": "Referencia de API", - "openapi": "/path/to/openapi-v1.json", - "pages": [ - "overview", - "authentication", - "GET /users", - "POST /users", - { - "group": "Productos", - "openapi": "/path/to/openapi-v2.json", - "pages": [ - "GET /products", - "POST /products" - ] - } - ] - } - ] - } -} -``` - -Para más información sobre cómo hacer referencia a endpoints de OpenAPI en tu documentación, consulta la [configuración de OpenAPI](/es/api-playground/openapi-setup). - -
- ## Versiones -
- -Divide tu navigation en diferentes versiones. Las versiones se pueden seleccionar desde un menú desplegable. - - - - - -En el objeto `navigation`, `versions` es un array donde cada entrada es un objeto que requiere un campo `version` y puede contener cualquier otro campo de navigation. - -```json -{ - "navigation": { - "versions": [ - { - "version": "1.0.0", - "groups": [ - { - "group": "Primeros pasos", - "pages": ["v1/overview", "v1/quickstart", "v1/development"] - } - ] - }, - { - "version": "2.0.0", - "groups": [ - { - "group": "Primeros pasos", - "pages": ["v2/overview", "v2/quickstart", "v2/development"] - } - ] - } - ] - } -} -``` - -
- ## Idiomas -
- -Divide tu navigation en distintos idiomas. Se pueden seleccionar desde un menú desplegable. - - - - - -En el objeto `navigation`, `languages` es un array donde cada elemento es un objeto que requiere el campo `language` y puede incluir cualquier otro campo de navigation. - -Actualmente admitimos los siguientes idiomas para la localización: - - - } horizontal /> - - } horizontal /> - - } horizontal /> - - } horizontal /> - - } horizontal /> - - } horizontal /> - - } horizontal /> - - } horizontal /> - - } horizontal /> - - } horizontal /> - - } horizontal /> - - } horizontal /> - - } horizontal /> - - } horizontal /> - - -```json -{ - "navigation": { - "languages": [ - { - "language": "en", - "groups": [ - { - "group": "Primeros pasos", - "pages": ["en/overview", "en/quickstart", "en/development"] - } - ] - }, - { - "language": "es", - "groups": [ - { - "group": "Primeros pasos", - "pages": ["es/overview", "es/quickstart", "es/development"] - } - ] - } - ] - } -} -``` - -Para traducciones automatizadas, [comunícate con nuestro equipo de ventas](mailto:gtm@mintlify.com) para analizar soluciones. - -
- ## Anidación -
- -Puedes usar cualquier combinación de anclas, pestañas y menús desplegables. Los componentes pueden anidarse entre sí de forma intercambiable para crear la estructura de navigation que desees. - - - ```json Anchors - { - "navigation": { - "anchors": [ - { - "anchor": "Anchor 1", - "groups": [ - { - "group": "Group 1", - "pages": [ - "some-folder/file-1", - "another-folder/file-2", - "just-a-file" - ] - } - ] - }, - { - "anchor": "Anchor 2", - "groups": [ - { - "group": "Group 2", - "pages": [ - "some-other-folder/file-1", - "various-different-folders/file-2", - "another-file" - ] - } - ] - } - ] - } - } - ``` - - ```json Tabs - { - "navigation": { - "tabs": [ - { - "tab": "Tab 1", - "groups": [ - { - "group": "Group 1", - "pages": [ - "some-folder/file-1", - "another-folder/file-2", - "just-a-file" - ] - } - ] - }, - { - "tab": "Tab 2", - "groups": [ - { - "group": "Group 2", - "pages": [ - "some-other-folder/file-1", - "various-different-folders/file-2", - "another-file" - ] - } - ] - } - ] - } - } - ``` - - ```json Tabs with external anchor - { - "navigation": { - "global": { - "anchors": [ - { - "anchor": "Anchor 1", - "href": "https://mintlify.com/docs" - } - ] - }, - "tabs": [ - { - "tab": "Tab 1", - "groups": [ - { - "group": "Group 1", - "pages": [ - "some-folder/file-1", - "another-folder/file-2", - "just-a-file" - ] - } - ] - }, - { - "tab": "Tab 2", - "groups": [ - { - "group": "Group 2", - "pages": [ - "some-other-folder/file-1", - "various-different-folders/file-2", - "another-file" - ] - } - ] - } - ] - } - } - ``` - - - - -Los breadcrumbs muestran la ruta completa de navegación en la parte superior de las páginas. Algunos temas tienen los breadcrumbs activados de forma predeterminada y otros no. Puedes controlar si los breadcrumbs están activados para tu sitio usando la propiedad `styling` en tu `docs.json`. - - - ```json Mostrar breadcrumbs completos - "styling": { - "eyebrows": "breadcrumbs" - } - ``` - - ```json Mostrar solo la sección principal - "styling": { - "eyebrows": "section" - } - ``` - - -
- ## Configuración de interacción -
- -Controla cómo los usuarios interactúan con los elementos de navegación mediante la propiedad `interaction` en tu `docs.json`. - -
- ### Habilitar la navegación automática para groups -
- -Cuando un usuario expande un grupo de navigation, algunos temas navegan automáticamente a la primera página del grupo. Puedes anular el comportamiento predeterminado del tema usando la opción `drilldown`. - -* Establécelo en `true` para forzar la navegación automática a la primera página cuando se selecciona un grupo de navigation. -* Establécelo en `false` para evitar la navegación y solo expandir o contraer el grupo cuando se selecciona. -* Déjalo sin configurar para usar el comportamiento predeterminado del tema. - - - ```json Forzar navegación - "interaction": { - "drilldown": true // Forzar la navegación a la primera página cuando un usuario expande un menú desplegable - } - ``` - - ```json Evitar navegación - "interaction": { - "drilldown": false // No navegar nunca; solo expandir o contraer el grupo - } - ``` - \ No newline at end of file diff --git a/es/pages.mdx b/es/pages.mdx deleted file mode 100644 index 8f595c3a1..000000000 --- a/es/pages.mdx +++ /dev/null @@ -1,189 +0,0 @@ ---- -title: "Páginas" -description: "Las páginas son los bloques fundamentales de tu documentación" -icon: "letter-text" -keywords: ["tags", "tag"] ---- - -Cada página es un archivo MDX, que combina contenido en Markdown con componentes de React para que puedas crear documentación rica e interactiva. - -
- ## Metadata de la página -
- -Cada página comienza con frontmatter, la metadata en YAML delimitada por `---` al inicio de un archivo. Esta metadata define cómo se muestra y cómo se comporta tu página. - -Usa la metadata para controlar: - -* Títulos y descripciones de la página -* Títulos, iconos y tags de la barra lateral - - - El título de tu página que aparece en la navigation y en las pestañas del navegador. - - - - Una breve descripción de lo que trata esta página. Aparece debajo del título y mejora el SEO (Search Engine Optimization). - - - - Un título breve que se muestra en la navigation de la barra lateral. - - - - El icono que se mostrará. - - Opciones: - - * Nombre del [icono de Font Awesome](https://fontawesome.com/icons) - * Nombre del [icono de Lucide](https://lucide.dev/icons) - * URL a un icono alojado externamente - * Ruta a un archivo de icono en tu proyecto - - - - El estilo de icono de [Font Awesome](https://fontawesome.com/icons). Solo se usa con iconos de Font Awesome. - - Opciones: `regular`, `solid`, `light`, `thin`, `sharp-solid`, `duotone`, `brands`. - - - - Un tag que aparece junto al título de tu página en la barra lateral. - - -```yaml Example YAML frontmatter wrap ---- -title: "Acerca del frontmatter" -description: "El frontmatter es el metadata que controla cómo aparece y se comporta tu página" -sidebarTitle: "Frontmatter" -icon: "book" -tag: "NEW" ---- -``` - -
- ## Modo de página -
- -Controla cómo se muestra tu página con el ajuste `mode`. - -
- ### Predeterminado -
- -Si no se define un modo, se utiliza por defecto un diseño estándar con una navigation lateral y una tabla de contenido. - -```yaml ---- -title: "Título de página predeterminado" ---- -``` - -
- ### Ancho -
- -El modo ancho oculta la tabla de contenidos. Es útil para páginas sin encabezados o si prefieres aprovechar el espacio horizontal adicional. El modo ancho está disponible en todos los temas. - -```yaml ---- -title: "Título de página amplia" -mode: "wide" ---- -``` - -
- ### Personalizado -
- -El modo personalizado ofrece un diseño minimalista que elimina todos los elementos excepto la barra superior. Es un lienzo en blanco para crear páginas de destino u otros diseños únicos en los que quieras mantener al mínimo los elementos de navigation. El modo personalizado está disponible para todos los temas. - -```yaml ---- -title: "Título de página personalizado" -mode: "custom" ---- -``` - -
- ### Frame -
- -El modo Frame ofrece un diseño similar al modo personalizado, pero conserva la navegación de la barra lateral. Este modo de página permite usar HTML y componentes personalizados mientras mantiene la experiencia de navegación predeterminada. El modo Frame solo está disponible en los temas Aspen y Almond. - -```yaml ---- -title: "Título de página Frame" -mode: "frame" ---- -``` - -
- ### Centrado -
- -El modo centrado elimina la barra lateral y la tabla de contenidos y centra el contenido. Es útil para páginas de cambios u otras en las que quieras destacar el contenido. El modo centrado está disponible en los temas Mint y Linden. - -```yaml ---- -title: "Centrar título de página" -mode: "center" ---- -``` - -
- ## Páginas de API -
- -Crea áreas de pruebas de la API interactivas añadiendo una especificación de la API a tu frontmatter, `api` u `openapi`. - -```yaml ---- -openapi: "GET /endpoint" ---- -``` - -Obtén más información sobre cómo crear [documentación de API](/es/api-playground/overview). - - - -Vincula sitios externos directamente desde tu navigation con la metadata `url`. - -```yaml ---- -title: "Paquete npm" -url: "https://www.npmjs.com/package/mint" ---- -``` - -
- ## Optimización para motores de búsqueda -
- -La mayoría de las metaetiquetas de SEO se generan automáticamente. Puedes establecer manualmente las metaetiquetas de SEO para mejorar el SEO de tu sitio, el uso compartido en redes sociales y la compatibilidad con los navegadores. - - - Las metaetiquetas con dos puntos deben ir entre comillas. - - -```yaml ---- -"twitter:image": "/images/social-preview.jpg" ---- -``` - -Consulta [SEO](/es/settings/seo) para ver todas las opciones de metadata de SEO. - -
- ## Palabras clave de búsqueda interna -
- -Mejora la capacidad de descubrimiento de una página específica en la búsqueda integrada proporcionando `keywords` en tu metadata. Estas palabras clave no aparecerán en el contenido de la página ni en los resultados de búsqueda, pero si los usuarios las buscan, se mostrará la página como resultado. - -```yaml ---- -keywords: ['configuración', 'configuración inicial', 'primeros pasos'] ---- -``` diff --git a/es/pdf-exports.mdx b/es/pdf-exports.mdx deleted file mode 100644 index 5318fa822..000000000 --- a/es/pdf-exports.mdx +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: "Exportaciones en PDF" -icon: "file-down" -description: "Exporta tus docs como un único archivo PDF" ---- - -export const DownloadPDFButton = () => { - return ( - - - Ver PDF de ejemplo - - ) -} - - - Las exportaciones en PDF están disponibles en los [planes personalizados](https://mintlify.com/pricing). - - -Puedes exportar tu documentación como un único archivo PDF para verla sin conexión. El PDF incluirá todo el contenido de la documentación, incluidas las imágenes y los enlaces, y un índice navegable. - - -
- ## Exportar un PDF -
- -1. Ve a la página [General](https://dashboard.mintlify.com/settings/deployment/general) en la sección Configuración del proyecto de tu dashboard. -2. Selecciona el botón **Exportar todo el contenido**. -3. Opcionalmente, personaliza las opciones de exportación: - - **Formato de página**: Elige el tamaño de página del PDF. - - **Porcentaje de escala**: Ajusta la escala del PDF. - - **Incluir pie de página**: Incluye un pie de página con el número de página y el total de páginas. -4. Selecciona **Exportar** para iniciar el proceso de exportación. -5. Una vez completada la exportación, recibirás un correo electrónico con un enlace de descarga. -6. Haz clic en el enlace para descargar el archivo PDF. - - \ No newline at end of file diff --git a/es/react-components.mdx b/es/react-components.mdx deleted file mode 100644 index 89964f544..000000000 --- a/es/react-components.mdx +++ /dev/null @@ -1,255 +0,0 @@ ---- -title: "React" -description: "Crea elementos interactivos y reutilizables con componentes de React" -icon: "react" ---- - -import { ColorGenerator } from "/snippets/color-generator.jsx"; - -Los [componentes de React](https://react.dev) son una forma potente de crear elementos interactivos y reutilizables en tu documentación. - -
- ## Uso de componentes de React -
- -Puedes crear componentes de React directamente en tus archivos `MDX` usando [hooks de React](https://react.dev/reference/react/hooks). - -
- ### Ejemplo -
- -Este ejemplo declara un componente `Counter` y luego lo usa con ``. - -```mdx -export const Counter = () => { - const [count, setCount] = useState(0) - - const increment = () => setCount(count + 1) - const decrement = () => setCount(count - 1) - - return ( -
-
- - -
- {count} -
- - -
-
- ) -} - - -``` - -export const Counter = () => { - const [count, setCount] = useState(0) - - const increment = () => setCount(count + 1) - const decrement = () => setCount(count - 1) - - return ( -
-
- - -
- {count} -
- - -
-
- ) -} - -El contador se renderiza como un componente interactivo de React. - - - -
- ## Importación de componentes -
- -Puedes importar componentes desde tu carpeta `snippets`. A diferencia de React, no puedes importar componentes desde cualquier archivo `MDX`. Los componentes reutilizables deben referenciarse desde archivos dentro de la carpeta `snippets`. Más información sobre [fragmentos reutilizables](/es/reusable-snippets). - -
- ### Ejemplo -
- -Este ejemplo declara un componente `ColorGenerator` que utiliza varios hooks de React y luego lo usa en un archivo `MDX`. - -Crea el archivo `color-generator.jsx` en la carpeta `snippets`: - -```mdx /snippets/color-generator.jsx [expandable] -export const ColorGenerator = () => { - const [hue, setHue] = useState(180) - const [saturation, setSaturation] = useState(50) - const [lightness, setLightness] = useState(50) - const [colors, setColors] = useState([]) - - useEffect(() => { - const newColors = [] - for (let i = 0; i < 5; i++) { - const l = Math.max(10, Math.min(90, lightness - 20 + i * 10)) - newColors.push(`hsl(${hue}, ${saturation}%, ${l}%)`) - } - setColors(newColors) - }, [hue, saturation, lightness]) - - const copyToClipboard = (color) => { - navigator.clipboard - .writeText(color) - .then(() => { - console.log(`${color} copiado al portapapeles`) - }) - .catch((err) => { - console.error("Error al copiar: ", err) - }) - } - - return ( -
-
-
- - - - - -
- -
- {colors.map((color, idx) => ( -
copyToClipboard(color)} - /> - ))} -
- -
-

- Color base: hsl({hue}, {saturation}%, {lightness}%) -

-
-
-
- ) -} -``` - -Importa el componente `ColorGenerator` y úsalo en un archivo `MDX`: - -```mdx -import { ColorGenerator } from "/snippets/color-generator.jsx" - - -``` - -El generador de color se muestra como un componente interactivo de React. - - - -
- ## Consideraciones -
- - - - Los componentes que usan hooks de React se renderizan en el cliente, lo que tiene varias implicaciones: - - * **SEO**: Es posible que los motores de búsqueda no indexen por completo el contenido dinámico. - * **Carga inicial**: Los visitantes pueden ver un “flash” de contenido de carga antes de que se rendericen los componentes. - * **Accesibilidad**: Asegúrate de que los cambios en el contenido dinámico se anuncien a los lectores de pantalla. - - - - * **Optimiza los arrays de dependencias**: Incluye solo las dependencias necesarias en tus arrays de dependencias de `useEffect`. - * **Memoiza cálculos complejos**: Usa `useMemo` o `useCallback` para operaciones costosas. - * **Reduce los re-renderizados**: Divide componentes grandes en otros más pequeños para evitar re-renderizados en cascada. - * **Carga diferida (lazy loading)**: Considera cargar de forma diferida los componentes complejos para mejorar el tiempo de carga inicial de la página. - - diff --git a/es/reusable-snippets.mdx b/es/reusable-snippets.mdx deleted file mode 100644 index 31cbc1e35..000000000 --- a/es/reusable-snippets.mdx +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: 'Fragmentos reutilizables' -description: 'Fragmentos personalizados y reutilizables para mantener el contenido sincronizado' -icon: 'recycle' ---- - -Uno de los principios fundamentales del desarrollo de software es DRY (Don't Repeat Yourself, no repitas lo mismo), que también aplica a la documentación. Si te encuentras repitiendo el mismo contenido en varios lugares, crea un fragmento personalizado para mantenerlo sincronizado. - -
- ## Crear un snippet personalizado -
- -**Condición previa**: Debes crear tu archivo de snippet en el directorio `snippets` para que la importación funcione. - -Cualquier página en el directorio `snippets` se tratará como un snippet y no -se representará como una página independiente. Si deseas crear una página independiente -a partir del snippet, importa el snippet en otro archivo y úsalo como un -componente. - -
- ### Exportación por defecto -
- -1. Agrega contenido al archivo de snippet que quieras reutilizar. Opcionalmente, puedes agregar variables que se puedan completar mediante props - cuando importes el snippet. En este ejemplo, nuestra variable es word. - -```typescript snippets/my-snippet.mdx -¡Hola mundo! Este es mi contenido que quiero reutilizar en todas las páginas. -``` - -2. Importa el fragmento en tu archivo de destino. - -```typescript destination-file.mdx ---- -title: Mi título -description: Mi descripción ---- - -import MySnippet from '/snippets/path/to/my-snippet.mdx'; - -## Encabezado - -Lorem ipsum dolor sit amet. - - - -``` - -
- ### Exportar con variables -
- -1. Opcionalmente, puedes añadir variables que se puedan completar mediante props al importar el fragmento. En este ejemplo, nuestra variable es word. - -```typescript snippets/my-snippet.mdx -Mi palabra clave del día es {word}. -``` - -2. Importa el fragmento en tu archivo de destino con la variable. La propiedad se completará según tu especificación. - -```typescript destination-file.mdx ---- -title: Mi título -description: Mi descripción ---- - -import MySnippet from '/snippets/path/to/my-snippet.mdx'; - -## Encabezado - -Lorem ipsum dolor sit amet. - - - -``` - -
- ### Variables reutilizables -
- -1. Exporta una variable desde tu archivo de snippet: - -```typescript snippets/path/to/custom-variables.mdx -export const myName = 'my name'; - -export const myObject = { fruit: 'strawberries' }; -``` - -2. Importa el fragmento desde el archivo de destino y usa la variable: - -```typescript destination-file.mdx ---- -title: Mi título -description: Mi descripción ---- - -import { myName, myObject } from '/snippets/path/to/custom-variables.mdx'; - -Hola, mi nombre es {myName} y me gusta {myObject.fruit}. -``` - -
- ### Fragmentos de JSX -
- -1. Exporta un componente JSX desde tu archivo de fragmentos. (Consulta [Componentes de React](/es/react-components) para obtener más información): - -```js icon=square-js snippets/my-jsx-snippet.jsx -export const MyJSXSnippet = () => { - return ( -
-

¡Hola, mundo!

-
- ) -} -``` - - - Importante: Al crear fragmentos de JSX, utiliza la sintaxis de función flecha (`=>`) en lugar de declaraciones de función. La palabra clave `function` no es compatible en este contexto. - - -2. Importa el fragmento desde tu archivo de destino y utiliza el componente: - -```typescript destination-file.mdx ---- -title: Mi título -description: Mi descripción ---- - -import { MyJSXSnippet } from '/snippets/my-jsx-snippet.jsx'; - - -``` diff --git a/es/settings.mdx b/es/settings.mdx deleted file mode 100644 index 99761f54d..000000000 --- a/es/settings.mdx +++ /dev/null @@ -1,1620 +0,0 @@ ---- -title: "Configuración global" -description: "Configura la configuración del sitio con el archivo `docs.json`" -icon: "settings-2" -keywords: ["docs.json", "settings", "customization", "configuration"] ---- - -import IconsOptional from "/snippets/es/icons-optional.mdx"; - -El archivo `docs.json` te permite convertir una colección de archivos Markdown en un sitio de documentación navegable y personalizado. Este archivo de configuración obligatorio controla el estilo, la navigation, integraciones y más. Piénsalo como el plano de tu documentación. - -La configuración en `docs.json` se aplica globalmente a todas las páginas. - -
- ## Configurar tu `docs.json` -
- -Para empezar, solo necesitas especificar `theme`, `name`, `colors.primary` y `navigation`. Los demás campos son opcionales y puedes agregarlos a medida que crezcan las necesidades de tu documentación. - -Para una mejor experiencia de edición, incluye la referencia del esquema en la parte superior de tu archivo `docs.json`. Esto habilita el autocompletado, la validación y las descripciones emergentes útiles en la mayoría de los editores de código: - -```json -{ - "$schema": "https://mintlify.com/docs.json", - "theme": "mint", - "name": "Tu Documentación", - "colors": { - "primary": "#ff0000" - }, - "navigation": { - // Tu estructura de navegación - } - // El resto de tu configuración -} -``` - -
- ## Referencia -
- -Esta sección contiene la referencia completa del archivo `docs.json`. - -
- ### Personalización -
- - - El tema de diseño de tu sitio. - - Una de las siguientes opciones: `mint`, `maple`, `palm`, `willow`, `linden`, `almond`, `aspen`. - - Consulta [Temas](es/themes) para más información. - - - - El nombre de tu proyecto, organización o producto. - - - - Los colores usados en tu documentación. Se aplican de forma distinta según el tema. Si solo proporcionas un color principal, se usará para todos los elementos de color. - - - - El color principal de tu documentación. Generalmente se usa para resaltar en el modo claro, con algunas variaciones según el tema. - - Debe ser un código hexadecimal que comience con `#`. - - - - El color usado para resaltar en el modo oscuro. - - Debe ser un código hexadecimal que comience con `#`. - - - - El color usado para botones y estados de hover en los modos claro y oscuro, con algunas variaciones según el tema. - - Debe ser un código hexadecimal que comience con `#`. - - - - - - Descripción de tu sitio para SEO e indexación por IA. - - - - Tu logotipo para los modos claro y oscuro. - - - - Ruta a tu archivo de logotipo para el modo claro. Incluye la extensión del archivo. Ejemplo: `/logo.png` - - - - Ruta a tu archivo de logotipo para el modo oscuro. Incluye la extensión del archivo. Ejemplo: `/logo-dark.png` - - - - La URL a la que se redirige al hacer clic en el logotipo. Si no se proporciona, el logotipo enlazará a tu página de inicio. Ejemplo: `https://mintlify.com` - - - - - - Ruta a tu archivo de favicon, incluida la extensión. Se redimensiona automáticamente a los tamaños de favicon adecuados. - Puede ser un único archivo o archivos separados para los modos claro y oscuro. Ejemplo: `/favicon.png` - - - - Ruta a tu archivo de favicon para el modo claro. Incluye la extensión del archivo. Ejemplo: `/favicon.png` - - - - Ruta a tu archivo de favicon para el modo oscuro. Incluye la extensión del archivo. Ejemplo: `/favicon-dark.png` - - - - - - Personalización de miniaturas para redes sociales y vistas previas de páginas. - - - - El tema visual de tus miniaturas. Si no se especifica, las miniaturas usan el esquema de color de tu sitio definido por el campo `colors`. - - - - Imagen de fondo de tus miniaturas. Puede ser una ruta relativa o una URL absoluta. - - - - - - Configuraciones de estilo visual. - - - - Estilo del eyebrow de la página. Elige `section` para mostrar el nombre de la sección o `breadcrumbs` para mostrar la ruta de navegación completa. De forma predeterminada es `section`. - - - - Configuración del tema de los bloques de código. De forma predeterminada es `"system"`. - - **Configuración simple:** - - * `"system"`: Coincide con el modo actual del sitio (claro u oscuro) - * `"dark"`: Usa siempre el modo oscuro - - **Configuración de tema personalizada:** - - * Usa una cadena para especificar un único [tema de Shiki](https://shiki.style/themes) para todos los bloques de código - * Usa un objeto para especificar [temas de Shiki](https://shiki.style/themes) por separado para los modos claro y oscuro - - - Un único nombre de tema de Shiki para usar tanto en modo claro como en modo oscuro. - - ```json - "styling": { - "codeblocks": { - "theme": "dracula" - } - } - ``` - - - - Temas separados para los modos claro y oscuro. - - - - Un nombre de tema de Shiki para el modo claro. - - - - Un nombre de tema de Shiki para el modo oscuro. - - - ```json - "styling": { - "codeblocks": { - "theme": { - "light": "github-light", - "dark": "github-dark" - } - } - } - ``` - - - - - - - - Configuración de la biblioteca de iconos. - - - - Biblioteca de iconos para usar en toda tu documentación. De forma predeterminada es `fontawesome`. - - - Puedes especificar una URL a un icono alojado externamente, la ruta a un archivo de icono en tu proyecto o código SVG compatible con JSX para cualquier icono individual, independientemente de la configuración de la biblioteca. - - - - - - - Configuración de fuentes para tu documentación. La fuente predeterminada es [Inter](https://fonts.google.com/specimen/Inter). - - - - Familia tipográfica, por ejemplo, "Open Sans". - - - - Grosor de la fuente, como 400 o 700. Las fuentes variables admiten grosores precisos como 550. - - - - URL de origen de la fuente, por ejemplo, https://mintlify-assets.b-cdn.net/fonts/Hubot-Sans.woff2. [Google Fonts](https://fonts.google.com) se cargan automáticamente cuando especificas un nombre de `family` de Google Fonts, por lo que no se necesita una URL de source. - - - - Formato del archivo de fuente. - - - - Sobrescribe la configuración de fuentes específicamente para los encabezados. - - - - Familia tipográfica, por ejemplo, "Open Sans", "Playfair Display". - - - - Grosor de la fuente, como 400 o 700. Las fuentes variables admiten grosores precisos como 550. - - - - URL de origen de la fuente, por ejemplo, https://mintlify-assets.b-cdn.net/fonts/Hubot-Sans.woff2. [Google Fonts](https://fonts.google.com) se cargan automáticamente cuando especificas un nombre de `family` de Google Fonts, por lo que no se necesita una URL de source. - - - - Formato del archivo de fuente. - - - - - - Sobrescribe la configuración de fuentes específicamente para el texto del cuerpo. - - - - Familia tipográfica, por ejemplo, "Open Sans", "Playfair Display". - - - - Grosor de la fuente, como 400 o 700. Las fuentes variables admiten grosores precisos como 550. - - - - URL de origen de la fuente, por ejemplo, https://mintlify-assets.b-cdn.net/fonts/Hubot-Sans.woff2. [Google Fonts](https://fonts.google.com) se cargan automáticamente cuando especificas un nombre de `family` de Google Fonts, por lo que no se necesita una URL de source. - - - - Formato del archivo de fuente. - - - - - - - - Configuración del cambio de modo claro/oscuro. - - - - Modo de tema predeterminado. Elige `system` para que coincida con la configuración del sistema operativo del usuario, o `light` o `dark` para forzar un modo específico. De manera predeterminada es `system`. - - - - Indica si se debe ocultar el cambio de modo claro/oscuro. El valor predeterminado es `true`. - - - - - - Configuración del color y la decoración del fondo. - - - - Imagen de fondo para tu sitio. Puede ser un único archivo o archivos separados para los modos light y dark. - - - - Ruta de la imagen de fondo para el modo light. Incluye la extensión del archivo. Ejemplo: `/background.png`. - - - - Ruta de la imagen de fondo para el modo dark. Incluye la extensión del archivo. Ejemplo: `/background-dark.png`. - - - - - - Decoración de fondo para tu tema. - - - - Colores de fondo personalizados para los modos light y dark. - - - - Color de fondo para el modo light. - - Debe ser un código hexadecimal que comience con `#`. - - - - Color de fondo para el modo dark. - - Debe ser un código hexadecimal que comience con `#`. - - - - - - -
- ### Estructura -
- - - Elementos de la barra de navegación hacia enlaces externos. - - - - Enlaces para mostrar en la barra de navegación. - - - - Texto del enlace. - - - - Destino del enlace. Debe ser una URL externa válida. - - - - - - - - Botón principal de la barra de navegación. - - - - Estilo del botón. Elige `button` para un botón estándar con label o `github` para un enlace a un repositorio de GitHub con icon. - - - - Texto del botón. Solo aplica cuando `type` es `button`. - - - - Destino del botón. Debe ser una URL externa. Si `type` es `github`, debe ser la URL de un repositorio de GitHub. - - - - - - - - La estructura de navegación de tu contenido. - - - - Elementos de navegación globales que aparecen en todas las páginas y secciones. - - - - Configuración del selector de idioma para sitios localizados. - - - - Código de idioma en formato ISO 639-1. - - - - Indica si este es el idioma predeterminado. - - - - Indica si se debe ocultar esta opción de idioma de forma predeterminada. - - - - Ruta válida o enlace externo a la versión en este idioma de tu documentación. - - - - - - Configuración del selector de versiones para sitios con varias versiones. - - - - Nombre visible de la versión. - - Longitud mínima: 1 - - - - Indica si esta es la versión predeterminada. - - - - Indica si esta opción de versión se oculta de forma predeterminada. - - - - URL o ruta a esta versión de tu documentación. - - - - - - Pestañas de navegación de nivel superior para organizar las secciones principales. - - - - Nombre visible de la pestaña. - - Longitud mínima: 1 - - - - - - Indica si se debe ocultar esta pestaña de forma predeterminada. - - - - URL o ruta de destino de la pestaña. - - - - - - Enlaces anclados que aparecen de forma destacada en la navigation de la barra lateral. - - - - Nombre visible del ancla. - - Longitud mínima: 1 - - - - - - Colores personalizados para el ancla. - - - - Color del ancla para el modo claro. - - Debe ser un código hexadecimal que comience con `#`. - - - - Color del ancla para el modo oscuro. - - Debe ser un código hexadecimal que comience con `#`. - - - - - - Si se debe ocultar este ancla de forma predeterminada. - - - - URL o ruta del destino del ancla. - - - - - - Menús desplegables para organizar contenido relacionado. - - - - Nombre para mostrar del menú desplegable. - - Longitud mínima: 1 - - - - - - Si ocultar este menú desplegable de forma predeterminada. - - - - URL o ruta de destino del menú desplegable. - - - - - - - - Selector de idioma para sitios [multilingües](es/navigation#languages). - - - - Selector de versión para sitios con varias [versiones](es/navigation#versions). - - - - Pestañas de navegación de nivel superior [tabs](es/navigation#tabs). - - - - Anclas en la barra lateral [anchors](es/navigation#anchors). - - - - [Menús desplegables](es/navigation#dropdowns) para agrupar contenido relacionado. - - - - [Groups](es/navigation#groups) para organizar el contenido en secciones. - - - - Páginas individuales [pages](es/navigation#pages) que componen tu documentación. - - - - - - Configuración de interacción del usuario para los elementos de navegación. - - - - Controla el comportamiento de navegación automática al seleccionar grupos de navegación. Configúralo en `true` para forzar la navegación a la primera página cuando se expanda un grupo de navegación. Configúralo en `false` para impedir la navegación y solo expandir o contraer el grupo. Déjalo sin definir para usar el comportamiento predeterminado del tema. - - - - - - Contenido del pie de página y enlaces a redes sociales. - - - - Perfiles de redes sociales para mostrar en el pie de página. Cada key es el nombre de una plataforma y cada value es la URL de tu perfil. Por ejemplo: - - ```json - { - "x": "https://x.com/mintlify" - } - ``` - - Nombres de propiedades válidos: `x`, `website`, `facebook`, `youtube`, `discord`, `slack`, `github`, `linkedin`, `instagram`, `hacker-news`, `medium`, `telegram`, `twitter`, `x-twitter`, `earth-americas`, `bluesky`, `threads`, `reddit`, `podcast` - - - - Enlaces para mostrar en el pie de página. - - - - Título de la columna. - - Longitud mínima: 1 - - - - Enlaces para mostrar en la columna. - - - - Texto del enlace. - - Longitud mínima: 1 - - - - URL de destino del enlace. - - - - - - - - - - Banner del sitio, mostrado en la parte superior de las páginas. - - - - El contenido del banner. Admite texto sin formato y formato Markdown. Por ejemplo: - - ```json - { - "content": "🚀 ¡El banner está activo! [Más información](mintlify.com)" - } - ``` - - - - Indica si los usuarios pueden descartar el banner. El valor predeterminado es `false`. - - - - - - Redirecciones para páginas movidas, renombradas o eliminadas. - - - - Ruta de origen desde la que redirigir. Ejemplo: `/old-page` - - - - Ruta de destino a la que redirigir. Ejemplo: `/new-page` - - - - Indica si se usa una redirección permanente (301). El valor predeterminado es `true`. - - - - - - Menú contextual para contenido optimizado con IA e integraciones. - - - - Acciones disponibles en el menú contextual. La primera opción aparece como predeterminada. - - * `copy`: Copia la página actual como Markdown en el portapapeles. - * `view`: Muestra la página actual como Markdown en una nueva pestaña. - * `chatgpt`: Envía el contenido de la página actual a ChatGPT. - * `claude`: Envía el contenido de la página actual a Claude. - * `perplexity`: Envía el contenido de la página actual a Perplexity. - * `mcp`: Copia la URL de tu servidor MCP en el portapapeles. - * `cursor`: Instala tu servidor MCP alojado en Cursor. - * `vscode`: Instala tu servidor MCP alojado en VSCode. - - Menú contextual - - - El menú contextual solo está disponible en las implementaciones de vista previa y de producción. - - - - - -
- ### Configuración de la API -
- - - Configuración de la documentación de la API y del área de pruebas interactiva. - - - - Archivos de especificación OpenAPI para generar la documentación de la API. Puede ser una sola URL/ruta o una matriz de URL/rutas. - - - - URL o ruta a tu archivo de especificación OpenAPI. - - Longitud mínima: 1 - - - - Directorio donde buscar archivos OpenAPI. - - No incluyas una barra inicial. - - - - - - Archivos de especificación AsyncAPI para generar la documentación de la API. Puede ser una sola URL/ruta o una matriz de URL/rutas. - - - - URL o ruta a tu archivo de especificación AsyncAPI. - - Longitud mínima: 1 - - - - Directorio donde buscar archivos AsyncAPI. - - No incluyas una barra inicial. - - - - - - Configuración de visualización de los parámetros de la API. - - - - Si expandir todos los parámetros de forma predeterminada. El valor predeterminado es `closed`. - - - - - - Configuración del área de pruebas de la API. - - - - Modo de visualización del área de pruebas de la API. El valor predeterminado es `interactive`. - - - - Si reenviar las solicitudes de la API a través de un servidor proxy. El valor predeterminado es `true`. - - - - - - Configuración de los ejemplos de API autogenerados. - - - - Lenguajes de ejemplo para los fragmentos de API autogenerados - - - - Si mostrar los parámetros opcionales en los ejemplos de la API. El valor predeterminado es `all`. - - - - - - Configuración de las páginas de la API generadas a partir de archivos `MDX`. - - - - Configuración de autenticación para solicitudes de API basadas en MDX. - - - - Método de autenticación para solicitudes de API. - - - - Nombre de autenticación para solicitudes de API. - - - - - - Configuración del servidor para solicitudes de API. - - - - - - - - - - Configuraciones de indexación de SEO. - - - - Metatags añadidos a cada página. Debe ser un par key-value válido. Consulta la [referencia de metatags comunes](/es/settings/seo#common-meta-tags-reference) para ver las opciones. - - - - Especifica qué páginas deben indexar los motores de búsqueda. Elige `navigable` para indexar solo las páginas que estén en la navigation de tu `docs.json` o elige `all` para indexar todas las páginas. De forma predeterminada: `navigable`. - - - - - - Configuración de la visualización de la búsqueda. - - - - Texto de marcador de posición que se mostrará en la barra de búsqueda. - - - - -
- ### Integraciones -
- - - Integraciones de terceros. - - - - Integración de Analytics de Amplitude. - - - - Tu API key de Amplitude. - - - - - - Integración de enriquecimiento de datos de Clearbit. - - - - Tu clave de API de Clearbit. - - - - - - Integración con Fathom Analytics. - - - - Tu ID del sitio de Fathom. - - - - - - Integración de Front Chat. - - - - Tu ID del fragmento de Front Chat. - - Longitud mínima: 6 - - - - - - Integración con Google Analytics 4. - - - - Tu ID de medición de Google Analytics 4. - - Debe coincidir con el patrón: ^G - - - - - - Integración con Google Tag Manager. - - - - Tu ID de etiqueta de Google Tag Manager. - - Debe coincidir con el patrón: ^G - - - - - - Integración con Heap Analytics. - - - - Tu ID de la aplicación de Heap. - - - - - - Integración de Hotjar. - - - - Tu ID de Hotjar. - - - - La versión del script de Hotjar. - - - - - - Integración con Intercom. - - - - Tu ID de la app de Intercom. - - Longitud mínima: 6 - - - - - - Integración con Koala. - - - - Tu clave de API pública de Koala. - - Longitud mínima: 2 - - - - - - Integración con LogRocket. - - - - Tu ID de aplicación de LogRocket. - - - - - - Integración con Mixpanel. - - - - Tu token de proyecto de Mixpanel. - - - - - - Integración con Osano. - - - - El source del script de Osano. - - - - - - Integración de Pirsch Analytics. - - - - Tu ID de Pirsch. - - - - - - Integración con PostHog. - - - - Tu clave de API de PostHog. - - Debe coincidir con el patrón: ^phc_ - - - - Tu host de la API de PostHog. - - - - - - Integración de Plausible Analytics. - - - - Tu domain de Plausible. - - - - Tu servidor de Plausible. - - - - - - Integración con Segment. - - - - Tu key de Segment. - - - - - - Configuración de la telemetría. - - - - Indica si se habilita la telemetría. - - - - - - Configuración de cookies. - - - - key para cookies. - - - - value para cookies. - - - - - - -
- ### Errores -
- - - Configuración para el manejo de errores. - - - - Manejo del error 404 "Página no encontrada". - - - - Indica si se debe redirigir automáticamente a la página principal cuando no se encuentra una página. - - - - Título personalizado para la página de error 404. - - - - Descripción personalizada para la página de error 404. Admite formato Markdown. - - - - - - -
- ## Ejemplos -
- - - - ```json title="docs.json" wrap lines - { - "$schema": "https://mintlify.com/docs.json", - "theme": "maple", - "name": "Example Co.", - "description": "Example Co. es una empresa que proporciona contenido de ejemplo y texto de marcador de posición.", - "colors": { - "primary": "#3B82F6", - "light": "#F8FAFC", - "dark": "#0F172A" - }, - "navigation": { - "dropdowns": [ - { - "dropdown": "Documentación", - "icon": "book", - "description": "Cómo usar el producto de Example Co.", - "groups": [ - { - "group": "Primeros pasos", - "pages": [ - "index", - "quickstart" - ] - }, - { - "group": "Personalización", - "pages": [ - "settings", - "users", - "features" - ] - }, - { - "group": "Facturación", - "pages": [ - "billing/overview", - "billing/payments", - "billing/subscriptions" - ] - } - ] - }, - { - "dropdown": "Cambios", - "icon": "history", - "description": "Actualizaciones y cambios", - "pages": [ - "changelog" - ] - } - ] - }, - "logo": { - "light": "/logo-light.svg", - "dark": "/logo-dark.svg", - "href": "https://example.com" - }, - "navbar": { - "links": [ - { - "label": "Comunidad", - "href": "https://example.com/community" - } - ], - "primary": { - "type": "button", - "label": "Comenzar", - "href": "https://example.com/start" - } - }, - "footer": { - "socials": { - "x": "https://x.com/example", - "linkedin": "https://www.linkedin.com/company/example", - "github": "https://github.com/example", - "slack": "https://example.com/community" - }, - "links": [ - { - "header": "Recursos", - "items": [ - { - "label": "Clientes", - "href": "https://example.com/customers" - }, - { - "label": "Empresarial", - "href": "https://example.com/enterprise" - }, - { - "label": "Solicitar vista previa", - "href": "https://example.com/preview" - } - ] - }, - { - "header": "Empresa", - "items": [ - { - "label": "Empleos", - "href": "https://example.com/careers" - }, - { - "label": "Blog", - "href": "https://example.com/blog" - }, - { - "label": "Política de privacidad", - "href": "https://example.com/legal/privacy" - } - ] - } - ] - }, - "integrations": { - "ga4": { - "measurementId": "G-XXXXXXXXXX" - }, - "koala": { - "publicApiKey": "pk_example_key_123" - }, - "telemetry": { - "enabled": true - }, - "cookies": { - "key": "example_cookie_key", - "value": "example_cookie_value" - } - }, - "contextual": { - "options": [ - "copy", - "view", - "chatgpt", - "claude" - ] - }, - "errors": { - "404": { - "redirect": false, - "title": "No se puede encontrar", - "description": "¿Qué **pasó** con esta _página_?" - } - } - } - ``` - - - - ```json title="docs.json" wrap lines highlight={43-61, 72-79} - { - "$schema": "https://mintlify.com/docs.json", - "theme": "maple", - "name": "Example Co.", - "description": "Example Co. es una empresa que proporciona contenido de ejemplo y texto de marcador de posición.", - "colors": { - "primary": "#3B82F6", - "light": "#F8FAFC", - "dark": "#0F172A" - }, - "navigation": { - "dropdowns": [ - { - "dropdown": "Documentación", - "icon": "book", - "description": "Cómo usar el producto de Example Co.", - "groups": [ - { - "group": "Primeros pasos", - "pages": [ - "index", - "quickstart" - ] - }, - { - "group": "Personalización", - "pages": [ - "settings", - "users", - "features" - ] - }, - { - "group": "Facturación", - "pages": [ - "billing/overview", - "billing/payments", - "billing/subscriptions" - ] - } - ] - }, - { - "dropdown": "Referencia de API", - "icon": "terminal", - "description": "Cómo usar la API de Example Co.", - "groups": [ - { - "group": "Referencia de API", - "pages": [ - "api-reference/introduction" - ] - }, - { - "group": "Endpoints", - "openapi": { - "source": "openapi.json" - } - } - ] - }, - { - "dropdown": "Cambios", - "icon": "history", - "description": "Actualizaciones y cambios", - "pages": [ - "changelog" - ] - } - ] - }, - "api": { - "playground": { - "display": "interactive" - }, - "examples": { - "languages": ["javascript", "curl", "python"] - } - }, - "logo": { - "light": "/logo-light.svg", - "dark": "/logo-dark.svg", - "href": "https://example.com" - }, - "navbar": { - "links": [ - { - "label": "Comunidad", - "href": "https://example.com/community" - } - ], - "primary": { - "type": "button", - "label": "Comenzar", - "href": "https://example.com/start" - } - }, - "footer": { - "socials": { - "x": "https://x.com/example", - "linkedin": "https://www.linkedin.com/company/example", - "github": "https://github.com/example", - "slack": "https://example.com/community" - }, - "links": [ - { - "header": "Recursos", - "items": [ - { - "label": "Clientes", - "href": "https://example.com/customers" - }, - { - "label": "Empresarial", - "href": "https://example.com/enterprise" - }, - { - "label": "Solicitar Vista Previa", - "href": "https://example.com/preview" - } - ] - }, - { - "header": "Empresa", - "items": [ - { - "label": "Carreras", - "href": "https://example.com/careers" - }, - { - "label": "Blog", - "href": "https://example.com/blog" - }, - { - "label": "Política de Privacidad", - "href": "https://example.com/legal/privacy" - } - ] - } - ] - }, - "integrations": { - "ga4": { - "measurementId": "G-XXXXXXXXXX" - }, - "koala": { - "publicApiKey": "pk_example_key_123" - }, - "telemetry": { - "enabled": true - }, - "cookies": { - "key": "example_cookie_key", - "value": "example_cookie_value" - } - }, - "contextual": { - "options": [ - "copy", - "view", - "chatgpt", - "claude" - ] - }, - "errors": { - "404": { - "redirect": false, - "title": "No se puede encontrar", - "description": "¿Qué **pasó** con esta _página_?" - } - } - } - ``` - - - - ```json title="docs.json" wrap lines - { - "$schema": "https://mintlify.com/docs.json", - "theme": "maple", - "name": "Example Co.", - "description": "Example Co. es una empresa que proporciona contenido de ejemplo y texto de marcador de posición.", - "colors": { - "primary": "#3B82F6", - "light": "#F8FAFC", - "dark": "#0F172A" - }, - "navigation": { - "global": { - "anchors": [ - { - "anchor": "Documentación", - "href": "https://mintlify.com/docs" - }, - { - "anchor": "Registro de cambios", - "href": "https://mintlify.com/docs/changelog" - } - ] - }, - "languages": [ // [!code highlight:3] - { - "language": "en", - "dropdowns": [ - { - "dropdown": "Documentación", - "icon": "book", - "description": "Cómo usar el producto de Example Co.", - "pages": [ - { - "group": "Primeros pasos", - "pages": ["index", "quickstart"] - }, - { - "group": "Personalización", - "pages": ["settings", "users", "features"] - }, - { - "group": "Facturación", - "pages": [ - "billing/overview", - "billing/payments", - "billing/subscriptions" - ] - } - ] - }, - { - "dropdown": "Registro de cambios", - "icon": "history", - "description": "Actualizaciones y cambios", - "pages": ["changelog"] - } - ] - }, - { - "language": "es",// [!code highlight] - "dropdowns": [ - { - "dropdown": "Documentación", - "icon": "book", - "description": "Cómo usar el producto de Example Co.", - "pages": [ - { - "group": "Primeros pasos", - "pages": ["es/index", "es/quickstart"] - }, - { - "group": "Personalización", - "pages": ["es/settings", "es/users", "es/features"] - }, - { - "group": "Facturación", - "pages": [ - "es/billing/overview", - "es/billing/payments", - "es/billing/subscriptions" - ] - } - ] - }, - { - "dropdown": "Registro de cambios", - "icon": "history", - "description": "Actualizaciones y cambios", - "pages": ["es/changelog"] - } - ] - } - ] - }, - "logo": { - "light": "/logo-light.svg", - "dark": "/logo-dark.svg", - "href": "https://example.com" - }, - "navbar": { - "links": [ - { - "label": "Comunidad", - "href": "https://example.com/community" - } - ], - "primary": { - "type": "button", - "label": "Comenzar", - "href": "https://example.com/start" - } - }, - "footer": { - "socials": { - "x": "https://x.com/example", - "linkedin": "https://www.linkedin.com/company/example", - "github": "https://github.com/example", - "slack": "https://example.com/community" - }, - "links": [ - { - "header": "Recursos", - "items": [ - { - "label": "Clientes", - "href": "https://example.com/customers" - }, - { - "label": "Empresarial", - "href": "https://example.com/enterprise" - }, - { - "label": "Solicitar vista previa", - "href": "https://example.com/preview" - } - ] - }, - { - "header": "Empresa", - "items": [ - { - "label": "Empleos", - "href": "https://example.com/careers" - }, - { - "label": "Blog", - "href": "https://example.com/blog" - }, - { - "label": "Política de privacidad", - "href": "https://example.com/legal/privacy" - } - ] - } - ] - }, - "integrations": { - "ga4": { - "measurementId": "G-XXXXXXXXXX" - }, - "koala": { - "publicApiKey": "pk_example_key_123" - }, - "telemetry": { - "enabled": true - }, - "cookies": { - "key": "example_cookie_key", - "value": "example_cookie_value" - } - }, - "contextual": { - "options": ["copy", "view", "chatgpt", "claude"] - }, - "errors": { - "404": { - "redirect": false, - "title": "No se pudo encontrar", - "description": "¿Qué **pasó** con esta _página_?" - } - } - } - ``` - - - -
- ## Actualización desde `mint.json` -
- -Si tu proyecto de documentación usa el archivo en desuso `mint.json`, sigue estos pasos para actualizar a `docs.json`. - - - - Si aún no has instalado la [CLI](/es/installation), instálala ahora: - - - ```bash npm - npm i -g mint - ``` - - ```bash yarn - yarn global add mint - ``` - - ```bash pnpm - pnpm add -g mint - ``` - - - Si ya tienes instalada la CLI, asegúrate de que esté actualizada: - - ```bash - mint update - ``` - - - - En tu repositorio de documentación, ejecuta: - - ```bash - mint upgrade - ``` - - Este comando creará un archivo `docs.json` a partir de tu `mint.json` existente. Revisa el archivo generado para asegurarte de que toda la configuración sea correcta. - - - - Después de verificar que tu `docs.json` esté configurado correctamente, puedes eliminar de forma segura tu antiguo archivo `mint.json`. - - \ No newline at end of file diff --git a/es/settings/broken-links.mdx b/es/settings/broken-links.mdx deleted file mode 100644 index 0e1226113..000000000 --- a/es/settings/broken-links.mdx +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: "Redirecciones y enlaces rotos" -description: "Herramientas para prevenir enlaces no válidos" -icon: "link-2" ---- - -Cuando cambias la ruta de un archivo en tu carpeta de docs, también cambia la ruta de la URL a esa página. Esto puede ocurrir al reestructurar tus docs o al cambiar el título de la barra lateral. - - - -Detecta enlaces rotos con nuestra CLI. [Instala la CLI](/es/installation) y ejecuta el comando: - -```bash -mint enlaces-rotos -``` - -La CLI detecta los enlaces relativos en tu documentación que no existen. - -
- ## Redirecciones -
- -Configura redirecciones 301 añadiendo el campo `redirects` a tu archivo `docs.json`. - -```json -"redirects": [ - { - "source": "/source/path", - "destination": "/destination/path" - } -] -``` - -Esto redirige de forma permanente `/source/path` a `/destination/path` para que no pierdas el SEO acumulado de la página original. - -Para hacer coincidir una ruta comodín, usa `*` después de un parámetro. En este ejemplo, `/beta/:slug*` coincide con `/beta/introduction` y la redirige a `/v2/introduction`. - -```json -"redirects": [ - { - "source": "/beta/:slug*", - "destination": "/v2/:slug*" - } -] -``` diff --git a/es/settings/ci.mdx b/es/settings/ci.mdx deleted file mode 100644 index cf31900f2..000000000 --- a/es/settings/ci.mdx +++ /dev/null @@ -1,425 +0,0 @@ ---- -title: "Verificaciones de CI" -description: "Añade verificaciones para enlaces rotos, linting y gramática al proceso de actualización" -icon: "circle-check" ---- - - - Los [planes Pro y Enterprise](https://mintlify.com/pricing?ref=docs-ci) incluyen verificaciones de CI para repositorios de GitHub. - - -Usa las verificaciones de CI para analizar tu documentación en busca de errores y mostrar advertencias antes de implementar. Las verificaciones de CI se configuran para ejecutarse en cada commit a tu rama de implementación configurada o en las pull requests dirigidas a esa rama. - -
- ## Instalación -
- -Para comenzar, sigue los pasos en la página de [GitHub](/es/settings/github). - -Para la Aplicación de GitHub, puedes elegir otorgar permisos solo a un único repositorio. Te recomendamos hacerlo, ya que solo necesitamos acceso al repositorio donde se aloja tu documentación. - -
- ## Configuración -
- -Configura las comprobaciones de CI habilitadas para una implementación desde la página de [Add-ons](https://dashboard.mintlify.com/products/addons) de tu dashboard. Activa las comprobaciones que quieras ejecutar. - -Al habilitar las comprobaciones, puedes elegir ejecutarlas con nivel de `Advertencia` o `Bloqueo`. - -* Una comprobación con nivel `Advertencia` nunca marcará un estado de error, incluso si hay errores o sugerencias. -* Una comprobación con nivel `Bloqueo` marcará un estado de error si no se supera o si se sugieren cambios. - -
- ## Comprobaciones de CI disponibles -
- - - -De forma similar a cómo funciona el [comprobador de enlaces de la CLI](/es/settings/broken-links#broken-links) en tu máquina local, comprobamos automáticamente si tu documentación tiene enlaces rotos. - -Para ver los resultados de esta verificación, visita la página de resultados de comprobaciones de GitHub para una confirmación específica. - -
- ### Vale -
- -[Vale](https://vale.sh/) es un linter de prosa de código abierto basado en reglas que admite una variedad de tipos de documentos, incluidos Markdown y MDX. - -Mintlify permite ejecutar Vale automáticamente en una comprobación de CI y mostrar los resultados como un estado de comprobación. - -
- #### Configuración -
- -Si tienes un archivo `.vale.ini` en el directorio raíz de contenido de tu implementación, usaremos automáticamente ese archivo de configuración. También usaremos automáticamente cualquier archivo de configuración en el `stylesPath` que hayas especificado. - -Si no tienes un archivo de configuración de Vale, se cargará automáticamente la configuración predeterminada. - -```mdx Default vale.ini configuration expandable -# Estilos de nivel superior -StylesPath = /app/styles -MinAlertLevel = suggestion -IgnoredScopes = code, tt, img, url, a -SkippedScopes = script, style, pre, figure, code - -# Vocabularios -Vocab = Mintlify - -# Esto es obligatorio ya que Vale no soporta oficialmente MDX -[formats] -mdx = md - -# Soporte para MDX -[*.mdx] -BasedOnStyles = Vale -Vale.Terms = NO # Aplica reglas de capitalización muy estrictas, mantener desactivado - -# `import ...`, `export ...` -# `` -# `...` -# `{ ... }` -TokenIgnores = (?sm)((?:import|export) .+?$), \ -(?)(?!`), \ -(<[A-Z]\w+>.+?<\/[A-Z]\w+>) - -# Excluir: -# `` -BlockIgnores = (?sm)^(<\w+\n .*\s\/>)$, \ -(?sm)^({.+.*}) - -CommentDelimiters = {/*, */} -``` - -```text Default Vale vocabulary expandable -Mintlify -Mintlify -VSCode -openapi -OpenAPI -GitHub -APIs - -repo -npm -dev - -Lorem -ipsum -impsum -amet - -const -myName -myObject -bearerAuth -favicon -topbar -url -borderRadius -args -modeToggle -ModeToggle -isHidden -autoplay - -_cursiva_ -Tachado -Citas en bloque -Cita en bloque -Una línea -Múltiples líneas - -incorporación - -async -await -boolean -enum -func -impl -init -instanceof -typeof -params -stdin -stdout -stderr -stdout -stdin -var -const -let -null -undefined -struct -bool - -cors -csrf -env -xhr -xhr2 -JWT (JSON Web Token) -OAuth -websocket -localhost -middleware -runtime -webhook -stdin -stdout - -json -yaml -yml -md -txt -tsx -jsx -css -scss -html -png -jpg -svg - -cdn -CLI -css -dom -dto -env -Git -gui -http -https -ide -jvm -mvc -orm -rpc -SDK -sql -ssh -ssl -tcp -tls -uri -url -ux -ui - -nodejs -npm -yarn -pnpm -eslint -pytest -golang -rustc -kubectl -mongo -postgres -redis - -JavaScript -TypeScript -Python -Ruby -Rust -Go -Golang -Java -Kotlin -Swift -Node.js -NodeJS -Deno - -React -Vue -Angular -Next.js -Nuxt -Express -Django -Flask -Spring -Laravel -Redux -Vuex -TensorFlow -PostgreSQL -MongoDB -Redis -PNPM - -Docker -Kubernetes -AWS -Azure -GCP -Terraform -Jenkins -CircleCI -GitLab -Heroku - -Git -git -GitHub -GitLab -Bitbucket -VSCode -Visual Studio Code -IntelliJ -WebStorm -ESLint -eslint -Prettier -prettier -Webpack -webpack -Vite -vite -Babel -babel -Jest -jest -Mocha -Cypress -Postman - -HTTP -HTTPS -OAuth -JWT (JSON Web Token) -GraphQL -REST -WebSocket -TCP/IP - -NPM -Yarn -PNPM -Pip -PIP -Cargo -RubyGems - -Swagger -OpenAPI -Markdown -MDX -Storybook -TypeDoc -JSDoc - -MySQL -PostgreSQL -MongoDB -Redis -Elasticsearch -DynamoDB - -Linux -Unix -macOS -iOS - -Firefox -Chromium -WebKit - -config -ctx -desc -dir -elem -err -len -msg -num -obj -prev -proc -ptr -req -res -str -tmp -val -vars - -pendiente -href -idioma -navegación -anterior -siguiente -tabla de contenidos -``` - - - Tenga en cuenta que, por razones de seguridad, no podemos admitir ningún `stylesPath` absoluto ni `stylesPath` que incluya valores `..`. Use rutas relativas e incluya el `stylesPath` en su repositorio. - - -
- #### Paquetes -
- -Vale admite una variedad de [paquetes](https://vale.sh/docs/keys/packages) que pueden usarse para comprobar errores ortográficos y de estilo. -Cualquier paquete que incluya en su repositorio en el `stylesPath` correcto se instalará y utilizará automáticamente en su configuración de Vale. - -Para los paquetes que no estén incluidos en su repositorio, puede especificar cualquiera del [registro de paquetes de Vale](https://vale.sh/explorer); se descargarán y utilizarán automáticamente en su configuración de Vale. - - - Tenga en cuenta que, por razones de seguridad, no podemos admitir la descarga automática de paquetes que no provengan del [registro de paquetes de Vale](https://vale.sh/explorer). - - -
- #### Vale con `MDX` -
- -Vale no admite `MDX` de forma nativa, pero el autor de Vale ha proporcionado una [extensión personalizada](https://github.com/errata-ai/MDX) para darle soporte. - -Si prefiere no usar esta extensión, recomendamos las siguientes líneas en su archivo `.vale.ini`: - -```ini -[formats] -mdx = md - -[*.mdx] -CommentDelimiters = {/*, */} - -TokenIgnores = (?sm)((?:import|export) .+?$), \ -(?)(?!`), \ -(<[A-Z]\w+>.+?<\/[A-Z]\w+>) - -BlockIgnores = (?sm)^(<\w+\n .*\s\/>)$, \ -(?sm)^({.+.*}) -``` - -Para usar los comentarios en el documento de Vale, utiliza comentarios con el estilo de MDX `{/* ... */}`. Si usas el [ajuste](https://vale.sh/docs/keys/commentdelimiters) `CommentDelimiters = {/*, */}` en tu configuración, Vale interpretará automáticamente estos comentarios durante el linting. Esto significa que puedes usar fácilmente las funciones integradas de Vale, como omitir líneas o secciones. - -```mdx -{/* vale off */} - -Este texto será ignorado por Vale - -{/* vale on */} -``` - -Si decides no usar `CommentDelimiters` pero aun así quieres usar los comentarios de Vale, debes envolver cualquier comentario de Vale en comentarios de MDX `{/* ... */}`. Por ejemplo: - -```mdx -{/* */} - -Este texto será ignorado por Vale - -{/* */} -``` - -Estas etiquetas de comentario no se admiten dentro de los componentes de Mintlify, pero pueden utilizarse en cualquier parte del nivel base de un documento. diff --git a/es/settings/custom-404-page.mdx b/es/settings/custom-404-page.mdx deleted file mode 100644 index 6167631a3..000000000 --- a/es/settings/custom-404-page.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Página 404 personalizada" -description: "Personaliza el título y la descripción de tu página de error 404" -icon: "file-warning" ---- - -Puedes controlar el título y la descripción de la página de error 404 que aparece cuando los usuarios acceden a enlaces rotos o inexistentes. - -Al personalizar tu página 404, usa la descripción para dirigir a los usuarios a recursos o enlaces útiles de tu documentación que los ayuden a encontrar lo que buscan. - -
- ## Configuración -
- -Configura tu página 404 en la sección `errors.404` de tu archivo `docs.json`: - -```json -"errors": { - "404": { - "redirect": false, - "title": "No se puede encontrar", - "description": "¿Qué **pasó** con esta _página_?" - } -} -``` - - -
- ## Parámetros -
- - - Indica si se debe redirigir automáticamente a la página de inicio cuando no se encuentre una página. - - Configúralo en `true` para redirigir a la página de inicio. - - Configúralo en `false` para mostrar la página 404 personalizada. - - - - Título personalizado para la página de error 404. Reemplaza el encabezado predeterminado “Page not found”. - - - - Descripción personalizada para la página de error 404. Admite formato Markdown. - \ No newline at end of file diff --git a/es/settings/custom-domain.mdx b/es/settings/custom-domain.mdx deleted file mode 100644 index 5e8ccb905..000000000 --- a/es/settings/custom-domain.mdx +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Custom domain" -description: "Aloja tu documentación en el dominio personalizado de tu sitio web" -icon: "globe" ---- - -Para configurar tu documentación en un dominio personalizado, debes establecer el dominio que quieras usar en la configuración de Mintlify y configurar el DNS con tu proveedor de dominios. - - - ¿Quieres configurar un subdirectorio personalizado como `mintlify.com/docs`? Consulta la documentación sobre [subdirectorio personalizado](/es/advanced/subpath/cloudflare). - - -
- ## Configuración del dashboard -
- -1. Ve a tu [dashboard](https://dashboard.mintlify.com) -2. Selecciona **Settings** -3. Selecciona **Domain Setup** -4. Ingresa el dominio personalizado que deseas. Por ejemplo, `docs.mintlify.com` - - - Custom Domain - - Custom Domain - - -
- ## Configurar tu DNS -
- -1. Ve a la configuración de DNS de tu dominio en el sitio web de tu proveedor de dominio. -2. Crea una nueva entrada de DNS e introduce los siguientes valores: - -```bash -CNAME | docs | cname.vercel-dns.com. -``` - - - DNS - - -
- ## Configuración específica del proveedor -
- - - - Si Vercel es tu proveedor de domain, debes añadir un registro `TXT` de verificación. Esta información se mostrará en tu dashboard después de enviar tu domain personalizado y también la recibirás por correo electrónico. - - - - Si Cloudflare es tu proveedor de DNS, debes habilitar la opción de seguridad "full strict" en la configuración de HTTPS. - - \ No newline at end of file diff --git a/es/settings/custom-scripts.mdx b/es/settings/custom-scripts.mdx deleted file mode 100644 index d4d6b29f6..000000000 --- a/es/settings/custom-scripts.mdx +++ /dev/null @@ -1,195 +0,0 @@ ---- -title: "Scripts personalizados" -description: "Personaliza por completo tu documentación con CSS y JS personalizados" -icon: "code" ---- - -Usa CSS para dar estilo a los elementos HTML o agrega CSS y JavaScript personalizados para adaptar por completo la apariencia y la experiencia de tu documentación. - -
- ## Estilos con Tailwind CSS -
- -Usa Tailwind CSS v3 para aplicar estilos a elementos HTML. Puedes controlar el diseño, el espaciado, los colores y otras propiedades visuales. Algunas clases comunes son: - -* `w-full` - Ancho completo -* `aspect-video` - Relación de aspecto 16:9 -* `rounded-xl` - Esquinas redondeadas grandes -* `block`, `hidden` - Control de visualización -* `dark:hidden`, `dark:block` - Visibilidad en modo oscuro - -Los valores arbitrarios de Tailwind CSS no son compatibles. Para valores personalizados, usa la prop `style`. - -```html - -``` - - -
- ## CSS personalizado -
- -Agrega archivos CSS a tu repositorio y los nombres de clase definidos se aplicarán y estarán disponibles en todos tus archivos `MDX`. - -
- ### Añadir `style.css` -
- -Por ejemplo, puedes añadir el siguiente archivo `style.css` para personalizar el estilo de la barra de navegación y el pie de página. - -```css -#navbar { - background: "#fffff2"; - padding: 1rem; -} - -footer { - margin-top: 2rem; -} -``` - - -
- ### Uso de identificadores y selectores -
- -Mintlify cuenta con un conjunto de identificadores y selectores comunes para ayudarte a etiquetar elementos importantes de la interfaz de usuario. - - - Usa la herramienta Inspeccionar elemento para encontrar referencias a los elementos que quieres personalizar. - - - - - - APIPlaygroundInput: `api-playground-input` - - AssistantEntry: `assistant-entry` - - AssistantEntryMobile: `assistant-entry-mobile` - - Banner: `banner` - - ChangelogFilters: `changelog-filters` - - ChangelogFiltersContent: `changelog-filters-content` - - ChatAssistantSheet: `chat-assistant-sheet` - - ChatAssistantTextArea: `chat-assistant-textarea` - - ContentArea: `content-area` - - ContentContainer: `content-container` - - ContentSideLayout: `content-side-layout` - - Footer: `footer` - - Header: `header` - - NavBarTransition: `navbar-transition` - - NavigationItems: `navigation-items` - - Navbar: `navbar` - - PageContextMenu: `page-context-menu` - - PageContextMenuButton: `page-context-menu-button` - - PageTitle: `page-title` - - Pagination: `pagination` - - Panel: `panel` - - RequestExample: `request-example` - - ResponseExample: `response-example` - - SearchBarEntry: `search-bar-entry` - - SearchBarEntryMobile: `search-bar-entry-mobile` - - SearchInput: `search-input` - - Sidebar: `sidebar` - - SidebarContent: `sidebar-content` - - TableOfContents: `table-of-contents` - - TableOfContentsContent: `table-of-contents-content` - - TableOfContentsLayout: `table-of-contents-layout` - - TopbarCtaButton: `topbar-cta-button` - - - - Accordion: `accordion` - - AccordionGroup: `accordion-group` - - AlmondLayout: `almond-layout` - - AlmondNavBottomSection: `almond-nav-bottom-section` - - AlmondNavBottomSectionDivider: `almond-nav-bottom-section-divider` - - Anchor: `nav-anchor` - - Anchors: `nav-anchors` - - APISection: `api-section` - - APISectionHeading: `api-section-heading` - - APISectionHeadingSubtitle: `api-section-heading-subtitle` - - APISectionHeadingTitle: `api-section-heading-title` - - Callout: `callout` - - Card: `card` - - CardGroup: `card-group` - - ChatAssistantSheet: `chat-assistant-sheet` - - ChatAssistantSheetHeader: `chat-assistant-sheet-header` - - ChatAssistantSheetContent: `chat-assistant-sheet-content` - - ChatAssistantInput: `chat-assistant-input` - - ChatAssistantSendButton: `chat-assistant-send-button` - - CodeBlock: `code-block` - - CodeGroup: `code-group` - - Content: `mdx-content` - - DropdownTrigger: `nav-dropdown-trigger` - - DropdownContent: `nav-dropdown-content` - - DropdownItem: `nav-dropdown-item` - - DropdownItemTextContainer: `nav-dropdown-item-text-container` - - DropdownItemTitle: `nav-dropdown-item-title` - - DropdownItemDescription: `nav-dropdown-item-description` - - DropdownItemIcon: `nav-dropdown-item-icon` - - Expandable: `expandable` - - Eyebrow: `eyebrow` - - FeedbackToolbar: `feedback-toolbar` - - Field: `field` - - Frame: `frame` - - Icon: `icon` - - Link: `link` - - LoginLink: `login-link` - - Logo: `nav-logo` - - Mermaid: `mermaid` - - MethodNavPill: `method-nav-pill` - - MethodPill: `method-pill` - - NavBarLink: `navbar-link` - - NavTagPill: `nav-tag-pill` - - NavTagPillText: `nav-tag-pill-text` - - OptionDropdown: `option-dropdown` - - PaginationNext: `pagination-next` - - PaginationPrev: `pagination-prev` - - PaginationTitle: `pagination-title` - - Panel: `panel` - - SidebarGroup: `sidebar-group` - - SidebarGroupIcon: `sidebar-group-icon` - - SidebarGroupHeader: `sidebar-group-header` - - SidebarNavGroupDivider: `sidebar-nav-group-divider` - - SidebarTitle: `sidebar-title` - - Step: `step` - - Steps: `steps` - - Tab: `tab` - - Tabs: `tabs` - - TabsBar: `nav-tabs` - - TabsBarItem: `nav-tabs-item` - - TableOfContents: `toc` - - TableOfContentsItem: `toc-item` - - Tooltip: `tooltip` - - TopbarRightContainer: `topbar-right-container` - - TryitButton: `tryit-button` - - Update: `update` - - - - - Las referencias y el estilo de los elementos comunes pueden cambiar a medida que la plataforma evoluciona. Usa estilos personalizados con precaución. - - -
- ## JavaScript personalizado -
- -JavaScript personalizado te permite agregar código ejecutable propio de forma global. Es equivalente a añadir una etiqueta `