OpenAPI Specification

Last updated
OpenAPI
OpenAPI Specification
Year started2010 (2010)
First published10 August 2011 (2011-08-10)
Latest version3.1.0
15 February 2021 (2021-02-15)
Website openapis.org

The OpenAPI Specification, previously known as the Swagger Specification, is a specification for a machine-readable interface definition language for describing, producing, consuming and visualizing web services. [1] Previously part of the Swagger framework, it became a separate project in 2015, overseen by the OpenAPI Initiative, an open-source collaboration project of the Linux Foundation. [2]

Contents

An OpenAPI document represents a formal description of an API that tools can use to generate code, documentation, test cases, and more.

History

Swagger development began in early 2010 by Tony Tam, who was working at online dictionary company Wordnik. [3]

In March 2015, SmartBear Software acquired the open-source Swagger API specification from Reverb Technologies, Wordnik's parent company. [4]

In November 2015, SmartBear announced that it was donating the Swagger specification to a new organization called the OpenAPI Initiative, under the sponsorship of the Linux Foundation. Other founding member companies included 3scale, Apigee, Capital One, Google, IBM, Intuit, Microsoft, PayPal, and Restlet. [5] [6]

On 1 January 2016, the Swagger specification was renamed the OpenAPI Specification (OAS) and was moved to a new GitHub repository. [7]

In July 2017, the OpenAPI Initiative released version 3.0.0 of its specification. [8] MuleSoft, the main contributor to the alternative RESTful API Modeling Language (RAML), joined the OAS and open-sourced its API Modeling Framework tool, which can generate OAS documents from RAML input. [9]

In February 2021, the OpenAPI Initiative released version 3.1.0. [10] Major changes in OpenAPI Specification 3.1.0 include JSON schema vocabularies alignment, new top-level elements for describing webhooks that are registered and managed out of band, support for identifying API licenses using the standard SPDX identifier, allowance of descriptions alongside the use of schema references and a change to make the PathItems object optional to simplify creation of reusable libraries of components. [11] [12] [13]

Release dates

VersionDateNotes [14]
3.1.02021-02-15Release of the OpenAPI Specification 3.1.0
3.0.32020-02-20Patch release of the OpenAPI Specification 3.0.3
3.0.22018-10-08Patch release of the OpenAPI Specification 3.0.2
3.0.12017-12-06Patch release of the OpenAPI Specification 3.0.1
3.0.02017-07-26Release of the OpenAPI Specification 3.0.0
2.02014-09-08Release of Swagger 2.0
1.22014-03-14Initial release of the formal document
1.12012-08-22Release of Swagger 1.1
1.02011-08-10First release of the Swagger Specification

Usage

Applications implemented based on OpenAPI interface files can automatically generate documentation of methods, parameters and data models. This helps keep the documentation, client libraries and source code in sync. [15]

When an OpenAPI document is used to generate source code stubs for servers, the process is called scaffolding.

Relationships to software engineering practices

The paradigm of agreeing on an API contract first and then programming business logic afterwards, in contrast to coding the program first and then writing a retrospective description of its behavior as the contract, is called contract-first development. Since the interface is determined before any code is written, downstream developers can mock the server behavior and start testing right away. [16] In this sense, contract-first development is also a practice of shift-left testing.

Features

The OpenAPI Specification is language-agnostic. With OpenAPI's declarative resource specification, clients can understand and consume services without knowledge of server implementation or access to the server code. [15]

Tools that work with OpenAPI

The OpenAPI Initiative maintains a list of implementations for version 3.0 of the specification. SmartBear still brands its OpenAPI tools with the Swagger moniker. The Swagger UI framework allows both developers and non-developers to interact with the API in a sandbox UI that gives insight into how the API responds to parameters and options. Swagger can handle both JSON and XML. [15]

Swagger Codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing the OpenAPI definition. In July, 2018, William Cheng, the top contributor to Swagger Codegen, and over 40 other contributors to Swagger Codegen forked the code into a project named OpenAPI Generator under the OpenAPI Tools organization. [17] [18]

Annual conference

The OpenAPI Initiative sponsors an annual API Specifications Conference (ASC). The event has its origins in the API Strategy and Practice Conference (APIStrat) that ran for many years and became part of the OpenAPI Initiative in 2016.

