OpenAPI.Tools

We want to keep API developers up to date with the best OpenAPI tooling around, with the goal of upgrading to OpenAPI v3 as soon as possible. Tooling stuck on v2? You might need to send a pull request!

Contribute Main Website

Contribute

This project was created by Matthew Trask and Phil Sturgeon with contributions from the community. If you need help, hit Matt or Phil up on twitter.

Current OpenAPI Version

3.0.2 - Link to the specification

Converters

Various tools to convert to and from OpenAPI standards. Useful for working with various API formats.

Name Language v2 v3 GitHub
Apimatic Transformer - Transform API Descriptions to and from RAML, API Blueprint, OAI v2/v3, WSDL, etc. SaaS
Google Gnostic - Compile OpenAPI descriptions into equivalent Protocol Buffer representations Go
swagger2openapi - Upgrade specs from OpenAPI v2.0 to v3.0, bundling into one mega file or respecting $refs Node.js
OAS RAML Converter - Converts between OAS and RAML API specifications Node.js
OData OpenAPI - OData 4.0 to OpenAPI 3.0.0 converter XSLT
OpenAPI Filter - Filter internal components from OpenAPI Descriptions Node.js
OData.OpenAPI - Convert an Edm (Entity Data Model) to OpenAPI 3.0 .NET
pyswagger - Client & converter in Python, which is type-safe, dynamic, spec-compliant. Python 👷
odata2openapi - OData 4.0 to OpenAPI 2 converter Node.js
avantation - Generate OpenAPI 3.x specification from HAR. TypeScript
go-swagger - Everything all in one. Parser, validator, generates spec from code, or code from spec! Go 👷

Data Validators

Tools to help you validate your API data.

Name Language v2 v3 GitHub
Sway - A library that simplifies OpenAPI integrations/tooling. JavaScript 👷
OpenAPI validator - Library that checks response against OpenAPI schema, based on request path and method PHP
express-ajv-swagger-validation - Express middleware which validates request body, headers, path parameters and query parameters according to an OpenAPI Description Node.js
committee - Validation middleware for Rack server. This gem validates request and response using an OpenAPI Description. And convert parameter string to specific Ruby object (e.g. convert datetime string to DateTime class). Ruby
OpenAPI Enforcer - Validate your OpenAPI document, serialize, deserialize, and validate incoming requests and outgoing responses, and simplify response building. You can even produce mock data. Node.js
OpenAPI Validation Middleware - a PSR-7 and PSR-15 middleware to validate requests and responses against your OpenAPI spec PHP
oas-tools - NodeJS module to manage RESTful APIs defined with OpenAPI 3.0 Description over express servers, including security validations Node.js
kin-openapi - A Go library for handling OpenAPI 3.0 specifications Go
openapi-psr7-validator - It validates PSR-7 messages against OpenAPI specifications PHP

Documentation

Generators to help build API documentation based off a variety of formats and standards.

Name Language v2 v3 GitHub
ReadMe - Build beautiful, personalized, interactive developer hubs SaaS
APIMatic Developer Experience Portal - Customizable developer portals packed with language specific documentation, client libraries, code samples, an API console and much more. SaaS
Kong Enterprise Edition - Highly customizable developer portal with developer onboarding, integrated with the Kong API Gateway Lua
LucyBot DocGen - Generate a customizable website, with API documentation, console, and interactive workflows, from an OpenAPI spec JavaScript
openapi-viewer - Browse and test a REST API described with the OpenAPI 3.0 Specification Vue.js
openapi-ui - React based OpenAPI 3.0+ documentation generator React.js
ReDoc - OpenAPI/Swagger-generated API Reference Documentation React.js
widdershins - Generate Slate/Shins markdown from OpenAPI 2.0/3.0.x Node.js
MrinDoc - Open API spec viewer. Vue.JS
RapiDoc - Custom Element to view OpenAPI spec. Custom Element
RapiPdf - Custom Element to generate PDF from OpenAPI spec. Custom Element
Stoplight Docs - Create beautiful, customizable, interactive API documentation generated from OpenAPI, integrated with Stoplight Studio SaaS
Bump - Bump generates elegant documentations and changelogs from your OpenAPI specifications. Git diff, for your API. SaaS
oas-tools - NodeJS module to manage RESTful APIs defined with OpenAPI 3.0 Description over express servers, including security validations Node.js

Text Editors

Text editors to help build API docs.

