/// <summary>
        /// Pools the status of the job until completion or timeout
        /// </summary>
        /// <param name="JobID"></param>
        /// <param name="poolingInternvalInMs"></param>
        /// <param name="numberOfPoolingAttempts"></param>
        /// <returns>the JobInfoResponse  or throws timeout exception</returns>
        public GetBulkJobInfoResponse WaitForBulkJobToComplete(string JobID, int poolingInternvalInMs = 1000, int numberOfPoolingAttempts = 60 *5)
        {
            bool bulkUpsertCompleted = false;
            int  getJobInfoAttempts  = 0;
            bool poolingTimeout      = false;

            GetBulkJobInfoResponse GetBulkJobInfoResponse = null;

            while (bulkUpsertCompleted == false && poolingTimeout == false)
            {
                if (getJobInfoAttempts > 0)
                {
                    Thread.Sleep(poolingInternvalInMs);
                }

                GetBulkJobInfoResponse = GetBulkJobInfo(JobID);

                bulkUpsertCompleted = GetBulkJobInfoResponse.Status != "Not Started" && GetBulkJobInfoResponse.Status != "In Progress";

                getJobInfoAttempts++;

                poolingTimeout = (getJobInfoAttempts == numberOfPoolingAttempts);
            }


            if (poolingTimeout == true)
            {
                throw new PepperiException("Bulk Upload did not complete within " + poolingInternvalInMs * numberOfPoolingAttempts + " ms");
            }

            //bulkUpsertCompleted
            return(GetBulkJobInfoResponse);
        }
        public GetBulkJobInfoResponse GetBulkJobInfo(string JobID)
        {
            string RequestUri = string.Format("bulk/jobinfo/{0}", HttpUtility.UrlEncode(JobID));
            Dictionary <string, string> dicQueryStringParameters = new Dictionary <string, string>();
            string accept = "application/json";

            PepperiHttpClient         PepperiHttpClient         = new PepperiHttpClient(this.Authentication, this.Logger);
            PepperiHttpClientResponse PepperiHttpClientResponse = PepperiHttpClient.Get(
                ApiBaseUri,
                RequestUri,
                dicQueryStringParameters,
                accept);

            PepperiHttpClient.HandleError(PepperiHttpClientResponse);

            GetBulkJobInfoResponse result = PepperiJsonSerializer.DeserializeOne <GetBulkJobInfoResponse>(PepperiHttpClientResponse.Body);   //Api returns single object

            return(result);
        }