using Newtonsoft.Json; using RestSharp; using System; using System.Threading; namespace TwilioFlexInsightsAPI { class Program { static void Main(string[] args) { var client = new RestClient("https://analytics.ytica.com/gdc/account/login"); client.Timeout = -1; var request = new RestRequest(Method.POST); request.AddHeader("Accept", "application/json"); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\r\n \"postUserLogin\":{\r\n \"login\":\"\",\r\n \"password\":\"\",\r\n \"remember\": 0,\r\n \"verify_level\": 2\r\n }\r\n} ", ParameterType.RequestBody); IRestResponse response = client.Execute(request); dynamic output = JsonConvert.DeserializeObject(response.Content); string userLoginToken = output.userLogin.token; client.BaseUrl = new Uri("https://analytics.ytica.com/gdc/account/token"); request.Method = Method.GET; request.Parameters.Clear(); request.AddHeader("X-GDC-AuthSST", userLoginToken); request.AddParameter("application/json", "", ParameterType.RequestBody); response = client.Execute(request); output = JsonConvert.DeserializeObject(response.Content); string userToken = output.userToken.token; client.BaseUrl = new Uri("https://analytics.ytica.com/gdc/app/projects/vkcs469637etzzcnepb37u1gc287j5gb/execute/raw"); request.Method = Method.POST; request.Parameters.Clear(); request.AddParameter("GDCAuthTT", userToken, ParameterType.Cookie); request.AddParameter("application/json", "{\r\n \"report_req\": {\r\n \"report\": \"/gdc/md/vkcs469637etzzcnepb37u1gc287j5gb/obj/6322\"\r\n }\r\n}", ParameterType.RequestBody); response = client.Execute(request); output = JsonConvert.DeserializeObject(response.Content); string uri = output.uri; do { client.BaseUrl = new Uri("https://analytics.ytica.com" + uri); request.Method = Method.GET; request.Parameters.Clear(); request.AddParameter("application/json", "", ParameterType.RequestBody); request.AddParameter("GDCAuthTT", userToken, ParameterType.Cookie); response = client.Execute(request); Thread.Sleep(2000); //Console.WriteLine("Waiting for results: " + response.ResponseStatus.ToString() + " - " + response.StatusCode.ToString() + " - " + response.ErrorMessage); } while (response.StatusCode == System.Net.HttpStatusCode.Accepted && response.IsSuccessful); Console.WriteLine(response.Content); Console.ReadKey(); } } }