# Documentation for the kotlin-server Generator

## #METADATA

Property | Value | Notes
--- | --- | ---
generator name | kotlin-server | pass this to the generate command after -g
generator stability | STABLE |
generator type | SERVER |
generator language | Kotlin |
generator default templating engine | mustache |
helpTxt | Generates a Kotlin server. |

## #CONFIG OPTIONS

These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to configuration docs for more details.

Option | Description | Values | Default
--- | --- | --- | ---
apiSuffix | suffix for api classes |  | Api
artifactId | Generated artifact id (name of jar). |  | kotlin-server
artifactVersion | Generated artifact's package version. |  | 1.0.0
enumPropertyNaming | Naming convention for enum properties: 'camelCase', 'PascalCase', 'snake_case', 'UPPERCASE', and 'original' |  | camelCase
featureAutoHead | Automatically provide responses to HEAD requests for existing routes that have the GET verb defined. |  | true
featureCORS | Ktor by default provides an interceptor for implementing proper support for Cross-Origin Resource Sharing (CORS). See enable-cors.org. |  | false
featureCompression | Adds ability to compress outgoing content using gzip, deflate or custom encoder and thus reduce size of the response. |  | true
featureConditionalHeaders | Avoid sending content if client already has same content, by checking ETag or LastModified properties. |  | false
featureHSTS | Avoid sending content if client already has same content, by checking ETag or LastModified properties. |  | true
featureLocations | Generates routes in a typed way, for both: constructing URLs and reading the parameters. |  | true
featureMetrics | Enables metrics feature. |  | true
groupId | Generated artifact package's organization (i.e. maven groupId). |  | org.openapitools
interfaceOnly | Whether to generate only API interface stubs without the server files. This option is currently supported only when using jaxrs-spec library. |  | false
library | library template (sub-template) | ktor ktor framework jaxrs-spec JAX-RS spec only | ktor
modelMutable | Create mutable models |  | false
packageName | Generated artifact package name. |  | org.openapitools.server
parcelizeModels | toggle "@Parcelize" for generated models |  | null
returnResponse | Whether generate API interface should return javax.ws.rs.core.Response instead of a deserialized entity. Only useful if interfaceOnly is true. This option is currently supported only when using jaxrs-spec library. |  | false
serializableModel | boolean - toggle "implements Serializable" for generated models |  | null
serializationLibrary | What serialization library to use: 'moshi' (default), or 'gson' or 'jackson' |  | moshi
sortModelPropertiesByRequiredFlag | Sort model properties to place required parameters before optional parameters. |  | null
sortParamsByRequiredFlag | Sort method arguments to place required parameters before optional parameters. |  | null
sourceFolder | source folder for generated code |  | src/main/kotlin
useBeanValidation | Use BeanValidation API annotations. This option is currently supported only when using jaxrs-spec library. |  | false
useCoroutines | Whether to use the Coroutines. This option is currently supported only when using jaxrs-spec library. |  | false

## #IMPORT MAPPING

Type/Alias | Imports
--- | ---
BigDecimal | java.math.BigDecimal
Date | java.time.LocalDate
DateTime | java.time.OffsetDateTime
File | java.io.File
LocalDate | java.time.LocalDate
LocalDateTime | java.time.LocalDateTime
LocalTime | java.time.LocalTime
Timestamp | java.sql.Timestamp
URI | java.net.URI
UUID | java.util.UUID

## #INSTANTIATION TYPES

Type/Alias | Instantiated By
--- | ---
array | kotlin.collections.ArrayList
list | kotlin.collections.ArrayList
map | kotlin.collections.HashMap

## #LANGUAGE PRIMITIVES

- kotlin.Array
- kotlin.Boolean
- kotlin.Byte
- kotlin.ByteArray
- kotlin.Char
- kotlin.Double
- kotlin.Float
- kotlin.Int
- kotlin.Long
- kotlin.Short
- kotlin.String
- kotlin.collections.List
- kotlin.collections.Map
- kotlin.collections.MutableList
- kotlin.collections.MutableMap
- kotlin.collections.MutableSet
- kotlin.collections.Set

## #RESERVED WORDS

- ApiResponse
- abstract
- actual
- annotation
- as
- break
- class
- companion
- const
- constructor
- continue
- crossinline
- data
- delegate
- do
- dynamic
- else
- enum
- expect
- external
- false
- field
- final
- finally
- for
- fun
- if
- import
- in
- infix
- init
- inline
- inner
- interface
- internal
- is
- it
- lateinit
- noinline
- null
- object
- open
- operator
- out
- override
- package
- param
- private
- property
- protected
- public
- receiver
- reified
- return
- sealed
- setparam
- super
- suspend
- tailrec
- this
- throw
- true
- try
- typealias
- typeof
- val
- value
- var
- vararg
- when
- where
- while

## #FEATURE SET

### #Client Modification Feature

