/// <summary>
        ///     Returns a list of events.
        /// </summary>
        /// <param name="appId">ID for application owning the hook.</param>
        /// <param name="hookId">ID for hook owning the event.</param>
        /// <param name="options">Options for filtering the result.</param>
        public virtual async Task<IEnumerable<Entities.TictailEvent>> ListAsync(string hookId, string appId,
            EventListFilter options = null)
        {
            var req = PrepareRequest($"apps/{appId}/hooks/{hookId}/events");

            //Add optional parameters to request
            if (options != null) req.QueryParams.AddRange(options.ToParameters());

            return await ExecuteRequestAsync<List<Entities.TictailEvent>>(req, HttpMethod.Get);
        }
        /// <summary>
        /// Returns a list of events.
        /// </summary>
        /// <param name="options">Options for filtering the result.</param>
        public virtual async Task <IEnumerable <Event> > ListAsync(EventListFilter options = null)
        {
            var req = PrepareRequest("events.json");

            //Add optional parameters to request
            if (options != null)
            {
                req.Url.QueryParams.AddRange(options.ToParameters());
            }

            return(await ExecuteRequestAsync <List <Event> >(req, HttpMethod.Get, rootElement : "events"));
        }
        /// <summary>
        /// Returns a list of events for the given subject and subject type. A full list of supported subject types can be found at https://help.shopify.com/api/reference/event
        /// </summary>
        /// <param name="options">Options for filtering the result.</param>
        /// <param name="subjectId">Restricts results to just one subject item, e.g. all changes on a product.</param>
        /// <param name="subjectType">The subject's type, e.g. 'Order' or 'Product'. Known subject types are 'Articles', 'Blogs', 'Custom_Collections', 'Comments', 'Orders', 'Pages', 'Products' and 'Smart_Collections'.  A current list of subject types can be found at https://help.shopify.com/api/reference/event </param>
        public virtual async Task <IEnumerable <Event> > ListAsync(long subjectId, string subjectType, EventListFilter options = null)
        {
            // Ensure the subject type is plural
            if (!subjectType.Substring(subjectType.Length - 1).Equals("s", System.StringComparison.OrdinalIgnoreCase))
            {
                subjectType = subjectType + "s";
            }

            var req = PrepareRequest($"{subjectType?.ToLower()}/{subjectId}/events.json");

            //Add optional parameters to request
            if (options != null)
            {
                req.Url.QueryParams.AddRange(options.ToParameters());
            }

            return(await ExecuteRequestAsync <List <Event> >(req, HttpMethod.Get, rootElement : "events"));
        }