Skip to content

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

License

Notifications You must be signed in to change notification settings

pubgo/protoc-gen-openapi

Repository files navigation

protoc-gen-openapi

This directory contains a protoc plugin that generates an OpenAPI description for a REST API that corresponds to a Protocol Buffer service.

This project is a simplification of the google/gnostic project, dedicated to providing a simple version of the protoc-gen-openapi

Installation:

go install github.com/pubgo/protoc-gen-openapi@latest

Usage:

protoc sample.proto -I=. --openapi_out=.

This runs the plugin for a file named sample.proto which refers to additional .proto files in the same directory as sample.proto. Output is written to the current directory.

options

  1. version: version number text, e.g. 1.2.3
    • default: 0.0.1
  2. title: name of the API
    • default: empty string or service name if there is only one service
  3. description: description of the API
    • default: empty string or service description if there is only one service
  4. naming: naming convention. Use "proto" for passing names directly from the proto files
    • default: json
    • json: will turn field updated_at to updatedAt
    • proto: keep field updated_at as it is
  5. fq_schema_naming: schema naming convention. If "true", generates fully-qualified schema names by prefixing them with the proto message package name
    • default: false
    • false: keep message Book as it is
    • true: turn message Book to google.example.library.v1.Book, it is useful when there are same named message in different package
  6. enum_type: type for enum serialization. Use "string" for string-based serialization
    • default: integer
    • integer: setting type to integer
      schema:
        type: integer
        format: enum
    • string: setting type to string, and list available values in enum
      schema:
        enum:
          - UNKNOWN_KIND
          - KIND_1
          - KIND_2
        type: string
        format: enum
  7. depth: depth of recursion for circular messages
    • default: 2, this depth only used in query parameters, usually 2 is enough
  8. default_response: add default response. If "true", automatically adds a default response to operations which use the google.rpc.Status message. Useful if you use envoy or grpc-gateway to transcode as they use this type for their default error responses.
    • default: true, this option will add this default response for each method as following:
      default:
        description: Default error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/google.rpc.Status'

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published