package com.keylesspalace.tusky; import com.keylesspalace.tusky.entity.Media; import com.keylesspalace.tusky.entity.Relationship; import com.keylesspalace.tusky.entity.StatusContext; import java.util.List; import okhttp3.RequestBody; import retrofit2.Call; import retrofit2.http.DELETE; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; import retrofit2.http.GET; import retrofit2.http.Multipart; import retrofit2.http.POST; import retrofit2.http.Part; import retrofit2.http.Path; import retrofit2.http.Query; public interface MastodonService { @GET("api/v1/timelines/home") Call> homeTimeline(@Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit); @GET("api/v1/timelines/public") Call> publicTimeline(@Query("local") boolean local, @Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit); @GET("api/v1/timelines/tag/{hashtag}") Call> hashtagTimeline(@Path("hashtag") String hashtag, @Query("local") boolean local, @Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit); @GET("api/v1/notifications") Call> notifications(@Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit); @POST("api/v1/notifications/clear") Call clearNotifications(); @GET("api/v1/notifications/{id}") Call notification(@Path("id") int notificationId); @Multipart @POST("api/v1/media") Call uploadMedia(@Part("file") RequestBody file); @FormUrlEncoded @POST("api/v1/statuses") Call createStatus(@Field("status") String text, @Field("in_reply_to_id") int inReplyToId, @Field("spoiler_text") String warningText, @Field("visibility") String visibility, @Field("sensitive") boolean sensitive, @Field("media_ids[]") List mediaIds); @GET("api/v1/statuses/{id}") Call status(@Path("id") int statusId); @GET("api/v1/statuses/{id}/context") Call statusContext(@Path("id") int statusId); @GET("api/v1/statuses/{id}/reblogged_by") Call> statusRebloggedBy(@Path("id") int statusId, @Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit); @GET("api/v1/statuses/{id}/favourited_by") Call> statusFavouritedBy(@Path("id") int statusId, @Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit); @DELETE("api/v1/statuses/{id}") Call deleteStatus(@Path("id") int statusId); @POST("api/v1/statuses/{id}/reblog") Call reblogStatus(@Path("id") int statusId); @POST("api/v1/statuses/{id}/unreblog") Call unreblogStatus(@Path("id") int statusId); @POST("api/v1/statuses/{id}/favourite") Call favouriteStatus(@Path("id") int statusId); @POST("api/v1/statuses/{id}/unfavourite") Call unfavouriteStatus(@Path("id") int statusId); @GET("api/v1/accounts/verify_credentials") Call accountVerifyCredentials(); @GET("api/v1/accounts/search") Call> searchAccounts(@Query("q") String q, @Query("resolve") boolean resolve, @Query("limit") int limit); @GET("api/v1/accounts/{id}") Call account(@Path("id") int accountId); @GET("api/v1/accounts/{id}/statuses") Call> accountStatuses(@Path("id") int accountId, @Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit); @GET("api/v1/accounts/{id}/followers") Call> accountFollowers(@Path("id") int accountId, @Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit); @GET("api/v1/accounts/{id}/following") Call> accountFollowing(@Path("id") int accountId, @Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit); @POST("api/v1/accounts/{id}/follow") Call followAccount(@Path("id") int accountId); @POST("api/v1/accounts/{id}/unfollow") Call unfollowAccount(@Path("id") int accountId); @POST("api/v1/accounts/{id}/block") Call blockAccount(@Path("id") int accountId); @POST("api/v1/accounts/{id}/unblock") Call unblockAccount(@Path("id") int accountId); @POST("api/v1/accounts/{id}/mute") Call muteAccount(@Path("id") int accountId); @POST("api/v1/accounts/{id}/unmute") Call unmuteAccount(@Path("id") int accountId); @GET("api/v1/accounts/relationships") Call> relationships(@Query("id[]") List accountIds); @GET("api/v1/blocks") Call> blocks(@Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit); @GET("api/v1/mutes") Call> mutes(@Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit); @GET("api/v1/favourites") Call> favourites(@Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit); @GET("api/v1/follow_requests") Call> followRequests(@Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit); @POST("api/v1/follow_requests/{id}/authorize") Call authorizeFollowRequest(@Path("id") int accountId); @POST("api/v1/follow_requests/{id}/reject") Call rejectFollowRequest(@Path("id") int accountId); }