You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sm...@apache.org on 2015/05/01 02:55:59 UTC

[03/19] airavata git commit: Changing Airavata API to support paginated result retrieval of Project and Experiment data

http://git-wip-us.apache.org/repos/asf/airavata/blob/0a3d857b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
index cab0463..a556289 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
@@ -155,12 +155,35 @@ class Iface:
       *
       * @param userName
       *    The Project Object described in the workspaceModel
+      * @deprecated Instead use getAllUserProjectsWithPagination
+    *
+
+    Parameters:
+     - gatewayId
+     - userName
+    """
+    pass
+
+  def getAllUserProjectsWithPagination(self, gatewayId, userName, limit, offset):
+    """
+      * Get all Project by user with pagination. Results will be ordered based
+      * on creation time DESC
       *
+      * @param gatewayId
+      *    The identifier for the requested gateway.
+      * @param userName
+      *    The identifier of the user
+      * @param limit
+      *    The amount results to be fetched
+      * @param offset
+      *    The starting point of the results to be fetched
     *
 
     Parameters:
      - gatewayId
      - userName
+     - limit
+     - offset
     """
     pass
 
@@ -168,23 +191,86 @@ class Iface:
     """
     Get all Project for user by project name
 
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param projectName
+       The name of the project on which the results to be fetched
+    @deprecated Instead use searchProjectsByProjectNameWithPagination
+
+    Parameters:
+     - gatewayId
+     - userName
+     - projectName
+    """
+    pass
+
+  def searchProjectsByProjectNameWithPagination(self, gatewayId, userName, projectName, limit, offset):
+    """
+    Get all Project for user by project name with pagination.Results will be ordered based
+    on creation time DESC
+
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param projectName
+       The name of the project on which the results to be fetched
+    @param limit
+       The amount results to be fetched
+    @param offset
+       The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
      - projectName
+     - limit
+     - offset
     """
     pass
 
   def searchProjectsByProjectDesc(self, gatewayId, userName, description):
     """
     Get all Project for user by project description
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param description
+       The description to be matched
+    @deprecated Instead use searchProjectsByProjectDescWithPagination
+
+    Parameters:
+     - gatewayId
+     - userName
+     - description
+    """
+    pass
+
+  def searchProjectsByProjectDescWithPagination(self, gatewayId, userName, description, limit, offset):
+    """
+    Search and get all Projects for user by project description with pagination. Results
+    will be ordered based on creation time DESC
 
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param description
+       The description to be matched
+    @param limit
+       The amount results to be fetched
+    @param offset
+       The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
      - description
+     - limit
+     - offset
     """
     pass
 
@@ -192,11 +278,45 @@ class Iface:
     """
     Search Experiments by experiment name
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param useNname
+          Username of the requested user
+    @param expName
+          Experiment name to be matched
+    @deprecated
+          Instead use searchExperimentsByNameWithPagination
+
+
+    Parameters:
+     - gatewayId
+     - userName
+     - expName
+    """
+    pass
+
+  def searchExperimentsByNameWithPagination(self, gatewayId, userName, expName, limit, offset):
+    """
+    Search Experiments by experiment name with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param expName
+          Experiment name to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
      - expName
+     - limit
+     - offset
     """
     pass
 
@@ -204,11 +324,44 @@ class Iface:
     """
     Search Experiments by experiment name
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param description
+          Experiment description to be matched
+    @deprecated
+          Instead use searchExperimentsByDescWithPagination
+
+    Parameters:
+     - gatewayId
+     - userName
+     - description
+    """
+    pass
+
+  def searchExperimentsByDescWithPagination(self, gatewayId, userName, description, limit, offset):
+    """
+    Search Experiments by experiment name with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param description
+          Experiment description to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
      - description
+     - limit
+     - offset
     """
     pass
 
@@ -216,11 +369,44 @@ class Iface:
     """
     Search Experiments by application id
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param applicationId
+          Application id to be matched
+    @deprecated
+          Instead use searchExperimentsByApplicationWithPagination
+
+    Parameters:
+     - gatewayId
+     - userName
+     - applicationId
+    """
+    pass
+
+  def searchExperimentsByApplicationWithPagination(self, gatewayId, userName, applicationId, limit, offset):
+    """
+    Search Experiments by application id with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param applicationId
+          Application id to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
      - applicationId
+     - limit
+     - offset
     """
     pass
 
@@ -228,24 +414,95 @@ class Iface:
     """
     Search Experiments by experiment status
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param experimentState
+          Experiement state to be matched
+    @deprecated
+          Instead use searchExperimentsByStatusWithPagination
+
+    Parameters:
+     - gatewayId
+     - userName
+     - experimentState
+    """
+    pass
+
+  def searchExperimentsByStatusWithPagination(self, gatewayId, userName, experimentState, limit, offset):
+    """
+    Search Experiments by experiment status with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param experimentState
+          Experiement state to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
      - experimentState
+     - limit
+     - offset
     """
     pass
 
   def searchExperimentsByCreationTime(self, gatewayId, userName, fromTime, toTime):
     """
-    Search Experiments by experiment status
+    Search Experiments by experiment creation time
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param fromTime
+          Start time of the experiments creation time
+    @param toTime
+          End time of the  experiement creation time
+    @deprecated
+          Instead use searchExperimentsByCreationTimeWithPagination
+
+    Parameters:
+     - gatewayId
+     - userName
+     - fromTime
+     - toTime
+    """
+    pass
+
+  def searchExperimentsByCreationTimeWithPagination(self, gatewayId, userName, fromTime, toTime, limit, offset):
+    """
+    Search Experiments by experiment creation time with pagination. Results will be sorted
+    based on creation time DESC
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param fromTime
+          Start time of the experiments creation time
+    @param toTime
+          End time of the  experiement creation time
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
      - fromTime
      - toTime
+     - limit
+     - offset
     """
     pass
 
@@ -253,9 +510,32 @@ class Iface:
     """
     Get all Experiments within a Project
 
+    @param projectId
+          Identifier of the project
+    @deprecated
+          Instead use  getAllExperimentsInProjectWithPagination
+
+    Parameters:
+     - projectId
+    """
+    pass
+
+  def getAllExperimentsInProjectWithPagination(self, projectId, limit, offset):
+    """
+    Get all Experiments within project with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param projectId
+          Identifier of the project
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
      - projectId
+     - limit
+     - offset
     """
     pass
 
@@ -263,10 +543,38 @@ class Iface:
     """
     Get all Experiments by user
 
+    @param gatewayId
+          Identifier of the requesting gateway
+    @param userName
+          Username of the requested user
+    @deprecated
+          Instead use getAllUserExperimentsWithPagination
+
+    Parameters:
+     - gatewayId
+     - userName
+    """
+    pass
+
+  def getAllUserExperimentsWithPagination(self, gatewayId, userName, limit, offset):
+    """
+    Get all Experiments by user pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requesting gateway
+    @param userName
+          Username of the requested user
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
+     - limit
+     - offset
     """
     pass
 
@@ -2358,7 +2666,7 @@ class Client(Iface):
       *
       * @param userName
       *    The Project Object described in the workspaceModel
-      *
+      * @deprecated Instead use getAllUserProjectsWithPagination
     *
 
     Parameters:
@@ -2397,37 +2705,49 @@ class Client(Iface):
       raise result.ase
     raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllUserProjects failed: unknown result");
 
-  def searchProjectsByProjectName(self, gatewayId, userName, projectName):
+  def getAllUserProjectsWithPagination(self, gatewayId, userName, limit, offset):
     """
