public async Task <SessionDataOutput> GetSessionData(SessionQueryServiceInput sessionQueryServiceInput)
        {
            var data = new
            {
                Org_Id            = _threatMetrixConfig.OrgId,
                Api_Key           = _threatMetrixConfig.ApiKey,
                Output_Format     = "Json",
                Session_Id        = sessionQueryServiceInput.SessionId,
                Service_Type      = _threatMetrixConfig.ServiceType,
                Event_Type        = sessionQueryServiceInput.EventType,
                Account_Email     = sessionQueryServiceInput.Email,
                Account_Telephone = sessionQueryServiceInput.PhoneNumber,
                _threatMetrixConfig.Policy
            };

            var json = JsonConvert.SerializeObject(data);

            _httpClient.BaseAddress = new Uri(_threatMetrixConfig.Url);
            var response = await _httpClient.PostAsync(_threatMetrixConfig.SessionQueryEndPoint,
                                                       new StringContent(json, Encoding.UTF8, "application/json"));

            response.EnsureSuccessStatusCode();

            var responseData = await response.Content.ReadAsStringAsync();

            var sessionResponse = JsonConvert.DeserializeObject <SessionResponse>(responseData);

            var output = new SessionDataOutput
            {
                ReviewStatus = sessionResponse?.GetReviewStatus(),
                FullOutput   = responseData,
                PolicyScore  = "", //sessionResponse.policy_details_api.policy_detail_api[0].customer.review_status,
                ReasonCode   = sessionResponse?.GetReasonCode(),
                RiskRating   = sessionResponse?.GetRiskRating()
            };

            return(output);
        }
        public async Task <IActionResult> SessionQueryCall([FromBody] SessionQueryServiceInput inputData)
        {
            if (inputData == null)
            {
                return(BadRequest("Null Parameters received"));
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest("One or more parameters received are not valid"));
            }

            var output = await _sessionQueryService.GetSessionData(inputData);

            if (output.ReviewStatus != "pass")
            {
                return(Conflict(new B2CResponse {
                    UserMessage = $"Your identity could not be verified based on the details you provided."
                }));
            }

            return(Json(output));
        }