Если у вас есть «динамические» запросы (либо неизвестный набор параметров запроса, либо неизвестное имя ключа запроса), самый простой способ справиться с этим - использовать аннотация @QueryMap
.
interface MainApi {
@GET("/api/updateuser")
fun updateUser(
@Query("userId") userId: UserId,
@Nullable @Query("programId") programId: ProgramId?,
@QueryMap Map<String, String> hobbies
): Observable<UserResponse>
}
И тогда вы можете назвать это как:
val hobbies = mapOf("hobby_12" to "15")
service.updateUser("foo", null, hobbies)
или
val hobbies = mapOf("hobby_35" to "100")
service.updateUser("foo", null, hobbies)