OpenAPI

Estándares Jan 9, 2026 YAML
openapi api-design documentation standards specification

Definición

OpenAPI es la especificación estándar de la industria para describir APIs RESTful. Proporciona un formato estructurado y legible por máquinas que define cada aspecto de tu API: endpoints, formatos de solicitud/respuesta, métodos de autenticación, códigos de error y más. Piensa en ello como un contrato que describe precisamente qué hace tu API, cómo usarla y qué esperar.

La belleza de OpenAPI es que es tanto legible para humanos como procesable por máquinas. Los desarrolladores pueden leer la especificación para comprender tu API, mientras que las herramientas pueden generar automáticamente documentación interactiva, SDKs de cliente, stubs de servidor, casos de prueba y lógica de validación. Es mantenido por la OpenAPI Initiative, un proyecto de la Linux Foundation con respaldo de compañías como Google, Microsoft e IBM.

OpenAPI evolucionó desde Swagger, un conjunto de herramientas para APIs popular. En 2015, SmartBear donó la Swagger Specification a la Linux Foundation, que la renombró como OpenAPI Specification. Hoy, “OpenAPI” se refiere a la especificación en sí, mientras que “Swagger” se refiere al ecosistema de herramientas construido alrededor de ella.

Ejemplo

API de Stripe: Stripe mantiene una especificación OpenAPI exhaustiva que describe toda su API de pagos. Los desarrolladores usan esta especificación para generar bibliotecas de cliente en Python, Ruby, Node.js y más. La misma especificación alimenta la documentación interactiva de la API de Stripe donde puedes probar endpoints directamente en el navegador.

API de GitHub: GitHub publica su especificación OpenAPI en github.com/github/rest-api-description. Las herramientas consumen esta especificación para auto-generar clientes de API, validar solicitudes y mantener la documentación sincronizada con el comportamiento real de la API. Cuando GitHub actualiza un endpoint, la especificación se actualiza y todas las herramientas reflejan automáticamente los cambios.

AWS API Gateway: Cuando construyes APIs en AWS, puedes importar/exportar especificaciones OpenAPI. Esto te permite definir tu API localmente en YAML, importarla a AWS y desplegarla automáticamente. También puedes exportar APIs existentes de AWS como especificaciones OpenAPI para documentación o propósitos de migración.

Microservicios Internos: Muchas compañías usan OpenAPI para APIs internas. Los equipos definen sus contratos de servicio como especificaciones OpenAPI antes de escribir código (contract-first). Esto permite desarrollo paralelo - los equipos backend implementan la especificación mientras los equipos frontend generan servidores mock y comienzan a construir contra el contrato.

Marketplaces de APIs: Plataformas como RapidAPI requieren especificaciones OpenAPI para cada API listada. Esto permite generación automática de SDKs, pruebas interactivas y experiencia de desarrollador consistente a través de miles de APIs diferentes.

Analogía

El Sistema de Planos: Construir una API sin OpenAPI es como construir una casa sin planos. Podrías recordar cómo se conecta la plomería, pero los nuevos electricistas tienen que adivinar. OpenAPI es el plano oficial - muestra exactamente a dónde va cada tubería, qué hace cada habitación y cómo se conectan los sistemas. Los contratistas (herramientas) pueden leer el plano y automáticamente ordenar materiales (generar SDKs), programar trabajo (crear servidores mock) o inspeccionar la construcción (validar implementaciones).

El Menú del Restaurante: OpenAPI es como un formato de menú estandarizado que todos los restaurantes usan. En lugar de que cada restaurante describa platos de forma diferente, todos siguen la misma estructura: lista de ingredientes, advertencias de alérgenos, precio, tiempo de preparación. Esto permite que apps de entrega de comida analicen automáticamente las ofertas de cualquier restaurante, calculen información nutricional y traduzcan menús - todo porque todos siguen el mismo formato.

El Manual de IKEA: Las especificaciones OpenAPI son como las instrucciones de montaje de IKEA - visuales, paso a paso, independientes del idioma. No necesitas hablar sueco para construir los muebles porque el formato estandarizado (diagramas, pasos numerados, lista de piezas) funciona universalmente. De forma similar, el formato estándar de OpenAPI permite que herramientas y desarrolladores comprendan cualquier API independientemente del lenguaje de programación subyacente.

