private static string GenListAdGroupsQueryData(ListAdGroupsParameter parameter)
        {
            var queryData = new List <string>();

            if (parameter.StartIndex.HasValue)
            {
                queryData.Add($"startIndex={parameter.StartIndex.Value}");
            }
            if (parameter.Count.HasValue)
            {
                queryData.Add($"count={parameter.Count}");
            }
            if (!string.IsNullOrWhiteSpace(parameter.CampaignType))
            {
                queryData.Add($"campaignType={parameter.CampaignType}");
            }
            if (!string.IsNullOrWhiteSpace(parameter.CampaignIdFilter))
            {
                queryData.Add($"campaignIdFilter={parameter.CampaignIdFilter}");
            }
            if (!string.IsNullOrWhiteSpace(parameter.AdGroupIdFilter))
            {
                queryData.Add($"adGroupIdFilter={parameter.AdGroupIdFilter}");
            }
            if (!string.IsNullOrWhiteSpace(parameter.StateFilter))
            {
                queryData.Add($"stateFilter={parameter.StateFilter}");
            }
            if (!string.IsNullOrWhiteSpace(parameter.Name))
            {
                queryData.Add($"name={parameter.Name}");
            }

            return(string.Join("&", queryData));
        }
        /// <summary>
        /// Retrieves a list of ad groups satisfying optional criteria.
        /// </summary>
        /// <param name="parameter"></param>
        /// <returns></returns>
        public List <AdGroupInfo> ListAdGroups(ListAdGroupsParameter parameter = null)
        {
            var query = string.Empty;

            if (parameter != null)
            {
                query = GenListAdGroupsQueryData(parameter);
            }

            var url = $"{APIEndpoint.GetUrl(this.Marketplace)}/{this.ApiVersion}/adGroups?{query}";

            return(this.HttpRequest <List <AdGroupInfo> >(url));
        }