¿Cómo usar types personalizados para los parameters de Retrofit @Query?

Dada la siguiente interfaz de Retrofit :

@GET("offices") fun getOffices(@Query("uid") uid: String, @Query("lat") latitude: Double, @Query("lon") longitude: Double ): Call<List<Office>> 

¿Cómo puedo replace los parameters de location con un tipo de GeoLocation más amigable para el usuario …

 data class GeoLocation( val latitude: Double, val longitude: Double ) 

… que se convierte automáticamente en lat y lon a petición, como:

 @GET("offices") fun getOffices(@Query("uid") uid: String, @Query("location") location: GeoLocation ): Call<List<Office>> 

Aquí está la configuration de Retrofit:

 fun createRetrofit(baseUrl: String, okHttpClient: OkHttpClient): Retrofit { val moshi = Moshi.Builder() .build() return Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(MoshiConverterFactory.create(moshi)) .client(okHttpClient) .build() }