Ktor OpenAPI Spec Generator

Overview

Kompendium

version

What is Kompendium

Kompendium is intended to be a minimally invasive OpenApi Specification generator for Ktor. Minimally invasive meaning that users will use only Ktor native functions when implementing their API, and will supplement with Kompendium code in order to generate the appropriate spec.

How to install

Kompendium publishes all releases to Maven Central. As such, using the stable version of Kompendium is as simple as declaring it as an implementation dependency in your build.gradle.kts

repositories {
  mavenCentral()
}

dependencies {
  // other (less cool) dependencies
  implementation("io.bkbn:kompendium-core:latest")
  implementation("io.bkbn:kompendium-auth:latest")
  implementation("io.bkbn:kompendium-swagger-ui:latest")
}

The last two dependencies are optional.

If you want to get a little spicy 🤠 every merge of Kompendium is published to the GitHub package registry. Pulling from GitHub is slightly more involved, but such is the price you pay for bleeding edge fake data generation.

// 1 Setup a helper function to import any Github Repository Package
// This step is optional but I have a bunch of stuff stored on github so I find it useful 😄
fun RepositoryHandler.github(packageUrl: String) = maven { 
    name = "GithubPackages"
    url = uri(packageUrl)
    credentials {
      username = java.lang.System.getenv("GITHUB_USER")
      password = java.lang.System.getenv("GITHUB_TOKEN")
    } 
}

// 2 Add the repo in question (in this case Kompendium)
repositories {
    github("https://maven.pkg.github.com/bkbnio/kompendium")
}

// 3 Add the package like any normal dependency
dependencies { 
    implementation("io.bkbn:kompendium-core:1.0.0")
}

In depth

Notarized Routes

Kompendium introduces the concept of notarized HTTP methods. That is, for all your GET, POST, PUT, and DELETE operations, there is a corresponding notarized method. These operations are strongly typed, and use reification for a lot of the class based reflection that powers Kompendium. Generally speaking the three types that a notarized method will consume are

  • TParam: Used to notarize expected request parameters
  • TReq: Used to build the object schema for a request body
  • TResp: Used to build the object schema for a response body

GET and DELETE take TParam and TResp while PUT and POST take all three.

In addition to standard HTTP Methods, Kompendium also introduced the concept of notarizedExceptions. Using the StatusPage extension, users can notarize all handled exceptions, along with their respective HTTP codes and response types. Exceptions that have been notarized require two types as supplemental information

  • TErr: Used to notarize the exception being handled by this use case. Used for matching responses at the route level.
  • TResp: Same as above, this dictates the expected return type of the error response.

In keeping with minimal invasion, these extension methods all consume the same code block as a standard Ktor route method, meaning that swapping in a default Ktor route and a Kompendium notarized route is as simple as a single method change.

Supplemental Annotations

In general, Kompendium tries to limit the number of annotations that developers need to use in order to get an app integrated.

Currently, the annotations used by Kompendium are as follows

  • KompendiumField
  • KompendiumParam

The intended purpose of KompendiumField is to offer field level overrides such as naming conventions (ie snake instead of camel).

The purpose of KompendiumParam is to provide supplemental information needed to properly assign the type of parameter (cookie, header, query, path) as well as other parameter-level metadata.

Polymorphism

Out of the box, Kompendium has support for sealed classes. At runtime, it will build a mapping of all available sub-classes and build a spec that takes anyOf the implementations. This is currently a weak point of the entire library, and suggestions on better implementations are welcome 🤠

Serialization

Under the hood, Kompendium uses Jackson to serialize the final api spec. However, this implementation detail does not leak to the actual API, meaning that users are free to choose the serialization library of their choice.

Examples

The full source code can be found in the kompendium-playground module. Here is a simple get endpoint example

// Minimal API Example
fun Application.mainModule() {
  install(StatusPages) {
    notarizedException<Exception, ExceptionResponse>(
      info = ResponseInfo(
        KompendiumHttpCodes.BAD_REQUEST,
        "Bad Things Happened"
      )
    ) {
      call.respond(HttpStatusCode.BadRequest, ExceptionResponse("Why you do dis?"))
    }
  }
  routing {
    openApi(oas)
    redoc(oas)
    swaggerUI()
    route("/potato/spud") {
      notarizedGet(simpleGetInfo) {
        call.respond(HttpStatusCode.OK)
      }
    }
  }
}

val simpleGetInfo = GetInfo<Unit, ExampleResponse>(
  summary = "Example Parameters",
  description = "A test for setting parameter examples",
  responseInfo = ResponseInfo(
    status = 200,
    description = "nice",
    examples = mapOf("test" to ExampleResponse(c = "spud"))
  ),
  canThrow = setOf(Exception::class)
)

Kompendium Auth and security schemes

There is a separate library to handle security schemes: kompendium-auth. This needs to be added to your project as dependency.

At the moment, the basic and jwt authentication is only supported.

A minimal example would be:

install(Authentication) {
  notarizedBasic("basic") {
    realm = "Ktor realm 1"
    // configure basic authentication provider..
  }
  notarizedJwt("jwt") {
    realm = "Ktor realm 2"
    // configure jwt authentication provider...
  }
}
routing {
  authenticate("basic") {
    route("/basic_auth") {
      notarizedGet(basicAuthGetInfo) {
        call.respondText { "basic auth" }
      }
    }
  }
  authenticate("jwt") {
    route("/jwt") {
      notarizedGet(jwtAuthGetInfo) {
        call.respondText { "jwt" }
      }
    }
  }
}

val basicAuthGetInfo = MethodInfo<Unit, ExampleResponse>(
  summary = "Another get test", 
  description = "testing more", 
  responseInfo = testGetResponse, 
  securitySchemes = setOf("basic")
)
val jwtAuthGetInfo = basicAuthGetInfo.copy(securitySchemes = setOf("jwt"))

Enabling Swagger ui

To enable Swagger UI, kompendium-swagger-ui needs to be added. This will also add the ktor webjars feature to your classpath as it is required for swagger ui. Minimal Example:

  install(Webjars)
  routing {
    openApi(oas)
    swaggerUI()
  }

Enabling ReDoc

Unlike swagger, redoc is provided (perhaps confusingly, in the core module). This means out of the box with kompendium-core, you can add ReDoc as follows

routing {
  openApi(oas)
  redoc(oas)
}

Limitations

Kompendium as a singleton

Currently, Kompendium exists as a Kotlin object. This comes with a couple perks, but a couple downsides. Primarily, it offers a seriously clean UX where the implementer doesn't need to worry about what instance to send data to. The main drawback, however, is that you are limited to a single API per classpath.

If this is a blocker, please open a GitHub issue, and we can start to think out solutions!

Future Work

Work on V1 of Kompendium has come to a close. This, however, does not mean it has achieved complete parity with the OpenAPI feature spec, nor does it have all-of-the nice to have features that a truly next-gen API spec should have. There are several outstanding features that have been added to the V2 Milestone. Among others, this includes

  • AsyncAPI Integration
  • Field Validation
  • MavenCentral Release

If you have a feature that you would like to see implemented that is not on this list, or discover a 🐞 , please open an issue here

