Authentication
The @Auth annotation configures authentication for requests.
No authentication (default)
@GET("/public/data")
@Returns(Data::class)
@Serializable
object GetPublicDataRequest
Bearer token authentication
@GET("/secure/data")
@Auth(type = AuthType.BEARER)
@Returns(Data::class)
@Serializable
object GetSecureDataRequest
Generated method requires a token context parameter:
context(token: String)
suspend fun getSecureData(): ApiResponse<Data>
Usage:
context("my-bearer-token") {
client.getSecureData()
}
Basic authentication
@GET("/protected/resource")
@Auth(type = AuthType.BASIC)
@Returns(Resource::class)
@Serializable
object GetProtectedResourceRequest
Generated method requires username and password context parameters:
context(username: String, password: String)
suspend fun getProtectedResource(): ApiResponse<Resource>
Usage:
context("admin", "secret") {
client.getProtectedResource()
}
API key authentication
@GET("/api/data")
@Auth(type = AuthType.API_KEY)
@Returns(Data::class)
@Serializable
object GetApiDataRequest
By default, the processor uses the X-API-Key header name, but you can customize it:
@GET("/api/data")
@Auth(type = AuthType.API_KEY, headerName = "X-Custom-API-Key")
@Returns(Data::class)
@Serializable
object GetApiDataRequest
Generated method requires an apiKey context parameter:
context(apiKey: String)
suspend fun getApiData(): ApiResponse<Data>
Usage:
context("my-api-key") {
client.getApiData()
}
Custom authentication
@GET("/custom/auth")
@Auth(type = AuthType.CUSTOM)
@Returns(Data::class)
@Serializable
object GetCustomAuthDataRequest
Generated method signature:
context(customAuth: HttpRequestBuilder.() -> Unit)
suspend fun getCustomAuthData(): ApiResponse<Data>
Usage:
context({ headers.append("X-Custom-Header", "value") }) {
client.getCustomAuthData()
}