Features

Features #

AsyncAPI 2.x is not supported and not planned for support in the future, because it has significant differences with 3.x version which requires too much effort to make both versions to work in one tool. Please, use the asyncapi converter to convert your 2.x documents to 3.x.

Protocols #

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

AsyncAPI support #

The marked items below are supported by the go-asyncapi tool (partially or fully), unmarked items are in the roadmap.

For the reference, see AsyncAPI specification

AsyncAPI Entities #

  • AsyncAPI object
  • Identifier object ($id)
  • Info object
    • Contact object
    • License object
  • Default Content Type[1]
  • Servers object
    • Server object
      • Server Variable object
      • Server Bindings object
  • Channels object
    • Channel object
      • Channel Bindings object
  • Messages object
    • Message object
      • Message Example object
      • Message Bindings object
    • Message Trait object
    • Message Bindings object
  • Operations object
    • Operation object
      • Operation Trait object
      • Operation Reply object
        • Operation Reply Address object
      • Operation Bindings object
  • Parameters object
    • Parameter object
  • Tags object
    • Tag object
  • External Documentation object
  • Components object
  • Security Scheme object[2]
  • OAuth Flows object
    • OAuth Flow object
  • Correlation ID object

Other #

JSONSchema #

AsyncAPI uses superset of JSON Schema Specification Draft 07 for message payloads and other schema definitions. See AsyncAPI spec.

The following JSONSchema features are supported by go-asyncapi:

  • type[3]
  • additionalItems
  • additionalProperties
  • allOf
  • anyOf
  • const
  • contains
  • default
  • definitions
  • deprecated
  • description
  • discriminator
  • else
  • enum
  • examples
  • exclusiveMaximum
  • exclusiveMinimum
  • externalDocs
  • format[3]
  • if
  • items
  • maxItems
  • maxLength
  • maxProperties
  • maximum
  • minItems
  • minLength
  • minProperties
  • minimum
  • multipleOf
  • not
  • oneOf
  • pattern
  • patternProperties
  • properties
  • propertyNames
  • readOnly
  • required
  • then
  • title
  • uniqueItems

Types and formats #

JSONSchema formats are extensible by user, see more.

The following object types and formats are supported by go-asyncapi out-of-the-box:

  • object: struct, map[T1]T2, etc., depending on the schema definition
  • array: []T, [x]T, depending on the schema definition
  • boolean: bool
  • string: string
  • integer: int
    • int8: int8
    • int16: int16
    • int32: int32
    • int64: int64
    • uint: uint
    • uint8: uint8
    • uint16: uint16
    • uint32: uint32
    • uint64: uint64
  • number: float64
  • null: any

Content types #

Content types are extensible by user, see more.

The following content types (MIME types) are supported by go-asyncapi out-of-the-box:

Security schemes #

Security schemes are extensible by user, see more.

The following security scheme types are supported by go-asyncapi:

  • userPassword
  • apiKey
  • X509
  • symmetricEncryption
  • asymmetricEncryption
  • httpApiKey
  • http
  • oauth2
  • openIdConnect
  • plain
  • scramSha256
  • scramSha512
  • gssapi

Server definitions generation #

The go-asyncapi tool supports the generation for the following engines: