Logo Springwolf
Automated documentation for event-driven applications built with Spring Boot
Last Version GitHub commits since latest release (by SemVer including pre-releases) License
springwolf-core springwolf-asyncapi springwolf-ui springwolf-plugins springwolf-addons
We are on discord for any question, discussion, request etc. Join us at https://discord.gg/HZYqd5RPTd
- About
- Demo & Documentation
- Why You Should Use Springwolf
- Usage & Example
- Who's Using Springwolf
- How To Participate
- Contributors
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 and a generated AsyncAPI document.
springwolf.dev includes the quickstart guide and full documentation.
Springwolf exploits the fact that you already fully described your consumer endpoint (with listener annotations, such as
@KafkaListener, @RabbitListener, @SqsListener, etc.) and generates the documentation based on this information.
Share API Schema Definition
The AsyncAPI conform documentation can be integrated into API hubs (like backstage)
or be shared as a json/yaml file with others.
UI Based API Testing
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.
Click to expand all artifacts, bindings and add-ons
| Artifact | Current version | SNAPSHOT version |
|---|---|---|
| AsyncAPI implementation | Maven Central | Sonatype Nexus (Snapshots) |
| Core | Maven Central | Sonatype Nexus (Snapshots) |
| UI | Maven Central | Sonatype Nexus (Snapshots) |
- 2bPrecise
- aconium
- Alten Italia
- b.well Connected Health
- DGARNE - Public Service of Wallonia (BE)
- Eclipse xpanse
- ITA-Social-Projects
- LVM Versicherung
- PagoPA
- OTTO
- OTTO Payments
- Teambank
Comment in this PR to add your company and spread the word
Check out our CONTRIBUTING.md guide.
Testing SNAPSHOT version
Add the following to the repositories closure in build.gradle:
repositories {
// ...
maven {
url "https://central.sonatype.com/repository/maven-snapshots/" // build.gradle
// url = uri("https://central.sonatype.com/repository/maven-snapshots/") // build.gradle.kts
}
}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://central.sonatype.com/repository/maven-snapshots/</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
To test with local builds, run the publishToMavenLocal gradle task. The current version number is set in .env file.
Do not forget to add mavenLocal() to the repositories section.
Thanks goes to these wonderful people (emoji key):
Stav Shamir
π» Timon Back
Timon Back
π» sam0r040
sam0r040
π» Carlos Tasada
Carlos Tasada
π» jrlambs
jrlambs
π» DmitriButorchin
DmitriButorchin
π» Thomas Vahrst
Thomas Vahrst
π»
Yasen Pavlov
π» Arthur Geweiler
Arthur Geweiler
π» CS-BASF
CS-BASF
π» Jeroen van Wilgenburg
Jeroen van Wilgenburg
π» Michael Strelchenko
Michael Strelchenko
π» Olivier Gaudefroy
Olivier Gaudefroy
π» Omerbea
Omerbea
π»
Pavel Bodiachevskii
π» Sergio RoldΓ‘n
Sergio RoldΓ‘n
π» Stmated
Stmated
π» Themistoklis Pyrgiotis
Themistoklis Pyrgiotis
π» Zach Hubbs
Zach Hubbs
π» biergit
biergit
π» kalarani
kalarani
π»
Dipesh Singh
π» Sakshi Jain
Sakshi Jain
π» Sheheryar Aamir
Sheheryar Aamir
π» jmwestbe
jmwestbe
π» pdalfarr
pdalfarr
π» Krzysztof KwiecieΕ
Krzysztof KwiecieΕ
π» Robert Henke
Robert Henke
π»
Raphael De Lio
π» Nikita Marunko
Nikita Marunko
π» Victor Levitskiy
Victor Levitskiy
π» Christopher Cudennec
Christopher Cudennec
π» dabeck81
dabeck81
π» Jan Marten
Jan Marten
π» FabianBesner2020
FabianBesner2020
π»
Norbert Wirges
π» Tomas Tulka
Tomas Tulka
π» Elys Rivero
Elys Rivero
π» AlexElin
AlexElin
π» antoine VAISSET
antoine VAISSET
π» Karlender
Karlender
π» Steffen
Steffen
π»
To add yourself as a contributor, install the all-contributors CLI and run:
npx all-contributors-cli checknpx all-contributors-cli add <username> codenpx all-contributors-cli generate