Jump to content

OpenAPI Specification: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Restored revision 1122470189 by Levinda987 (talk): Rv blogs as sources
Add relationships to software engineering practices. This time, with better citations.
Line 50: Line 50:
==Usage==
==Usage==
Applications implemented based on OpenAPI interface files can automatically generate documentation of methods, parameters and models. This helps keep the [[Software documentation|documentation]], client libraries and source code in sync.<ref name=git>{{Cite web|title = swagger-api/swagger-spec|url = https://github.com/swagger-api/swagger-spec/wiki|website = GitHub|access-date = 2015-12-01}}</ref>
Applications implemented based on OpenAPI interface files can automatically generate documentation of methods, parameters and models. This helps keep the [[Software documentation|documentation]], client libraries and source code in sync.<ref name=git>{{Cite web|title = swagger-api/swagger-spec|url = https://github.com/swagger-api/swagger-spec/wiki|website = GitHub|access-date = 2015-12-01}}</ref>

When an OpenAPI document is used to generate source code, the process is called [[Scaffold (programming)|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 an 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 object|mock]] the [[Server (computing)|server]] behavior and start testing right away<ref>{{Cite book |last=Preibisch |first=Sascha |url=https://www.worldcat.org/oclc/1076234393 |title=API development : a practical guide for business implementation success |date=2018 |isbn=978-1-4842-4140-0 |location=[Berkeley, CA] |oclc=1076234393 |quote=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.}}</ref>. In this sense, contract-first development is also a practice of [[shift-left testing]].


==Features==
==Features==

Revision as of 23:29, 19 January 2023

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 RESTful web services.[1] Previously part of the Swagger framework, it became a separate project in 2016, overseen by the OpenAPI Initiative, an open-source collaboration project of the Linux Foundation.[2] Swagger and some other tools can generate code, documentation and test cases from interface files.

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 creating 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][7] SmartBear donated the Swagger specification to the new group. RAML and API Blueprint were also under consideration by the group.[8][9]

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

In September 2016, the API World conference presented an API Infrastructure award to SmartBear for its ongoing work on Swagger.[11]

In July 2017, the OpenAPI Initiative released version 3.0.0 of its specification.[12] 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.[13]

In February 2021, the OpenAPI Initiative released version 3.1.0.[14] 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 in order to simplify creation of reusable libraries of components.[15][16][17]

Release dates

Version Date Notes[18]
3.1.0 2021-02-15 Release of the OpenAPI Specification 3.1.0
3.0.3 2020-02-20 Patch release of the OpenAPI Specification 3.0.3
3.0.2 2018-10-08 Patch release of the OpenAPI Specification 3.0.2
3.0.1 2017-12-06 Patch release of the OpenAPI Specification 3.0.1
3.0.0 2017-07-26 Release of the OpenAPI Specification 3.0.0
2.0 2014-09-08 Release of Swagger 2.0
1.2 2014-03-14 Initial release of the formal document
1.1 2012-08-22 Release of Swagger 1.1
1.0 2011-08-10 First release of the Swagger Specification

Usage

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

When an OpenAPI document is used to generate source code, 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 an 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[20]. 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.[19]

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.[19]

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.[21][22]

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

References

  1. ^ "Linux Foundation wants to extend Swagger in connected buildings | Business Cloud News". Archived from the original on 6 May 2016. Retrieved 22 April 2016.
  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. ^ "SmartBear, Linux Foundation launch Open API Initiative to Evolve Swagger". ProgrammableWeb. 10 November 2015. Retrieved 21 April 2016.
  7. ^ "New Collaborative Project to Extend Swagger Specification for Building Connected Applications and Services". www.linuxfoundation.org. Archived from the original on 27 April 2016. Retrieved 22 April 2016.
  8. ^ Montcheuil, Yves de. "In 2016, the need for an API meta-language will crystallize". InfoWorld. Retrieved 25 April 2016.
  9. ^ "Amazon API Gateway Now Supports Swagger Definition Import". InfoQ. Retrieved 25 April 2016.
  10. ^ OpenAPI Initiative. "OpenAPI Specification". GitHub. Retrieved 12 November 2019.
  11. ^ "Swagger wins the 2016 API Award for API Infrastructure". Swagger Blog. Retrieved 27 July 2018.
  12. ^ "The OAI Announces the OpenAPI Specification 3.0.0". OpenAPIs. Retrieved 19 April 2018.
  13. ^ "The HTTP API space is Consolidating around OAS". InfoQ. Retrieved 14 May 2017.
  14. ^ "OpenAPI Specification 3.1.0 Available Now". Linux.com. Retrieved 26 April 2021.
  15. ^ "What's New in OpenAPI 3.1.0?". Nordic APIs. Retrieved 7 April 2021.
  16. ^ "OpenAPI Specification 3.1.0 Released". OpenAPI Initiative. Retrieved 18 February 2021.
  17. ^ "Migrating from OpenAPI 3.0 to 3.1.0". OpenAPI Initiative. Retrieved 16 February 2021.
  18. ^ [b "OpenAPI Specification Version 3.0.4"]. Retrieved 23 April 2020. {{cite web}}: Check |url= value (help)
  19. ^ a b c "swagger-api/swagger-spec". GitHub. Retrieved 1 December 2015.
  20. ^ Preibisch, Sascha (2018). API development : a practical guide for business implementation success. [Berkeley, CA]. 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. {{cite book}}: line feed character in |quote= at position 77 (help)CS1 maint: location missing publisher (link)
  21. ^ "Swagger Codegen is now OpenAPI Generator". Retrieved 6 August 2019.
  22. ^ "Swagger Codegen Fork: Q&A". Retrieved 6 August 2019.

Bibliography