-    Get all Project for user by project name
-
+      * Get all Project by user with pagination. Results will be ordered based
+      * on creation time DESC
+      *
+      * @param gatewayId
+      *    The identifier for the requested gateway.
+      * @param userName
+      *    The identifier of the user
+      * @param limit
+      *    The amount results to be fetched
+      * @param offset
+      *    The starting point of the results to be fetched
+    *
 
     Parameters:
      - gatewayId
      - userName
-     - projectName
+     - limit
+     - offset
     """
-    self.send_searchProjectsByProjectName(gatewayId, userName, projectName)
-    return self.recv_searchProjectsByProjectName()
+    self.send_getAllUserProjectsWithPagination(gatewayId, userName, limit, offset)
+    return self.recv_getAllUserProjectsWithPagination()
 
-  def send_searchProjectsByProjectName(self, gatewayId, userName, projectName):
-    self._oprot.writeMessageBegin('searchProjectsByProjectName', TMessageType.CALL, self._seqid)
-    args = searchProjectsByProjectName_args()
+  def send_getAllUserProjectsWithPagination(self, gatewayId, userName, limit, offset):
+    self._oprot.writeMessageBegin('getAllUserProjectsWithPagination', TMessageType.CALL, self._seqid)
+    args = getAllUserProjectsWithPagination_args()
     args.gatewayId = gatewayId
     args.userName = userName
-    args.projectName = projectName
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_searchProjectsByProjectName(self):
+  def recv_getAllUserProjectsWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = searchProjectsByProjectName_result()
+    result = getAllUserProjectsWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2438,39 +2758,46 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchProjectsByProjectName failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllUserProjectsWithPagination failed: unknown result");
 
-  def searchProjectsByProjectDesc(self, gatewayId, userName, description):
+  def searchProjectsByProjectName(self, gatewayId, userName, projectName):
     """
-    Get all Project for user by project description
+    Get all Project for user by project name
 
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param projectName
+       The name of the project on which the results to be fetched
+    @deprecated Instead use searchProjectsByProjectNameWithPagination
 
     Parameters:
      - gatewayId
      - userName
-     - description
+     - projectName
     """
-    self.send_searchProjectsByProjectDesc(gatewayId, userName, description)
-    return self.recv_searchProjectsByProjectDesc()
+    self.send_searchProjectsByProjectName(gatewayId, userName, projectName)
+    return self.recv_searchProjectsByProjectName()
 
-  def send_searchProjectsByProjectDesc(self, gatewayId, userName, description):
-    self._oprot.writeMessageBegin('searchProjectsByProjectDesc', TMessageType.CALL, self._seqid)
-    args = searchProjectsByProjectDesc_args()
+  def send_searchProjectsByProjectName(self, gatewayId, userName, projectName):
+    self._oprot.writeMessageBegin('searchProjectsByProjectName', TMessageType.CALL, self._seqid)
+    args = searchProjectsByProjectName_args()
     args.gatewayId = gatewayId
     args.userName = userName
-    args.description = description
+    args.projectName = projectName
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_searchProjectsByProjectDesc(self):
+  def recv_searchProjectsByProjectName(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = searchProjectsByProjectDesc_result()
+    result = searchProjectsByProjectName_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2481,39 +2808,54 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchProjectsByProjectDesc failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchProjectsByProjectName failed: unknown result");
 
-  def searchExperimentsByName(self, gatewayId, userName, expName):
+  def searchProjectsByProjectNameWithPagination(self, gatewayId, userName, projectName, limit, offset):
     """
-    Search Experiments by experiment name
+    Get all Project for user by project name with pagination.Results will be ordered based
+    on creation time DESC
 
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param projectName
+       The name of the project on which the results to be fetched
+    @param limit
+       The amount results to be fetched
+    @param offset
+       The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
-     - expName
+     - projectName
+     - limit
+     - offset
     """
-    self.send_searchExperimentsByName(gatewayId, userName, expName)
-    return self.recv_searchExperimentsByName()
+    self.send_searchProjectsByProjectNameWithPagination(gatewayId, userName, projectName, limit, offset)
+    return self.recv_searchProjectsByProjectNameWithPagination()
 
-  def send_searchExperimentsByName(self, gatewayId, userName, expName):
-    self._oprot.writeMessageBegin('searchExperimentsByName', TMessageType.CALL, self._seqid)
-    args = searchExperimentsByName_args()
+  def send_searchProjectsByProjectNameWithPagination(self, gatewayId, userName, projectName, limit, offset):
+    self._oprot.writeMessageBegin('searchProjectsByProjectNameWithPagination', TMessageType.CALL, self._seqid)
+    args = searchProjectsByProjectNameWithPagination_args()
     args.gatewayId = gatewayId
     args.userName = userName
-    args.expName = expName
+    args.projectName = projectName
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_searchExperimentsByName(self):
+  def recv_searchProjectsByProjectNameWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = searchExperimentsByName_result()
+    result = searchProjectsByProjectNameWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2524,24 +2866,30 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByName failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchProjectsByProjectNameWithPagination failed: unknown result");
 
-  def searchExperimentsByDesc(self, gatewayId, userName, description):
+  def searchProjectsByProjectDesc(self, gatewayId, userName, description):
     """
-    Search Experiments by experiment name
-
+    Get all Project for user by project description
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param description
+       The description to be matched
+    @deprecated Instead use searchProjectsByProjectDescWithPagination
 
     Parameters:
      - gatewayId
      - userName
      - description
     """
-    self.send_searchExperimentsByDesc(gatewayId, userName, description)
-    return self.recv_searchExperimentsByDesc()
+    self.send_searchProjectsByProjectDesc(gatewayId, userName, description)
+    return self.recv_searchProjectsByProjectDesc()
 
-  def send_searchExperimentsByDesc(self, gatewayId, userName, description):
-    self._oprot.writeMessageBegin('searchExperimentsByDesc', TMessageType.CALL, self._seqid)
-    args = searchExperimentsByDesc_args()
+  def send_searchProjectsByProjectDesc(self, gatewayId, userName, description):
+    self._oprot.writeMessageBegin('searchProjectsByProjectDesc', TMessageType.CALL, self._seqid)
+    args = searchProjectsByProjectDesc_args()
     args.gatewayId = gatewayId
     args.userName = userName
     args.description = description
@@ -2549,14 +2897,14 @@ class Client(Iface):
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_searchExperimentsByDesc(self):
+  def recv_searchProjectsByProjectDesc(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = searchExperimentsByDesc_result()
+    result = searchProjectsByProjectDesc_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2567,39 +2915,54 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByDesc failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchProjectsByProjectDesc failed: unknown result");
 
-  def searchExperimentsByApplication(self, gatewayId, userName, applicationId):
+  def searchProjectsByProjectDescWithPagination(self, gatewayId, userName, description, limit, offset):
     """
-    Search Experiments by application id
+    Search and get all Projects for user by project description with pagination. Results
+    will be ordered based on creation time DESC
 
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param description
+       The description to be matched
+    @param limit
+       The amount results to be fetched
+    @param offset
+       The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
-     - applicationId
+     - description
+     - limit
+     - offset
     """
-    self.send_searchExperimentsByApplication(gatewayId, userName, applicationId)
-    return self.recv_searchExperimentsByApplication()
+    self.send_searchProjectsByProjectDescWithPagination(gatewayId, userName, description, limit, offset)
+    return self.recv_searchProjectsByProjectDescWithPagination()
 
-  def send_searchExperimentsByApplication(self, gatewayId, userName, applicationId):
-    self._oprot.writeMessageBegin('searchExperimentsByApplication', TMessageType.CALL, self._seqid)
-    args = searchExperimentsByApplication_args()
+  def send_searchProjectsByProjectDescWithPagination(self, gatewayId, userName, description, limit, offset):
+    self._oprot.writeMessageBegin('searchProjectsByProjectDescWithPagination', TMessageType.CALL, self._seqid)
+    args = searchProjectsByProjectDescWithPagination_args()
     args.gatewayId = gatewayId
     args.userName = userName
-    args.applicationId = applicationId
+    args.description = description
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_searchExperimentsByApplication(self):
+  def recv_searchProjectsByProjectDescWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = searchExperimentsByApplication_result()
+    result = searchProjectsByProjectDescWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2610,39 +2973,48 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByApplication failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchProjectsByProjectDescWithPagination failed: unknown result");
 
-  def searchExperimentsByStatus(self, gatewayId, userName, experimentState):
+  def searchExperimentsByName(self, gatewayId, userName, expName):
     """
-    Search Experiments by experiment status
+    Search Experiments by experiment name
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param useNname
+          Username of the requested user
+    @param expName
+          Experiment name to be matched
+    @deprecated
+          Instead use searchExperimentsByNameWithPagination
 
 
     Parameters:
      - gatewayId
      - userName
-     - experimentState
+     - expName
     """
-    self.send_searchExperimentsByStatus(gatewayId, userName, experimentState)
-    return self.recv_searchExperimentsByStatus()
+    self.send_searchExperimentsByName(gatewayId, userName, expName)
+    return self.recv_searchExperimentsByName()
 
-  def send_searchExperimentsByStatus(self, gatewayId, userName, experimentState):
-    self._oprot.writeMessageBegin('searchExperimentsByStatus', TMessageType.CALL, self._seqid)
-    args = searchExperimentsByStatus_args()
-    args.gatewayId = gatewayId
+  def send_searchExperimentsByName(self, gatewayId, userName, expName):
+    self._oprot.writeMessageBegin('searchExperimentsByName', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByName_args()
+    args.gatewayId = gatewayId
     args.userName = userName
-    args.experimentState = experimentState
+    args.expName = expName
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_searchExperimentsByStatus(self):
+  def recv_searchExperimentsByName(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = searchExperimentsByStatus_result()
+    result = searchExperimentsByName_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2653,41 +3025,54 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByStatus failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByName failed: unknown result");
 
-  def searchExperimentsByCreationTime(self, gatewayId, userName, fromTime, toTime):
+  def searchExperimentsByNameWithPagination(self, gatewayId, userName, expName, limit, offset):
     """
-    Search Experiments by experiment status
+    Search Experiments by experiment name with pagination. Results will be sorted
+    based on creation time DESC
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param expName
+          Experiment name to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
-     - fromTime
-     - toTime
+     - expName
+     - limit
+     - offset
     """
-    self.send_searchExperimentsByCreationTime(gatewayId, userName, fromTime, toTime)
-    return self.recv_searchExperimentsByCreationTime()
+    self.send_searchExperimentsByNameWithPagination(gatewayId, userName, expName, limit, offset)
+    return self.recv_searchExperimentsByNameWithPagination()
 
-  def send_searchExperimentsByCreationTime(self, gatewayId, userName, fromTime, toTime):
-    self._oprot.writeMessageBegin('searchExperimentsByCreationTime', TMessageType.CALL, self._seqid)
-    args = searchExperimentsByCreationTime_args()
+  def send_searchExperimentsByNameWithPagination(self, gatewayId, userName, expName, limit, offset):
+    self._oprot.writeMessageBegin('searchExperimentsByNameWithPagination', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByNameWithPagination_args()
     args.gatewayId = gatewayId
     args.userName = userName
-    args.fromTime = fromTime
-    args.toTime = toTime
+    args.expName = expName
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_searchExperimentsByCreationTime(self):
+  def recv_searchExperimentsByNameWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = searchExperimentsByCreationTime_result()
+    result = searchExperimentsByNameWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2698,35 +3083,47 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByCreationTime failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByNameWithPagination failed: unknown result");
 
-  def getAllExperimentsInProject(self, projectId):
+  def searchExperimentsByDesc(self, gatewayId, userName, description):
     """
-    Get all Experiments within a Project
+    Search Experiments by experiment name
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param description
+          Experiment description to be matched
+    @deprecated
+          Instead use searchExperimentsByDescWithPagination
 
     Parameters:
-     - projectId
+     - gatewayId
+     - userName
+     - description
     """
-    self.send_getAllExperimentsInProject(projectId)
-    return self.recv_getAllExperimentsInProject()
+    self.send_searchExperimentsByDesc(gatewayId, userName, description)
+    return self.recv_searchExperimentsByDesc()
 
-  def send_getAllExperimentsInProject(self, projectId):
-    self._oprot.writeMessageBegin('getAllExperimentsInProject', TMessageType.CALL, self._seqid)
-    args = getAllExperimentsInProject_args()
-    args.projectId = projectId
+  def send_searchExperimentsByDesc(self, gatewayId, userName, description):
+    self._oprot.writeMessageBegin('searchExperimentsByDesc', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByDesc_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.description = description
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_getAllExperimentsInProject(self):
+  def recv_searchExperimentsByDesc(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = getAllExperimentsInProject_result()
+    result = searchExperimentsByDesc_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2737,39 +3134,54 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    if result.pnfe is not None:
-      raise result.pnfe
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllExperimentsInProject failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByDesc failed: unknown result");
 
-  def getAllUserExperiments(self, gatewayId, userName):
+  def searchExperimentsByDescWithPagination(self, gatewayId, userName, description, limit, offset):
     """
