# Especificación OpenAPI

La especificación OpenAPI, originalmente conocida como la especificación Swagger, es una especificación para archivos de interfaz legibles por máquina para describir, producir, consumir y visualizar servicios web RESTful. Comenzó como parte del marco Swagger, y se convirtió en un proyecto separado en 2016, supervisado por la Iniciativa OpenAPI, un proyecto de colaboración de código abierto de la Fundación Linux. Swagger y algunas otras herramientas pueden generar código, documentación y casos de prueba con un archivo de interfaz.

## Historia

El desarrollo de Swagger comenzó a principios de 2010 de la mano de Tony Tam, que trabajaba en la empresa de diccionarios en línea Wordnik. En marzo de 2015, SmartBear Software adquirió la especificación de la API Swagger de código abierto de Reverb Technologies, la empresa matriz de Wordnik.
En noviembre de 2015, SmartBear anunció que estaba creando una nueva organización llamada Iniciativa OpenAPI bajo el patrocinio de la Fundación Linux. Otras empresas miembros fundadores fueron 3Scale, Apigee, Capital One, Google, IBM, Intuit, Microsoft, PayPal y Restlet. SmartBear donó la especificación Swagger al nuevo grupo. RAML y API Blueprint también fueron considerados por el grupo.
El 1 de enero de 2016, la especificación Swagger pasó a llamarse Especificación OpenAPI (OAS) y se trasladó a un nuevo repositorio de GitHub.
En septiembre de 2016, la conferencia API World presentó un premio API Infrastructure a SmartBear por su trabajo continuo en Swagger.
En julio de 2017, la Iniciativa OpenAPI lanzó la versión 3.0.0 de su especificación. MuleSoft, el principal contribuyente al lenguaje de modelado de API RESTful alternativo (RAML), se unió a la OEA y abrió su herramienta API Modeling Framework, que puede generar documentos OAS a partir de la entrada RAML.

## Fechas de lanzamiento

| Versión | Fecha | Notas |
| 3.1.0 | 2021-02-14 | Publicación de la especificación OpenAPI 3.1.0 |
| 3.0.3 | 2020-02-20 | Lanzamiento de parche de la especificación OpenAPI 3.0.3 |
| 3.0.2 | 2018-10-08 | Lanzamiento de parche de la especificación OpenAPI 3.0.2 |
| 3.0.1 | 2017-12-06 | Lanzamiento de parche de la especificación OpenAPI 3.0.1 |
| 3.0.0 | 2017-07-26 | Lanzamiento de la especificación OpenAPI 3.0.0 |
| 2.0 | 2014-09-08 | Lanzamiento de Swagger 2.0 |
| 1.2 | 2014-03-14 | Publicación inicial del documento formal |
| 1.1 | 2012-08-22 | Lanzamiento de Swagger 1.1 |
| 1.0 | 2011-08-10 | Primera versión de la especificación Swagger |

## Uso

Las aplicaciones implementadas en base a archivos de interfaz OpenAPI pueden generar automáticamente documentación de métodos, parámetros y modelos. Esto ayuda a mantener sincronizados la documentación, las bibliotecas cliente y el código fuente.

## Características

La especificación de OpenAPI es independiente del idioma. Con la especificación de recursos declarativos de OpenAPI, los clientes pueden comprender y consumir servicios sin conocimiento de la implementación del servidor o acceso al código del servidor.

## Herramientas que funcionan con OpenAPI

La Iniciativa OpenAPI mantiene una lista de implementaciones para la versión 3.0 de la especificación. SmartBear todavía marca sus herramientas OpenAPI con el sobrenombre de Swagger. El marco de la interfaz de usuario de Swagger permite que tanto los desarrolladores como los no desarrolladores interactúen con la API en una interfaz de usuario de espacio aislado que brinda información sobre cómo responde la API a los parámetros y opciones. Swagger puede manejar tanto JSON como XML.
Swagger Codegen contiene un motor basado en plantillas para generar documentación, clientes API y códigos auxiliares de servidor en diferentes idiomas mediante el análisis de la definición de OpenAPI. En julio de 2018, William Cheng, el principal contribuyente de Swagger Codegen, y más de 40 colaboradores de Swagger Codegen bifurcaron el código en un proyecto llamado OpenAPI Generator bajo la organización OpenAPI Tools.