gnostic - A compiler for APIs described by the OpenAPI Specification with plugins for code generation and other API support tasks

  •        25

This repository contains a Go command line tool which converts JSON and YAML OpenAPI descriptions to and from equivalent Protocol Buffer representations. Protocol Buffers provide a language-neutral, platform-neutral, extensible mechanism for serializing structured data. gnostic's Protocol Buffer models for the OpenAPI Specification can be used to generate code that includes data structures with explicit fields for the elements of an OpenAPI description. This makes it possible for developers to work with OpenAPI descriptions in type-safe ways, which is particularly useful in strongly-typed languages like Go and Swift.



Related Projects

googleapis - Public interface definitions of Google APIs.

  •    Python

This repository contains the original interface definitions of public Google APIs that support both REST and gRPC protocols. Reading the original interface definitions can provide a better understanding of Google APIs and help you to utilize them more efficiently. You can also use these definitions with open source tools to generate client libraries, documentation, and other artifacts. API client libraries can be built directly from files in this repo using Artman. The latest generation status can be tracked here which currently has status .

ale - Asynchronous linting/fixing for Vim and Language Server Protocol (LSP) integration

  •    Vim

ALE (Asynchronous Lint Engine) is a plugin for providing linting in NeoVim 0.2.0+ and Vim 8 while you edit your text files, and acts as a Vim Language Server Protocol client. ALE makes use of NeoVim and Vim 8 job control functions and timers to run linters on the contents of text buffers and return errors as text is changed in Vim. This allows for displaying warnings and errors in files being edited in Vim before files have been saved back to a filesystem.

protobuf - Protocol Buffers for Go with Gadgets

  •    Go

gogoprotobuf is a fork of golang/protobuf with extra code generation features.Please let us know if you are using gogoprotobuf by posting on our GoogleGroup.

pbc - A protocol buffers library for C

  •    C

PBC is a google protocol buffers library for C without code generation. You can use wmessage for encoding , and rmessage for decoding.

NSwag - The Swagger/OpenAPI toolchain for .NET, Web API and TypeScript.

  •    CSharp

NSwag is a Swagger/OpenAPI 2.0 and 3.0 toolchain for .NET, .NET Core, Web API, ASP.NET Core, TypeScript (jQuery, AngularJS, Angular 2+, Aurelia, KnockoutJS, and more) and other platforms, written in C#. The Swagger specification uses JSON and JSON Schema to describe a RESTful web API. The NSwag project provides tools to generate Swagger specifications from existing ASP.NET Web API controllers and client code from these Swagger specifications. The project combines the functionality of Swashbuckle (Swagger generation) and AutoRest (client generation) in one toolchain. This way a lot of incompatibilites can be avoided and features which are not well described by the Swagger specification or JSON Schema are better supported (e.g. inheritance, enum and reference handling). The NSwag project heavily uses NJsonSchema for .NET for JSON Schema handling and C#/TypeScript class/interface generation.

apispec - A pluggable API specification generator

  •    Python

A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification). Documentation is available at .

Wire - Clean, lightweight protocol buffers for Android and Java.

  •    Java

Schemas describe and document data models. If you have data, you should have a schema. Google's Protocol Buffers are built around a great schema language. It's cross platform and language independent. Whatever programming language you use, you'll be able to use proto schemas with your application. Proto schemas are backwards-compatible and future-proof. You can evolve your schema as your application loses old features and gains new ones.

grpc-swift - The Swift language implementation of gRPC.

  •    C

This repository contains an experimental Swift gRPC API and code generator.It is intended for use with Apple's swift-protobuf support for Protocol Buffers. Both projects contain code generation plugins for protoc, Google's Protocol Buffer compiler, and both contain libraries of supporting code that is needed to build and run the generated code.

nanopb - Protocol Buffers with small code size

  •    C

Nanopb is a small code-size Protocol Buffers implementation in ansi C. It is especially suitable for use in microcontrollers, but fits any memory restricted system. The easiest way to get started is to study the project in "examples/simple". It contains a Makefile, which should work directly under most Linux systems. However, for any other kind of build system, see the manual steps in README.txt in that folder.

swagger-codegen - swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition

  •    HTML

πŸ“” The eBook A Beginner's Guide to Code Generation for REST APIs is a good starting point for beginners. Check out OpenAPI-Spec for additional information about the OpenAPI project.

protobuf - Go support for Google's protocol buffers

  •    Go

This package and the code it generates requires at least Go 1.4.This software has two parts: a 'protocol compiler plugin' that generates Go source files that, once compiled, can access and manage protocol buffers; and a library that implements run-time support for encoding (marshaling), decoding (unmarshaling), and accessing protocol buffers.

Protocol Buffers - Google's data interchange format

  •    C++

Protocol buffers (a.k.a., protobuf) are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages.

protobuf-c - Protocol Buffers implementation in C

  •    C++

This is protobuf-c, a C implementation of the Google Protocol Buffers data serialization format. It includes libprotobuf-c, a pure C library that implements protobuf encoding and decoding, and protoc-c, a code generator that converts Protocol Buffer .proto files to C descriptor code, based on the original protoc. protobuf-c formerly included an RPC implementation; that code has been split out into the protobuf-c-rpc project. protobuf-c's mailing list is hosted on a Google Groups forum. Subscribe by sending an email to

prototool - Your Swiss Army Knife for Protocol Buffers

  •    Go

Protobuf is one of the best interface description languages out there - it's widely adopted, and after over 15 years of use, it's practically bulletproof. However, working with Protobuf and maintaining consistency across your Protobuf files can be a pain - protoc, while being a tool that has stood the test of time, is non-trivial to use, and the Protobuf community has not developed common standards with regards to stub generation. Prototool aims to solve this by making working with Protobuf much simpler. Prototool accomplishes this by downloading and calling protoc on the fly for you, handing error messages from protoc and your plugins, and using the generated FileDescriptorSets for internal functionality, as well as wrapping a few great external libraries already in the Protobuf ecosystem.

upb - small, fast parsers for the 21st century

  •    C

Unleaded is a library of fast parsers and serializers. These parsers/serializers are written in C and use every available avenue (particularly JIT compilation) to achieve the fastest possible speed. However they are also extremely lightweight (less than 100k of object code) and low-overhead.The library started as a Protocol Buffers library (upb originally meant μpb: Micro Protocol Buffers). It still uses protobuf-like schemas as a core abstraction, but it has expanded beyond just Protocol Buffers to JSON, and other formats are planned.

ScalaBuff - the scala protocol buffers (protobuf) compiler

  •    Scala

ScalaBuff is a Scala Protocol Buffers (protobuf) compiler. It takes .proto files and outputs valid Scala classes that can be used by your code to receive or send protobuf messages. Both the ScalaBuff generator and the generated Scala classes depend on Google's Java runtime for Protocol Buffers, which is provided with ScalaBuff.

bravado - Bravado is a python client library for Swagger 2.0 services

  •    Python

Bravado is a Yelp maintained fork of digium/swagger-py for use with OpenAPI Specification (previously known as Swagger).Client libraries can automatically be generated from the OpenAPI specification, however Bravado aims to be a complete replacement for code generation (swagger-codegen).

protocol-buffers - Protocol Buffers for Node.js

  •    Javascript

See the Google Protocol Buffers docs for more information about the available types etc.Since v4 you can now compile your schemas to a JavaScript file you can require from Node. This means you do not have runtime parse the schemas, which is useful if using in the browser or on embedded devices. It also makes the dependency footprint a lot smaller.