/**
   * Gets execution report
   *
   * @param executionID execution id received when test case was submitted for execution
   * @return ProjectResultReport execution result
   */
  @Override
  public ProjectResultReport getExecutionStatus(String executionID, HttpBasicAuth auth)
      throws ApiException {
    // verify the required parameter 'executionID' is set
    if (executionID == null) {
      throw new ApiException(
          400, "Missing the required parameter 'executionID' when calling getExecutionStatus");
    }
    setAuthentication(auth);

    // create path and map variables
    String path = ServerDefaults.SERVICE_BASE_PATH + "/executions/" + executionID + "/status";

    return invokeAPI(
        path, TestSteps.HttpMethod.GET.name(), null, APPLICATION_JSON, new ArrayList<Pair>());
  }
  /**
   * Returns last executions
   *
   * @return ProjectResultReports
   */
  @Override
  public ProjectResultReports getExecutions(HttpBasicAuth auth) throws ApiException {
    String path = ServerDefaults.SERVICE_BASE_PATH + "/executions";
    setAuthentication(auth);
    List<Pair> queryParams = new ArrayList<>();
    Map<String, File> formParams = new HashMap<>();

    GenericType returnType = new GenericType<ProjectResultReports>() {};
    return (ProjectResultReports)
        apiClient.invokeAPI(
            path,
            TestSteps.HttpMethod.GET.name(),
            queryParams,
            null,
            formParams,
            APPLICATION_JSON,
            APPLICATION_JSON,
            getAuthNames(),
            returnType);
  }
  /**
   * Gets transaction log for the provided execution id and transaction id
   *
   * @param executionID execution id
   * @param transactionId transaction id
   * @return HarLogRoot
   */
  public HarLogRoot getTransactionLog(String executionID, String transactionId, HttpBasicAuth auth)
      throws ApiException {
    if (executionID == null) {
      throw new ApiException(
          400, "Missing the required parameter 'executionID' when calling cancelExecution");
    }
    setAuthentication(auth);
    String path =
        ServerDefaults.SERVICE_BASE_PATH
            + "/executions/"
            + executionID
            + "/transactions/"
            + transactionId;

    return getTransactionLog(
        path,
        TestSteps.HttpMethod.GET.name(),
        null,
        APPLICATION_JSON,
        new ArrayList<Pair>(),
        new HashMap<String, File>());
  }