Name | Supported | Defined By
--- | --- | ---
BasePath | ✗ | ToolingExtension
Authorizations | ✗ | ToolingExtension
UserAgent | ✗ | ToolingExtension
MockServer | ✗ | ToolingExtension

### #Data Type Feature

Name | Supported | Defined By
--- | --- | ---
Custom | ✗ | OAS2,OAS3
Int32 | ✓ | OAS2,OAS3
Int64 | ✓ | OAS2,OAS3
Float | ✓ | OAS2,OAS3
Double | ✓ | OAS2,OAS3
Decimal | ✓ | ToolingExtension
String | ✓ | OAS2,OAS3
Byte | ✓ | OAS2,OAS3
Binary | ✓ | OAS2,OAS3
Boolean | ✓ | OAS2,OAS3
Date | ✓ | OAS2,OAS3
DateTime | ✓ | OAS2,OAS3
Password | ✓ | OAS2,OAS3
File | ✓ | OAS2
Uuid | ✗ |
Array | ✓ | OAS2,OAS3
Null | ✗ | OAS3
AnyType | ✗ | OAS2,OAS3
Object | ✓ | OAS2,OAS3
Maps | ✓ | ToolingExtension
CollectionFormat | ✓ | OAS2
CollectionFormatMulti | ✓ | OAS2
Enum | ✓ | OAS2,OAS3
ArrayOfEnum | ✓ | ToolingExtension
ArrayOfModel | ✓ | ToolingExtension
ArrayOfCollectionOfPrimitives | ✓ | ToolingExtension
ArrayOfCollectionOfModel | ✓ | ToolingExtension
ArrayOfCollectionOfEnum | ✓ | ToolingExtension
MapOfEnum | ✓ | ToolingExtension
MapOfModel | ✓ | ToolingExtension
MapOfCollectionOfPrimitives | ✓ | ToolingExtension
MapOfCollectionOfModel | ✓ | ToolingExtension
MapOfCollectionOfEnum | ✓ | ToolingExtension

### #Documentation Feature

Name | Supported | Defined By
--- | --- | ---
Readme | ✓ | ToolingExtension
Model | ✓ | ToolingExtension
Api | ✓ | ToolingExtension

### #Global Feature

Name | Supported | Defined By
--- | --- | ---
Host | ✓ | OAS2,OAS3
BasePath | ✓ | OAS2,OAS3
Info | ✓ | OAS2,OAS3
Schemes | ✗ | OAS2,OAS3
PartialSchemes | ✓ | OAS2,OAS3
Consumes | ✓ | OAS2
Produces | ✓ | OAS2
ExternalDocumentation | ✓ | OAS2,OAS3
Examples | ✓ | OAS2,OAS3
XMLStructureDefinitions | ✗ | OAS2,OAS3
MultiServer | ✗ | OAS3
ParameterizedServer | ✗ | OAS3
ParameterStyling | ✗ | OAS3
Callbacks | ✗ | OAS3
LinkObjects | ✗ | OAS3

### #Parameter Feature

Name | Supported | Defined By
--- | --- | ---
Path | ✓ | OAS2,OAS3
Query | ✓ | OAS2,OAS3
Header | ✓ | OAS2,OAS3
Body | ✓ | OAS2
FormUnencoded | ✓ | OAS2
FormMultipart | ✓ | OAS2
Cookie | ✗ | OAS3

### #Schema Support Feature

Name | Supported | Defined By
--- | --- | ---
Simple | ✓ | OAS2,OAS3
Composite | ✓ | OAS2,OAS3
Polymorphism | ✗ | OAS2,OAS3
Union | ✗ | OAS3
allOf | ✗ | OAS2,OAS3
anyOf | ✗ | OAS3
oneOf | ✗ | OAS3
not | ✗ | OAS3

### #Security Feature

Name | Supported | Defined By
--- | --- | ---
BasicAuth | ✓ | OAS2,OAS3
ApiKey | ✓ | OAS2,OAS3
OpenIDConnect | ✗ | OAS3
BearerToken | ✗ | OAS3
OAuth2_Implicit | ✓ | OAS2,OAS3
OAuth2_Password | ✗ | OAS2,OAS3
OAuth2_ClientCredentials | ✗ | OAS2,OAS3
OAuth2_AuthorizationCode | ✗ | OAS2,OAS3

### #Wire Format Feature

Name | Supported | Defined By
--- | --- | ---
JSON | ✓ | OAS2,OAS3
XML | ✓ | OAS2,OAS3
PROTOBUF | ✗ | ToolingExtension
Custom | ✗ | OAS2,OAS3

Edit this page
Last updated on 2022-7-21 by William Cheng

- METADATA
- CONFIG OPTIONS
- IMPORT MAPPING
- INSTANTIATION TYPES
- LANGUAGE PRIMITIVES
- RESERVED WORDS
- FEATURE SET
  - Client Modification Feature
  - Data Type Feature
  - Documentation Feature
  - Global Feature
  - Parameter Feature
  - Schema Support Feature
  - Security Feature
  - Wire Format Feature