package uk.ac.cam.echo.data.resources; import uk.ac.cam.echo.data.Conversation; import uk.ac.cam.echo.data.Message; import uk.ac.cam.echo.data.User; import uk.ac.cam.echo.data.async.SubscriptionResource; import javax.ws.rs.*; import javax.ws.rs.core.Response; import java.util.Collection; @Path("/conversations") @Produces("application/json") public interface ConversationResource extends RestResource<Conversation> { @GET public Collection<Conversation> getAll(); @GET @Path("/{id}") public Conversation get(@PathParam("id") long id); @GET @Path("/by-name") public Conversation get(@QueryParam("name") String name); @GET @Path("/{conversationId}/users") public Collection<User> getUsers(@PathParam("conversationId") long id); @Path("/{conversationId}/messageSubscription") SubscriptionResource<Message> listenToMessages(@PathParam("conversationId") long id); @Path("/{conversationId}/messages") public MessageResource getMessageResource(@PathParam("conversationId") long id); @Path("/{conversationId}/tags") public TagResource getTagResource(@PathParam("conversationId") long id); @PUT @Consumes("application/json") public Response update(Conversation item); @POST @Consumes("application/json") public Object create (Conversation data); }