-    Get all Experiments by user
+    Search Experiments by experiment name with pagination. Results will be sorted
+    based on creation time DESC
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param description
+          Experiment description to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
+     - description
+     - limit
+     - offset
     """
-    self.send_getAllUserExperiments(gatewayId, userName)
-    return self.recv_getAllUserExperiments()
+    self.send_searchExperimentsByDescWithPagination(gatewayId, userName, description, limit, offset)
+    return self.recv_searchExperimentsByDescWithPagination()
 
-  def send_getAllUserExperiments(self, gatewayId, userName):
-    self._oprot.writeMessageBegin('getAllUserExperiments', TMessageType.CALL, self._seqid)
-    args = getAllUserExperiments_args()
+  def send_searchExperimentsByDescWithPagination(self, gatewayId, userName, description, limit, offset):
+    self._oprot.writeMessageBegin('searchExperimentsByDescWithPagination', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByDescWithPagination_args()
     args.gatewayId = gatewayId
     args.userName = userName
+    args.description = description
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_getAllUserExperiments(self):
+  def recv_searchExperimentsByDescWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = getAllUserExperiments_result()
+    result = searchExperimentsByDescWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2780,68 +3192,47 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllUserExperiments failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByDescWithPagination failed: unknown result");
 
-  def createExperiment(self, gatewayId, experiment):
+  def searchExperimentsByApplication(self, gatewayId, userName, applicationId):
     """
-    Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
-      but inferred from the authentication header. This experiment is just a persistent place holder. The client
-      has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
-      registering the experiment in a persistent store.
-
-    @param basicExperimentMetadata
-       The create experiment will require the basic experiment metadata like the name and description, intended user,
-         the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
-         the ExperimentMetadata is a required field.
-
-    @return
-      The server-side generated airavata experiment globally unique identifier.
-
-    @throws org.apache.airavata.model.error.InvalidRequestException
-       For any incorrect forming of the request itself.
-
-    @throws org.apache.airavata.model.error.AiravataClientException
-       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-
-         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
-            step, then Airavata Registry will not have a provenance area setup. The client has to follow
-            gateway registration steps and retry this request.
-
-         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
-            For now this is a place holder.
-
-         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
-            is implemented, the authorization will be more substantial.
-
-    @throws org.apache.airavata.model.error.AiravataSystemException
-       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
-          rather an Airavata Administrator will be notified to take corrective action.
+    Search Experiments by application id
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param applicationId
+          Application id to be matched
+    @deprecated
+          Instead use searchExperimentsByApplicationWithPagination
 
     Parameters:
      - gatewayId
-     - experiment
+     - userName
+     - applicationId
     """
-    self.send_createExperiment(gatewayId, experiment)
-    return self.recv_createExperiment()
+    self.send_searchExperimentsByApplication(gatewayId, userName, applicationId)
+    return self.recv_searchExperimentsByApplication()
 
-  def send_createExperiment(self, gatewayId, experiment):
-    self._oprot.writeMessageBegin('createExperiment', TMessageType.CALL, self._seqid)
-    args = createExperiment_args()
+  def send_searchExperimentsByApplication(self, gatewayId, userName, applicationId):
+    self._oprot.writeMessageBegin('searchExperimentsByApplication', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByApplication_args()
     args.gatewayId = gatewayId
-    args.experiment = experiment
+    args.userName = userName
+    args.applicationId = applicationId
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_createExperiment(self):
+  def recv_searchExperimentsByApplication(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = createExperiment_result()
+    result = searchExperimentsByApplication_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2852,585 +3243,571 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "createExperiment failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByApplication failed: unknown result");
 
-  def getExperiment(self, airavataExperimentId):
+  def searchExperimentsByApplicationWithPagination(self, gatewayId, userName, applicationId, limit, offset):
     """
-    Fetch previously created experiment metadata.
-
-    @param airavataExperimentId
-       The identifier for the requested experiment. This is returned during the create experiment step.
-
-    @return experimentMetada
-      This method will return the previously stored experiment metadata.
-
-    @throws org.apache.airavata.model.error.InvalidRequestException
-       For any incorrect forming of the request itself.
-
-    @throws org.apache.airavata.model.error.ExperimentNotFoundException
-       If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
-
-    @throws org.apache.airavata.model.error.AiravataClientException
-       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-         
-         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
-            step, then Airavata Registry will not have a provenance area setup. The client has to follow
-            gateway registration steps and retry this request.
-
-         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
-            For now this is a place holder.
-
-         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
-            is implemented, the authorization will be more substantial.
-
-    @throws org.apache.airavata.model.error.AiravataSystemException
-       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
-          rather an Airavata Administrator will be notified to take corrective action.
+    Search Experiments by application id with pagination. Results will be sorted
+    based on creation time DESC
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param applicationId
+          Application id to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
-     - airavataExperimentId
+     - gatewayId
+     - userName
+     - applicationId
+     - limit
+     - offset
     """
-    self.send_getExperiment(airavataExperimentId)
-    return self.recv_getExperiment()
+    self.send_searchExperimentsByApplicationWithPagination(gatewayId, userName, applicationId, limit, offset)
+    return self.recv_searchExperimentsByApplicationWithPagination()
 
-  def send_getExperiment(self, airavataExperimentId):
-    self._oprot.writeMessageBegin('getExperiment', TMessageType.CALL, self._seqid)
-    args = getExperiment_args()
-    args.airavataExperimentId = airavataExperimentId
+  def send_searchExperimentsByApplicationWithPagination(self, gatewayId, userName, applicationId, limit, offset):
+    self._oprot.writeMessageBegin('searchExperimentsByApplicationWithPagination', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByApplicationWithPagination_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.applicationId = applicationId
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_getExperiment(self):
+  def recv_searchExperimentsByApplicationWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = getExperiment_result()
+    result = searchExperimentsByApplicationWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
       return result.success
     if result.ire is not None:
       raise result.ire
-    if result.enf is not None:
-      raise result.enf
     if result.ace is not None:
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getExperiment failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByApplicationWithPagination failed: unknown result");
 
-  def updateExperiment(self, airavataExperimentId, experiment):
+  def searchExperimentsByStatus(self, gatewayId, userName, experimentState):
     """
-    Configure a previously created experiment with required inputs, scheduling and other quality of service
-      parameters. This method only updates the experiment object within the registry. The experiment has to be launched
-      to make it actionable by the server.
-
-    @param airavataExperimentId
-       The identifier for the requested experiment. This is returned during the create experiment step.
-
-    @param experimentConfigurationData
-       The configuration information of the experiment with application input parameters, computational resource scheduling
-         information, special input output handling and additional quality of service parameters.
-
-    @return
-      This method call does not have a return value.
-
-    @throws org.apache.airavata.model.error.InvalidRequestException
-       For any incorrect forming of the request itself.
-
-    @throws org.apache.airavata.model.error.ExperimentNotFoundException
-       If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
-
-    @throws org.apache.airavata.model.error.AiravataClientException
-       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-         
-         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
-            step, then Airavata Registry will not have a provenance area setup. The client has to follow
-            gateway registration steps and retry this request.
-
-         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
-            For now this is a place holder.
-
-         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
-            is implemented, the authorization will be more substantial.
-
-    @throws org.apache.airavata.model.error.AiravataSystemException
-       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
-          rather an Airavata Administrator will be notified to take corrective action.
+    Search Experiments by experiment status
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param experimentState
+          Experiement state to be matched
+    @deprecated
+          Instead use searchExperimentsByStatusWithPagination
 
     Parameters:
-     - airavataExperimentId
-     - experiment
+     - gatewayId
+     - userName
+     - experimentState
     """
-    self.send_updateExperiment(airavataExperimentId, experiment)
-    self.recv_updateExperiment()
+    self.send_searchExperimentsByStatus(gatewayId, userName, experimentState)
+    return self.recv_searchExperimentsByStatus()
 
-  def send_updateExperiment(self, airavataExperimentId, experiment):
-    self._oprot.writeMessageBegin('updateExperiment', TMessageType.CALL, self._seqid)
-    args = updateExperiment_args()
-    args.airavataExperimentId = airavataExperimentId
-    args.experiment = experiment
+  def send_searchExperimentsByStatus(self, gatewayId, userName, experimentState):
+    self._oprot.writeMessageBegin('searchExperimentsByStatus', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByStatus_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.experimentState = experimentState
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_updateExperiment(self):
+  def recv_searchExperimentsByStatus(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = updateExperiment_result()
+    result = searchExperimentsByStatus_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
     if result.ire is not None:
       raise result.ire
-    if result.enf is not None:
-      raise result.enf
     if result.ace is not None:
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    return
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByStatus failed: unknown result");
 
-  def updateExperimentConfiguration(self, airavataExperimentId, userConfiguration):
+  def searchExperimentsByStatusWithPagination(self, gatewayId, userName, experimentState, limit, offset):
     """
+    Search Experiments by experiment status with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param experimentState
+          Experiement state to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
+
     Parameters:
-     - airavataExperimentId
-     - userConfiguration
+     - gatewayId
+     - userName
+     - experimentState
+     - limit
+     - offset
     """
-    self.send_updateExperimentConfiguration(airavataExperimentId, userConfiguration)
-    self.recv_updateExperimentConfiguration()
+    self.send_searchExperimentsByStatusWithPagination(gatewayId, userName, experimentState, limit, offset)
+    return self.recv_searchExperimentsByStatusWithPagination()
 
-  def send_updateExperimentConfiguration(self, airavataExperimentId, userConfiguration):
-    self._oprot.writeMessageBegin('updateExperimentConfiguration', TMessageType.CALL, self._seqid)
-    args = updateExperimentConfiguration_args()
-    args.airavataExperimentId = airavataExperimentId
-    args.userConfiguration = userConfiguration
+  def send_searchExperimentsByStatusWithPagination(self, gatewayId, userName, experimentState, limit, offset):
+    self._oprot.writeMessageBegin('searchExperimentsByStatusWithPagination', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByStatusWithPagination_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.experimentState = experimentState
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_updateExperimentConfiguration(self):
+  def recv_searchExperimentsByStatusWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = updateExperimentConfiguration_result()
+    result = searchExperimentsByStatusWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
-    return
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByStatusWithPagination failed: unknown result");
 
-  def updateResourceScheduleing(self, airavataExperimentId, resourceScheduling):
+  def searchExperimentsByCreationTime(self, gatewayId, userName, fromTime, toTime):
     """
+    Search Experiments by experiment creation time
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param fromTime
+          Start time of the experiments creation time
+    @param toTime
+          End time of the  experiement creation time
+    @deprecated
+          Instead use searchExperimentsByCreationTimeWithPagination
+
     Parameters:
-     - airavataExperimentId
-     - resourceScheduling
+     - gatewayId
+     - userName
+     - fromTime
+     - toTime
     """
-    self.send_updateResourceScheduleing(airavataExperimentId, resourceScheduling)
-    self.recv_updateResourceScheduleing()
+    self.send_searchExperimentsByCreationTime(gatewayId, userName, fromTime, toTime)
+    return self.recv_searchExperimentsByCreationTime()
 
-  def send_updateResourceScheduleing(self, airavataExperimentId, resourceScheduling):
-    self._oprot.writeMessageBegin('updateResourceScheduleing', TMessageType.CALL, self._seqid)
-    args = updateResourceScheduleing_args()
-    args.airavataExperimentId = airavataExperimentId
-    args.resourceScheduling = resourceScheduling
+  def send_searchExperimentsByCreationTime(self, gatewayId, userName, fromTime, toTime):
+    self._oprot.writeMessageBegin('searchExperimentsByCreationTime', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByCreationTime_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.fromTime = fromTime
+    args.toTime = toTime
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_updateResourceScheduleing(self):
+  def recv_searchExperimentsByCreationTime(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = updateResourceScheduleing_result()
+    result = searchExperimentsByCreationTime_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
-    return
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByCreationTime failed: unknown result");
 
-  def validateExperiment(self, airavataExperimentId):
+  def searchExperimentsByCreationTimeWithPagination(self, gatewayId, userName, fromTime, toTime, limit, offset):
     """
-     *
-     * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched.
-     *
-     * @param experimentID
-     * @return sucess/failure
-     *
-    *
+    Search Experiments by experiment creation time with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param fromTime
+          Start time of the experiments creation time
+    @param toTime
+          End time of the  experiement creation time
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
-     - airavataExperimentId
+     - gatewayId
+     - userName
+     - fromTime
+     - toTime
+     - limit
+     - offset
     """
-    self.send_validateExperiment(airavataExperimentId)
-    return self.recv_validateExperiment()
+    self.send_searchExperimentsByCreationTimeWithPagination(gatewayId, userName, fromTime, toTime, limit, offset)
+    return self.recv_searchExperimentsByCreationTimeWithPagination()
 
-  def send_validateExperiment(self, airavataExperimentId):
-    self._oprot.writeMessageBegin('validateExperiment', TMessageType.CALL, self._seqid)
-    args = validateExperiment_args()
-    args.airavataExperimentId = airavataExperimentId
+  def send_searchExperimentsByCreationTimeWithPagination(self, gatewayId, userName, fromTime, toTime, limit, offset):
+    self._oprot.writeMessageBegin('searchExperimentsByCreationTimeWithPagination', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByCreationTimeWithPagination_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.fromTime = fromTime
+    args.toTime = toTime
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_validateExperiment(self):
+  def recv_searchExperimentsByCreationTimeWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = validateExperiment_result()
+    result = searchExperimentsByCreationTimeWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
       return result.success
     if result.ire is not None:
       raise result.ire
-    if result.enf is not None:
-      raise result.enf
     if result.ace is not None:
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "validateExperiment failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByCreationTimeWithPagination failed: unknown result");
 
-  def launchExperiment(self, airavataExperimentId, airavataCredStoreToken):
+  def getAllExperimentsInProject(self, projectId):
     """