Comments
  • Support Protobuf generated objects

    Support Protobuf generated objects

    I am trying to integrate kompendium in my ktor project where we currently use custom serializers to decode / encode from and to protobuf java objects.

    My first taught was to create custom types by grabbing the fields from protobuf java classes but getting the fields from the serializers seems to be a more generic approach.

    Could you give me some starting points of how to approach this ?

    Once this is integrated i want to integrate proto gen validate and add those to the format of the properties.

    Lets say I have the following object:

    user.proto

    // note we are using PGV validate to validate our fields
    message User {
      string id = 1 [(validate.rules).string = {ignore_empty: true, uuid: true}];
      string email = 2 [(validate.rules).string.email = true];
      string mobile_phone = 3 ;
      // Match only unicode chars at the start and end and in the middle also allow . white space
      string name = 4 [(validate.rules).string = {pattern : "^[\\p{L}][\\p{L}'\\-\\ \\.\\/]+[\\p{L}]$$", max_len : 256}];
    }
    

    UserSerializer

    @OptIn(ExperimentalSerializationApi::class)
    object UserSerializer : KSerializer<User> {
    
      override val descriptor: SerialDescriptor = buildClassSerialDescriptor("User") {
        element("id", serialDescriptor<String>())
        element("email", serialDescriptor<String>())
        element("mobile_phone", serialDescriptor<String>())
        element("name", serialDescriptor<String>())
      }
    
      override fun deserialize(decoder: Decoder): User {
        return decoder.decodeStructure(descriptor) {
          var id: String? = null
          var email: String? = null
          var mobilePhone: String? = null
          var name: String? = null
    
          loop@ while (true) {
            when (val index = decodeElementIndex(descriptor)) {
              CompositeDecoder.DECODE_DONE -> break@loop
              0 -> id = decodeStringElement(descriptor, index)
              1 -> email = decodeStringElement(descriptor, index)
              2 -> mobilePhone = decodeStringElement(descriptor, index)
              3 -> name = decodeStringElement(descriptor, index)
              else -> throw ValidationException(
                descriptor.getElementName(index),
                "Invalid field",
                "Unexpected index field"
              )
            }
          }
          // building the protobuf object
          val sim = User.newBuilder().apply {
            id?.let { v -> this.id = v }
            email?.let { v -> this.email = v }
            mobilePhone?.let { v -> this.mobilePhone = v }
            name?.let { v -> this.name = v }
          }.build()
          sim.cpf.validateCPF()
          // PGV validate code
          val index = ReflectiveValidatorIndex()
          index.validatorFor<User>(sim.javaClass).assertValid(sim)
          sim
        }
      }
    
      override fun serialize(encoder: Encoder, value: User) {
        encoder.encodeStructure(descriptor) {
          encodeStringElement(descriptor, 0, value.id)
          encodeStringElement(descriptor, 1, value.email)
          encodeStringElement(descriptor, 2, value.mobilePhone)
          encodeStringElement(descriptor, 3, value.name)
        }
      }
    }
    
    
    enhancement help wanted 
    opened by jvgelder 15
  • feat: add support for NotarizedRouteResources

    feat: add support for NotarizedRouteResources

    Description

    For resources in nested routes, there was no way to generate the correct path. Now, with NotarizedRouteResources, one can do this, combining the syntax of NotarizedRoute with the mapping in NotarizedResources.

    Closes #370

    Type of change

    Please delete options that are not relevant.

    • [x] New feature (non-breaking change which adds functionality)
    • [x] Documentation

    How Has This Been Tested?

    Added a new unit test for NotarizedRouteResources

    Checklist:

    • [x] My code follows the style guidelines of this project
    • [x] I have performed a self-review of my own code
    • [x] I have commented my code, particularly in hard-to-understand areas
    • [x] I have made corresponding changes to the documentation
    • [x] I have updated the CHANGELOG in the Unreleased section
    • [x] My changes generate no new warnings
    • [x] I have added tests that prove my fix is effective or that my feature works
    • [x] New and existing unit tests pass locally with my changes
    • [x] Any dependent changes have been merged and published in downstream modules
    opened by geirsagberg 12
  • Path calculation is not intuitive when adding additional modules

    Path calculation is not intuitive when adding additional modules

    Exception in thread "main" java.lang.IllegalStateException: Unknown selector (authenticate auth-jwt) at io.bkbn.kompendium.path.CorePathCalculator.handleCustomSelectors(CorePathCalculator.kt:49) at io.bkbn.kompendium.path.CorePathCalculator.calculate(CorePathCalculator.kt:44) at io.bkbn.kompendium.path.CorePathCalculator.calculate(CorePathCalculator.kt:36) at io.bkbn.kompendium.path.CorePathCalculator.calculate(CorePathCalculator.kt:36) at io.bkbn.kompendium.path.CorePathCalculator.calculate(CorePathCalculator.kt:31) at io.bkbn.kompendium.path.PathCalculator$DefaultImpls.calculate$default(PathCalculator.kt:13)

    This occurs when trying to use the Authentication plugin's authorized block and include a notarized method inside. The crash occurs on server startup. I have verified that the Authentication Plugin is installed before Routing.

    opened by LandryNorris 10
  • Add support for ktor Resources in addition to / instead of Locations

    Add support for ktor Resources in addition to / instead of Locations

    Is your feature request related to a problem? Please describe.

    According to Locations documentation, the plugin is deprecated and Resources should be used instead:

    In v2.0.0, the Locations plugin is deprecated. Use the Resources plugin instead.

    Describe the solution you'd like

    Replace the kompendium-locations plugin with kompendium-resources. Looking at the code, a simple copy-paste of existing plugin code with some renaming and adding support for Resource annotations should do the trick. (Can also just add a new plugin in addition to existing locations, but I don't see much point in keeping a plugin for deprecated ktor functionality.)

    Describe alternatives you've considered

    The workaround I'm using now is annotating the resource with both Location and Resource annotations. It seems to work, but is not a very good option.

    enhancement good first issue 
    opened by serpro69 9
  • Create github releases or deploy to maven central

    Create github releases or deploy to maven central

    Currently the packages are created on Github. Although I really like github workflow, serving the packages on Github can add a barrier to use it in other projects since it requires Github authentication (github community issue).

    Currently I'm using Jitpack to retrieve it (example build log). But at the moment no releases are created so only git commit hash can be used, which works but I rather use the version as tag that is mentioned in the change log.

    I was wondering if something like the following would be possible:

    • deploy to maven central
      • I think that would be best as it easiest to integrate it on consuming projects.
      • This requires setting up an Sonatype account
    • or, create releases on github when changelog has been changed on master

    Or do you have other ideas? Happy to help to moving this forward 🚀

    opened by dpnolte 9
  • init security scheme

    init security scheme

    Hi,

    I've made a first quick go at support security schemes (issue #14). It is just a rough start and is not meant to be already merged. But, I thought it would be good to already open te PR so that you can see the direction it is going.

    To summarize, the key changes are:

    • New module, Kompendium-Auth, is added to correspond with ktor-auth and ktor-auth-jwt dependencies
    • Added notarized wrappers for ktor's authentication methods in this module
    • Security scheme component is added when installing the authentication feature using the wrappers (i.e., notarizedBasic, notarizedJwt)
    • notarizedAuthentication sets the current security scheme name (could be replaced by adding this as a field to MethodInfo)
    • when a path item is added, the security scheme is added if security scheme is not null
    • an AuthenticationRouteSelector is added to calculatePath to account for authenticated routes.
    • the playground has an example of an authenticated route

    Creating a new module, creates some problems. The AuthenticationRouteSelector is now added in the hacky way using the jave simple class name and the current schema name is leaked as it is public. I still thought it makes sense to make a separate module to account for the separate ktor auth libraries.

    The problem of the leaked current scheme could be solved by your suggestion to add authentication to the method info, yet it will create a bit of overhead of having to specify it for every route.

    Curious to you thoughts,

    opened by dpnolte 9
  • Feature/protobuf java jsonschema

    Feature/protobuf java jsonschema

    Description

    Implements CustomType generator for java protobuf generated classes.

    Closes # (issue)

    Type of change

    Please delete options that are not relevant.

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [x] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] Documentation
    • [ ] Chore

    How Has This Been Tested?

    Please describe the tests that you ran to verify your changes.

    Checklist:

    • [x] My code follows the style guidelines of this project
    • [x] I have performed a self-review of my own code
    • [x] I have commented my code, particularly in hard-to-understand areas
    • [x] have made corresponding changes to the documentation
    • [x] I have updated the CHANGELOG in the Unreleased section
    • [x] My changes generate no new warnings
    • [x] I have added tests that prove my fix is effective or that my feature works
    • [x] New and existing unit tests pass locally with my changes
    • [x] Any dependent changes have been merged and published in downstream modules

    TODO:

    • [ ] Figure out where to store the proto file and generated files for the playground
    opened by jvgelder 8
  • Multiple exceptions same status code

    Multiple exceptions same status code

    I have a problem using notarizedExceptions for multiple exceptions with same status code, for example:

    Endpoint can throw IllegalArgumentException and InvalidFormatException. Both exceptions should return 400 but the generated swagger document only shows the last notarizedException(within the statusPages module) with that status code.

    I found this information about it. In Kompendium you are not allowed to pass a set of exceptions to a single notarized exception.

    If your code can throw multiple exceptions, you would have to catch all of them and throw a generic exception. This generic exception would be the one that catches the notarizedException and inside its ResponseInfo is where you would put the different exception examples.

    This solution I think is invasive and forces you to change your error handling.

    Any other alternative?

    Thanks a lot

    opened by adrG2 8
  • SimpleSchema chema added via addCustomTypeSchema ignores format field if specified.

    SimpleSchema chema added via addCustomTypeSchema ignores format field if specified.

    Describe the bug If I use such configuration:

    install(Kompendium) {
        spec = Util.baseSpec
        // Tells Kompendium how to handle a specific type
        addCustomTypeSchema(Instant::class, SimpleSchema(type = "string", format = "date-time"))
      }
    

    and will use Instant type in models - format setting will be ignored.

    To Reproduce Steps to reproduce the behavior:

    1. Oepn CustomTypePlaygroind example in kompendium-playground module
    2. Change install part as described above.
    3. Lanuch main()
    4. Open /openapi.json and you'll see for Instant field such definition:
    "timestamp": {
       "type": "string"
    }
    

    Expected behavior There should be such definition:

    "timestamp": {
       "type": "string",
       "format": "date-time"
    }
    

    Additional context Format may be important in some cases because it helps Swagger UI to identify how example must be generated according to it.

    opened by netknight 7
  • Serve swagger-ui from WebJar instead of unpkg.com

    Serve swagger-ui from WebJar instead of unpkg.com

    Is your feature request related to a problem? Please describe. I just can't imagine how current implementation can work with OAuth authentication for REST calls.

    To use OAuth there is must be oauth2-redirect.html specified on the OAuth server side and it'll redirect to this URL after successful authentication. Currently this url is located on external unpkg.com site. So there is no way to redirect there and complete authentication flow executed by swagger-ui.

    Moreover many projects just don't want to serve anything from 3-rd party mirrors.

    Describe the solution you'd like The better approach would be to instal KTor WebJars extension and serve all static like JS & CSS from there .

    Additionally there must be: oauth2RedirectUrl specified, generally it is done in swagger-config.json and clientId & clientSecretId should be provided like described here (see the bottom of the page: "initOAuth"): https://swagger.io/docs/open-source-tools/swagger-ui/usage/oauth2/

    Describe alternatives you've considered Don't see any good alternatives, because AFAIK all external bundles just can't work well with external authentication.

    Additional context Having bundled Swagger-UI via WebJar and custom extended implementation for index.html & swagger-config.json there will be a better tuning possibilities for Swagger. Moreover there is no any need to write full implementation for index.html, you can just replace dynamic part like this: this::class.java.getResource("/META-INF/resources/webjars/swagger-ui/$swaggerVersion/index.html")?.readText()?.replaceFirst("window.ui = ui", "YOUR SCRIPT CODE that ends with replaced string")

    good first issue help wanted 
    opened by netknight 7
  • Add kotlinx-serialization

    Add kotlinx-serialization

    Description

    Add Kotlinx-Serialization

    How Has This Been Tested?

    I run it on my own webpage.

    Checklist:

    • [X] My code follows the style guidelines of this project
    • [X] I have performed a self-review of my own code
    • [X] I have commented my code, particularly in hard-to-understand areas
    • [X] I have made corresponding changes to the documentation
    • [/] I have updated the CHANGELOG and bumped the version
    • [X] My changes generate no new warnings
    • [/] I have added tests that prove my fix is effective or that my feature works
    • [/] New and existing unit tests pass locally with my changes
    • [/] Any dependent changes have been merged and published in downstream modules
    opened by Lundez 7
  • fix(deps): update dependency io.gitlab.arturbosch.detekt:detekt-formatting to v1.22.0

    fix(deps): update dependency io.gitlab.arturbosch.detekt:detekt-formatting to v1.22.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | io.gitlab.arturbosch.detekt:detekt-formatting (source) | 1.21.0 -> 1.22.0 | age | adoption | passing | confidence |


    Release Notes

    detekt/detekt

    v1.22.0

    We're extremely excited to announce the next upcoming stable release of Detekt: 1.22.0 🚀 This release is coming with 16 new rules, 2 new rulesets and several new functionalities & APIs.

    We've also introduced the Detekt Marketplace, a place for users to share their 3rd party rules and extensions.

    We want to take the opportunity to thank our Sponsors and our Contributors for testing, bug reporting and helping us release this new version of Detekt. You're more than welcome to join our community on the #detekt channel on KotlinLang's Slack (you can get an invite here).

    Notable Changes
    • We're introducing the Detekt Marketplace, a place where you can add your own 3rd party extension such as rule, plugins, custom reporter, etc. - #​5191
    • Our website is now versioned. You can find the changes for each version using the dropdown menu on the top bar. Documentation for the upcoming version (next) can be found here.
    • We added 16 new Rules to Detekt
      • AlsoCouldBeApply - #​5333
      • MultilineRawStringIndentation - #​5058
      • TrimMultilineRawString - #​5051
      • UnnecessaryNotNullCheck - #​5218
      • UnnecessaryPartOfBinaryExpression - #​5203
      • UseSumOfInsteadOfFlatMapSize - #​5405
      • FunctionReturnTypeSpacing from KtLint - #​5256
      • FunctionSignature from KtLint - #​5256
      • FunctionStartOfBodySpacing from KtLint - #​5256
      • NullableTypeSpacing from KtLint - #​5256
      • ParameterListSpacing from KtLint - #​5256
      • SpacingBetweenFunctionNameAndOpeningParenthesis from KtLint - #​5256
      • TrailingCommaOnCallSite from KtLint - #​5312
      • TrailingCommaOnDeclarationSite from KtLint - #​5312
      • TypeParameterListSpacing from KtLint - #​5256
    • We added a new ruleset called detekt-rules-ruleauthors containing rules for Rule Authors to enforce best practices on Detekt rules such as the new ViolatesTypeResolutionRequirements - #​5129 #​5182
    • We added a new ruleset called detekt-rules-libraries containing rules mostly useful for Library Authors - We moved the following rules inside ForbiddenPublicDataClass, LibraryCodeMustSpecifyReturnType, LibraryEntitiesShouldNotBePublic this new ruleset - See Migration below on how to migrate #​5360
    • We added support for JVM toolchain. This means that Detekt will now respect the JDK toolchain you specify on your Gradle configuration. You will also be able to specify a custom JDK home with the --jdk-home CLI parameter - #​5269
    • Improvement for Type Resolution
      • We will now skip rules annotated with @RequiresTypeResolution when without Type Resolution - #​5176
      • We will warn users if they run rules requiring Type Resolution when Type Resolution is disabled, so they're not silently skipped - #​5226
    • Improvement for Config Management
      • We added exhaustiveness check during config validation. You can enable it checkExhaustiveness: true in your config file. This is disabled by default. - #​5089
      • We added support for generating custom configuration for rule authors - #​5080
    • Deprecations & Removals
      • We deprecated the MultiRule class as it was overly complicated. The suggested approach is to just provide separated rules. - #​5161
      • The --fail-fast CLI flag (and failFast Gradle property) has been removed. It was deprecated since 1.16.x - #​5290
      • We deprecated the following rules DuplicateCaseInWhenExpression, MissingWhenCase, RedundantElseInWhen as the Kotlin Compiler is already reporting errors for those scenarios - #​5309
      • We removed the --print-ast CLI flag as PsiViewer provides the same features - #​5418
    • Notable changes to existing rules
      • ArrayPrimitive is now working only with Type Resolution - #​5175
      • WildcardImport is now running also on tests by default - #​5121
      • ForbiddenImport allows now to specify a reason for every forbidden import - #​4909
      • IgnoredReturnValue: option restrictToAnnotatedMethods is now deprecated in favor of restrictToConfig - #​4922
    • This version of Detekt is built with Gradle v7.5.1, AGP 7.3.1, Kotlin 1.7.21 and KtLint 0.47.1 (see #​5363 #​5189 #​5411 #​5312 #​5519)
    • The minimum supported Gradle version is now v6.7.1 - #​4964
    Migration

    We deprecated a number of rules in this release.

    You should update your config file as follows:

      potential-bugs:
        active: true
        ...
    -   DuplicateCaseInWhenExpression:
    -     active: true
        ...
    -   MissingWhenCase:
    -     active: true
    -     allowElseExpression: true
        ...
    -   RedundantElseInWhen:
    -     active: true
    
      style:
        active: true
        ...
    -   ForbiddenPublicDataClass:
    -     active: true
    -     excludes: ['**']
    -     ignorePackages:
    -       - '*.internal'
    -       - '*.internal.*'
        ...
    -   LibraryCodeMustSpecifyReturnType:
    -     active: true
    -     excludes: ['**']
        ...
    -   LibraryEntitiesShouldNotBePublic:
    -     active: true
    -     excludes: ['**']
    

    If you wish to use the libraries ruleset we introduced you should add the following to your config file:

    + libraries:
    +   active: true
    +   ForbiddenPublicDataClass:
    +     active: false
    +   LibraryEntitiesShouldNotBePublic:
    +     active: false
    +   LibraryCodeMustSpecifyReturnType:
    +     active: true
    

    and add the following to you build.gradle file:

    detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-libraries:$version")
    

    If you're using our KtLint wrapper (i.e. detekt-formatting) you should also update your config file as follows:

    formatting:
      active: true
      ...
    - TrailingComma:
    -   active: false
    -   autoCorrect: true
    -   allowTrailingComma: false
    -   allowTrailingCommaOnCallSite: false
      ...
    + TrailingCommaOnCallSite:
    +   active: false
    +   autoCorrect: true
    +   useTrailingCommaOnCallSite: false
    + TrailingCommaOnDeclarationSite:
    +   active: false
    +   autoCorrect: true
    +   useTrailingCommaOnDeclarationSite: false
    
    Changelog
    • ReturnCount: correctly count assignment expressions with elvis return as guard clauses - #​5539
    • UnnecessaryPartOfBinaryExpression: fix false positive with pair creation - #​5516
    • False positive at UnnecessaryPartOfBinaryExpression - #​5514
    • Update documentation for TrailingComma rules - #​5513
    • TrimMultilineRawString false-positive on annotation parameters - #​5476
    • Detekt 1.22.0-RC1 -> 1.22.0-RC2 breaks UnreachableCode - #​5435
    • Detekt 1.22.0-RC1 -> 1.22.0-RC2 breaks ignoreAnnotated - #​5427
    • Fix issues introduced by #​5152 - #​5508
    • MultilineLambdaItParameter: fix false positive for one-line statements with a lambda argument - #​5505
    • UseArrayLiteralsInAnnotations: fix false negative with primitive array factory calls - #​5482
    • TrimMultilineRawString: fix false positive when it's expected as constant - #​5480
    • Fix false negative SafeCast with no braces - #​5479
    • Update gradle/wrapper-validation-action digest to 55e685c - #​5472
    • Grant permission for type resolution Gradle job - #​5470
    • Fix ObjectPropertyNaming Rule false positive - #​5466
    • Fix LambdaParameterNaming rule false positive - #​5465
    • Fix ReturnCount false positive when excludeReturnFromLambda is enabled - #​5459
    • CognitiveComplexity: count else/else-if as one complexity - #​5458
    • Fix false positive MultilineRawStringIndentation with tab indentation - #​5453
    • Don't show the number of issues generating the BindingContext - #​5449
    • Make detekt less noisy - #​5448
    • New ruleauthors rule for Entity.from(x.nameIdentifier ?: x) -> Entity.atName(x) - #​5444
    • Separating ComplexMethod rule into CyclomaticComplexMethod and CognitiveComplexMethod - #​5442
    • Improve error reporting for CascadingCallWrapping - #​5439
    • TrimMultilineRawString: fix false positive with not a raw string - #​5438
    • BooleanPropertyNaming highlight only the name of the variable - #​5431
    • Deprecate TrailingComma as it's now split in two rules - #​5423
    • Remove unused constant - #​5421
    • Report if/else as issue location instead of block - #​5407
    • Remove some unnecessary suppressions - #​5400
    • Check FormattingRule is auto-correctable by information provided by ktlint - #​5398
    • Fix false negative MultilineLambdaItParameter on complex multiline single statement - #​5397
    • ObjectPropertyNaming: fix false positive with top level properties - #​5390
    • Remove usage of MPP targets function for JVM-only projects - #​5383
    • UnnecessaryNotNullCheck: fix false negative with smart casted arguments - #​5380
    • Add missing overlapping info & fix rules URLs - #​5378
    • AlsoCouldBeApply: fix false positive when all statements are not it-started expressions - #​5376
    • UnusedPrivateMember: fix false negative with named arguments - #​5374
    • Change requires type resolution rule warning to debug level to not spam the user console - #​5353
    • Report UseDataClass findings on class name - #​5352
    • Report LabeledExpression as the label instead of the whole expression - #​5351
    • Report CastToNullableType at the cast operator instead of the whole expression - #​5350
    • Convert previously known string property to list based on default value - #​5347
    • CastToNullableType: highlights too much - #​5346
    • UseDataClass flags the whole class body, not just the name - #​5338
    • CanBeNonNullable: explain why the rule does what it does. - #​5332
    • Differentiate between correctable and non-correctable KtLint rules - #​5324
    • ReturnCount 1.22.0 crashes on valid 1.21.0 config property excludedFunctions when using --all-rules cli flag - #​5323
    • LabeledExpression to highlight only label - #​5316
    • Use the correct source directory set on JVM - #​5163
    • Get Android variant compile classpath from compileConfiguration - #​5152
    • Use list config for FunctionOnlyReturningConstant>excludedFunctions - #​5120
    • MaxLineLength: raw typo and test cleanup - #​5315
    • EndOfSentenceFormat: fix HTML tag heuristic - #​5313
    • Fix EndOfSentenceFormat highlight - #​5311
    • Introduce configFile property on DetektGenerateTask - #​5308
    • Improve debug suggestion message - #​5300
    • Fat-Jar version of detekt-generator module - #​5297
    • Toolchains docs - #​5293
    • Adopt new AGP dsl - #​5288
    • NonBooleanPropertyPrefixedWithIs: Allow boolean functions - #​5285
    • Provide the current classpath inside KotlinEnvironmentResolver - #​5275
    • Fix false-positive on NestedScopeFunctions - #​5274
    • Use convention method to set task property defaults - #​5272
    • Update docusaurus monorepo to v2.1.0 - #​5270
    • detektVersionReplace.js plugin is not replacing all [detekt_version] tags on website - #​5266
    • Update ktlint rule doc links - #​5258
    • Remove redundant rule config for rules enabled by default - #​5257
    • UnusedPrivateMember: fix false positive with backtick parameters - #​5252
    • Improve MultilineRawStringIndentation - #​5245
    • UnnecessaryLet: fix false positive with with invoke operator calls - #​5240
    • Introduce baseline tooling api - #​5239
    • Allow secondary constructors to reference CoroutineDispatchers - #​5227
    • Update UnnecessaryAbstractClass issue description to be less verbose - #​5224
    • Update plugin com.gradle.common-custom-user-data-gradle-plugin to v1.8.0 - #​5223
    • Pin dependencies - #​5222
    • Remove rule from NamingRules multi rule - #​5212
    • Run all rules from EmptyBlocks multi rule individually - #​5208
    • Run all rules from KDocStyle multi rule individually - #​5207
    • Docs: GitHub - Add link to configure Sarif severity alert level - #​5206
    • Fix errors with detektGenerateConfig - #​5199
    • Forbid constructors with ForbiddenMethodCall - #​5195
    • Update github/codeql-action digest to 2ca79b6 - #​5177
    • Allow to ignore overloaded methods for the complex interface rule (#​5165) - #​5173
    • Add excludesRawStrings in MaxLineLength - #​5171
    • Enable Predictive Test Selection for local builds - #​5170
    • Update dependency org.kohsuke:github-api to v1.307 - #​5168
    • Update dependency com.github.ajalt:clikt to v2.8.0 - #​5167
    • Update docusaurus monorepo to v2.0.1 - #​5166
    • Run build-logic Kotlin compilation out of process on CI - #​5162
    • Add information about exhaustiveness check to documentation - #​5160
    • Use getter when determining whether custom config path is set in DetektGenerateConfigTask - #​5157
    • Limit Kotlin version warning suppression scope in build - #​5156
    • Re-enable warnings as errors for detekt-gradle-plugin - #​5155
    • Bundle slf4j-nop in detekt-formatting JAR - #​5153
    • Fix false negative for UseRequire when thrown in conditional block - #​5147
    • Allow parentheses for unclear precedence with range operator - #​5143
    • Mark apiDump task as incompatible with configuration cache - #​5134
    • Improve binding context management - #​5130
    • RedundantExplicitType add annotation @RequiresTypeResolution - #​5128
    • Disable ExitOutsideMain if contextBinding is empty - #​5127
    • Use list config for DataClassContainsFunctions>conversionFunctionPrefix - #​5119
    • Support proper globbing in ReturnCount - #​5118
    • Improve finding message of ExplicitItLambdaParameter - #​5117
    • Update JamesIves/github-pages-deploy-action digest to 13046b6 - #​5110
    • UnusedUnaryOperator: fix false positive with var assignment and if expression - #​5106
    • Tag publishPlugins task as incompatible with configuration cache - #​5101
    • Make verifyGeneratorOutput task configuration cache compatible - #​5100
    • Remove obsolete FeatureInAlphaState opt in - #​5099
    • Remove explicit RequiresOptIn compiler flag - #​5098
    • Use Gradle's configuration cache by default - #​5095
    • Detect undocumented protected classes, properties, and functions - #​5083
    • ReturnCount.excludedFunctions should be a List<String> - #​5081
    • Make ForbiddenMethodCall to support property getters/setters and method references - #​5078
    • Refactor Gradle tasks to use Gradle's managed properties - #​4966
    • Add option to add a reason to ForbiddenMethodCall - #​4910
    • UnnecessaryParentheses: add options to allow in ambiguous cases - #​4881
    Dependency Updates
    • Update dependency com.android.tools.build:gradle to v7.3.1 - #​5411
    • Update plugin com.gradle.enterprise to v3.11.2 - #​5406
    • Update dependency org.jetbrains.dokka to v1.7.20 - #​5401
    • Update dependency org.yaml:snakeyaml to v1.33 - #​5354
    • Update dependency org.spekframework.spek2:spek-dsl-jvm to v2.0.19 - #​5237
    • Update dependency com.android.tools.build:gradle to v7.2.2 - #​5178
    • Update org.jetbrains.kotlinx - #​5072
    • Update dependency org.jetbrains.dokka to v1.7.10 - #​5070
    • Bump ktlint to version 0.46.1 - #​5044
    • AssertJ 3.23.1 - #​4265
    Housekeeping & Refactorings
    • Document and test edge cases for ForbiddenMethodCall function signatures - #​5495
    • Fix invalid syntaxes in test code - #​5446
    • Improve raw strings format - #​5244
    • Enable trim multiline raw string - #​5243
    • Remove old configurations - #​5198
    • Improve tests in UnnecessaryParenthesesSpec - #​5197
    • Remove multi rule FileParsingRule - #​5193
    • Remove unused dry run properties from baseline/config tasks - #​5158
    • remove SimpleGlob in favor of String.simplePatternToRegex() - #​5144
    • Remove unused property - #​5135
    • Assert end source locations - #​5116
    • Forbid usage of DiagnosticUtils.getLineAndColumnInPsiFile - #​5109
    • Configure 'ForbiddenImport' to use value and reason - #​5105
    • Enable Kotlin's new approach to incremental compilation - #​5092
    • Fix current indentation - #​5059

    See all issues at: 1.22.0


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • KSP Generator Implementation

    KSP Generator Implementation

    Is your feature request related to a problem? Please describe.

    I would like to have a compile-time generator so that the serialized OpenAPI doc could be check in to source code. This would enable validation and linting, and would make tracking API documentation changes over time much easier.

    Describe the solution you'd like

    This could be achieved using the Kotlin Symbol Processing library

    Describe alternatives you've considered

    The current approach (mostly) works, but having this as a companion approach would be nice :)

    Additional context N/A

    enhancement 
    opened by unredundant 0
  • Serialization fails for response example

    Serialization fails for response example

    Here's a minimal reproducible example using the BasicPlayground : https://github.com/serpro69/kompendium/tree/serialization_failure

    • run main of Basic Playground
    • open docs at localhost:8081/docs
    • see the error thrown

    Looks like an issue with AnySerializer :

    kotlinx.serialization.SerializationException: Serializer for class 'Response' is not found.
    Mark the class as @Serializable or provide the serializer explicitly.
    	at kotlinx.serialization.internal.Platform_commonKt.serializerNotRegistered(Platform.common.kt:91)
    	at kotlinx.serialization.SerializersKt__SerializersKt.serializer(Serializers.kt:149)
    	at kotlinx.serialization.SerializersKt.serializer(Unknown Source)
    	at io.bkbn.kompendium.oas.serialization.AnySerializer.serialize(AnySerializer.kt:26)
    	at io.bkbn.kompendium.oas.serialization.AnySerializer.serialize(AnySerializer.kt:15)
    
    bug core 
    opened by serpro69 4
  • Parameter examples missing descriptions

    Parameter examples missing descriptions

    Describe the bug

    Seems like parameter examples are not rendered correctly.

    Parameter(
        name = "page",
        `in` = Parameter.Location.query,
        schema = TypeDefinition.INT,
        description = "page number",
        required = false,
        examples = mapOf(
            "first page" to Parameter.Example(1),
            "last page" to Parameter.Example(-1),
            "3rd page" to Parameter.Example(3),
            "invalid input" to Parameter.Example(0)
        ),
    )
    

    Is rendered to:

    image

    Expected behavior

    Examples should be rendered with the descriptions taken from map keys

    Examples:

    • page=1 - first page
    • page=-1 - last page
    • page=3 - 3rd page
    • page=0 - invalid input
    bug good first issue 
    opened by serpro69 3
  • Support providing schema via json string or JsonObject

    Support providing schema via json string or JsonObject

    Describe the solution you'd like I am using jakarta validation annotations on my data classes. Using these allows me to perform validation and generate json schema using victools json-schema-generator with the jakarta module. This all works very well and is pretty straight forward to use, even in kotlin.

    I would like to use these generated schemas to configure kompendium, instead of passing a KType, as there is currently no support for specifying max/min/pattern etc. Even if there were support, I would prefer to use the jakarta annotations for the validation that I get with it.

    Describe alternatives you've considered As far as I can tell, the only alternative would be manually building the openapi schema and setting everything up by hand.

    Additional context I've started working on this a little bit, but I'm unsure of a great way to proceed. My initial thought was to change the MediaType to accept a JsonObject, then in the helpers convert the type to a JsonSchema, then to a JsonObject. This would allow the user to set either a type or a JsonObject directly. The one thing I'm not totally sure about is how to handle the ref situation, and to ensure that the same schemas aren't re-used.

    I'd like input on whether that's a good idea or not, and if you have any other ideas about a good way to support this feature.

    opened by snowbldr 6
Releases(v3.11.0)
  • v3.11.0(Jan 5, 2023)

    What's Changed

    • fix(deps): update ktor by @renovate in https://github.com/bkbnio/kompendium/pull/397
    • feat: constraints by @unredundant in https://github.com/bkbnio/kompendium/pull/409

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v3.10.0...v3.11.0

    Source code(tar.gz)
    Source code(zip)
  • v3.10.0(Jan 5, 2023)

    What's Changed

    • fix(deps): update dependency org.slf4j:slf4j-api to v2.0.4 by @renovate in https://github.com/bkbnio/kompendium/pull/385
    • fix(deps): update dependency org.slf4j:slf4j-simple to v2.0.4 by @renovate in https://github.com/bkbnio/kompendium/pull/386
    • fix(deps): update dependency ch.qos.logback:logback-classic to v1.4.5 by @renovate in https://github.com/bkbnio/kompendium/pull/387
    • fix(deps): update dependency org.slf4j:slf4j-api to v2.0.5 by @renovate in https://github.com/bkbnio/kompendium/pull/389
    • fix(deps): update dependency org.slf4j:slf4j-simple to v2.0.5 by @renovate in https://github.com/bkbnio/kompendium/pull/390
    • chore(deps): update plugin org.jetbrains.kotlin.jvm to v1.7.22 by @renovate in https://github.com/bkbnio/kompendium/pull/392
    • chore(deps): update plugin org.jetbrains.kotlin.plugin.serialization to v1.7.22 by @renovate in https://github.com/bkbnio/kompendium/pull/393
    • fix(deps): update dependency org.jetbrains.kotlin:kotlin-reflect to v1.7.22 by @renovate in https://github.com/bkbnio/kompendium/pull/394
    • fix(deps): update dependency com.google.protobuf:protobuf-java to v3.21.10 by @renovate in https://github.com/bkbnio/kompendium/pull/395
    • fix(deps): update dependency joda-time:joda-time to v2.12.2 by @renovate in https://github.com/bkbnio/kompendium/pull/396
    • fix(deps): update dependency com.google.protobuf:protobuf-java to v3.21.11 by @renovate in https://github.com/bkbnio/kompendium/pull/398
    • fix(deps): update dependency org.slf4j:slf4j-api to v2.0.6 by @renovate in https://github.com/bkbnio/kompendium/pull/400
    • fix(deps): update dependency org.slf4j:slf4j-simple to v2.0.6 by @renovate in https://github.com/bkbnio/kompendium/pull/401
    • fix(deps): update dependency com.google.protobuf:protobuf-java to v3.21.12 by @renovate in https://github.com/bkbnio/kompendium/pull/402
    • fix(deps): update dependency org.jetbrains.kotlin:kotlin-reflect to v1.8.0 by @renovate in https://github.com/bkbnio/kompendium/pull/405
    • feat: type enrichment by @unredundant in https://github.com/bkbnio/kompendium/pull/408

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v3.9.0...v3.10.0

    Source code(tar.gz)
    Source code(zip)
  • v3.9.0(Nov 16, 2022)

    What's Changed

    • Feature/protobuf java jsonschema by @jvgelder in https://github.com/bkbnio/kompendium/pull/382
    • fix: use rootPath on NotarizedRoute by @tbert12 in https://github.com/bkbnio/kompendium/pull/383

    New Contributors

    • @jvgelder made their first contribution in https://github.com/bkbnio/kompendium/pull/382
    • @tbert12 made their first contribution in https://github.com/bkbnio/kompendium/pull/383

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v3.8.0...v3.9.0

    Source code(tar.gz)
    Source code(zip)
  • v3.8.0(Nov 9, 2022)

    What's Changed

    • fix(deps): update dependency org.jetbrains.kotlin:kotlin-reflect to v1.7.21 by @renovate in https://github.com/bkbnio/kompendium/pull/374
    • chore(deps): update plugin org.jetbrains.kotlin.plugin.serialization to v1.7.21 by @renovate in https://github.com/bkbnio/kompendium/pull/377
    • feat: support partial authentication (#372) by @geirsagberg in https://github.com/bkbnio/kompendium/pull/375
    • feat: add support for NotarizedResource (#370) by @geirsagberg in https://github.com/bkbnio/kompendium/pull/378

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v3.7.0...v3.8.0

    Source code(tar.gz)
    Source code(zip)
  • v3.7.0(Nov 5, 2022)

    What's Changed

    • feat: allow media type overrides by @unredundant in https://github.com/bkbnio/kompendium/pull/369

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v3.6.0...v3.7.0

    Source code(tar.gz)
    Source code(zip)
  • v3.6.0(Nov 5, 2022)

    What's Changed

    • fix(deps): update dependency joda-time:joda-time to v2.12.1 by @renovate in https://github.com/bkbnio/kompendium/pull/359
    • fix(deps): update ktor to v2.1.3 by @renovate in https://github.com/bkbnio/kompendium/pull/360
    • fix(deps): update dependency dev.forst:ktor-api-key to v2.1.3 by @renovate in https://github.com/bkbnio/kompendium/pull/361
    • fix(deps): update kotestversion to v5.5.4 by @renovate in https://github.com/bkbnio/kompendium/pull/363
    • fix enums and nullability by @geirsagberg in https://github.com/bkbnio/kompendium/pull/368

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v3.5.0...v3.6.0

    Source code(tar.gz)
    Source code(zip)
  • v3.5.0(Oct 29, 2022)

    What's Changed

    • fix(deps): update kotestversion to v5.5.3 by @renovate in https://github.com/bkbnio/kompendium/pull/355
    • fix(deps): update ktor to v2.1.3 by @renovate in https://github.com/bkbnio/kompendium/pull/357
    • Add plugin to support ktor-server-resources by @serpro69 in https://github.com/bkbnio/kompendium/pull/358

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v3.4.0...v3.5.0

    Source code(tar.gz)
    Source code(zip)
  • v3.4.0(Oct 26, 2022)

    What's Changed

    • fix(deps): update dependency org.slf4j:slf4j-api to v2.0.3 by @renovate in https://github.com/bkbnio/kompendium/pull/328
    • fix(deps): update dependency org.slf4j:slf4j-simple to v2.0.3 by @renovate in https://github.com/bkbnio/kompendium/pull/329
    • chore: migrate to gitbook by @unredundant in https://github.com/bkbnio/kompendium/pull/334
    • docs: initial gitbook docs by @unredundant in https://github.com/bkbnio/kompendium/pull/336
    • chore: bumped versions by @unredundant in https://github.com/bkbnio/kompendium/pull/341
    • fix(deps): update ktor to v2.1.2 by @renovate in https://github.com/bkbnio/kompendium/pull/340
    • fix(deps): update kotestversion to v5.5.0 by @renovate in https://github.com/bkbnio/kompendium/pull/343
    • fix(deps): update dependency ch.qos.logback:logback-classic to v1.4.3 by @renovate in https://github.com/bkbnio/kompendium/pull/342
    • chore(deps): update plugin org.jetbrains.kotlinx.kover to v0.6.1 by @renovate in https://github.com/bkbnio/kompendium/pull/344
    • fix(deps): update kotestversion to v5.5.1 by @renovate in https://github.com/bkbnio/kompendium/pull/347
    • fix(deps): update dependency ch.qos.logback:logback-classic to v1.4.4 by @renovate in https://github.com/bkbnio/kompendium/pull/348
    • fix(deps): update dependency joda-time:joda-time to v2.12.0 by @renovate in https://github.com/bkbnio/kompendium/pull/349
    • fix(deps): update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.4.1 by @renovate in https://github.com/bkbnio/kompendium/pull/350
    • fix(deps): update kotestversion to v5.5.2 by @renovate in https://github.com/bkbnio/kompendium/pull/351
    • Add possibility to customize docs path by @serpro69 in https://github.com/bkbnio/kompendium/pull/352

    New Contributors

    • @serpro69 made their first contribution in https://github.com/bkbnio/kompendium/pull/352

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v3.3.1...v3.4.0

    Source code(tar.gz)
    Source code(zip)
  • v3.3.1(Sep 26, 2022)

    What's Changed

    • fix(deps): update dependency org.slf4j:slf4j-api to v2.0.1 by @renovate in https://github.com/bkbnio/kompendium/pull/317
    • fix(deps): update dependency org.apache.logging.log4j:log4j-api to v2.19.0 by @renovate in https://github.com/bkbnio/kompendium/pull/320
    • fix(deps): update dependency org.apache.logging.log4j:log4j-core to v2.19.0 by @renovate in https://github.com/bkbnio/kompendium/pull/321
    • fix(deps): update dependency dev.forst:ktor-api-key to v2.1.1-1 by @renovate in https://github.com/bkbnio/kompendium/pull/322
    • fix(deps): update dependency org.slf4j:slf4j-api to v2.0.2 by @renovate in https://github.com/bkbnio/kompendium/pull/323
    • fix(deps): update dependency org.slf4j:slf4j-simple to v2.0.2 by @renovate in https://github.com/bkbnio/kompendium/pull/324
    • fix(deps): update dependency joda-time:joda-time to v2.11.2 by @renovate in https://github.com/bkbnio/kompendium/pull/326
    • fix: improved error output when an unknown schema is encountered by @unredundant in https://github.com/bkbnio/kompendium/pull/327

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v3.3.0...v3.3.1

    Source code(tar.gz)
    Source code(zip)
  • v3.3.0(Sep 15, 2022)

    What's Changed

    • fix(deps): update dependency joda-time:joda-time to v2.11.1 by @renovate in https://github.com/bkbnio/kompendium/pull/307
    • chore: bump kover version by @unredundant in https://github.com/bkbnio/kompendium/pull/308
    • fix(deps): update dependency ch.qos.logback:logback-classic to v1.4.0 by @renovate in https://github.com/bkbnio/kompendium/pull/311
    • fix(deps): update ktor to v2.1.1 by @renovate in https://github.com/bkbnio/kompendium/pull/312
    • fix(deps): update dependency dev.forst:ktor-api-key to v2.1.1 by @renovate in https://github.com/bkbnio/kompendium/pull/313
    • chore: enable recursion test by @unredundant in https://github.com/bkbnio/kompendium/pull/315
    • fix(deps): update dependency org.slf4j:slf4j-simple to v2.0.1 by @renovate in https://github.com/bkbnio/kompendium/pull/314
    • fix(deps): update dependency ch.qos.logback:logback-classic to v1.4.1 by @renovate in https://github.com/bkbnio/kompendium/pull/316
    • fix: Remove print statements for examples by @MarcelBochtler in https://github.com/bkbnio/kompendium/pull/318
    • chore: prep for 3.3.0 by @unredundant in https://github.com/bkbnio/kompendium/pull/319

    New Contributors

    • @MarcelBochtler made their first contribution in https://github.com/bkbnio/kompendium/pull/318

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v3.2.0...v3.3.0

    Source code(tar.gz)
    Source code(zip)
  • v3.2.0(Aug 23, 2022)

    What's Changed

    • fix(deps): update dependency org.slf4j:slf4j-simple to v2 by @renovate in https://github.com/bkbnio/kompendium/pull/301
    • Updated Schema Generator to behave closer to the kotlinx serializer. by @Stuart-campbell in https://github.com/bkbnio/kompendium/pull/302

    New Contributors

    • @Stuart-campbell made their first contribution in https://github.com/bkbnio/kompendium/pull/302

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v3.1.0...v3.2.0

    Source code(tar.gz)
    Source code(zip)
  • v3.1.0(Aug 19, 2022)

    What's Changed

    • fix(deps): update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.4.0 by @renovate in https://github.com/bkbnio/kompendium/pull/298
    • feat: auto auth detect by @unredundant in https://github.com/bkbnio/kompendium/pull/299

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v3.0.0...v3.1.0

    Source code(tar.gz)
    Source code(zip)
  • v3.0.0(Aug 16, 2022)

    What's Changed

    • chore(deps): update kotestversion to v5.3.1 by @renovate in https://github.com/bkbnio/kompendium/pull/264
    • chore(deps): update dependency org.webjars:webjars-locator-core to v0.51 by @renovate in https://github.com/bkbnio/kompendium/pull/265
    • chore(deps): update plugin org.jetbrains.dokka to v1.7.0 by @renovate in https://github.com/bkbnio/kompendium/pull/266
    • chore(deps): update kotestversion to v5.3.2 by @renovate in https://github.com/bkbnio/kompendium/pull/268
    • chore(deps): update dependency org.webjars:webjars-locator-core to v0.52 by @renovate in https://github.com/bkbnio/kompendium/pull/269
    • chore(deps): update dependency org.apache.logging.log4j:log4j-api-kotlin to v1.2.0 by @renovate in https://github.com/bkbnio/kompendium/pull/270
    • chore(deps): update dependency org.apache.logging.log4j:log4j-api to v2.18.0 by @renovate in https://github.com/bkbnio/kompendium/pull/271
    • chore(deps): update dependency org.apache.logging.log4j:log4j-core to v2.18.0 by @renovate in https://github.com/bkbnio/kompendium/pull/272
    • chore(deps): update plugin io.bkbn.sourdough.root to v0.9.0 by @renovate in https://github.com/bkbnio/kompendium/pull/273
    • chore(deps): update plugin org.jetbrains.dokka to v1.7.10 by @renovate in https://github.com/bkbnio/kompendium/pull/274
    • chore(deps): update dependency gradle to v7.5 by @renovate in https://github.com/bkbnio/kompendium/pull/275
    • chore(deps): update kotestversion to v5.4.0 by @renovate in https://github.com/bkbnio/kompendium/pull/276
    • fix(deps): update kotestversion to v5.4.1 by @renovate in https://github.com/bkbnio/kompendium/pull/278
    • fix(deps): update dependency org.webjars:swagger-ui to v4.13.2 by @renovate in https://github.com/bkbnio/kompendium/pull/279
    • chore(deps): update dependency gradle to v7.5.1 by @renovate in https://github.com/bkbnio/kompendium/pull/280
    • fix(deps): update kotestversion to v5.4.2 by @renovate in https://github.com/bkbnio/kompendium/pull/281
    • fix(deps): update dependency joda-time:joda-time to v2.11.0 by @renovate in https://github.com/bkbnio/kompendium/pull/282
    • feat: V3 by @unredundant in https://github.com/bkbnio/kompendium/pull/256
    • fix(deps): update dependency org.apache.logging.log4j:log4j-api to v2.18.0 by @renovate in https://github.com/bkbnio/kompendium/pull/283
    • fix: spec and docs behind auth by @unredundant in https://github.com/bkbnio/kompendium/pull/284
    • fix: type erasure breaking nested generics by @unredundant in https://github.com/bkbnio/kompendium/pull/285
    • fix: null ref by @unredundant in https://github.com/bkbnio/kompendium/pull/286
    • feat: v3 locations by @unredundant in https://github.com/bkbnio/kompendium/pull/292
    • fix: recursion by @unredundant in https://github.com/bkbnio/kompendium/pull/293
    • fix: complex generic breaks introspection by @unredundant in https://github.com/bkbnio/kompendium/pull/294
    • doc: some dokka updates by @unredundant in https://github.com/bkbnio/kompendium/pull/295
    • fix: uuid schema by @unredundant in https://github.com/bkbnio/kompendium/pull/296
    • fix: nested class names by @unredundant in https://github.com/bkbnio/kompendium/pull/297

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v2.3.5...v3.0.0

    Source code(tar.gz)
    Source code(zip)
  • v3.0.0-alpha(Aug 13, 2022)

    What's Changed

    • chore(deps): update kotestversion to v5.3.1 by @renovate in https://github.com/bkbnio/kompendium/pull/264
    • chore(deps): update dependency org.webjars:webjars-locator-core to v0.51 by @renovate in https://github.com/bkbnio/kompendium/pull/265
    • chore(deps): update plugin org.jetbrains.dokka to v1.7.0 by @renovate in https://github.com/bkbnio/kompendium/pull/266
    • chore(deps): update kotestversion to v5.3.2 by @renovate in https://github.com/bkbnio/kompendium/pull/268
    • chore(deps): update dependency org.webjars:webjars-locator-core to v0.52 by @renovate in https://github.com/bkbnio/kompendium/pull/269
    • chore(deps): update dependency org.apache.logging.log4j:log4j-api-kotlin to v1.2.0 by @renovate in https://github.com/bkbnio/kompendium/pull/270
    • chore(deps): update dependency org.apache.logging.log4j:log4j-api to v2.18.0 by @renovate in https://github.com/bkbnio/kompendium/pull/271
    • chore(deps): update dependency org.apache.logging.log4j:log4j-core to v2.18.0 by @renovate in https://github.com/bkbnio/kompendium/pull/272
    • chore(deps): update plugin io.bkbn.sourdough.root to v0.9.0 by @renovate in https://github.com/bkbnio/kompendium/pull/273
    • chore(deps): update plugin org.jetbrains.dokka to v1.7.10 by @renovate in https://github.com/bkbnio/kompendium/pull/274
    • chore(deps): update dependency gradle to v7.5 by @renovate in https://github.com/bkbnio/kompendium/pull/275
    • chore(deps): update kotestversion to v5.4.0 by @renovate in https://github.com/bkbnio/kompendium/pull/276
    • fix(deps): update kotestversion to v5.4.1 by @renovate in https://github.com/bkbnio/kompendium/pull/278
    • fix(deps): update dependency org.webjars:swagger-ui to v4.13.2 by @renovate in https://github.com/bkbnio/kompendium/pull/279
    • chore(deps): update dependency gradle to v7.5.1 by @renovate in https://github.com/bkbnio/kompendium/pull/280
    • fix(deps): update kotestversion to v5.4.2 by @renovate in https://github.com/bkbnio/kompendium/pull/281
    • fix(deps): update dependency joda-time:joda-time to v2.11.0 by @renovate in https://github.com/bkbnio/kompendium/pull/282
    • breaking: V3 by @unredundant in https://github.com/bkbnio/kompendium/pull/256

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v2.3.5...v3.0.0-alpha

    Source code(tar.gz)
    Source code(zip)
  • v2.3.5(Jun 7, 2022)

    What's Changed

    • chore(deps): update kotestversion to v5.2.3 by @renovate in https://github.com/bkbnio/kompendium/pull/244
    • chore(deps): update plugin org.jetbrains.dokka to v1.6.20 by @renovate in https://github.com/bkbnio/kompendium/pull/246
    • chore(deps): update plugin org.jetbrains.kotlin.jvm to v1.6.21 by @renovate in https://github.com/bkbnio/kompendium/pull/247
    • chore(deps): update plugin org.jetbrains.kotlin.plugin.serialization to v1.6.21 by @renovate in https://github.com/bkbnio/kompendium/pull/248
    • chore(deps): update plugin io.bkbn.sourdough.root to v0.7.0 by @renovate in https://github.com/bkbnio/kompendium/pull/251
    • chore(deps): update plugin org.jetbrains.dokka to v1.6.21 by @renovate in https://github.com/bkbnio/kompendium/pull/252
    • chore(deps): update plugin io.bkbn.sourdough.root to v0.8.0 by @renovate in https://github.com/bkbnio/kompendium/pull/253
    • chore(deps): update kotestversion to v5.3.0 by @renovate in https://github.com/bkbnio/kompendium/pull/254
    • chore(deps): update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.3.3 by @renovate in https://github.com/bkbnio/kompendium/pull/258
    • chore(deps): update plugin org.jetbrains.kotlinx.kover to v0.5.1 by @renovate in https://github.com/bkbnio/kompendium/pull/257
    • chore(deps): update dependency org.webjars:swagger-ui to v4.11.1 by @renovate in https://github.com/bkbnio/kompendium/pull/259
    • Fix serialization of api key auth location by @florianmutter in https://github.com/bkbnio/kompendium/pull/261

    New Contributors

    • @florianmutter made their first contribution in https://github.com/bkbnio/kompendium/pull/261

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v2.3.4...v2.3.5

    Source code(tar.gz)
    Source code(zip)
  • v2.3.4(Apr 7, 2022)

    What's Changed

    • chore(deps): update dependency org.webjars:swagger-ui to v4.10.3 by @renovate in https://github.com/bkbnio/kompendium/pull/240
    • chore(deps): update plugin org.jetbrains.kotlin.jvm to v1.6.20 by @renovate in https://github.com/bkbnio/kompendium/pull/238
    • chore(deps): update plugin org.jetbrains.kotlin.plugin.serialization to v1.6.20 by @renovate in https://github.com/bkbnio/kompendium/pull/239

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v2.3.3...v2.3.4

    Source code(tar.gz)
    Source code(zip)
  • v2.3.3(Apr 1, 2022)

    What's Changed

    • chore(deps): update dependency gradle to v7.4.2 by @renovate in https://github.com/bkbnio/kompendium/pull/235
    • Fixes issue #236 by @netknight in https://github.com/bkbnio/kompendium/pull/237

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v2.3.2...v2.3.3

    Source code(tar.gz)
    Source code(zip)
  • v2.3.2(Mar 30, 2022)

    What's Changed

    • chore(deps): update dependency gradle to v7.4.1 by @renovate in https://github.com/bkbnio/kompendium/pull/220
    • chore(deps): update kotestversion to v5.2.0 by @renovate in https://github.com/bkbnio/kompendium/pull/222
    • chore(deps): update dependency io.kotest:kotest-assertions-json-jvm to v5.2.1 by @renovate in https://github.com/bkbnio/kompendium/pull/223
    • chore(deps): update ktor to v1.6.8 by @renovate in https://github.com/bkbnio/kompendium/pull/225
    • chore(deps): update dependency org.webjars:swagger-ui to v4.6.2 by @renovate in https://github.com/bkbnio/kompendium/pull/227
    • chore(deps): update dependency joda-time:joda-time to v2.10.14 by @renovate in https://github.com/bkbnio/kompendium/pull/228
    • chore(deps): update endbug/add-and-commit action to v9 by @renovate in https://github.com/bkbnio/kompendium/pull/221
    • chore(deps): update dependency org.webjars:swagger-ui to v4.8.0 by @renovate in https://github.com/bkbnio/kompendium/pull/229
    • chore(deps): update dependency org.webjars:swagger-ui to v4.8.1 by @renovate in https://github.com/bkbnio/kompendium/pull/230
    • chore(deps): update dependency org.webjars:swagger-ui to v4.9.1 by @renovate in https://github.com/bkbnio/kompendium/pull/231
    • chore(deps): update kotestversion to v5.2.2 by @renovate in https://github.com/bkbnio/kompendium/pull/232
    • fix: nullable enum support by @unredundant in https://github.com/bkbnio/kompendium/pull/234

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v2.3.1...v2.3.2

    Source code(tar.gz)
    Source code(zip)
  • v2.3.1(Mar 5, 2022)

    What's Changed

    • chore(deps): update actions/checkout action to v3 by @renovate in https://github.com/bkbnio/kompendium/pull/216
    • fix: free form annotation can be applied to top level type by @unredundant in https://github.com/bkbnio/kompendium/pull/219

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v2.3.0...v2.3.1

    Source code(tar.gz)
    Source code(zip)
  • v2.3.0(Mar 1, 2022)

    What's Changed

    • chore(deps): update dependency org.apache.logging.log4j:log4j-core to v2.17.2 by @renovate in https://github.com/bkbnio/kompendium/pull/212
    • chore(deps): update dependency org.apache.logging.log4j:log4j-api to v2.17.2 by @renovate in https://github.com/bkbnio/kompendium/pull/213
    • chore(deps): update dependency org.webjars:swagger-ui to v4.5.2 by @renovate in https://github.com/bkbnio/kompendium/pull/214
    • Added SwaggerUI KTor Plugin by @netknight in https://github.com/bkbnio/kompendium/pull/215

    New Contributors

    • @netknight made their first contribution in https://github.com/bkbnio/kompendium/pull/215

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v2.2.1...v2.3.0

    Source code(tar.gz)
    Source code(zip)
  • v2.2.1(Feb 26, 2022)

    What's Changed

    • Support Maps with sealed class type by @ydanneg in https://github.com/bkbnio/kompendium/pull/211

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v2.2.0...v2.2.1

    Source code(tar.gz)
    Source code(zip)
  • v2.2.0(Feb 25, 2022)

    What's Changed

    • Fix (#194) to support Location classes located in other non-location classes (e.g. inside Object) by @ydanneg in https://github.com/bkbnio/kompendium/pull/207
    • fix: formatting custom SimpleSchema (fixes #198) by @ydanneg in https://github.com/bkbnio/kompendium/pull/208
    • chore(deps): update actions/setup-java action to v3 by @renovate in https://github.com/bkbnio/kompendium/pull/209
    • Draft implementation for Issue #204 (Swagger/Openapi: Multipart/form-data multiple file request support ) by @ydanneg in https://github.com/bkbnio/kompendium/pull/205

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v2.1.1...v2.2.0

    Source code(tar.gz)
    Source code(zip)
  • v2.1.1(Feb 19, 2022)

    What's Changed

    • Fix: Unable to use sealed typed collections #199 by @ydanneg in https://github.com/bkbnio/kompendium/pull/200
    • fix: nullability breaks object comparison by @unredundant in https://github.com/bkbnio/kompendium/pull/202

    New Contributors

    • @ydanneg made their first contribution in https://github.com/bkbnio/kompendium/pull/200

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v2.1.0...v2.1.1

    Source code(tar.gz)
    Source code(zip)
  • v2.1.0(Feb 18, 2022)

    What's Changed

    • feat: allow for overriding openapi endpoint by @unredundant in https://github.com/bkbnio/kompendium/pull/192
    • feat: moving request and response to references by @unredundant in https://github.com/bkbnio/kompendium/pull/181

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v2.0.4...v2.1.0

    Source code(tar.gz)
    Source code(zip)
  • v2.0.4(Feb 10, 2022)

    What's Changed

    • chore(deps): update dependency gradle to v7.4 by @renovate in https://github.com/bkbnio/kompendium/pull/178
    • chore: handler refactor by @unredundant in https://github.com/bkbnio/kompendium/pull/179
    • chore: test all serializers by @unredundant in https://github.com/bkbnio/kompendium/pull/180
    • chore(deps): update dependency org.slf4j:slf4j-simple to v1.7.36 by @renovate in https://github.com/bkbnio/kompendium/pull/182
    • chore(deps): update dependency org.slf4j:slf4j-api to v1.7.36 by @renovate in https://github.com/bkbnio/kompendium/pull/183
    • doc: add custom type example to playground by @unredundant in https://github.com/bkbnio/kompendium/pull/189
    • doc: add contributing and code of conduct guides by @unredundant in https://github.com/bkbnio/kompendium/pull/190
    • fix: bumped swagger version by @unredundant in https://github.com/bkbnio/kompendium/pull/191

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v2.0.3...v2.0.4

    Source code(tar.gz)
    Source code(zip)
  • v2.0.3(Feb 7, 2022)

    What's Changed

    • chore(deps): update dependency org.webjars:swagger-ui to v4.5.0 by @renovate in https://github.com/bkbnio/kompendium/pull/175
    • fix: swagger ui bug by @unredundant in https://github.com/bkbnio/kompendium/pull/177

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v2.0.2...v2.0.3

    Source code(tar.gz)
    Source code(zip)
  • v2.0.2(Feb 4, 2022)

    What's Changed

    • chore(deps): update dependency org.slf4j:slf4j-api to v1.7.34 by @renovate in https://github.com/bkbnio/kompendium/pull/162
    • chore(deps): update dependency org.slf4j:slf4j-simple to v1.7.34 by @renovate in https://github.com/bkbnio/kompendium/pull/163
    • chore(deps): update dependency org.slf4j:slf4j-api to v1.7.35 by @renovate in https://github.com/bkbnio/kompendium/pull/164
    • chore(deps): update dependency org.slf4j:slf4j-simple to v1.7.35 by @renovate in https://github.com/bkbnio/kompendium/pull/165
    • chore(deps): update dependency org.webjars:swagger-ui to v4.4.1 by @renovate in https://github.com/bkbnio/kompendium/pull/170
    • chore(deps): update dependency org.webjars:swagger-ui to v4.4.1-1 by @renovate in https://github.com/bkbnio/kompendium/pull/173
    • chore(deps): update plugin org.jetbrains.kotlinx.kover to v0.5.0 by @renovate in https://github.com/bkbnio/kompendium/pull/171
    • fix: support recursive types by @unredundant in https://github.com/bkbnio/kompendium/pull/174

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v2.0.1...v2.0.2

    Source code(tar.gz)
    Source code(zip)
  • v2.0.1(Jan 23, 2022)

  • v2.0.0(Jan 23, 2022)

    What's Changed

    • Example header parameter by @unredundant in https://github.com/bkbnio/kompendium/pull/114
    • V2 alpha by @unredundant in https://github.com/bkbnio/kompendium/pull/112
    • feat: added head, patch, and options methods by @unredundant in https://github.com/bkbnio/kompendium/pull/132
    • feat: enable creation of explicit parameter examples by @unredundant in https://github.com/bkbnio/kompendium/pull/133
    • Multi Serialization Support by @unredundant in https://github.com/bkbnio/kompendium/pull/134
    • fix: locations inheritance by @unredundant in https://github.com/bkbnio/kompendium/pull/135
    • Configure Renovate by @renovate in https://github.com/bkbnio/kompendium/pull/136
    • chore(deps): update dependency gradle to v7.3.3 by @renovate in https://github.com/bkbnio/kompendium/pull/137
    • chore(deps): update dependency org.apache.logging.log4j:log4j-api to v2.17.1 by @renovate in https://github.com/bkbnio/kompendium/pull/138
    • chore(deps): update dependency org.apache.logging.log4j:log4j-core to v2.17.1 by @renovate in https://github.com/bkbnio/kompendium/pull/140
    • chore(deps): update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.3.2 by @renovate in https://github.com/bkbnio/kompendium/pull/141
    • chore(deps): update plugin io.bkbn.sourdough.root to v0.3.3 by @renovate in https://github.com/bkbnio/kompendium/pull/142
    • chore(deps): update plugin org.jetbrains.kotlin.plugin.serialization to v1.6.10 by @renovate in https://github.com/bkbnio/kompendium/pull/143
    • Feat/sourdough bump by @unredundant in https://github.com/bkbnio/kompendium/pull/146
    • fix: adding signing plugin by @unredundant in https://github.com/bkbnio/kompendium/pull/147
    • chore(deps): update dependency org.webjars:swagger-ui to v4.1.3-1 by @renovate in https://github.com/bkbnio/kompendium/pull/148
    • chore(deps): update plugin io.bkbn.sourdough.application.jvm to v0.5.5 by @renovate in https://github.com/bkbnio/kompendium/pull/149
    • chore(deps): update plugin io.bkbn.sourdough.library.jvm to v0.5.5 by @renovate in https://github.com/bkbnio/kompendium/pull/150
    • chore(deps): update plugin io.bkbn.sourdough.root to v0.5.5 by @renovate in https://github.com/bkbnio/kompendium/pull/151
    • chore(deps): update dependency org.slf4j:slf4j-api to v1.7.33 by @renovate in https://github.com/bkbnio/kompendium/pull/152
    • chore(deps): update dependency org.slf4j:slf4j-simple to v1.7.33 by @renovate in https://github.com/bkbnio/kompendium/pull/153
    • chore(deps): update kotestversion to v5.1.0 by @renovate in https://github.com/bkbnio/kompendium/pull/155
    • chore: version bumps and cleanup by @unredundant in https://github.com/bkbnio/kompendium/pull/156
    • chore(deps): update dependency org.webjars:swagger-ui to v4.2.1 by @renovate in https://github.com/bkbnio/kompendium/pull/157
    • chore(deps): update plugin io.bkbn.sourdough.application.jvm to v0.6.0 by @renovate in https://github.com/bkbnio/kompendium/pull/159
    • chore(deps): update plugin io.bkbn.sourdough.library.jvm to v0.6.0 by @renovate in https://github.com/bkbnio/kompendium/pull/160
    • chore(deps): update plugin io.bkbn.sourdough.root to v0.6.0 by @renovate in https://github.com/bkbnio/kompendium/pull/161
    • chore(deps): update endbug/add-and-commit action to v8 by @renovate in https://github.com/bkbnio/kompendium/pull/158

    New Contributors

    • @renovate made their first contribution in https://github.com/bkbnio/kompendium/pull/136

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v1.11.0...v2.0.0

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-beta-hotfix(Jan 12, 2022)

    What's Changed

    • Example header parameter by @unredundant in https://github.com/bkbnio/kompendium/pull/114
    • V2 alpha by @unredundant in https://github.com/bkbnio/kompendium/pull/112
    • feat: added head, patch, and options methods by @unredundant in https://github.com/bkbnio/kompendium/pull/132
    • feat: enable creation of explicit parameter examples by @unredundant in https://github.com/bkbnio/kompendium/pull/133
    • Multi Serialization Support by @unredundant in https://github.com/bkbnio/kompendium/pull/134
    • fix: locations inheritance by @unredundant in https://github.com/bkbnio/kompendium/pull/135
    • Configure Renovate by @renovate in https://github.com/bkbnio/kompendium/pull/136
    • chore(deps): update dependency gradle to v7.3.3 by @renovate in https://github.com/bkbnio/kompendium/pull/137
    • chore(deps): update dependency org.apache.logging.log4j:log4j-api to v2.17.1 by @renovate in https://github.com/bkbnio/kompendium/pull/138
    • chore(deps): update dependency org.apache.logging.log4j:log4j-core to v2.17.1 by @renovate in https://github.com/bkbnio/kompendium/pull/140
    • chore(deps): update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.3.2 by @renovate in https://github.com/bkbnio/kompendium/pull/141
    • chore(deps): update plugin io.bkbn.sourdough.root to v0.3.3 by @renovate in https://github.com/bkbnio/kompendium/pull/142
    • chore(deps): update plugin org.jetbrains.kotlin.plugin.serialization to v1.6.10 by @renovate in https://github.com/bkbnio/kompendium/pull/143
    • Feat/sourdough bump by @unredundant in https://github.com/bkbnio/kompendium/pull/146
    • fix: adding signing plugin by @unredundant in https://github.com/bkbnio/kompendium/pull/147

    New Contributors

    • @renovate made their first contribution in https://github.com/bkbnio/kompendium/pull/136

    Full Changelog: https://github.com/bkbnio/kompendium/compare/v1.11.0...v2.0.0-beta-hotfix

    Source code(tar.gz)
    Source code(zip)
Owner
Backbone
Backbone
🐨 koa - Kotlin and Ktor OpenAPI

Koa intends to be a fully functional DSL for OpenAPI in Kotlin, including a Ktor plugin to add OpenAPI to your server Kotlin applications.

Zoroark 14 Dec 31, 2022
HQ OpenAPI Specification and Client & Server SDK Generators

HQ-API HQ OpenAPI Specification and Client & Server SDK Generators Cloning Github Repository Get access to Flocktory team in Github Adding a new SSH k

Flocktory Spain, S.L. 1 Sep 2, 2022
Integration Testing Kotlin Multiplatform Kata for Kotlin Developers. The main goal is to practice integration testing using Ktor and Ktor Client Mock

This kata is a Kotlin multiplatform version of the kata KataTODOApiClientKotlin of Karumi. We are here to practice integration testing using HTTP stub

Jorge Sánchez Fernández 29 Oct 3, 2022
KTor-Client---Android - The essence of KTor Client for network calls

KTor Client - Android This project encompasses the essence of KTor Client for ne

Mansoor Nisar 2 Jan 18, 2022
Kotlin DTO generator for Protobuf Messages

Kotlin DTO Generator for gRPC The protobuf plugin generates DTO classes for the corresponding messages in your *.proto files. The data classes in Kotl

Vlasov Artem 1 Nov 9, 2021
A metadata generator intended for the Android source tree

Metalava (Also known as "doclava2", but deliberately not named doclava2 since crucially it does not generate docs; it's intended only for metadata ext

null 0 Nov 17, 2021
Gradle plugin for Hugo static site generator

gradle-hugo-plugin Wrapper for Hugo static site generator. The plugin provides a declarative approach for the Hugo binary used to build the static sit

François Staudt 10 Jun 28, 2022
Event State Processor Generator plugin is compatible with IntelliJ and Android Studio.

Event State Processor Generator plugin is compatible with IntelliJ and Android Studio. It provides source code generation for the EventStateProcessor Library to increase code productivity in Flutter apps development.

Extreme Vietnam Public 2 Dec 7, 2021
A korge map generator for Pocket Palm Heroes remastered

Korge mapgen This is a korge map generator for Pocket Palm Heroes remastered. Algorithm Is based mostly on this presentation by Gus Smedstad, who is t

Alexey Kononov 4 Sep 6, 2022
This simple project will consist of an endless cat fact generator

MVVM is a structural design pattern and its based on the separation of the project structure into 3 main components: The Model, which is responsible f

Chinmay Deshpande 0 Dec 15, 2021
It is a repository containing backend structure for Ktor.

Backend Architecture with Ktor + KMongo This project contains, Authentication using Jwt Database Layer (KMongo - Orm for MongoDB) Routing Advanced Rou

Himanshu Singh 56 Dec 28, 2022
Kotlin backend based on the Clean Architecture principles. Ktor, JWT, Exposed, Flyway, KGraphQL/GraphQL generated endpoints, Gradle.

Kotlin Clean Architecture Backend Kotlin backend based on the Clean Architecture principles. The application is separated into three modules: Domain,

null 255 Jan 3, 2023
sharex image uploader using ktor

ktor-sharex-uploader uploader zdjec napisany w kotlinie przy uzyciu ktor pobierak gotowa jarka jest do pobrania tutaj config apki konfiguracje apki ma

Michał 11 Jun 10, 2022
This is a Ktor project to build your own Url shortener

Ktor URL Shortner This project is a implementation for creating Short URL using Ktor + Kotlin + MongoDB Usage It contains two routes if you want to im

Himanshu Singh 25 Dec 15, 2022
SSU u-saint parser with Kotlin-Multiplatform and Ktor.

kusaint Soongsil University(SSU) u-Saint Parser with Kotlin Multiplatform. Prerequisites JVM !!IMPORTANT!! To run kusaint as a library in JVM environm

Hyomin Koo 3 Mar 23, 2022
A Modern Kotlin-Ktor RESTful API example. Connects to a PostgreSQL database and uses Exposed framework for database operations.

kotlin-ktor-rest-api A Modern Kotlin-Ktor RESTful API example. Connects to a PostgreSQL database and uses Exposed framework for database operations. F

Selim Atasoy 32 Dec 20, 2022
Ktor is an asynchronous framework for creating microservices, web applications and more.

ktor-sample Ktor is an asynchronous framework for creating microservices, web applications and more. Written in Kotlin from the ground up. Application

mohamed tamer 5 Jan 22, 2022
A simple (and naive) RESTful API made with Ktor, jasync-sql and JWT.

A simple (and naive) RESTful API made with Ktor, jasync-sql and JWT. Route Method Description /account POST Create a new account /account DELETE Delet

null 2 Nov 4, 2021
sample project that shows you how you can use Ktor to creat a server for real Project.

Ktor-Sample This is a sample project that shows you how you can use Ktor to creat a server for real Project. What is done Save data to database (Get a

Mohamed Emad 4 Dec 23, 2022