Kompendium
Welcome to Kompendium, the straight-forward, minimally-invasive OpenAPI generator for Ktor.
How to install
Kompendium publishes all releases to Maven Central. As such, using the release versions of Kompendium
is as simple as declaring it as an implementation dependency in your build.gradle.kts
repositories {
mavenCentral()
}
dependencies {
implementation("io.bkbn:kompendium-core:latest.release")
}
In addition to publishing releases to Maven Central, a snapshot version gets published to GitHub Packages on every merge to main
. These can be consumed by adding the repository to your gradle build file. Instructions can be found here
Setting up the Kompendium Plugin
Kompendium is instantiated as a Ktor Feature/Plugin. It can be added to your API as follows
private fun Application.mainModule() {
// Installs the Kompendium Plugin and sets up baseline server metadata
install(Kompendium) {
spec = OpenApiSpec(/*..*/)
}
// ...
}
Notarization
The concept of notarizing routes / exceptions / etc. is central to Kompendium. More details on how to notarize your API can be found in the kompendium-core module.
All modules:
This module houses all annotations that Kompendium uses to provide key metadata when performing reflective analysis.
This module is responsible for providing wrappers around ktor-auth configuration blocks, allowing users to document their API authentication with minimal modifications to their existing configuration.
This is where the magic happens. This module houses all the reflective goodness that powers Kompendium.
Adds support for Ktor Locations API. Any notarized location must be provided with a TParam
annotated with @Location
. Nested Locations are supported
This module contains the models that represent the Open Api Specification 3.0 (OAS).
Contains the code necessary to launch swagger
as your documentation frontend.