> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify-mintlify-add-i-to-quickstart-8818.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuración de OpenAPI

> Incluye endpoints de OpenAPI en las páginas de tu documentación

OpenAPI es una especificación para describir APIs. Mintlify admite documentos de OpenAPI 3.0+ para generar documentación de API interactiva y mantenerla actualizada.

<div id="add-an-openapi-specification-file">
  ## Agregar un archivo de especificación de OpenAPI
</div>

Para documentar tus endpoints con OpenAPI, necesitas un documento de OpenAPI válido en formato JSON o YAML que cumpla con la [especificación OpenAPI 3.0+](https://swagger.io/specification/).

Puedes crear páginas de API a partir de uno o varios documentos de OpenAPI.

<div id="describing-your-api">
  ### Describir tu API
</div>

Recomendamos los siguientes recursos para aprender a crear y estructurar tus documentos de OpenAPI.

* [Guía de OpenAPI de Swagger](https://swagger.io/docs/specification/v3_0/basic-structure/) para aprender la sintaxis de OpenAPI.
* [Fuentes Markdown de la especificación de OpenAPI](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/) para consultar los detalles de la especificación OpenAPI más reciente.
* [Swagger Editor](https://editor.swagger.io/) para editar, validar y depurar tu documento de OpenAPI.
* [La CLI de Mint](https://www.npmjs.com/package/mint) para validar tu documento de OpenAPI con el comando: `mint openapi-check <openapiFilenameOrUrl>`.

<Note>
  La Guía de OpenAPI de Swagger es para OpenAPI v3.0, pero casi toda la información
  es aplicable a v3.1. Para obtener más información sobre las diferencias entre v3.0
  y v3.1, consulta [Migración de OpenAPI 3.0 a
  3.1.0](https://www.openapis.org/blog/2021/02/16/migrating-from-openapi-3-0-to-3-1-0)
  en el blog de OpenAPI.
</Note>

<div id="specifying-the-url-for-your-api">
  ### Especificar la URL de tu API
</div>

Para habilitar funciones de Mintlify como el Área de pruebas de API, agrega un campo `servers` a tu documento de OpenAPI con la URL base de tu API.

```json
{
  "servers": [
    {
      "url": "https://api.example.com/v1"
    }
  ]
}
```

En un documento de OpenAPI, los distintos endpoints de la API se especifican por sus rutas, como `/users/{id}` o simplemente `/`. La URL base define dónde deben añadirse estas rutas. Para más información sobre cómo configurar el campo `servers`, consulta [API Server and Base Path](https://swagger.io/docs/specification/api-host-and-base-path/) en la documentación de OpenAPI.

El Área de pruebas de API usa estas URL de servidor para determinar adónde enviar las solicitudes. Si especificas varios servidores, un menú desplegable permitirá a los usuarios alternar entre ellos. Si no especificas un servidor, el Área de pruebas de API usará el modo simple, ya que no puede enviar solicitudes sin una URL base.

Si tu API tiene endpoints que existen en diferentes URL, puedes [sobrescribir el campo de servidor](https://swagger.io/docs/specification/v3_0/api-host-and-base-path/#overriding-servers) para una ruta u operación específica.

<div id="specifying-authentication">
  ### Especificar la autenticación
</div>

Para habilitar la autenticación en tu documentación y en el área de pruebas de la API, configura los campos `securitySchemes` y `security` en tu documento de OpenAPI. Las descripciones de la API y el Área de pruebas de API añadirán campos de autenticación según las configuraciones de seguridad de tu documento de OpenAPI.

<Steps>
  <Step title="Define your authentication method.">
    Agrega un campo `securitySchemes` para definir cómo se autentican los usuarios.

    Este ejemplo muestra una configuración para autenticación bearer.

    ```json
    {
      "components": {
        "securitySchemes": {
          "bearerAuth": {
            "type": "http",
            "scheme": "bearer"
          }
        }
      }
    }
    ```
  </Step>

  <Step title="Apply authentication to your endpoints.">
    Agrega un campo `security` para requerir autenticación.

    ```json
    {
      "security": [
        {
          "bearerAuth": []
        }
      ]
    }
    ```
  </Step>
</Steps>

Los tipos comunes de autenticación incluyen:

* [API Keys](https://swagger.io/docs/specification/authentication/api-keys/): Para claves en encabezado, query o cookie.
* [Bearer](https://swagger.io/docs/specification/authentication/bearer-authentication/): Para tokens JWT u OAuth.
* [Basic](https://swagger.io/docs/specification/authentication/basic-authentication/): Para nombre de usuario y contraseña.

Si distintos endpoints de tu API requieren diferentes métodos de autenticación, puedes [sobrescribir el campo de seguridad](https://swagger.io/docs/specification/authentication/#:~:text=you%20can%20apply%20them%20to%20the%20whole%20API%20or%20individual%20operations%20by%20adding%20the%20security%20section%20on%20the%20root%20level%20or%20operation%20level%2C%20respectively.) para una operación específica.

Para más información sobre cómo definir y aplicar la autenticación, consulta [Authentication](https://swagger.io/docs/specification/authentication/) en la documentación de OpenAPI.

<div id="x-mint-extension">
  ## Extensión `x-mint`
</div>

La extensión `x-mint` es una extensión personalizada de OpenAPI que ofrece un mayor control sobre cómo se genera y se muestra la documentación de tu API.

<div id="metadata">
  ### Metadatos
</div>

Sobrescribe los metadatos predeterminados de las páginas de API generadas agregando `x-mint: metadata` a cualquier operación. Puedes usar cualquier campo de metadatos válido en el frontmatter de `MDX`, excepto `openapi`:

```json {7-13}
{
  "paths": {
    "/users": {
      "get": {
        "summary": "Obtener usuarios",
        "description": "Obtener una lista de usuarios",
        "x-mint": {
          "metadata": {
            "title": "Listar todos los usuarios",
            "description": "Obtener datos de usuarios paginados con opciones de filtrado",
            "og:title": "Mostrar una lista de usuarios",
          }
        },
        "parameters": [
          {
            // Configuración del parámetro
          }
        ]
      }
    }
  }
}
```

<div id="content">
  ### Contenido
</div>

Agrega contenido antes de la documentación de API generada automáticamente usando `x-mint: content`:

```json {6-8}
{
  "paths": {
    "/users": {
      "post": {
        "summary": "Crear usuario",
        "x-mint": {
          "content": "## Requisitos previos\n\nEste endpoint requiere privilegios de administrador y tiene límites de tasa.\n\n<Note>Las direcciones de correo electrónico de los usuarios deben ser únicas en todo el sistema.</Note>"
        },
        "parameters": [
          {
            // Parameter configuration
          }
        ]
      }
    }
  }
}
```

La extensión `content` es compatible con todos los componentes y el formato MDX de Mintlify.

<div id="href">
  ### Href
</div>

Cambia la URL de la página del endpoint en tu documentación usando `x-mint: href`:

```json {6-8, 14-16}
{
  "paths": {
    "/legacy-endpoint": {
      "get": {
        "summary": "Endpoint heredado",
        "x-mint": {
          "href": "/deprecated-endpoints/legacy-endpoint"
        }
      }
    },
    "/documented-elsewhere": {
      "post": {
        "summary": "Endpoint especial"
        "x-mint": {
          "href": "/guides/special-endpoint-guide"
        }
      }
    }
  }
}
```

Cuando `x-mint: href` está presente, la entrada de navegación enlaza directamente a la URL especificada en lugar de generar una página de API.

<div id="mcp">
  ### MCP
</div>

Expón selectivamente endpoints como herramientas del Model Context Protocol (MCP) usando `x-mint: mcp`. Habilita solo los endpoints que sean seguros para el acceso público a través de herramientas de IA.

<ResponseField name="mcp" type="object">
  La configuración de MCP para el endpoint.

  <Expandable title="MCP">
    <ResponseField name="enabled" type="boolean">
      Indica si se expone el endpoint como herramienta MCP. Tiene prioridad sobre la configuración a nivel de archivo.
    </ResponseField>

    <ResponseField name="name" type="string">
      El nombre de la herramienta MCP.
    </ResponseField>

    <ResponseField name="description" type="string">
      La descripción de la herramienta MCP.
    </ResponseField>
  </Expandable>
</ResponseField>

<CodeGroup>
  ```json Selective enablement {6-9} wrap
  {
    "paths": {
      "/users": {
        "post": {
          "summary": "Create user",
          "x-mint": {
            "mcp": {
              "enabled": true
            },
            // ...
          }
        }
      },
      "/users": {
        "delete": {
          "summary": "Delete user (admin only)",
          // No `x-mint: mcp` so this endpoint is not exposed as an MCP tool
          // ...
        }
      }
    }
  }
  ```

  ```json Global enablement {3-5, 9-13} wrap
  {
    "openapi": "3.1.0",
    "x-mcp": {
        "enabled": true // All endpoints are exposed as MCP tools by default
      },
    "paths": {
      "/api/admin/delete": {
        "delete": {
          "x-mint": {
            "mcp": {
              "enabled": false // Disable MCP for this endpoint
            }
          },
          "summary": "Delete resources"
        }
      }
    }
  }
  ```
</CodeGroup>

Para obtener más información, consulta [Model Context Protocol](/es/ai/model-context-protocol).

<div id="auto-populate-api-pages">
  ## Rellenar automáticamente páginas de API
</div>

Agrega un campo `openapi` a cualquier elemento de navegación en tu `docs.json` para generar automáticamente páginas para endpoints de OpenAPI. Puedes controlar dónde aparecen estas páginas en tu estructura de navegación, ya sea como secciones de API dedicadas o junto con otras páginas.

El campo `openapi` acepta una ruta de archivo en tu repositorio de documentación o una URL a un documento de OpenAPI alojado.

Las páginas de endpoints generadas tienen estos metadatos predeterminados:

* `title`: El campo `summary` de la operación, si está presente. Si no hay `summary`, el título se genera a partir del método HTTP y del endpoint.
* `description`: El campo `description` de la operación, si está presente.
* `version`: El valor de `version` del ancla o pestaña principal, si está presente.
* `deprecated`: El campo `deprecated` de la operación. Si es `true`, aparecerá una etiqueta de “deprecated” junto al título del endpoint en la navegación lateral y en la página del endpoint.

<Tip>
  Para excluir endpoints específicos de tus páginas de API generadas automáticamente, agrega la propiedad
  [x-hidden](/es/api-playground/customization/managing-page-visibility#x-hidden)
  a la operación en tu especificación de OpenAPI.
</Tip>

Hay dos enfoques para agregar páginas de endpoints a tu documentación:

1. **Secciones de API dedicadas**: Referencia especificaciones de OpenAPI en elementos de navegación para secciones de API dedicadas.
2. **Endpoints selectivos**: Referencia endpoints específicos en tu navegación junto con otras páginas.

<div id="dedicated-api-sections">
  ### Secciones de API dedicadas
</div>

Genera secciones de API dedicadas agregando un campo `openapi` a un elemento de navegación y sin otras páginas. Se incluirán todos los endpoints de la especificación:

```json {5}
"navigation": {
  "tabs": [
    {
        "tab": "Referencia de la API"
        "openapi": "https://petstore3.swagger.io/api/v3/openapi.json"
    }
  ]
}
```

Puedes usar varias especificaciones de OpenAPI en diferentes secciones de navegación:

```json {8-11, 15-18}
"navigation": {
  "tabs": [
    {
      "tab": "Referencia de la API",
      "groups": [
        {
          "group": "Usuarios",
          "openapi": {
            "source": "/path/to/openapi-1.json",
            "directory": "api-reference"
          }
        },
        {
          "group": "Administración"
          "openapi": {
            "source": "/path/to/openapi-2.json",
            "directory": "api-reference"
          }
        }
      ]
    }
  ]
}
```

<Note>
  El campo `directory` es opcional y especifica dónde se almacenan las páginas de API generadas
  en tu repositorio de documentación. Si no se especifica, se usará por defecto el directorio `api-reference`
  de tu repositorio.
</Note>

<div id="selective-endpoints">
  ### Endpoints selectivos
</div>

Cuando necesites más control sobre dónde aparecen los endpoints en tu documentación, puedes referenciar endpoints específicos en la navegación. Este enfoque te permite generar páginas para endpoints de API junto con otros contenidos.

<div id="set-a-default-openapi-spec">
  #### Definir una especificación OpenAPI predeterminada
</div>

Configura una especificación OpenAPI predeterminada para un elemento de navegación. Luego referencia endpoints específicos en el campo `pages`:

```json {12, 15-16}
"navigation": {
  "tabs": [
    {
      "tab": "Primeros pasos",
      "pages": [
        "quickstart",
        "installation"
      ]
    },
    {
      "tab": "Referencia de la API",
      "openapi": "/path/to/openapi.json",
      "pages": [
        "api-overview",
        "GET /users",
        "POST /users",
        "guides/authentication"
      ]
    }
  ]
}
```

Cualquier entrada de página que coincida con el formato `METHOD /path` generará una página de API para ese endpoint usando la especificación predeterminada de OpenAPI.

<div id="openapi-spec-inheritance">
  #### Herencia de la especificación de OpenAPI
</div>

Las especificaciones de OpenAPI se heredan a lo largo de la jerarquía de navegación. Los elementos de navegación secundarios heredan la especificación de OpenAPI de su elemento principal, a menos que definan la suya propia:

```json {3, 7-8, 11, 13-14}
{
  "group": "Referencia de la API",
  "openapi": "/path/to/openapi-v1.json",
  "pages": [
    "overview",
    "authentication",
    "GET /users",
    "POST /users",
    {
      "group": "Pedidos",
      "openapi": "/path/to/openapi-v2.json",
      "pages": [
        "GET /orders",
        "POST /orders"
      ]
    }
  ]
}
```

<div id="individual-endpoints">
  #### Endpoints individuales
</div>

Hace referencia a endpoints específicos sin establecer una especificación de OpenAPI predeterminada, incluyendo la ruta del archivo:

```json {5-6}
"navigation": {
  "pages": [
    "introducción",
    "guías de usuario"
    "/path/to/openapi-v1.json POST /users",
    "/path/to/openapi-v2.json GET /orders"
  ]
}
```

Este enfoque es útil cuando necesitas endpoints individuales de distintas especificaciones o solo quieres incluir algunos endpoints seleccionados.

<div id="create-mdx-files-for-api-pages">
  ## Crear archivos `MDX` para páginas de API
</div>

Para controlar páginas de endpoints individuales, crea páginas `MDX` para cada operación. Esto te permite personalizar los metadatos de la página, añadir contenido, omitir ciertas operaciones o reordenar páginas en tu navegación a nivel de página.

Consulta un [ejemplo de página de OpenAPI en MDX de MindsDB](https://github.com/mindsdb/mindsdb/blob/main/docs/rest/databases/create-databases.mdx?plain=1) y cómo aparece en su [documentación en producción](https://docs.mindsdb.com/rest/databases/create-databases).

<div id="manually-specify-files">
  ### Especificar archivos manualmente
</div>

Crea una página `MDX` para cada endpoint y especifica qué operación de OpenAPI mostrar utilizando el campo `openapi` en el frontmatter.

Cuando haces referencia a una operación de OpenAPI de esta manera, el nombre, la descripción, los parámetros, las respuestas y el Área de pruebas de API se generan automáticamente a partir de tu documento de OpenAPI.

Si tienes varios archivos de OpenAPI, incluye la ruta del archivo en tu referencia para asegurarte de que Mintlify encuentre el documento de OpenAPI correcto. Si solo tienes un archivo de OpenAPI, Mintlify lo detectará automáticamente.

<Note>
  Este enfoque funciona independientemente de si has establecido una especificación de OpenAPI predeterminada
  en tu navegación. Puedes hacer referencia a cualquier endpoint de cualquier especificación de OpenAPI
  incluyendo la ruta del archivo en el frontmatter.
</Note>

Si deseas hacer referencia a un archivo externo de OpenAPI, añade la URL del archivo a tu `docs.json`.

<CodeGroup>
  ```mdx Example
  ---
  title: "Get users"
  description: "Returns all plants from the system that the user has access to"
  openapi: "/path/to/openapi-1.json GET /users"
  deprecated: true
  version: "1.0"
  ---
  ```

  ```mdx Format
  ---
  title: "title of the page"
  description: "description of the page"
  openapi: openapi-file-path method path
  deprecated: boolean (not required)
  version: "version-string" (not required)
  ---
  ```
</CodeGroup>

<Note>
  El método y la ruta deben coincidir exactamente con la definición en tu especificación de OpenAPI.
  Si el endpoint no existe en el archivo de OpenAPI, la página quedará vacía.
</Note>

<div id="autogenerate-mdx-files">
  ### Generar archivos `MDX` automáticamente
</div>

Utiliza nuestro [scraper](https://www.npmjs.com/package/@mintlify/scraping) de Mintlify para generar automáticamente páginas `MDX` para documentos de OpenAPI grandes.

<Note>
  Tu documento de OpenAPI debe ser válido o los archivos no se generarán automáticamente.
</Note>

El scraper genera:

* Una página `MDX` por cada operación en el campo `paths` de tu documento de OpenAPI.
* Si tu documento de OpenAPI es versión 3.1+, una página `MDX` por cada operación en el campo `webhooks` de tu documento de OpenAPI.
* Un array de entradas de navegación que puedes añadir a tu `docs.json`.

<Steps>
  <Step title="Generar archivos `MDX`.">
    ```bash
    npx @mintlify/scraping@latest openapi-file <path-to-openapi-file>
    ```
  </Step>

  <Step title="Especificar una carpeta de salida.">
    ```bash
    npx @mintlify/scraping@latest openapi-file <path-to-openapi-file> -o api-reference
    ```

    Añade la opción `-o` para indicar una carpeta donde guardar los archivos. Si no se especifica una carpeta, los archivos se crearán en el directorio de trabajo.
  </Step>
</Steps>

<div id="create-mdx-files-for-openapi-schemas">
  ### Crear archivos `MDX` para esquemas de OpenAPI
</div>

Puedes crear páginas individuales para cualquier esquema de OpenAPI definido en el campo `components.schema` de un documento de OpenAPI:

<CodeGroup>
  ```mdx Example
  ---
  openapi-schema: OrderItem
  ---
  ```

  ```mdx Format
  ---
  openapi-schema: "schema-key"
  ---
  ```
</CodeGroup>

<div id="webhooks">
  ## Webhooks
</div>

Los webhooks son devoluciones de llamada HTTP que tu API envía para notificar a sistemas externos cuando se producen eventos. Los webhooks son compatibles en documentos de OpenAPI 3.1+.

<div id="define-webhooks-in-your-openapi-specification">
  ### Define webhooks en tu especificación de OpenAPI
</div>

Agrega un campo `webhooks` a tu documento de OpenAPI junto al campo `paths`.

Para obtener más información sobre cómo definir webhooks, consulta [Webhooks](https://spec.openapis.org/oas/v3.1.0#oasWebhooks) en la documentación de OpenAPI.

<div id="reference-webhooks-in-mdx-files">
  ### Referencia webhooks en archivos MDX
</div>

Al crear páginas MDX para webhooks, usa `webhook` en lugar de métodos HTTP como `GET` o `POST`:

```mdx
---
title: "Webhook de ejemplo"
description: "Se activa cuando se produce un evento"
openapi: "path/to/openapi-file webhook example-webhook-name"
---
```

<Note>
  El nombre del webhook debe coincidir exactamente con la clave definida en el campo `webhooks`
  de tu especificación de OpenAPI.
</Note>