See also

Related Research Articles

<span class="mw-page-title-main">Linux framebuffer</span> Abstraction layer for Linux kernel to show graphics on the system console

The Linux framebuffer (fbdev) is a linux subsystem used to show graphics on a computer monitor, typically on the system console.

<span class="mw-page-title-main">Assistive Technology Service Provider Interface</span>

Assistive Technology Service Provider Interface (AT-SPI) is a platform-neutral framework for providing bi-directional communication between assistive technologies (AT) and applications. It is the de facto standard for providing accessibility to free and open desktops, like Linux or OpenBSD, led by the GNOME Project.


This is a comparison of notable free and open-source configuration management software, suitable for tasks like server configuration, orchestration and infrastructure as code typically performed by a system administrator.

<span class="mw-page-title-main">Vaadin</span>

Vaadin is an open-source web application development platform for Java. Vaadin includes a set of Web Components, a Java web framework, and a set of tools that enable developers to implement modern web graphical user interfaces (GUI) using the Java programming language only, TypeScript only, or a combination of both.

<span class="mw-page-title-main">Node.js</span> JavaScript runtime environment

Node.js is a cross-platform, open-source JavaScript runtime environment that can run on Windows, Linux, Unix, macOS, and more. Node.js runs on the V8 JavaScript engine, and executes JavaScript code outside a web browser.

CommonJS is a project to standardize the module ecosystem for JavaScript outside of web browsers.

<span class="mw-page-title-main">BaseX</span> XML database management and query system

BaseX is a native and light-weight XML database management system and XQuery processor, developed as a community project on GitHub. It is specialized in storing, querying, and visualizing large XML documents and collections. BaseX is platform-independent and distributed under the BSD-3-Clause license.

Docker is a set of platform as a service (PaaS) products that use OS-level virtualization to deliver software in packages called containers. The service has both free and premium tiers. The software that hosts the containers is called Docker Engine. It was first released in 2013 and is developed by Docker, Inc.

RESTful API Modeling Language (RAML) is a YAML-based language for describing static APIs. It provides all the information necessary to describe APIs on the level 2 of the Richardson Maturity Model. Although designed with RESTful APIs in mind, RAML is not capable of describing APIs that obey all constraints of REST. It encourages reuse, enables discovery and pattern-sharing and aims for merit-based emergence of best practices.

<span class="mw-page-title-main">Swagger (software)</span> Computing language

Swagger is a suite of tools for API developers from SmartBear Software and a former specification upon which the OpenAPI Specification is based.

SensorThings API is an Open Geospatial Consortium (OGC) standard providing an open and unified framework to interconnect IoT sensing devices, data, and applications over the Web. It is an open standard addressing the syntactic interoperability and semantic interoperability of the Internet of Things. It complements the existing IoT networking protocols such CoAP, MQTT, HTTP, 6LowPAN. While the above-mentioned IoT networking protocols are addressing the ability for different IoT systems to exchange information, OGC SensorThings API is addressing the ability for different IoT systems to use and understand the exchanged information. As an OGC standard, SensorThings API also allows easy integration into existing Spatial Data Infrastructures or Geographic Information Systems.

<span class="mw-page-title-main">GraphQL</span> Data query language developed by Facebook

GraphQL is an open-source data query and manipulation language for APIs and a query runtime engine.

<span class="mw-page-title-main">SmartBear Software</span> American information technology company

SmartBear Software is an American privately-held information technology company that delivers tools for application performance monitoring (APM), software development, software testing, API testing and API management. The company is based in Assembly Square in Somerville in the Greater Boston Area. The company was founded in 2009 when SmartBear, AutomatedQA and Pragmatic Software were acquired by Insight Venture Partners.

The tools listed here support emulating or simulating APIs and software systems. They are also called API mocking tools, service virtualization tools, over the wire test doubles and tools for stubbing and mocking HTTP(S) and other protocols. They enable component testing in isolation.

<span class="mw-page-title-main">ROCm</span> Parallel computing platform: GPGPU libraries and application programming interface

ROCm is an Advanced Micro Devices (AMD) software stack for graphics processing unit (GPU) programming. ROCm spans several domains: general-purpose computing on graphics processing units (GPGPU), high performance computing (HPC), heterogeneous computing. It offers several programming models: HIP, OpenMP/Message Passing Interface (MPI), OpenCL.

