package it.niedermann.nextcloud.deck.remote.api; import com.nextcloud.android.sso.api.EmptyResponse; import com.nextcloud.android.sso.api.ParsedResponse; import java.util.List; import io.reactivex.Observable; import it.niedermann.nextcloud.deck.model.ocs.Activity; import it.niedermann.nextcloud.deck.model.ocs.Capabilities; import it.niedermann.nextcloud.deck.model.ocs.comment.DeckComment; import it.niedermann.nextcloud.deck.model.ocs.comment.OcsComment; import it.niedermann.nextcloud.deck.model.ocs.projects.OcsProjectList; import it.niedermann.nextcloud.deck.model.ocs.user.GroupMemberUIDs; import it.niedermann.nextcloud.deck.model.ocs.user.OcsUser; import it.niedermann.nextcloud.deck.model.ocs.user.OcsUserList; import retrofit2.http.Body; import retrofit2.http.DELETE; import retrofit2.http.GET; import retrofit2.http.Header; import retrofit2.http.Headers; import retrofit2.http.POST; import retrofit2.http.PUT; import retrofit2.http.Path; import retrofit2.http.Query; /** * @link Nextcloud REST API */ public interface NextcloudServerAPI { // Capabilities @GET("cloud/capabilities?format=json") Observable> getCapabilities(@Header("If-None-Match") String eTag); // Projects @GET("collaboration/resources/deck-card/{cardId}?format=json") Observable getProjectsForCard(@Path("cardId") long cardId); // Users @GET("apps/files_sharing/api/v1/sharees?format=json&lookup=false&perPage=20&itemType=0%2C1%2C7") Observable searchUser(@Query("search") String searchTerm); @GET("cloud/groups/{search}?format=json") Observable searchGroupMembers(@Path("search") String groupUid); @GET("cloud/users/{search}?format=json") Observable getSingleUserData(@Path("search") String userUid); // Activities @GET("apps/activity/api/v2/activity/filter?format=json&object_type=deck_card&limit=50&since=-1&sort=asc") Observable> getActivitiesForCard(@Query("object_id") long cardId); // Comments @Headers({ "Accept: application/json", "Content-Type: application/json;charset=utf-8" }) @GET("apps/deck/api/v1.0/cards/{cardId}/comments") Observable getCommentsForCard(@Path("cardId") long cardId); @Headers({ "Accept: application/json", "Content-Type: application/json;charset=utf-8" }) @POST("apps/deck/api/v1.0/cards/{cardId}/comments") Observable createCommentForCard(@Path("cardId") long cardId, @Body DeckComment comment); @Headers({ "Accept: application/json", "Content-Type: application/json;charset=utf-8" }) @PUT("apps/deck/api/v1.0/cards/{cardId}/comments/{commentId}") Observable updateCommentForCard(@Path("cardId") long cardId, @Path("commentId") long commentId, @Body DeckComment comment); @Headers({ "Accept: application/json", "Content-Type: application/json;charset=utf-8" }) @DELETE("apps/deck/api/v1.0/cards/{cardId}/comments/{commentId}") Observable deleteCommentForCard(@Path("cardId") long cardId, @Path("commentId") long commentId); }