Name Language v2 v3 GitHub
VSCode/OpenAPI editor - OpenAPI (Swagger) 2.0/3.0.x plugin for Visual Studio Code - new file templates, navigation, intellisense, code snippets Any
KaiZen-OpenAPI-Editor - Full-featured Eclipse editor for OpenAPI 2.0 and 3.0, also available on Eclipse Marketplace. Java
Atom/linter-swagger - This plugin for Atom Linter will lint OpenAPI v2/v3, both JSON and YAML using swagger-parser node package. JavaScript
Swagger Editor - Design, describe, and document your API on the first open source editor fully dedicated to OpenAPI-based APIs. Node.js
SwaggerHub - API design and documentation platform to improve collaboration, standardize development workflow and centralize their API discovery and consumption. SaaS/On-Premise NodeJS
Senya Editor - JetBrains IDE plugin to show Swagger UI as a preview, for visual feedback as you edit. Java
VSCode/openapi-lint - OpenAPI (Swagger) 2.0/3.0.x intellisense, validator and linter for Visual Studio Code Node.js

GUI Editors

Visual editors to help build API docs.

Name Language v2 v3 GitHub
RepreZen API Studio - RepreZen API Studio is an integrated workbench that brings API-first design into focus for your whole team, harmonizes your API designs, and generates APIs that click into client apps. Java
Apicurio Studio - A standalone API design studio that can be used to create new or edit existing API designs. TypeScript
Stoplight Studio - Stoplight Studio is a GUI/text editor with linting and mocking built right in, thanks to Spectral and Prism. Desktop / SaaS
Hackolade - A schema-centric visual editor for OpenAPI v2/v3, from the pioneer in data modeling for NoSQL databases. ReactJS

Mock Servers

Services and platforms to speed up the testing and development of your APIs.

Name Language v2 v3 GitHub
Connexion - OpenAPI First framework for Python on top of Flask with automatic endpoint validation & OAuth2 support Python
Prism - Turn any OAI file into an API server with mocking, transformations, validations, and more. cli
Sandbox - SaaS, self-hosted, or CLI tool for turning OpenAPI (and other) descriptions into a mock server, where you can modify behaviour, simulate downtime, and any other nonsense you can think of thanks to a built-in code editor! SaaS / Java
Microcks - Mocking and testing platform for API and microservices. Turn your OAI contract examples into ready to use mocks. Use examples to test and validate implementations according schema elements. Self-hosted / SaaS
API Sprout - Lightweight, blazing fast, cross-platform OpenAPI 3 mock server with validation cli / Docker
MockLab - SaaS platform to upload your spec to create a mock server SaaS
Fakeit - Create mock server from OpenAPI 3 specification with random response generation and request validation. cli / Docker
yii2-app-api - Generate Server side API code with routing, models, data validation and database schema from an OpenAPI description file. Based on Yii Framework. PHP

Schema Validators

Validate your API schema quickly and easily with these tools.

Name Language v2 v3 GitHub
Speccy - Lint to enforce quality rules on your OpenAPI specifications CLI
BigstickCarpet/swagger-cli - A handy cli tool for validating JSON or YAML files schema files that respects $ref Node.js / CLI
openapi-spec-validator - OpenAPI Description validator Python
Sway - A library that simplifies OpenAPI integrations/tooling. JavaScript 👷
oval - CLI for (O)penAPI Specification document (val)idation. JavaScript 👷
Spectral - A flexible JSON/YAML object linter with portable "rulesets" and custom functions. TypeScript/JavaScript
OpenAPI Enforcer - Validate your OpenAPI document, serialize, deserialize, and validate incoming requests and outgoing responses, and simplify response building. You can even produce mock data. Node.js
oas-tools - NodeJS module to manage RESTful APIs defined with OpenAPI 3.0 Description over express servers, including security validations Node.js
php-openapi - A PHP library for manipulating and validating OpenAPI 3.0 Descriptions PHP

Security

By poking around your OpenAPI specification, some tools can look out for attack vectors you might not have noticed.

Name Language v2 v3 GitHub
oas-tools - NodeJS module to manage RESTful APIs defined with OpenAPI 3.0 Description over express servers, including security validations Node.js
API Contract Security Audit - Upload OpenAPI file, get detailed report with located vulnerabilities, possible attack scenarios, ways to remediate. SaaS

SDK Generators

Quickly generate documentation, descriptions, and clients by creating a SDK.

Name Language v2 v3 GitHub
OpenAPI Generator - A template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI Description (community-driven fork of swagger-codegen) Java
APIMatic CodeGen - Bring in your API description (OAI v2/v3, RAML, API Blueprint, WSDL, etc.) to generate fully functional SDKs in over 10 languages. SaaS
janephp/open-api - Generate a PHP Client API (PSR7 compatible) given a OpenAPI specification. PHP
go-swagger - Everything all in one. Parser, validator, generates spec from code, or code from spec! Go 👷
guardrail - Principled code generation from OpenAPI Descriptions Scala, Java, ...

Server Implementations

Easily create and implement resources and routes for your APIs.