-    Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
-      notifications and intermediate and output data will be subsequently available for this experiment.
-
-    @param airavataExperimentId
-       The identifier for the requested experiment. This is returned during the create experiment step.
-
-    @param airavataCredStoreToken:
-      A requirement to execute experiments within Airavata is to first register the targeted remote computational account
-        credentials with Airavata Credential Store. The administrative API (related to credential store) will return a
-        generated token associated with the registered credentials. The client has to security posses this token id and is
-        required to pass it to Airavata Server for all execution requests.
-      Note: At this point only the credential store token is required so the string is directly passed here. In future if
-        if more security credentials are enables, then the structure ExecutionSecurityParameters should be used.
-      Note: This parameter is not persisted within Airavata Registry for security reasons.
-
-    @return
-      This method call does not have a return value.
-
-    @throws org.apache.airavata.model.error.InvalidRequestException
-       For any incorrect forming of the request itself.
-
-    @throws org.apache.airavata.model.error.ExperimentNotFoundException
-       If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
-
-    @throws org.apache.airavata.model.error.AiravataClientException
-       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-         
-         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
-            step, then Airavata Registry will not have a provenance area setup. The client has to follow
-            gateway registration steps and retry this request.
-
-         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
-            For now this is a place holder.
-
-         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
-            is implemented, the authorization will be more substantial.
-
-    @throws org.apache.airavata.model.error.AiravataSystemException
-       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
-          rather an Airavata Administrator will be notified to take corrective action.
+    Get all Experiments within a Project
 
+    @param projectId
+          Identifier of the project
+    @deprecated
+          Instead use  getAllExperimentsInProjectWithPagination
 
     Parameters:
-     - airavataExperimentId
-     - airavataCredStoreToken
+     - projectId
     """
-    self.send_launchExperiment(airavataExperimentId, airavataCredStoreToken)
-    self.recv_launchExperiment()
+    self.send_getAllExperimentsInProject(projectId)
+    return self.recv_getAllExperimentsInProject()
 
-  def send_launchExperiment(self, airavataExperimentId, airavataCredStoreToken):
-    self._oprot.writeMessageBegin('launchExperiment', TMessageType.CALL, self._seqid)
-    args = launchExperiment_args()
-    args.airavataExperimentId = airavataExperimentId
-    args.airavataCredStoreToken = airavataCredStoreToken
+  def send_getAllExperimentsInProject(self, projectId):
+    self._oprot.writeMessageBegin('getAllExperimentsInProject', TMessageType.CALL, self._seqid)
+    args = getAllExperimentsInProject_args()
+    args.projectId = projectId
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_launchExperiment(self):
+  def recv_getAllExperimentsInProject(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = launchExperiment_result()
+    result = getAllExperimentsInProject_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
     if result.ire is not None:
       raise result.ire
-    if result.enf is not None:
-      raise result.enf
     if result.ace is not None:
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    if result.lve is not None:
-      raise result.lve
-    return
+    if result.pnfe is not None:
+      raise result.pnfe
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllExperimentsInProject failed: unknown result");
 
-  def getExperimentStatus(self, airavataExperimentId):
+  def getAllExperimentsInProjectWithPagination(self, projectId, limit, offset):
     """
+    Get all Experiments within project with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param projectId
+          Identifier of the project
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
+
     Parameters:
-     - airavataExperimentId
+     - projectId
+     - limit
+     - offset
     """
-    self.send_getExperimentStatus(airavataExperimentId)
-    return self.recv_getExperimentStatus()
+    self.send_getAllExperimentsInProjectWithPagination(projectId, limit, offset)
+    return self.recv_getAllExperimentsInProjectWithPagination()
 
-  def send_getExperimentStatus(self, airavataExperimentId):
-    self._oprot.writeMessageBegin('getExperimentStatus', TMessageType.CALL, self._seqid)
-    args = getExperimentStatus_args()
-    args.airavataExperimentId = airavataExperimentId
+  def send_getAllExperimentsInProjectWithPagination(self, projectId, limit, offset):
+    self._oprot.writeMessageBegin('getAllExperimentsInProjectWithPagination', TMessageType.CALL, self._seqid)
+    args = getAllExperimentsInProjectWithPagination_args()
+    args.projectId = projectId
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_getExperimentStatus(self):
+  def recv_getAllExperimentsInProjectWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = getExperimentStatus_result()
+    result = getAllExperimentsInProjectWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
       return result.success
     if result.ire is not None:
       raise result.ire
-    if result.enf is not None:
-      raise result.enf
     if result.ace is not None:
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getExperimentStatus failed: unknown result");
+    if result.pnfe is not None:
+      raise result.pnfe
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllExperimentsInProjectWithPagination failed: unknown result");
 
-  def getExperimentOutputs(self, airavataExperimentId):
+  def getAllUserExperiments(self, gatewayId, userName):
     """
+    Get all Experiments by user
+
+    @param gatewayId
+          Identifier of the requesting gateway
+    @param userName
+          Username of the requested user
+    @deprecated
+          Instead use getAllUserExperimentsWithPagination
+
     Parameters:
-     - airavataExperimentId
+     - gatewayId
+     - userName
     """
-    self.send_getExperimentOutputs(airavataExperimentId)
-    return self.recv_getExperimentOutputs()
+    self.send_getAllUserExperiments(gatewayId, userName)
+    return self.recv_getAllUserExperiments()
 
-  def send_getExperimentOutputs(self, airavataExperimentId):
-    self._oprot.writeMessageBegin('getExperimentOutputs', TMessageType.CALL, self._seqid)
-    args = getExperimentOutputs_args()
-    args.airavataExperimentId = airavataExperimentId
+  def send_getAllUserExperiments(self, gatewayId, userName):
+    self._oprot.writeMessageBegin('getAllUserExperiments', TMessageType.CALL, self._seqid)
+    args = getAllUserExperiments_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_getExperimentOutputs(self):
+  def recv_getAllUserExperiments(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = getExperimentOutputs_result()
+    result = getAllUserExperiments_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
       return result.success
     if result.ire is not None:
       raise result.ire
-    if result.enf is not None:
-      raise result.enf
     if result.ace is not None:
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getExperimentOutputs failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllUserExperiments failed: unknown result");
 
-  def getIntermediateOutputs(self, airavataExperimentId):
+  def getAllUserExperimentsWithPagination(self, gatewayId, userName, limit, offset):
     """
+    Get all Experiments by user pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requesting gateway
+    @param userName
+          Username of the requested user
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
+
     Parameters:
-     - airavataExperimentId
+     - gatewayId
+     - userName
+     - limit
+     - offset
     """
-    self.send_getIntermediateOutputs(airavataExperimentId)
-    return self.recv_getIntermediateOutputs()
+    self.send_getAllUserExperimentsWithPagination(gatewayId, userName, limit, offset)
+    return self.recv_getAllUserExperimentsWithPagination()
 
-  def send_getIntermediateOutputs(self, airavataExperimentId):
-    self._oprot.writeMessageBegin('getIntermediateOutputs', TMessageType.CALL, self._seqid)
-    args = getIntermediateOutputs_args()
-    args.airavataExperimentId = airavataExperimentId
+  def send_getAllUserExperimentsWithPagination(self, gatewayId, userName, limit, offset):
+    self._oprot.writeMessageBegin('getAllUserExperimentsWithPagination', TMessageType.CALL, self._seqid)
+    args = getAllUserExperimentsWithPagination_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_getIntermediateOutputs(self):
+  def recv_getAllUserExperimentsWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = getIntermediateOutputs_result()
+    result = getAllUserExperimentsWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
       return result.success
     if result.ire is not None:
       raise result.ire
-    if result.enf is not None:
-      raise result.enf
     if result.ace is not None:
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getIntermediateOutputs failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllUserExperimentsWithPagination failed: unknown result");
 
-  def getJobStatuses(self, airavataExperimentId):
-    """
-    Parameters:
-     - airavataExperimentId
+  def createExperiment(self, gatewayId, experiment):
     """
-    self.send_getJobStatuses(airavataExperimentId)
-    return self.recv_getJobStatuses()
+    Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
+      but inferred from the authentication header. This experiment is just a persistent place holder. The client
+      has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
+      registering the experiment in a persistent store.
 
-  def send_getJobStatuses(self, airavataExperimentId):
-    self._oprot.writeMessageBegin('getJobStatuses', TMessageType.CALL, self._seqid)
-    args = getJobStatuses_args()
-    args.airavataExperimentId = airavataExperimentId
-    args.write(self._oprot)
-    self._oprot.writeMessageEnd()
-    self._oprot.trans.flush()
+    @param basicExperimentMetadata
+       The create experiment will require the basic experiment metadata like the name and description, intended user,
+         the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
+         the ExperimentMetadata is a required field.
 
-  def recv_getJobStatuses(self):
-    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
-    if mtype == TMessageType.EXCEPTION:
-      x = TApplicationException()
-      x.read(self._iprot)
-      self._iprot.readMessageEnd()
-      raise x
-    result = getJobStatuses_result()
-    result.read(self._iprot)
-    self._iprot.readMessageEnd()
-    if result.success is not None:
-      return result.success
-    if result.ire is not None:
-      raise result.ire
-    if result.enf is not None:
-      raise result.enf
-    if result.ace is not None:
-      raise result.ace
-    if result.ase is not None:
-      raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getJobStatuses failed: unknown result");
+    @return
+      The server-side generated airavata experiment globally unique identifier.
 
-  def getJobDetails(self, airavataExperimentId):
-    """
-    Parameters:
-     - airavataExperimentId
-    """
-    self.send_getJobDetails(airavataExperimentId)
-    return self.recv_getJobDetails()
+    @throws org.apache.airavata.model.error.InvalidRequestException
+       For any incorrect forming of the request itself.
 
-  def send_getJobDetails(self, airavataExperimentId):
-    self._oprot.writeMessageBegin('getJobDetails', TMessageType.CALL, self._seqid)
-    args = getJobDetails_args()
-    args.airavataExperimentId = airavataExperimentId
-    args.write(self._oprot)
-    self._oprot.writeMessageEnd()
-    self._oprot.trans.flush()
+    @throws org.apache.airavata.model.error.AiravataClientException
+       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+
+         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+            step, then Airavata Registry will not have a provenance area setup. The client has to follow
+            gateway registration steps and retry this request.
+
+         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+            For now this is a place holder.
+
+         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+            is implemented, the authorization will be more substantial.
+
+    @throws org.apache.airavata.model.error.AiravataSystemException
+       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          rather an Airavata Administrator will be notified to take corrective action.
 
-  def recv_getJobDetails(self):
-    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
-    if mtype == TMessageType.EXCEPTION:
-      x = TApplicationException()
-      x.read(self._iprot)
-      self._iprot.readMessageEnd()
-      raise x
-    result = getJobDetails_result()
-    result.read(self._iprot)
-    self._iprot.readMessageEnd()
-    if result.success is not None:
-      return result.success
-    if result.ire is not None:
-      raise result.ire
-    if result.enf is not None:
-      raise result.enf
-    if result.ace is not None:
-      raise result.ace
-    if result.ase is not None:
-      raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getJobDetails failed: unknown result");
 
-  def getDataTransferDetails(self, airavataExperimentId):
-    """
     Parameters:
-     - airavataExperimentId
+     - gatewayId
+     - experiment
     """
-    self.send_getDataTransferDetails(airavataExperimentId)
-    return self.recv_getDataTransferDetails()
+    self.send_createExperiment(gatewayId, experiment)
+    return self.recv_createExperiment()
 
-  def send_getDataTransferDetails(self, airavataExperimentId):
-    self._oprot.writeMessageBegin('getDataTransferDetails', TMessageType.CALL, self._seqid)
-    args = getDataTransferDetails_args()
-    args.airavataExperimentId = airavataExperimentId
+  def send_createExperiment(self, gatewayId, experiment):
+    self._oprot.writeMessageBegin('createExperiment', TMessageType.CALL, self._seqid)
+    args = createExperiment_args()
+    args.gatewayId = gatewayId
+    args.experiment = experiment
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_getDataTransferDetails(self):
+  def recv_createExperiment(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = getDataTransferDetails_result()
+    result = createExperiment_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
       return result.success
     if result.ire is not None:
       raise result.ire
-    if result.enf is not None:
-      raise result.enf
     if result.ace is not None:
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getDataTransferDetails failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "createExperiment failed: unknown result");
 
-  def cloneExperiment(self, existingExperimentID, newExperimentName):
+  def getExperiment(self, airavataExperimentId):
     """
-    Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata.
-      The client has to subsequently update this configuration if needed and launch the cloned experiment.
-
-    @param newExperimentName
-       experiment name that should be used in the cloned experiment
+    Fetch previously created experiment metadata.
 
-    @param updatedExperiment
-       Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
-         the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
-         should be shared public by default.
+    @param airavataExperimentId
+       The identifier for the requested experiment. This is returned during the create experiment step.
 
-    @return
-      The server-side generated airavata experiment globally unique identifier for the newly cloned experiment.
+    @return experimentMetada
+      This method will return the previously stored experiment metadata.
 
     @throws org.apache.airavata.model.error.InvalidRequestException
        For any incorrect forming of the request itself.
@@ -3457,29 +3834,27 @@ class Client(Iface):
 
 
     Parameters:
-     - existingExperimentID
-     - newExperimentName
+     - airavataExperimentId
     """
-    self.send_cloneExperiment(existingExperimentID, newExperimentName)
-    return self.recv_cloneExperiment()
+    self.send_getExperiment(airavataExperimentId)
+    return self.recv_getExperiment()
 
-  def send_cloneExperiment(self, existingExperimentID, newExperimentName):
-    self._oprot.writeMessageBegin('cloneExperiment', TMessageType.CALL, self._seqid)
-    args = cloneExperiment_args()
-    args.existingExperimentID = existingExperimentID
-    args.newExperimentName = newExperimentName
+  def send_getExperiment(self, airavataExperimentId):
+    self._oprot.writeMessageBegin('getExperiment', TMessageType.CALL, self._seqid)
+    args = getExperiment_args()
+    args.airavataExperimentId = airavataExperimentId
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_cloneExperiment(self):
+  def recv_getExperiment(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = cloneExperiment_result()
+    result = getExperiment_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -3492,15 +3867,21 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "cloneExperiment failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getExperiment failed: unknown result");
 
-  def terminateExperiment(self, airavataExperimentId, tokenId):
+  def updateExperiment(self, airavataExperimentId, experiment):
     """
