/// <summary>
        /// Asynchronously retrieve a list of time series (with or without meta-data) matching the given criteria. This
        /// operation does not support pagination.
        /// </summary>
        /// <param name="query">Search query.</param>
        /// <param name="token">Optional cancellation token.</param>
        /// <typeparam name="T">Type of time series to return, e.g TimeSeries or TimeSeriesWithoutMetadata.</typeparam>
        /// <returns>Sequence of time series matching given criteria.</returns>
        public async Task <IEnumerable <T> > SearchAsync <T>(TimeSeriesSearch query, CancellationToken token = default) where T : TimeSeries
        {
            if (query is null)
            {
                throw new ArgumentNullException(nameof(query));
            }

            var req = Oryx.Cognite.TimeSeries.search <T>(query);

            return(await RunAsync(req, token).ConfigureAwait(false));
        }
 /// <summary>
 /// Asynchronously retrieve a list of time series matching the given criteria. This operation does not support
 /// pagination.
 /// </summary>
 /// <param name="query">Search query.</param>
 /// <param name="token">Optional cancellation token.</param>
 /// <returns>List of time series matching given criteria.</returns>
 public async Task <IEnumerable <TimeSeries> > SearchAsync(TimeSeriesSearch query, CancellationToken token = default)
 {
     return(await SearchAsync <TimeSeries>(query, token).ConfigureAwait(false));
 }