OpenAPI.Tools

We want to keep API developers up to date with the best OpenAPI tooling around, and help direct folks to high quality modern tooling, instead of being stuck on old v2-based rubbish.

Contribute APIs You Won't Hate

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

Tool Types

We've organised everything into categories so you can jump to the section you're interested in.

  • Converters: Various tools to convert to and from OpenAPI and other API description formats.
  • Data Validators: Check to see if API requests and responses are lining up with the API description.
  • Documentation: Render API Description as HTML (or maybe a PDF) so slightly less technical people can figure out how to work with the API.
  • DSL: Writing YAML by hand is no fun, and maybe you don't want a GUI, so uase a Domain Specific Language to write OpenAPI in your language of choice.
  • Text Editors: Text editors give you visual feedback whilst you write OpenAPI, so you can see what docs might look like.
  • GUI Editors: Visual editors help you design APIs without needing to memorize the entire OpenAPI specification.
  • Mock Servers: Fake servers that take description document as input, then route incoming HTTP requests to example responses or dynamically generates examples.
  • Description Validators: Check your API description to see if it is valid OpenAPI.
  • Security: By poking around your OpenAPI description, some tools can look out for attack vectors you might not have noticed.
  • SDK Generators: Generate code to give to consumers, to help them avoid interacting at a HTTP level.
  • Server Implementations: Easily create and implement resources and routes for your APIs.
  • Miscellaneous: Anything else that does stuff with OpenAPI but hasn't quite got enough to warrant its own category.
  • Parsers: Loads and read OpenAPI descriptions, so you can work with them programmatically.
  • Testing: Quickly execute API request and validate responses on the fly through command line or GUI interfaces.

Converters

Various tools to convert to and from OpenAPI and other API description formats.

Name Language v2 v3 GitHub Gitlab
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 files from OpenAPI v2.0 to v3.0, bundling into one mega file or respecting $refs Node.js
OAS RAML Converter - Converts between OpenAPI 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 👷
laravel-openapi - Generate OpenAPI 3 specification for Laravel Applications. PHP

Data Validators

Check to see if API requests and responses are lining up with the API description.

Name Language v2 v3 GitHub Gitlab
express-openapi-validator - 🦋 Auto-validate api requests and responses using ExpressJS and OpenAPI 3.x JavaScript
openapi-spring-webflux-validator - 🌱 A friendly kotlin library to validate API endpoints using an OpenAPI 3.0 or OpenAPI 2.0 specification Java/Kotlin
Sway - A library that simplifies OpenAPI integrations/tooling. JavaScript 👷
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
openapi4j - Parse Description Document, validate api requests and responses using OpenAPI 3.x. Java
oas-tools - NodeJS module to manage RESTful APIs defined with OpenAPI 3.0 Description over express servers, including security validations Node.js
openVALIDATION - Allows complex validation rules to be specified in openAPI spec files using natural language. Java
kin-openapi - A Go library for handling OpenAPI 3.0 specifications Go
openapi-psr7-validator - Using a PHP framework that supports PSR-7? Get free validation without writing a bunch of code, by registering this middleware and pointing it at your API description document. PHP

Documentation

Render API Description as HTML (or maybe a PDF) so slightly less technical people can figure out how to work with the API.

Name Language v2 v3 GitHub Gitlab
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
Nexmo OAS Renderer - Ruby OpenAPI docs rendering, use standalone or add to your Rails app Ruby
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-generated API Reference Documentation React.js
oas3-api-snippet-enricher - Enrich your existing description documents with generated code samples JavaScript
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
Apitive Studio - A platform for Digital Product Managers and API Consultants to design REST APIs with in-built mock and documentation. Angular 7.0, Java / Saas
oas-tools - NodeJS module to manage RESTful APIs defined with OpenAPI 3.0 Description over express servers, including security validations Node.js

DSL

Writing YAML by hand is no fun, and maybe you don't want a GUI, so uase a Domain Specific Language to write OpenAPI in your language of choice.

Name Language v2 v3 GitHub Gitlab
BOATS - BOATS allows for larger teams to contribute to multi-file OpenAPI defintions by writing Nunjucks tpl syntax in yaml with a few important helpers to ensure stricter consistency, eg operationId: <$ uniqueOpId() $>. Node.js
Spot - A concise, developer-friendly way to describe your API contract. TypeScript

Text Editors

Text editors give you visual feedback whilst you write OpenAPI, so you can see what docs might look like.

Name Language v2 v3 GitHub Gitlab
VSCode OpenAPI Extension - OpenAPI extension for Visual Studio Code - new file templates, navigation, intellisense, code snippets. Any
KaiZen-OpenAPI-Editor - Full-featured Eclipse editor for OpenAPI, also available on Eclipse Marketplace. Java
Atom/linter-swagger - This plugin for Atom Linter will lint OpenAPI, 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 2.0/3.0.x intellisense, validator and linter for Visual Studio Code Node.js

GUI Editors

Visual editors help you design APIs without needing to memorize the entire OpenAPI specification.

Name Language v2 v3 GitHub Gitlab
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
Stoplight Studio - Stoplight Studio is a GUI/text editor with linting and mocking built right in. It can run on the desktop with local files, and in the browser powered by your existing GitHub, GitLab, or BitBucket repos. Desktop / SaaS
Hackolade - A visual editor for OpenAPI v2/v3, from the pioneer in data modeling for NoSQL databases. ReactJS
Apitive Studio - A platform for Digital Product Managers and API Consultants to design REST APIs with in-built mock and documentation. Angular 7.0, Java / Saas