The Redfish standard is a suite of specifications that deliver an industry standard protocol providing a RESTful interface for the management of servers, storage, networking, and converged infrastructure.

Microsoft, a technology company historically known for its opposition to the open source software paradigm, turned to embrace the approach in the 2010s. From the 1970s through 2000s under CEOs Bill Gates and Steve Ballmer, Microsoft viewed the community creation and sharing of communal code, later to be known as free and open source software, as a threat to its business, and both executives spoke negatively against it. In the 2010s, as the industry turned towards cloud, embedded, and mobile computing—technologies powered by open source advances—CEO Satya Nadella led Microsoft towards open source adoption although Microsoft's traditional Windows business continued to grow throughout this period generating revenues of 26.8 billion in the third quarter of 2018, while Microsoft's Azure cloud revenues nearly doubled.

<span class="mw-page-title-main">Fyne (software)</span> Graphical toolkit for building cross platform GUIs

Fyne is a free and open-source cross-platform widget toolkit for creating graphical user interfaces (GUIs) across desktop and mobile platforms. Fyne uses OpenGL to provide cross-platform graphics. It is inspired by the principles of Material Design to create applications that look and behave consistently across all platforms. It is licensed under the terms of the 3-clause BSD License, supporting the creation of free and proprietary applications. In December 2019 Fyne became the most popular GUI toolkit for Go, by GitHub star count and in early February 2020 it was trending as #1 project in GitHub trending ranks.

FastAPI is a modern web framework for building RESTful APIs in Python. It was first released in 2018 and has since quickly gained popularity among developers due to its ease of use, speed and robustness.

References

  1. "New Collaborative Project to Extend Swagger Specification for Building Connected Applications and Services". Archived from the original on 31 October 2023.
  2. "OpenAPI Initiative Charter". OpenAPI Initiative. Retrieved 12 November 2019.
  3. "Swagger creator joins SmartBear" . Retrieved 6 August 2019.
  4. "SmartBear Assumes Sponsorship of Swagger API Open Source Project". SmartBear. Retrieved 25 March 2015.
  5. "FAQ". OpenAPI Initiative. Retrieved 12 November 2019.
  6. "New Collaborative Project to Extend Swagger Specification for Building Connected Applications and Services". linuxfoundation.org. Archived from the original on 27 April 2016. Retrieved 22 April 2016.
  7. OpenAPI Initiative. "OpenAPI Specification". GitHub. Retrieved 12 November 2019.
  8. "The OAI Announces the OpenAPI Specification 3.0.0". OpenAPIs. 26 July 2017. Retrieved 19 April 2018.
  9. Avram, Abel (6 May 2017). "The HTTP API space is Consolidating around OAS". InfoQ. Retrieved 14 May 2017.
  10. "OpenAPI Specification 3.1.0 Available Now". Linux.com. 26 April 2021. Retrieved 26 April 2021.
  11. Charboneau, Tyler (7 April 2021). "What's New in OpenAPI 3.1.0?". Nordic APIs. Retrieved 7 April 2021.
  12. "OpenAPI Specification 3.1.0 Released". OpenAPI Initiative. 18 February 2021. Retrieved 18 February 2021.
  13. Sturgeon, Phil (16 February 2021). "Migrating from OpenAPI 3.0 to 3.1.0". OpenAPI Initiative. Retrieved 16 February 2021.
  14. "OpenAPI Specification Version 3.1.0". GitHub. Retrieved 7 November 2023.
  15. 1 2 3 "swagger-api/swagger-spec". GitHub. Archived from the original on 4 June 2016. Retrieved 1 December 2015.
  16. Preibisch, Sascha (2018). API Development: A Practical Guide for Business Implementation Success. [Berkeley, CA]: Apress. ISBN   978-1-4842-4140-0. OCLC   1076234393. Having the Swagger (or for that matter, any other machine-readable) document available, team members can start working on their part of the project at the same time.
  17. Hoppe, Johannes (2018). "Swagger Codegen is now OpenAPI Generator". Angular.Schule. Retrieved 6 August 2019.
  18. "Swagger Codegen Fork: Q&A". OpenAPI Generator. Retrieved 6 August 2019.

Bibliography