/jasyncapi

/jay-sync-api/ is a Java code-first tool for AsyncAPI specification

Primary LanguageKotlinApache License 2.0Apache-2.0

AsyncAPI Logo

Building the future of event-driven architectures

We're on a mission to standardize message-based communication and increase interoperability of the different systems out there.

Version

Overview

JVM-friendly bindings for AsyncAPI. It allows you to read or write specifications for your asynchronous API through code

Hints:

Implemented AsyncAPI versions (3/8)

Version Implementation status
2.0.0
2.1.0
2.2.0
2.3.0
2.4.0
2.5.0
2.6.0
3.0.0

Implemented AsyncAPI schemas (5/7)

Protocol Versions
AsyncAPI Multi Format Schema 3.0.0
AsyncAPI Schema unified version
Avro Schema 1.9.0, 1.9.1, 1.9.2, 1.10.0, 1.10.1, 1.10.2, 1.11.0, 1.11.1
Json Schema Draft-07
OpenAPI Schema 3.0.0, 3.0.1, 3.0.2, 3.0.3
RAML 1.0 Schema
Protocol Buffers

Implemented AsyncAPI bindings (19/19)

Protocol Versions
AMQP 0.1.0, 0.2.0, 0.3.0
AMQP1 0.1.0
Anypoint MQ 0.1.0
Google Cloud Pub/Sub 0.1.0, 0.2.0
HTTP 0.1.0, 0.2.0, 0.3.0, 0.4.0, 0.5.0
IBM MQ 0.1.0
JMS 0.0.1
Apache Kafka 0.1.0, 0.3.0, 0.4.0, 0.5.0
Mercure 0.1.0
MQTT 0.1.0, 0.2.0
MQTT 5 0.1.0, 0.2.0
NATS 0.1.0
Apache Pulsar 0.1.0
Redis 0.1.0
Amazon SNS 0.1.0
Solace 0.1.0, 0.2.0, 0.3.0, 0.4.0
Amazon SQS 0.1.0, 0.2.0
STOMP 0.1.0
WebSockets 0.1.0

Implemented AsyncAPI Security Schemas (12/12)

Security Schema Implementation status
API Key
Asymmetric Encryption
GSS-API
HTTP
HTTP API Key
OAuth2
OpenID Connect
Plain
SCRAM-SHA-256
SCRAM-SHA-512
Symmetric Encryption
User Password

Known consumers:

  • Springwolf Core - Automated documentation for async APIs built with Spring Boot
  • AsyncAPI Quarkus - Generates AsyncAPIRegistry and configuration classes for Quarkus
  • Specmatic - Converts AsyncAPI specifications into executable contracts

Known open specifications to check compatibility with:

Contributors section

Build

Prerequisites

  1. JDK 1.8
  2. Maven 3+

If you are using SDKMAN! use env to prepare environment

sdk env install

Install locally

Each build is GPG signed. To avoid this, and to not configure GPG locally, you can use this command:

 mvn clean install -Dgpg.skip

Publish new release

Prerequisites

  1. Request credentials for one of AsyncAPI's account on Sonatype Jira, which is synced with Sonatype nexus
  2. Generate pgp key if it was not generated yet
  3. Create /Users/{userName}/.m2/settings.xml
<settings>
  <profiles>
    <profile>
      <id>ossrh</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <gpg.keyname>GPG key name</gpg.keyname>
        <gpg.executable>gpg</gpg.executable>
        <gpg.passphrase>GPG passphrase for selected key</gpg.passphrase>
        <gpg.homedir>/Users/{userName}/.gnupg</gpg.homedir>
      </properties>
    </profile>
  </profiles>
  <servers>
    <server>
      <id>ossrh</id>
      <username>Jira username</username>
      <password>Jira password</password>
    </server>
  </servers>
</settings>

Release

mvn clean deploy -P release 

references: