Automated documentation for event-driven applications built with Spring Boot
We are on discord for any question, discussion, request etc. Join us at https://discord.gg/HZYqd5RPTd
This project is inspired by Springfox. It documents asynchronous APIs using the AsyncAPI specification.
springwolf-ui
adds a web UI, much like that of Springfox, and allows easy publishing of auto-generated payload examples.
Take a look at the Springwolf live demo.
The documentation and quickstart is available on springwolf.dev.
Springwolf exploits the fact that you already fully described your consumer endpoint (with listener annotations, such as
@KafkaListner
, @RabbitListener
, @SqsListener
, etc.) and generates the documentation based on this information.
The AsyncAPI conform documentation can be integrated into API hubs (like backstage)
or be shared as a json
/yaml
file with others.
In projects using asynchronous APIs, you may often find yourself needing to manually send a message to some topic, whether you are manually testing a new feature, debugging or trying to understand some flow.
Using the automatically generated example payload object as a suggestion, you can publish it to the correct channel with a single click.
Protocols not supported natively can still be documented using @AsyncListener
and @AsyncPublisher
annotation.
More details in the documentation.
Code / Plugin / Addon | Example project | Current version | SNAPSHOT version |
---|---|---|---|
Core | |||
AMQP | AMQP Example | ||
AWS SQS | AWS SQS Example | ||
Cloud Stream | Cloud Stream Example | ||
Kafka | Kafka Example | ||
Common Model Converter |
Add the following to the repositories
closure in build.gradle
:
repositories {
// ...
maven {
url "https://s01.oss.sonatype.org/content/repositories/snapshots"
}
}
Or add the repository
to your pom.xml
if you are using maven:
<repositories>
<repository>
<id>oss-sonatype</id>
<name>oss-sonatype</name>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
To work with local builds, run the publishToMavenLocal
task. The current version number is set in .env
file.
Thanks goes to these wonderful people (emoji key):
To add yourself as a contributor, install the all-contributors CLI and run:
all-contributors check
all-contributors add <username> code
all-contributors generate