Name Language v2 v3 GitHub
Vert.x Web Api Contract - Create API endpoints with Vert.x 3 and OpenAPI 3 with automatic requests validation Java, Kotlin, JavaScript, Groovy, Ruby, Ceylon & Scala
Vert.x Web API Service - Create API service proxies using event bus with request/response validation Java
BaucisJS + baucis-openapi3 - Create REST resources with persistence on MongoDB and expose OpenAPI v.3 contracts JavaScript
BaucisJS + baucis-swagger2 - Create REST resources with persistence on MongoDB and expose OpenAPI v.2 contracts JavaScript
@smartrecruiters/openapi-first - Initializes your API express application with description in OpenAPI 3.0 format using provided middlewares (parsers, validators, controller, defaults setting) or custom ones Node.js
openapi-backend - Build, Validate, Route, and Mock using OpenAPI specification. Framework-agnostic Node.js
OpenAPI Enforcer Middleware - An express middleware that makes it easy to write web services that follow an OpenAPI specification by leveraging the tools provided in the openapi-enforcer package. Node.js
MicroTS - Code generator - from OpenAPI specification generates TypeScript project with Docker. Node.js
API Platform - REST and GraphQL framework to build modern API-driven projects PHP
Mojolicious::Plugin::OpenApi - Mojolicious::Plugin::OpenAPI is a plugin for Mojolicious framework that add routes and input/output validation to your Mojolicious application based on a OpenAPI (Swagger) specification. Currently v2 is very well supported, while v3 should be considered EXPERIMENTAL. Perl
Fusio - Open source API management platform PHP
yii2-app-api - Generate Server side API code with routing, models, data validation and database schema from an OpenAPI description file. Based on Yii Framework. PHP
oas-tools - NodeJS module to manage RESTful APIs defined with OpenAPI 3.0 Description over express servers, including security validations Node.js

Miscellaneous

Tools to load documents and resolve references.

Name Language v2 v3 GitHub
OpenAPI Server Code Generator (oapi-codegen) - Generate a web service using the [Echo](https://github.com/labstack/echo) framework from an Open API v3 specification Go
Sway - A library that simplifies OpenAPI integrations/tooling. JavaScript 👷
openapi-diff - Utility for comparing two OpenAPI specifications. Java
$ oas (CLI) - Generate OAS files from code comments and easily host them ($ npm install oas -g) JavaScript
openapi-cli-tool - Can list up defined API paths and bundle multi-file into one. Supports multiple file extensions. Python

Parsers

Serialize and migrate API docs between versions while validating specs and docs.

Name Language v2 v3 GitHub
oas-tools - NodeJS module to manage RESTful APIs defined with OpenAPI 3.0 Description over express servers, including security validations Node.js
swagger-parser - OpenAPI Description parser which is still using the name "Swagger" because they're stubborn. New versions are v3 only, older versions support v1.x/v2. Java
BigstickCarpet/swagger-parser - Swagger/OpenAPI 2.0 and 3.0 parser and validator. Can also bundle multiple files into one via `$ref`. Node.js
KaiZen OpenAPI Parser - High-performance Parser, Validator, and Java Object Model for OpenAPI 3.x Java
OpenAPI-TS - TS Model & utils for OpenAPI 3.0.x contracts TypeScript
kin-openapi - A Go library for handling OpenAPI 3.0 specifications Go
php-openapi - A PHP library for manipulating and validating OpenAPI 3.0 Descriptions PHP
Object Oriented OpenAPI Specification - An object oriented approach to generating OpenAPI Descriptions, implemented in PHP PHP
OpenAPI3-Rust - Rust serialization library for OpenAPI v3 Rust
psx-api - Parse and generate API specification formats PHP
Microsoft/OpenAPI.NET - C# based parser with OpenAPI Description validation and migration support from V2 .NET
oas_parser - A Ruby parser for Open API 3.0+ descriptions. Ruby
openapi3 - An OpenAPI 3 Specification client, and validator, covering both schema validation and limited data validation for Python 3. Python
Spot - A concise, developer-friendly way to describe your API contract. TypeScript

Testing

Quickly execute API request and validate responses on the fly through command line or GUI interfaces.

Name Language v2 v3 GitHub
Dredd - Language-agnostic command-line tool for validating API description document against backend implementation of the API Javascript
OpenAPI validator - Library that checks response against OpenAPI schema, based on request path and method PHP
OpenAPI Enforcer - Validate your OpenAPI document, serialize, deserialize, and validate incoming requests and outgoing responses, and simplify response building. You can even produce mock data. Node.js
Chai OpenAPI Response Validator - Simple Chai support for asserting that HTTP responses satisfy an OpenAPI spec. Node.js
hikaku - A library that tests if the implementation of a REST-API meets its specification. Kotlin
Swagger Inspector - Swagger Inspector is a free online tool to quickly execute any API request, validate its responses and generate a corresponding OpenAPI Description. Self-hosted/SaaS
Assertible - Import an OpenAPI specification into Assertible to generate tests that validate JSONSchema responses and status codes on every endpoint. SaaS
Tcases for OpenAPI - Generates test cases directly from an OpenAPI v3 spec. Bonus: Semantic linter reports elements that are inconsistent, superfluous, or dubious. Java