Ejemplo de Código


openapi: 3.1.0
info:
  title: User Management API
  version: 1.0.0
  description: API simple para gestionar usuarios

servers:
  - url: https://api.example.com/v1
    description: Servidor de producción

paths:
  /users:
    get:
      summary: Listar todos los usuarios
      operationId: listUsers
      parameters:
        - name: limit
          in: query
          schema:
            type: integer
            default: 20
      responses:
        '200':
          description: Respuesta exitosa
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'

    post:
      summary: Crear un nuevo usuario
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewUser'
      responses:
        '201':
          description: Usuario creado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'

  /users/{userId}:
    get:
      summary: Obtener usuario por ID
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Usuario encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '404':
          description: Usuario no encontrado

components:
  schemas:
    User:
      type: object
      required: [id, email, name]
      properties:
        id:
          type: string
          format: uuid
        email:
          type: string
          format: email
        name:
          type: string
        createdAt:
          type: string
          format: date-time

    NewUser:
      type: object
      required: [email, name]
      properties:
        email:
          type: string
          format: email
        name:
          type: string

Diagrama

graph TB
    subgraph Ecosistema OpenAPI
        SPEC[Especificación OpenAPI
YAML/JSON] subgraph Herramientas DOC[Documentación
Swagger UI, Redoc] SDK[Generación de SDK
Bibliotecas de Cliente] MOCK[Servidores Mock
Prism, Mirage] VALID[Validación
Solicitud/Respuesta] TEST[Pruebas
Postman, Dredd] GATE[API Gateway
Importar Configuración] end SPEC --> DOC SPEC --> SDK SPEC --> MOCK SPEC --> VALID SPEC --> TEST SPEC --> GATE end DEV[Desarrollador] --> SPEC SPEC --> HUMAN[Legible para Humanos] SPEC --> MACHINE[Procesable por Máquinas]

Mejores Prácticas

  1. Empezar con OpenAPI primero - Define tu contrato de API antes de escribir código (enfoque contract-first)
  2. Usar versionado semántico - Versiona tu especificación junto con tu API (1.0.0, 1.1.0, 2.0.0)
  3. Proporcionar ejemplos - Incluir ejemplos de solicitud/respuesta en la especificación para ayudar a los desarrolladores
  4. Referenciar componentes reutilizables - Usar $ref para evitar duplicación en esquemas, parámetros, respuestas
  5. Documentar errores exhaustivamente - Definir todas las respuestas de error posibles con ejemplos
  6. Validar automáticamente - Configurar CI/CD para validar sintaxis y consistencia de la especificación
  7. Mantener sincronizado con el código - O generar especificación desde código o validar código contra especificación
  8. Usar IDs de operación significativos - Estos se convierten en nombres de función en SDKs generados

Errores Comunes

Drift de especificación: Escribir la especificación OpenAPI una vez y luego dejar que se desactualice conforme evoluciona la API. Solución - automatizar generación o validación de especificación en CI/CD.

Sobre-especificación: Intentar documentar cada pequeño detalle de implementación en la especificación. OpenAPI describe el contrato de la API (entradas/salidas), no la lógica interna.

Falta de ejemplos: Publicar especificaciones sin ejemplos concretos de solicitud/respuesta. Los desarrolladores aprenden mejor de ejemplos funcionales, no esquemas abstractos.

Ignorar validación: No validar la especificación OpenAPI en sí para errores de sintaxis o inconsistencias. Usar herramientas como Spectral u openapi-validator.

Sin estrategia de versionado: Cambiar la especificación sin versionarla. Cada cambio significativo debe incrementar el número de versión según versionado semántico.

Acoplamiento estrecho con código: Usar comentarios o anotaciones de código como única fuente de verdad. Si el código se refactoriza, la especificación no debería romperse.

Documentación de errores incompleta: Solo documentar respuestas de éxito (200, 201) y olvidar casos de error (400, 401, 404, 500).

Estándares y RFCs

Standards & RFCs
1)- [OpenAPI 3](https://reference.apios.info/es/terms/openapi-3/).1.0 Specification
2)- OpenAPI 3.0.3 Specification
3)- JSON [Schema](https://reference.apios.info/es/terms/schema/) Draft 2020-12
4)- Swagger 2.0 (legacy)

Términos Relacionados