Features

Features #

  • AsyncAPI 2.6.0
  • Support the majority of AsyncAPI features
  • Support many protocols
  • No extra dependencies in the generated code
  • Optional simple client implementations based on most popular libraries
  • Reuse the code generated before
  • Breaking down the generated code in several ways
  • Objects selection to generate
  • “Consumer only”, “producer only” code generation
  • Content types support
  • References ($ref) resolving
    • Document-local refs
    • Refs to files on local filesystem
    • Refs to the remote documents available via HTTP(S)
    • Custom resolver (just an executable you provide), if refs are needed to be resolved in a custom way
  • Optional encoders/decoders for content types, specified in the AsyncAPI document
  • Support many features of jsonschema, including polymorphism (oneOf, anyOf, allOf)
  • Support the zero-allocation approach if you need to reduce the load on the Go’s garbage collector

Protocols #

Here are the protocols that are supported by go-asyncapi for now:

* - not described in the AsyncAPI specification

AsyncAPI entities #

The marked items below are supported by the go-asyncapi tool, unmarked items are in the roadmap.

For reference see AsyncAPI specification https://github.com/asyncapi/spec/blob/v2.6.0/spec/asyncapi.md

  • AsyncAPI object **
    • Default Content Type
    • Identifier
  • Info object
  • Contact object
  • License object
  • Servers object
    • Server object
      • Server Variable object
      • Server Bindings object
  • Channels object
    • Channel item object
      • Operation object
        • Operation Trait object
        • Operation Bindings object
      • Channel Bindings object
  • Message object **
    • Message Trait object
    • Message Example object
    • Message Bindings object
  • Tags object
    • Tag object
  • External Documentation object
  • Components object
  • Reference object
  • Schema object **
    • Primitive types (number, string, boolean, etc.)
    • Object types
    • Array types
    • OneOf, AnyOf, AllOf
  • Security Scheme object
  • Security Requirement object
  • OAuth Flows object
    • OAuth Flow object
  • Parameters object
    • Parameter object
  • Correlation ID object
** - partial support, some entity fields are not supported yet

Content types #

For the following content types the go-asyncapi generates the default encoders/decoders. You can freely add your own content type with appropriate encoders/decoders or replace the default ones.

  • JSON (application/json)
  • YAML (application/yaml, application/x-yaml, text/yaml, text/x-yaml, text/vnd.yaml)