- Support for @Transient annotation
- Support for @SerialName annotation on fields
- Supports for un-backed fields, by excluding them from the generated schema.
- Can now put redoc route behind authentication
- Fixed issue where type erasure was breaking nested generics
- Fix bug with null references not displaying properly on properties
- Ability to automatically detect authentication via route
- Improved stack trace output
- Ktor 2 Support π
- OpenAPI 3.1 Standard
- JsonSchema Generator
NotarizedRoute
plugin
- SwaggerUI module removed (due to lack of OpenAPI 3.1 support)
- Kompendium Annotations removed (field renames, undeclared fields, etc. will be follow-up work)
- Fix serialization for api key location in api key auth configuration
- Put request body info now nullable
- Added tests for Swagger UI module that verify that plugin generates correct responses for Swagger UI WEB resources (tests should detect future incompatible changes in new versions of
org.webjars.swagger-ui
)
- Fixed broken Swagger UI plugin (
org.webjars.swagger-ui
WEB resources structure changed in version 4.9.X). Issue: bkbnio#236
- Fixed bug where nullable enum fields caused runtime exceptions
- Can now apply
@FreeFormObject
to top level types
- Brand new SwaggerUI support as a KTor plugin with WebJar under the hood and flexible configuration
- Playground example
SwaggerPlaygound
now demonstrates new SwaggerUI KTor plugin usage (including OAuth security)
- Deprecated Swagger Webjar approach was removed from codebase
- Fix to support sealed class typed Maps
- Fixed support Location classes located in other non-location classes
- Fixed formatting of a custom
SimpleSchema
- Multipart form-data multiple file request support
- Fixed sealed typed collections schema generation
- Nullability no longer breaks object schema comparison
- Ability to override serializer via custom route
- All complex types are now represented by reference schemas
- Deprecated
@Referenced
since all complex types now create references
- Custom Type example to playground
- Cleaned up and broke out handlers into separate classes
- Serializer cleanup
- Tests now run against Jackson, Gson and kotlinx on every run
- Swagger UI bumped from v3 to v4
- Fixed swagger documentation bug
- Deprecated Swagger Webjar approach
@Referenced
annotation enabling support for recursive models
- Fix bug in documentation publishing pipeline
Major Release π As we head towards the Ktor 2 release, this library will be kept compatible with Ktor 1. A future Kompendium 2 repository will be created soon, porting much of the changes you see here, with some awesome Ktor 2 twists π
- Support for HTTP Patch, Head, and Options methods
- Support for including parameter examples via
MethodInfo
- Dokka Pipeline Generation
- GitHub Pages integration
- Sourdough Gradle updates
- Support for OAuth authentication
- Gradle Toolchain feature to ensure match between local JDK and compile target
- Dokka integration
- Post-processing callback hook
description
key to KompendiumField- Set of base constraints for simple and formatted types
- Ability to document expected unstructured data
- Kompendium now leverages the chosen API serializer. Supports Jackson, Gson and Kotlinx Serialization
- Fixed bug where overridden field names were not reflected in serialized object and required array
- Fixed bug where Ktor Location parents were not being scanned for parameters
$ref
types are no longer generated, instead all objects are defined explicitly- All OpenAPI domain models moved to a separate module
kompendium-oas
- Moved all files in
kompendium-core
intoio.bkbn.kompendium.core
package fromio.bkbn.kompendium
- Gradle bumped to 7.3.2
- Gradle build logic offloaded to Sourdough Plugin
- Minimum supported Java version is now 11
- Bumped Kotlin to 1.6
- Annotations now live in a separate module. (Should not impact end users as module is imported as api dependency by core).
- Kotest as the testing framework of choice
- Path calculation removed in favor of built-in route toString
- Ktor to 1.6.7
- Completely reworked authentication and exceptions
- MethodInfo now exists in a separate package as a sealed interface, each implementation also has its own file
- Kompendium is now a Ktor Plugin!
- GitHub Actions now leverage Gradle Wrapper
- Dropped Codacy support b/c codacy kinda sucks
- Fixed bug where KompendiumField was being completely ignored
- Redid playground to serve as a showcase for various functionality
- README updates
- Refactored
handleComplexType
π - Enabled field descriptions
- Dropped Version Catalog
- Responses are now a map of actual responses rather than generic payloads
- Fixed bug where params with default values were listed as required
- Made empty put/post request info opt-in rather than default
- Fields are now marked as required when there is no default, and they are non-nullable
KompendiumField
and 'KompendiumParam' renamed toField
andParam
respectively- Description dropped from
Param
- Dropped unnecessary parameter content scanning method
- Fixed bug causing all request bodies to be marked as optional
- Dropped ASDF tool manifest
- Documentation showing how to add header names using Kotlin backtick convention
- Support for Ktor Location Plugin
- Added
operationId
parameter toMethodInfo
- Jackson ObjectMapper passed by parameter to openapi module
- Added serializable annotation to ExceptionResponse
- Code Coverage removed from PR checks due to limitations with GitHub workflows
- Minor linting fixes
- Detekt now builds off of default config
- ByteArray added to the set of default types
- Codacy integration
- Path calculation revamped to allow for simpler selector injection
- Kotlin version bumped to 1.5.31
- Ktor version bumped to 1.6.4
- Added ability to inject an emergency
UndeclaredField
in the event of certain polymorphic serializers and such
- Ability to add custom type schema overrides for edge case types.
- Fixed bug where polymorphic types were not being rendered correctly when part of collections and maps
- Added support for BigInteger and BigDecimal in response types
- Decreased jvmTarget version from 11 to 1.8
- Explicitly encode JSON object by default
- Updates showing/explaining serializer agnostic approach
This is just to get my repo back to normal now that I have confirmed sonatype publish is happening
- Finally, successfully pushed to Maven Central!!!
- Support for sealed classes π₯
- Support for generic classes βοΈ
- a word to sweep my rude commit message to Nexus under the rug
- SonaType integration to publish to MavenCentral
- Migrated to io.bkbn group and package name
- Release action to package a release JAR π»
- EXTREME DOCUMENTATION π
- Cleanup to test files
- Removes KompendiumHttpCodes in favor of Ktor HttpStatusCode
- Support for default parameter responses
- In order to facilitate default parameters, a couple changes were needed
KompendiumParam
was added in replacement of the four parameter annotations- Specs now explicitly declare type of parameter rather than a reference in order to not override default values.
- Support for example request and response bodies. Parameter examples / defaults are a separate issue for later.
- Converted
MethodInfo
into a sealed class with distinct method types for Get, Post, Put, and Delete
notarizedException
for notarizingStatusPage
handlers πcom.adarshr.test-logger
Gradle plugin for improved test output clarity and insight
- Refactored
kompendium-core
to break up theKompendium
object into slightly more manageable chunks - Notarization Parameters can now be inferred from method info
- Request params are not required when property is nullable
- Added support for Swagger ui
- Set jvm target to 11
- Resolved bug for empty params and/or empty response body
- Added basic and jwt security scheme support with the new module kompendium-auth
- Removed
Route.calculatePath
- Added an explicit
PathCalculator
interface to allow for easier handling of routes external to the core set of Ktor route selectors.
- Resolved bug where paths under root route where appending a trailing
/
- Expose
/openapi.json
and/docs
as opt-in pre-built Routes
- Basic Query and Path Parameter Support π»
- No content workaround, flow will likely need refactoring for clarity.
- Removed response and request annotations in favor of MethodInfo extension.
- Modified notarization to add the correct reference slug regardless of type
- Another re-haul to the reflection analysis
- Top level generics, enums, collections, and maps now supported π
- Explicit UUID support to prevent incorrect interpretation as complex object
- Completely redid the reflection system to improve flow, decrease errors β¨
- Added ReDoc to the Playground to make manual testing more convenient
- Include sources in publish π
- Logging to get a more intuitive sense for operations performed
- Serialization for Maps, Collections and Enums
- Full list of compile-time-constant status codes
- Added fix to route selector matching that accounts for trailing slash selection
- Notarized Deletes
- Request and Response reflection abstractions
- Basic unit test coverage for each notarized operation
- Beginning of an implementation. Currently, able to generate a rough outline of the API at runtime, along with generating full data classes represented by JSON Schema.
- Added most of the data classes necessary for generating an Open API Spec
- Added playground to allow users to tinker with a live Ktor api in conjunction with development
- Added all standard OSS files
- Absolutely paltry README
- Added License