Builds optional query string parameters for pagination.
 /// <summary>
 /// <para>Gets a list of all Attachments that are in the Discussion</para>
 /// <para>It mirrors To the following Smartsheet REST API method: <br />
 /// GET /sheets/{sheetId}/discussions/{discussionId}/attachments</para>
 /// </summary>
 /// <param name="sheetId"> the sheetId </param>
 /// <param name="discussionId"> the discussion Id </param>
 /// <param name="paging"> the paging </param>
 /// <returns> list of all Attachments that are in the Discussion. </returns>
 /// <exception cref="System.InvalidOperationException"> if any argument is null or empty string </exception>
 /// <exception cref="InvalidRequestException"> if there is any problem with the REST API request </exception>
 /// <exception cref="AuthorizationException"> if there is any problem with  the REST API authorization (access token) </exception>
 /// <exception cref="ResourceNotFoundException"> if the resource cannot be found </exception>
 /// <exception cref="ServiceUnavailableException"> if the REST API service is not available (possibly due To rate limiting) </exception>
 /// <exception cref="SmartsheetException"> if there is any other error during the operation </exception>
 public virtual PaginatedResult<Attachment> ListAttachments(long sheetId, long discussionId, PaginationParameters paging)
 {
     StringBuilder path = new StringBuilder("sheets/" + sheetId + "/discussions/" + discussionId + "/attachments");
     if (paging != null)
     {
         path.Append(paging.ToQueryString());
     }
     return this.ListResourcesWithWrapper<Attachment>(path.ToString());
 }
 /// <summary>
 /// <para>Gets the cell modification history.</para>
 /// <para>It mirrors To the following Smartsheet REST API method: GET /sheets/{sheetId}/rows/{rowId}/columns/{columnId}/history</para>
 /// <remarks><para>This operation supports pagination of results. For more information, see Paging.</para>
 /// <para>This is a resource-intensive operation and incurs 10 additional requests against the rate limit.</para></remarks>
 /// </summary>
 /// <param name="sheetId"> the sheet Id </param>
 /// <param name="rowId"> the row Id </param>
 /// <param name="columnId"> the column id</param>
 /// <param name="include"> the elements to include in the response </param>
 /// <param name="paging"> the pagination </param>
 /// <returns> the row object </returns>
 /// <exception cref="System.InvalidOperationException"> if any argument is null or empty string </exception>
 /// <exception cref="InvalidRequestException"> if there is any problem with the REST API request </exception>
 /// <exception cref="AuthorizationException"> if there is any problem with  the REST API authorization (access token) </exception>
 /// <exception cref="ResourceNotFoundException"> if the resource cannot be found </exception>
 /// <exception cref="ServiceUnavailableException"> if the REST API service is not available (possibly due To rate limiting) </exception>
 /// <exception cref="SmartsheetException"> if there is any other error during the operation </exception>
 public virtual PaginatedResult<CellHistory> GetCellHistory(long sheetId, long rowId, long columnId, IEnumerable<CellInclusion> include, PaginationParameters paging)
 {
     IDictionary<string, string> parameters = new Dictionary<string, string>();
     if (paging != null)
     {
         parameters = paging.toDictionary();
     }
     if (include != null)
     {
         parameters.Add("include", Util.QueryUtil.GenerateCommaSeparatedList(include));
     }
     return this.ListResourcesWithWrapper<CellHistory>(QueryUtil.GenerateUrl("sheets/" + sheetId + "/rows/" + rowId + "/columns/" + columnId + "/history", parameters));
 }
        /// <summary>
        /// <para>Gets the list of all Webhooks that the user owns (if a user generated token was used to make the request)
        /// or the list of all Webhooks associated with the third-party app (if a third-party app made the request). Items 
        /// in the response are ordered by API Client name, then Webhook name, then creation date.</para>
        /// 
        /// <para>It mirrors To the following Smartsheet REST API method: GET /webhooks</para>
        /// </summary>
        /// <returns>IndexResult object containing an array of Webhook objects</returns>
        /// <exception cref="System.InvalidOperationException"> if any argument is null or empty string </exception>
        /// <exception cref="InvalidRequestException"> if there is any problem with the REST API request </exception>
        /// <exception cref="AuthorizationException"> if there is any problem with  the REST API authorization (access token) </exception>
        /// <exception cref="ResourceNotFoundException"> if the resource cannot be found </exception>
        /// <exception cref="ServiceUnavailableException"> if the REST API service is not available (possibly due To rate limiting) </exception>
        /// <exception cref="SmartsheetException"> if there is any other error during the operation </exception>
        public virtual PaginatedResult<Webhook> ListWebhooks(PaginationParameters paging)
        {
            IDictionary<string, string> parameters = new Dictionary<string, string>();
            if (paging != null)
            {
                parameters = paging.toDictionary();
            }

            return this.ListResourcesWithWrapper<Webhook>("webhooks" + QueryUtil.GenerateUrl(null, parameters));
        }
 /// <summary>
 /// <para>Gets a list of all Update Requests that have future schedules associated with the specified Sheet.</para>
 /// 
 /// <para>It mirrors To the following Smartsheet REST API method: GET /sheets/{sheetId}/updaterequests</para>
 /// </summary>
 /// <returns> A list of all UpdateRequests (note that an empty list will be returned if there are none). </returns>
 /// <exception cref="System.InvalidOperationException"> if any argument is null or empty string </exception>
 /// <exception cref="InvalidRequestException"> if there is any problem with the REST API request </exception>
 /// <exception cref="AuthorizationException"> if there is any problem with  the REST API authorization (access token) </exception>
 /// <exception cref="ResourceNotFoundException"> if the resource cannot be found </exception>
 /// <exception cref="ServiceUnavailableException"> if the REST API service is not available (possibly due To rate limiting) </exception>
 /// <exception cref="SmartsheetException"> if there is any other error during the operation </exception>
 public virtual PaginatedResult<UpdateRequest> ListUpdateRequests(long sheetId, PaginationParameters paging)
 {
     IDictionary<string, string> parameters = new Dictionary<string, string>();
     if (paging != null)
     {
         parameters = paging.toDictionary();
     }
     return this.ListResourcesWithWrapper<UpdateRequest>("sheets/" + sheetId + "/updaterequests" + QueryUtil.GenerateUrl(null, parameters));
 }
 /// <summary>
 /// <para>Gets a list of all Discussions associated with the specified Row.</para>
 /// <para>It mirrors To the following Smartsheet REST API method: GET /sheets/{sheetId}/rows/{rowId}/discussions</para>
 /// <remarks>This operation supports pagination of results. For more information, see Paging.</remarks>
 /// </summary>
 /// <param name="sheetId"> the sheet Id </param>
 /// <param name="rowId"> the row Id </param>
 /// <param name="include">elements to include in response</param>
 /// <param name="paging">the pagination</param>
 /// <returns> list of all Discussions </returns>
 /// <exception cref="System.InvalidOperationException"> if any argument is null or empty string </exception>
 /// <exception cref="InvalidRequestException"> if there is any problem with the REST API request </exception>
 /// <exception cref="AuthorizationException"> if there is any problem with  the REST API authorization (access token) </exception>
 /// <exception cref="ResourceNotFoundException"> if the resource cannot be found </exception>
 /// <exception cref="ServiceUnavailableException"> if the REST API service is not available (possibly due To rate limiting) </exception>
 /// <exception cref="SmartsheetException"> if there is any other error during the operation </exception>
 public virtual PaginatedResult<Discussion> ListDiscussions(long sheetId, long rowId, IEnumerable<DiscussionInclusion> include, PaginationParameters paging)
 {
     IDictionary<string, string> parameters = new Dictionary<string, string>();
     if (paging != null)
     {
         parameters = paging.toDictionary();
     }
     parameters.Add("include", Util.QueryUtil.GenerateCommaSeparatedList(include));
     return this.ListResourcesWithWrapper<Discussion>("sheets/" + sheetId + "/rows/" + rowId + "/discussions" + Util.QueryUtil.GenerateUrl(null, parameters));
 }
 /// <summary>
 /// <para>Gets a list of all Columns belonging to the Sheet specified in the URL.</para>
 /// <para>It mirrors To the following Smartsheet REST API method: GET /sheets/{sheetId}/columns</para>
 /// <remarks>This operation supports pagination of results. For more information, see Paging.</remarks>
 /// </summary>
 /// <param name="sheetId"> the sheet Id </param>
 /// <param name="include">elements to include in response</param>
 /// <param name="paging">the paging</param>
 /// <returns> the list of Columns (note that an empty list will be returned if there is none) </returns>
 /// <exception cref="System.InvalidOperationException"> if any argument is null or empty string </exception>
 /// <exception cref="InvalidRequestException"> if there is any problem with the REST API request </exception>
 /// <exception cref="AuthorizationException"> if there is any problem with  the REST API authorization (access token) </exception>
 /// <exception cref="ResourceNotFoundException"> if the resource cannot be found </exception>
 /// <exception cref="ServiceUnavailableException"> if the REST API service is not available (possibly due To rate limiting) </exception>
 /// <exception cref="SmartsheetException"> if there is any other error during the operation </exception>
 public virtual PaginatedResult<Column> ListColumns(long sheetId, IEnumerable<ColumnInclusion> include, PaginationParameters paging)
 {
     StringBuilder path = new StringBuilder("sheets/" + sheetId + "/columns");
     IDictionary<string, string> parameters = new Dictionary<string, string>();
     if (paging != null)
     {
         parameters = paging.toDictionary();
     } if (include != null)
     {
         parameters.Add("include", QueryUtil.GenerateCommaSeparatedList(include));
     }
     return this.ListResourcesWithWrapper<Column>(QueryUtil.GenerateUrl("sheets/" + sheetId + "/columns", parameters));
 }
 /// <summary>
 /// <para>Gets a list of the user’s Smartsheet Contacts.</para>
 /// <para>It mirrors To the following Smartsheet REST API method:
 /// POST GET /contacts</para>
 /// </summary>
 /// <param name="paging"> the pagination info </param>
 /// <returns> The list of Contact objects </returns>
 /// <exception cref="System.InvalidOperationException"> if any argument is null or empty string </exception>
 /// <exception cref="InvalidRequestException"> if there is any problem with the REST API request </exception>
 /// <exception cref="AuthorizationException"> if there is any problem with  the REST API authorization (access token) </exception>
 /// <exception cref="ResourceNotFoundException"> if the resource cannot be found </exception>
 /// <exception cref="ServiceUnavailableException"> if the REST API service is not available (possibly due To rate limiting) </exception>
 /// <exception cref="SmartsheetException"> if there is any other error during the operation </exception>
 public virtual PaginatedResult<Contact> ListContacts(PaginationParameters paging)
 {
     StringBuilder path = new StringBuilder("contacts");
     if (paging != null)
     {
         path.Append(paging.ToQueryString());
     }
     return ListResourcesWithWrapper<Contact>(path.ToString());
 }
        /// <summary>
        /// <para>Gets the list of all Sights that the User has access to.</para>
        /// 
        /// <para>It mirrors To the following Smartsheet REST API method: GET /sights</para>
        /// </summary>
        /// <returns>IndexResult object containing an array of Sight objects limited to the following attributes:
        ///		id, name, accessLevel, permalink, createdAt, modifiedAt 
        /// </returns>
        /// <exception cref="System.InvalidOperationException"> if any argument is null or empty string </exception>
        /// <exception cref="InvalidRequestException"> if there is any problem with the REST API request </exception>
        /// <exception cref="AuthorizationException"> if there is any problem with  the REST API authorization (access token) </exception>
        /// <exception cref="ResourceNotFoundException"> if the resource cannot be found </exception>
        /// <exception cref="ServiceUnavailableException"> if the REST API service is not available (possibly due To rate limiting) </exception>
        /// <exception cref="SmartsheetException"> if there is any other error during the operation </exception>
        public virtual PaginatedResult<Sight> ListSights(PaginationParameters paging, DateTime? modifiedSince)
        {
            IDictionary<string, string> parameters = new Dictionary<string, string>();
            if (paging != null)
            {
                parameters = paging.toDictionary();
            }

            return this.ListResourcesWithWrapper<Sight>("sights" + QueryUtil.GenerateUrl(null, parameters));
        }
        /// <summary>
        /// <para>Gets the list of all Reports that the User has access to, in alphabetical order, by name.</para>
        /// <para>It mirrors To the following Smartsheet REST API method: GET /reports</para>
        /// </summary>
        /// <param name="paging">the pagination</param>
        /// <returns>A list of Report objects limited to the following attributes:
        /// <list type="bullet">
        /// <item><description>id</description></item>
        /// <item><description>name</description></item>
        /// <item><description>accessLevel</description></item>
        /// <item><description>permalink</description></item>
        /// </list></returns>
        /// <exception cref="System.InvalidOperationException"> if any argument is null or empty string </exception>
        /// <exception cref="InvalidRequestException"> if there is any problem with the REST API request </exception>
        /// <exception cref="AuthorizationException"> if there is any problem with  the REST API authorization (access token) </exception>
        /// <exception cref="ResourceNotFoundException"> if the resource cannot be found </exception>
        /// <exception cref="ServiceUnavailableException"> if the REST API service is not available (possibly due To rate limiting) </exception>
        /// <exception cref="SmartsheetException"> if there is any other error during the operation </exception>
        public virtual PaginatedResult<Report> ListReports(PaginationParameters paging, DateTime? modifiedSince)
        {
            IDictionary<string, string> parameters = new Dictionary<string, string>();
            if (paging != null)
            {
                parameters = paging.toDictionary();
            }
            if (modifiedSince != null)
            {
                parameters.Add("modifiedSince", ((DateTime)modifiedSince).ToUniversalTime().ToString("o"));
            }

            return this.ListResourcesWithWrapper<Report>("reports" + QueryUtil.GenerateUrl(null, parameters));
        }
        /// <summary>
        /// <para>Gets the list of all Sheets that the User has access to, in alphabetical order, by name.</para>
        /// 
        /// <para>It mirrors To the following Smartsheet REST API method: GET /Sheets</para>
        /// </summary>
        /// <returns> A list of all Sheets (note that an empty list will be returned if there are none). </returns>
        /// <exception cref="System.InvalidOperationException"> if any argument is null or empty string </exception>
        /// <exception cref="InvalidRequestException"> if there is any problem with the REST API request </exception>
        /// <exception cref="AuthorizationException"> if there is any problem with  the REST API authorization (access token) </exception>
        /// <exception cref="ResourceNotFoundException"> if the resource cannot be found </exception>
        /// <exception cref="ServiceUnavailableException"> if the REST API service is not available (possibly due To rate limiting) </exception>
        /// <exception cref="SmartsheetException"> if there is any other error during the operation </exception>
        public virtual PaginatedResult<Sheet> ListSheets(IEnumerable<SheetInclusion> includes, PaginationParameters paging, DateTime? modifiedSince)
        {
            IDictionary<string, string> parameters = new Dictionary<string, string>();
            if (paging != null)
            {
                parameters = paging.toDictionary();
            }
            if (includes != null)
            {
                parameters.Add("include", QueryUtil.GenerateCommaSeparatedList(includes));
            }
            if (modifiedSince != null)
            {
                parameters.Add("modifiedSince", ((DateTime)modifiedSince).ToUniversalTime().ToString("o"));
            }

            return this.ListResourcesWithWrapper<Sheet>("sheets" + QueryUtil.GenerateUrl(null, parameters));
        }
 /// <summary>
 /// <para>List all Sheets in the organization.</para>
 /// <para>It mirrors To the following Smartsheet REST API method: GET /users/sheets</para>
 /// </summary>
 /// <returns> the list of all Sheets (note that an empty list will be returned if there are none) </returns>
 /// <exception cref="System.InvalidOperationException"> if any argument is null or empty string </exception>
 /// <exception cref="InvalidRequestException"> if there is any problem with the REST API request </exception>
 /// <exception cref="AuthorizationException"> if there is any problem with  the REST API authorization (access token) </exception>
 /// <exception cref="ResourceNotFoundException"> if the resource cannot be found </exception>
 /// <exception cref="ServiceUnavailableException"> if the REST API service is not available (possibly due To rate limiting) </exception>
 /// <exception cref="SmartsheetException"> if there is any other error during the operation </exception>
 public virtual PaginatedResult<Sheet> ListOrganizationSheets(PaginationParameters paging)
 {
     StringBuilder path = new StringBuilder("users/sheets");
     if (paging != null)
     {
         path.Append(paging.ToQueryString());
     }
     return this.ListResourcesWithWrapper<Sheet>(path.ToString());
 }
        /// <summary>
        /// <para>List shares of a given object.</para>
        /// <para>It mirrors To the following Smartsheet REST API method:<br />
        /// GET /workspaces/{workspaceId}/shares <br />
        /// GET /sheets/{sheetId}/shares <br />
        /// GET /sights/{sightId}/shares <br />
        /// GET /reports/{reportId}/shares</para>
        /// </summary>
        /// <param name="objectId"> the object Id </param>
        /// <param name="paging"> the pagination request </param>
        /// <param name="shareScope"> when specified with a value of <see cref="ShareScope.Worksapce"/>, the response will contain both item-level shares (scope=‘ITEM’) and workspace-level shares (scope='WORKSPACE’). </param>
        /// <returns> the list of Share objects (note that an empty list will be returned if there is none). </returns>
        /// <exception cref="System.InvalidOperationException"> if any argument is null or empty string </exception>
        /// <exception cref="InvalidRequestException"> if there is any problem with the REST API request </exception>
        /// <exception cref="AuthorizationException"> if there is any problem with  the REST API authorization (access token) </exception>
        /// <exception cref="ResourceNotFoundException"> if the resource cannot be found </exception>
        /// <exception cref="ServiceUnavailableException"> if the REST API service is not available (possibly due To rate limiting) </exception>
        /// <exception cref="SmartsheetException"> if there is any other error during the operation </exception>
        public virtual PaginatedResult<Share> ListShares(long objectId, PaginationParameters paging, ShareScope shareScope)
        {
            IDictionary<string, string> parameters = new Dictionary<string, string>();
            if (paging != null)
            {
                parameters = paging.toDictionary();
            }
            if (ShareScope.Workspace.Equals(shareScope))
            {
                parameters.Add("include", "workspaceShares");
            }

            return this.ListResourcesWithWrapper<Share>(MasterResourceType + "/" + objectId + "/shares" + QueryUtil.GenerateUrl(null, parameters));
        }
 /// <summary>
 /// <para>Gets a list of all of the user’s Favorite items.</para>
 /// <para>It mirrors To the following Smartsheet REST API method: GET /favorites</para>
 /// <remarks>This operation supports pagination of results. For more information, see Paging.</remarks>
 /// </summary>
 /// <param name="paging">the pagination</param>
 /// <returns> A list of all Favorites (note that an empty list will be returned if there are none). </returns>
 /// <exception cref="System.InvalidOperationException"> if any argument is null or empty string </exception>
 /// <exception cref="InvalidRequestException"> if there is any problem with the REST API request </exception>
 /// <exception cref="AuthorizationException"> if there is any problem with  the REST API authorization (access token) </exception>
 /// <exception cref="ResourceNotFoundException"> if the resource cannot be found </exception>
 /// <exception cref="ServiceUnavailableException"> if the REST API service is not available (possibly due To rate limiting) </exception>
 /// <exception cref="SmartsheetException"> if there is any other error during the operation </exception>
 public virtual PaginatedResult<Favorite> ListFavorites(PaginationParameters paging)
 {
     StringBuilder path = new StringBuilder("favorites");
     if (paging != null)
     {
         path.Append(paging.ToQueryString());
     }
     return this.ListResourcesWithWrapper<Favorite>(path.ToString());
 }