public string GetMetricsMetaData()
 {
     using (var client = new Clients.WebClient(apiKey))
     {
         return(client.DownloadString(new Uri($"{baseUrl}/metrics/metadata")));
     }
 }
        public MetricIntervalResult GetMetric(string metricId, DateTime fromDate, DateTime toDate, TimeSpan interval)
        {
            using (var client = new Clients.WebClient(apiKey))
            {
                JObject jsonResponse = JObject.Parse(client.DownloadString(new Uri($"{baseUrl}/metrics/{metricId}?timespan={fromDate.ToApiTimeSpan(toDate)}&interval={interval.ToApiTimeSpan()}")));

                return(JsonConvert.DeserializeObject <MetricIntervalResult>(jsonResponse["value"].ToString()));
            }
        }
        public MetricResult GetMetric(string metricId, TimeSpan timespan)
        {
            using (var client = new Clients.WebClient(apiKey))
            {
                JObject jsonResponse = JObject.Parse(client.DownloadString(new Uri($"{baseUrl}/metrics/{metricId}?timespan={timespan.ToApiTimeSpan()}")));

                return(JsonConvert.DeserializeObject <MetricResult>(jsonResponse["value"].ToString()));
            }
        }
        public IList <Trace> GetTraces(TimeSpan timespan, int top)
        {
            using (var client = new Clients.WebClient(apiKey))
            {
                JObject jsonResponse = JObject.Parse(client.DownloadString(new Uri($"{baseUrl}/events/traces?timespan={timespan.ToApiTimeSpan()}&$top={top}")));

                IList <Trace> traces = JsonConvert.DeserializeObject <List <Trace> >(jsonResponse["value"].ToString());

                return(traces.Reverse().ToList());
            }
        }