package org.bonitasoft.test.toolkit.api;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import org.jboss.resteasy.client.ClientResponse;
/**
* JSON API interface.
*
* @author truc
*/
public interface BonitaAPIClient {
/** User. */
String USER_API_PATH = "API/identity/user";
/** Group. */
String GROUP_API_PATH = "API/identity/group";
/** Role. */
String ROLE_API_PATH = "API/identity/role";
/** Process. */
String PROCESS_API_PATH = "API/bpm/process";
/** Case. */
String CASE_API_PATH = "API/bpm/case";
/** Activity. */
String ACTIVITY_API_PATH = "API/bpm/activity";
/** Human task. */
String HUMAN_TASK_API_PATH = "API/bpm/humanTask";
/** Actor. */
String ACTOR_API_PATH = "API/bpm/actor";
/** Actor mapping. */
String ACTORMEMBER_API_PATH = "API/bpm/actorMember";
/** Profile. */
String PROFILE_API_PATH = "API/portal/profile";
/** Translation. */
String TRANSLATION_API_PATH = "API/system/i18ntranslation";
/**
* Login.
*
* @param pTenantId
* @param pUserName
* @param pPassword
* @param pRedirect
* @return
*/
@POST
@Path("loginservice")
ClientResponse<String> login(@FormParam("tenant") String pTenantId, @FormParam("username") String pUserName, @FormParam("password") String pPassword, @FormParam("redirect") String pRedirect);
/**
* Logout.
*
* @return
*/
@GET
@Path("logoutservice")
ClientResponse<String> logout();
/**
* Search.
*
* @return
*/
@GET
@Path("{path}")
@Produces("application/json")
ClientResponse<String> search(@PathParam("path") String path, @QueryParam("p") int pParam, @QueryParam("c") int cParam, @QueryParam("o") String oParam,
@QueryParam("f") String fParam, @QueryParam("d") String dParam, @QueryParam("n") String nParam);
/**
* Get users.
*
* @param pStart
* @param pCount
* @return
*/
@GET
@Path(USER_API_PATH)
@Produces("application/json")
ClientResponse<String> getUsers(@QueryParam("p") int pStart, @QueryParam("c") int pCount);
/**
* Delete users.
*
* @param pBody
* @return
*/
@DELETE
@Path(USER_API_PATH)
@Consumes("application/json")
ClientResponse<String> deleteUsers(String pBody);
/**
* Create a user.
*
* @param pBody
* @return
*/
@POST
@Path(USER_API_PATH)
@Consumes("application/json")
ClientResponse<String> createUser(String pBody);
/**
* Set user manager.
*
* @param pUserId
* @param pBody
* @return
*/
@PUT
@Path(USER_API_PATH + "/{id}")
@Consumes("application/json")
ClientResponse<String> setUserManager(@PathParam("id") String pUserId, String pBody);
/**
* Delete groups.
*
* @param pBody
* @return
*/
@DELETE
@Path(GROUP_API_PATH)
@Consumes("application/json")
ClientResponse<String> deleteGroups(String pBody);
/**
* Create a group.
*
* @param pBody
* @return
*/
@POST
@Path(GROUP_API_PATH)
@Consumes("application/json")
ClientResponse<String> createGroup(String pBody);
/**
* Delete groups.
*
* @param pBody
* @return
*/
@DELETE
@Path(ROLE_API_PATH)
@Consumes("application/json")
ClientResponse<String> deleteRoles(String pBody);
/**
* Create a group.
*
* @param pBody
* @return
*/
@POST
@Path(ROLE_API_PATH)
@Consumes("application/json")
ClientResponse<String> createRole(String pBody);
/**
* Add to profile.
*
* @param pBody
* @return
*/
@POST
@Path("API/portal/profileMember")
@Consumes("application/json")
ClientResponse<String> addToProfile(String pBody);
/**
* Get profiles.
*
* @param pStart
* @return
*/
@GET
@Path(PROFILE_API_PATH)
@Produces("application/json")
ClientResponse<String> getProfiles(@QueryParam("p") int pStart, @QueryParam("c") int cParam, @QueryParam("o") String pOrder);
/**
* Delete profiles.
*
* @param pBody
* @return
*/
@DELETE
@Path(PROFILE_API_PATH)
@Consumes("application/json")
ClientResponse<String> deleteProfiles(String pBody);
/**
* Create profile.
*
* @param pBody
* @return
*/
@POST
@Path(PROFILE_API_PATH)
@Consumes("application/json")
ClientResponse<String> createProfile(String pBody);
/**
* Install a process.
*
* @param pBody
* @return
*/
@POST
@Path(PROCESS_API_PATH)
@Consumes("application/json")
ClientResponse<String> installProcess(String pBody);
/**
* Import organization.
*
* @param pBody
* @return
*/
@POST
@Path("services/organization/import")
@Consumes("application/json")
ClientResponse<String> importOrganization(String pBody);
/**
* Export organization.
*
* @return
*/
@GET
@Path("portal/exportOrganization")
@Produces("application/xml")
ClientResponse<String> exportOrganization();
/**
* Get processes.
*
* @param pStart
* @return
*/
@GET
@Path(PROCESS_API_PATH)
@Produces("application/json")
ClientResponse<String> getProcesses(@QueryParam("o") String pOrder, @QueryParam("f") String pFilterExpression);
/**
* Set process state.
*
* @param pProcessId
* @param pBody
* @return
*/
@PUT
@Path(PROCESS_API_PATH + "/{id}")
@Consumes("application/json")
ClientResponse<String> setProcessState(@PathParam("id") String pProcessId, String pBody);
/**
* Set process display name.
*
* @param pProcessId
* @param pBody
* @return
*/
@PUT
@Path(PROCESS_API_PATH + "/{id}")
@Consumes("application/json")
ClientResponse<String> setProcessDisplayName(@PathParam("id") String pProcessId, String pBody);
/**
* Delete processes.
*
* @param pBody
* @return
*/
@DELETE
@Path(PROCESS_API_PATH)
@Consumes("application/json")
ClientResponse<String> deleteProcesses(String pBody);
/**
* Get members mapped to an actor.
*
* @param pStart
* @return
*/
@GET
@Path(ACTORMEMBER_API_PATH)
@Produces("application/json")
ClientResponse<String> getActorMembers(@QueryParam("p") int pStart, @QueryParam("c") int pCount, @QueryParam("o") String pOrder,
@QueryParam("f") List<String> pFilterExpressions);
/**
* Create a relationship between member and actor.
*
* @param pBody
* @return
*/
@POST
@Path(ACTORMEMBER_API_PATH)
@Consumes("application/json")
ClientResponse<String> mapToActor(String pBody);
/**
* Delete members.
*
* @param pBody
* @return
*/
@DELETE
@Path(ACTORMEMBER_API_PATH)
@Consumes("application/json")
ClientResponse<String> deleteActorMembers(String pBody);
/**
* get actors for a process.
*
* @param pBody
* @return
*/
@GET
@Path(ACTOR_API_PATH)
@Consumes("application/json")
ClientResponse<String> getActors(@QueryParam("p") int pStart, @QueryParam("c") int pCount, @QueryParam("o") String pOrder,
@QueryParam("f") String pFilterExpression);
}