/// <summary>
        /// REtrieves any anomalies found on a given date.
        /// </summary>
        /// <param name="metricGuid">The metric we are processing.</param>
        /// <param name="startTime">The date we are processing.</param>
        /// <param name="configId">The detect config id in Kensho.</param>
        /// <param name="pageNum">The page of anomalies we are currently on.</param>
        /// <param name="pageSize">Max number of anomalies to retrieve.</param>
        /// <returns>A list of anomalies found.</returns>
        private static List <KenshoDetectAnomaly> GetAnomalies(Guid metricGuid, DateTime startTime, Guid configId, int pageNum, int pageSize)
        {
            KenshoQueryDetectResultAnomaliesRequest request = new KenshoQueryDetectResultAnomaliesRequest()
            {
                MetricGuid       = metricGuid,
                DetectConfigGuid = configId,
                StartTime        = startTime,
                EndTime          = startTime.AddDays(1),
                PageNum          = pageNum,
                PageSize         = pageSize,
                Filter           = new KenshoQueryFilter()
                {
                    SeverityFilter = new KenshoQuerySeverityFilter()
                    {
                        // For now, no one is likely to want anything different for this, so we will just hard code these values.
                        // If more flexibility is required later, we will need to modify KenshoTestContent to include a direction and
                        // we will possible want to change the types of min and max severity to be strings instead of the old ints.
                        MinSeverity = "High",
                        MaxSeverity = "High",
                        AnomalyDetectorDirection = "Both",
                    },
                },
            };

            //Console.WriteLine(JObject.Parse(JsonConvert.SerializeObject(request)));
            KenshoQueryDetectResultAnomaliesResponse response = SendQueryDetectResultAnomaliesRequestAsync(request);

            if (response.StatusCode != HttpStatusCode.OK)
            {
                throw new ProtocolViolationException($"query_detect_results_anomalies returned error {response.StatusCode}, message {response.ContentOrErrorMessage}");
            }

            return(response.AnomalySetList);
        }
        private static KenshoQueryDetectResultAnomaliesResponse SendQueryDetectResultAnomaliesRequestAsync(KenshoQueryDetectResultAnomaliesRequest request)
        {
            KenshoQueryDetectResultAnomaliesResponse response;

            KenshoBaseResponse responseMessage = kenshoProvider.SendRequestAsync(JsonConvert.SerializeObject(request), QueryDetectResultAmomalies).Result;

            if (responseMessage.StatusCode == HttpStatusCode.OK)
            {
                response = new KenshoQueryDetectResultAnomaliesResponse()
                {
                    StatusCode     = HttpStatusCode.OK,
                    AnomalySetList = JsonConvert.DeserializeObject <List <KenshoDetectAnomaly> >(responseMessage.ContentOrErrorMessage),
                };
            }
            else
            {
                response = new KenshoQueryDetectResultAnomaliesResponse()
                {
                    StatusCode            = responseMessage.StatusCode,
                    ContentOrErrorMessage = responseMessage.ContentOrErrorMessage,
                };
            }

            return(response);
        }