val retrofit = Retrofit.Builder() .baseUrl("https://igorwojda.com/app") .build() val userService = retrofit.create(UserService::class.java) val accountRepository = AccountRepository(context) // Wee need this because userService.login function is suspended CoroutineScope(Dispatchers.IO).launch { val response = userService.login("email", "password") if(response != null) { accountRepository.addAccount(response.accessToken, response.refreshToken) } else { // show error } } // Retrofit service definition interface UserService { @POST("auth/login") suspend fun authorizeAsync( @Query("email") email: String, @Query("password") password: String ): LoginResponse? } // Data model returned by login endpoint // (JSON is converted by moshi converter into Kotlin data class instance) data class LoginResponse( val accessToken: String, val refreshToken: String )