-    Terminate a running experiment.
+    Configure a previously created experiment with required inputs, scheduling and other quality of service
+      parameters. This method only updates the experiment object within the registry. The experiment has to be launched
+      to make it actionable by the server.
 
     @param airavataExperimentId
        The identifier for the requested experiment. This is returned during the create experiment step.
 
+    @param experimentConfigurationData
+       The configuration information of the experiment with application input parameters, computational resource scheduling
+         information, special input output handling and additional quality of service parameters.
+
     @return
       This method call does not have a return value.
 
@@ -3530,28 +3911,28 @@ class Client(Iface):
 
     Parameters:
      - airavataExperimentId
-     - tokenId
+     - experiment
     """
-    self.send_terminateExperiment(airavataExperimentId, tokenId)
-    self.recv_terminateExperiment()
+    self.send_updateExperiment(airavataExperimentId, experiment)
+    self.recv_updateExperiment()
 
-  def send_terminateExperiment(self, airavataExperimentId, tokenId):
-    self._oprot.writeMessageBegin('terminateExperiment', TMessageType.CALL, self._seqid)
-    args = terminateExperiment_args()
+  def send_updateExperiment(self, airavataExperimentId, experiment):
+    self._oprot.writeMessageBegin('updateExperiment', TMessageType.CALL, self._seqid)
+    args = updateExperiment_args()
     args.airavataExperimentId = airavataExperimentId
-    args.tokenId = tokenId
+    args.experiment = experiment
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_terminateExperiment(self):
+  def recv_updateExperiment(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = terminateExperiment_result()
+    result = updateExperiment_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.ire is not None:
@@ -3564,538 +3945,605 @@ class Client(Iface):
       raise result.ase
     return
 
-  def registerApplicationModule(self, gatewayId, applicationModule):
+  def updateExperimentConfiguration(self, airavataExperimentId, userConfiguration):
     """
-    Register a Application Module.
-
-    @param applicationModule
-       Application Module Object created from the datamodel.
-
-    @return appModuleId
-      Returns a server-side generated airavata appModule globally unique identifier.
-
-
     Parameters:
-     - gatewayId
-     - applicationModule
+     - airavataExperimentId
+     - userConfiguration
     """
-    self.send_registerApplicationModule(gatewayId, applicationModule)
-    return self.recv_registerApplicationModule()
+    self.send_updateExperimentConfiguration(airavataExperimentId, userConfiguration)
+    self.recv_updateExperimentConfiguration()
 
-  def send_registerApplicationModule(self, gatewayId, applicationModule):
-    self._oprot.writeMessageBegin('registerApplicationModule', TMessageType.CALL, self._seqid)
-    args = registerApplicationModule_args()
-    args.gatewayId = gatewayId
-    args.applicationModule = applicationModule
+  def send_updateExperimentConfiguration(self, airavataExperimentId, userConfiguration):
+    self._oprot.writeMessageBegin('updateExperimentConfiguration', TMessageType.CALL, self._seqid)
+    args = updateExperimentConfiguration_args()
+    args.airavataExperimentId = airavataExperimentId
+    args.userConfiguration = userConfiguration
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_registerApplicationModule(self):
+  def recv_updateExperimentConfiguration(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = registerApplicationModule_result()
+    result = updateExperimentConfiguration_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
-    if result.success is not None:
-      return result.success
-    if result.ire is not None:
-      raise result.ire
-    if result.ace is not None:
-      raise result.ace
-    if result.ase is not None:
-      raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "registerApplicationModule failed: unknown result");
+    return
 
-  def getApplicationModule(self, appModuleId):
+  def updateResourceScheduleing(self, airavataExperimentId, resourceScheduling):
     """
-    Fetch a Application Module.
-
-    @param appModuleId
-      The identifier for the requested application module
-
-    @return applicationModule
-      Returns a application Module Object.
-
-
     Parameters:
-     - appModuleId
+     - airavataExperimentId
+     - resourceScheduling
     """
-    self.send_getApplicationModule(appModuleId)
-    return self.recv_getApplicationModule()
+    self.send_updateResourceScheduleing(airavataExperimentId, resourceScheduling)
+    self.recv_updateResourceScheduleing()
 
-  def send_getApplicationModule(self, appModuleId):
-    self._oprot.writeMessageBegin('getApplicationModule', TMessageType.CALL, self._seqid)
-    args = getApplicationModule_args()
-    args.appModuleId = appModuleId
+  def send_updateResourceScheduleing(self, airavataExperimentId, resourceScheduling):
+    self._oprot.writeMessageBegin('updateResourceScheduleing', TMessageType.CALL, self._seqid)
+    args = updateResourceScheduleing_args()
+    args.airavataExperimentId = airavataExperimentId
+    args.resourceScheduling = resourceScheduling
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_getApplicationModule(self):
+  def recv_updateResourceScheduleing(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = getApplicationModule_result()
+    result = updateResourceScheduleing_result()
+    result.read(self._iprot)
+    self._iprot.readMessageEnd()
+    return
+
+  def validateExperiment(self, airavataExperimentId):
+    """
+     *
+     * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched.
+     *
+     * @param experimentID
+     * @return sucess/failure
+     *
+    *
+
+    Parameters:
+     - airavataExperimentId
+    """
+    self.send_validateExperiment(airavataExperimentId)
+    return self.recv_validateExperiment()
+
+  def send_validateExperiment(self, airavataExperimentId):
+    self._oprot.writeMessageBegin('validateExperiment', TMessageType.CALL, self._seqid)
+    args = validateExperiment_args()
+    args.airavataExperimentId = airavataExperimentId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_validateExperiment(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = validateExperiment_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
       return result.success
     if result.ire is not None:
       raise result.ire
+    if result.enf is not None:
+      raise result.enf
     if result.ace is not None:
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getApplicationModule failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "validateExperiment failed: unknown result");
 
-  def updateApplicationModule(self, appModuleId, applicationModule):
+  def launchExperiment(self, airavataExperimentId, airavataCredStoreToken):
     """
-    Update a Application Module.
+    Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
+      notifications and intermediate and output data will be subsequently available for this experiment.
 
-    @param appModuleId
-      The identifier for the requested application module to be updated.
+    @param airavataExperimentId
+       The identifier for the requested experiment. This is returned during the create experiment step.
 
-    @param applicationModule
-       Application Module Object created from the datamodel.
+    @param airavataCredStoreToken:
+      A requirement to execute experiments within Airavata is to first register the targeted remote computational account
+    

<TRUNCATED>