Mock Servers

Fake servers that take description document as input, then route incoming HTTP requests to example responses or dynamically generates examples.

Name Language v2 v3 GitHub Gitlab
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
Unmock - API integration testing library that intercepts outgoing requests and serves back mock data based on the OpenAPI descriptions. Node.js
Apitive Studio - A platform for Digital Product Managers and API Consultants to design REST APIs with in-built mock and documentation. Angular 7.0, Java / Saas
yii2-app-api - Generate Server side API code with routing, models, data validation and database schema from an OpenAPI description. Based on Yii Framework. PHP
Falcon Heavy - The framework for building app backends and microservices by specification-first API design approach based on the OpenAPI Specification 3. Python

Description Validators

Check your API description to see if it is valid OpenAPI.

Name Language v2 v3 GitHub Gitlab
BigstickCarpet/swagger-cli - Simple validation for OpenAPI files, supporting JSON/YAML and v2/v3 description documents. Node.js / CLI
openapi-spec-validator - OpenAPI Description validator Python
express-openapi-validator - 🦋 Auto-validate api requests and responses using ExpressJS and OpenAPI 3.x JavaScript
openapi-spring-webflux-validator - 🌱 A friendly kotlin library to validate API endpoints using an OpenAPI 3.0 or OpenAPI 2.0 specification Java/Kotlin
Sway - A library that simplifies OpenAPI integrations/tooling. JavaScript 👷
Speccy - Lint to enforce quality rules on your OpenAPI specifications CLI
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
openVALIDATION - Allows complex validation rules to be specified in openAPI spec files using natural language. Java
php-openapi - A PHP library for manipulating and validating OpenAPI 3.0 Descriptions PHP

Security

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

Name Language v2 v3 GitHub Gitlab
oas-tools - NodeJS module to manage RESTful APIs defined with OpenAPI 3.0 Description over express servers, including security validations Node.js
42crunch - A unique set of integrated API security tools which allow discovery, remediation of OpenAPI vulnerabilities and runtime protection against API attacks. SaaS
API Contract Security Audit - Upload OpenAPI file, get detailed report with located vulnerabilities, possible attack scenarios, ways to remediate. SaaS

SDK Generators

Generate code to give to consumers, to help them avoid interacting at a HTTP level.

Name Language v2 v3 GitHub Gitlab
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 (PSR-7 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, ...
restful-react - Generate React hooks with appropriate type-signatures from OpenAPI descriptions React (Typescript)

Server Implementations

Easily create and implement resources and routes for your APIs.

Name Language v2 v3 GitHub Gitlab
tsoa - Creates OpenAPI docs and provides free runtime validation for your Koa, Express, Hapi (and more) services TypeScript
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 OpenAPI description documents. 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. Based on Yii Framework. PHP
@eropple/nestjs-openapi3 - Integrates tightly with a NestJS application to provide OpenAPI3 functionality. Infers complex descriptions and expresses them in its generated OpenAPI document, presents that document via ReDoc, and validates inputs for conformance to spec. Node.js
Falcon Heavy - The framework for building app backends and microservices by specification-first API design approach based on the OpenAPI Specification 3. Python
oas-tools - NodeJS module to manage RESTful APIs defined with OpenAPI 3.0 Description over express servers, including security validations Node.js

Miscellaneous

Anything else that does stuff with OpenAPI but hasn't quite got enough to warrant its own category.

Name Language v2 v3 GitHub Gitlab
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
express-openapi-validator - 🦋 Auto-validate api requests and responses using ExpressJS and OpenAPI 3.x JavaScript
openapi-spring-webflux-validator - 🌱 A friendly kotlin library to validate API endpoints using an OpenAPI 3.0 or OpenAPI 2.0 specification Java/Kotlin
Sway - A library that simplifies OpenAPI integrations/tooling. JavaScript 👷
openVALIDATION - Allows complex validation rules to be specified in openAPI spec files using natural language. Java
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
Generate OAS - Generate accurate OAS Specs from your API tests Self-hosted/SaaS
openapi-cli-tool - Can list up defined API paths and bundle multi-file into one. Supports multiple file extensions. Python
laravel-openapi - Generate OpenAPI 3 specification for Laravel Applications. PHP

Parsers

Loads and read OpenAPI descriptions, so you can work with them programmatically.

Name Language v2 v3 GitHub Gitlab
openapi4j - Parse Description Document, validate api requests and responses using OpenAPI 3.x. Java
oas-tools - NodeJS module to manage RESTful APIs defined with OpenAPI 3.0 Description over express servers, including security validations Node.js
swagger-parser - Swagger Parser reads OpenAPI definitions into current Java POJOs. 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 description validation and limited data validation for Python 3. Python

Testing

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

Name Language v2 v3 GitHub Gitlab
Unmock - API integration testing library that intercepts outgoing requests and serves back mock data based on the OpenAPI descriptions. Node.js
Dredd - Language-agnostic command-line tool for validating API description document against backend implementation of the API 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
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 JSON Schema 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
Schemathesis - Reads the description document and generates test cases which will ensure that your application is compliant with its description. Python