Ответ
Методы интерфейса Retrofit возвращают Call<T> или другие типы, в зависимости от используемого адаптера (например, Observable<T> для RxJava или Deferred<T> для Kotlin Coroutines).
Пример:
interface ApiService {
@GET("users/{id}")
fun getUser(@Path("id") userId: String): Call<User>
}
Здесь getUser() возвращает Call<User>, который можно выполнить синхронно (execute()) или асинхронно (enqueue()).
Для корутин можно использовать suspend:
@GET("users/{id}")
suspend fun getUser(@Path("id") userId: String): User
Retrofit автоматически генерирует реализацию интерфейса, преобразуя аннотации в HTTP-запросы.