Skip to content

Advanced Topics

Explore advanced features and integration patterns.

Topics

Document sealed classes and inheritance hierarchies with discriminators

Handle generic classes and type parameters in your schemas

Integration with Ktor's type-safe routing plugin

Optimize build performance with regeneration modes

When to Use Advanced Features

Feature Use When
Polymorphic Types You have sealed classes or inheritance in your API models
Generic Types You use generic wrappers like Response<T> or Page<T>
Ktor Resources You use Ktor's type-safe Resources plugin
Incremental Compilation You want to optimize local development build times

Common Advanced Patterns

Wrapper Response Types

Kotlin
// Generic response wrapper
data class ApiResponse<T>(
    val success: Boolean,
    val data: T?,
    val error: String?
)

get("/users/{id}") {
    responds<ApiResponse<User>>(HttpStatusCode.OK)
}

Sealed Class Responses

Kotlin
sealed class PaymentResult {
    data class Success(val transactionId: String) : PaymentResult()
    data class Failed(val reason: String) : PaymentResult()
    data class Pending(val checkUrl: String) : PaymentResult()
}

post("/payments") {
    responds<PaymentResult>(HttpStatusCode.OK)
}

Type-Safe Resources

Kotlin
@Resource("/users")
class Users {
    @Resource("{id}")
    class Id(val parent: Users, val id: Long)
}

get<Users.Id> { params ->
    responds<User>(HttpStatusCode.OK)
}