public UserOutputDto UpdateUser(string Domain, ProofPointUserModal updateUser)
        {
            UserOutputDto output = new UserOutputDto {
                IsSuccessful = false
            };
            string resource = ProofPointEndpoints.UpdateUserEndpoint(Domain, updateUser.primary_email);

            try
            {
                _log.Info($"INITIATING UpdateUser: {resource} | {updateUser.primary_email}");

                if (Domain.IsNullOrEmpty())
                {
                    throw new Exception("Domain was not provided");
                }

                if (updateUser.primary_email.IsNullOrEmpty())
                {
                    throw new Exception("UserEmail was not provided");
                }

                var request = new RestRequest(resource, Method.PUT).AddAuthenticationHeaders();
                request.AddJsonBody(updateUser);

                IRestResponse <UserOutputDto> response = _client.Execute <UserOutputDto>(request);
                if (response.Data == null)
                {
                    response.Data = new UserOutputDto();
                }
                response.Data.IsSuccessful = response.IsSuccessful;

                _log.Info($"RESPONSE UpdateUser: {response.IsSuccessful}");
                if (!response.IsSuccessful)
                {
                    _log.Error($"ERROR UpdateUser: {JsonConvert.SerializeObject(response.Data?.errors)}");
                }

                output = response.Data;
            }
            catch (Exception ex)
            {
                _log.Fatal("EXCEPTION UpdateUser: "******"ENDED UpdateUser: {resource}");
            }

            return(output);
        }
        public UserOutputDto GetUser(string Domain, string UserEmail)
        {
            UserOutputDto output = new UserOutputDto {
                IsSuccessful = false
            };
            string resource = ProofPointEndpoints.GetUserEndpoint(Domain, UserEmail);

            try
            {
                _log.Info($"INITIATING GetUser: {resource}");

                if (Domain.IsNullOrEmpty())
                {
                    throw new Exception("Domain was not provided");
                }

                if (UserEmail.IsNullOrEmpty())
                {
                    throw new Exception("UserEmail was not provided");
                }

                var request = new RestRequest(resource, Method.GET).AddAuthenticationHeaders();

                var response = _client.Execute <UserOutputDto>(request);

                if (response.Data == null)
                {
                    response.Data = new UserOutputDto();
                }
                response.Data.IsSuccessful = response.IsSuccessful;

                _log.Info($"RESPONSE GetUser: {response.IsSuccessful}");
                if (!response.IsSuccessful)
                {
                    _log.Error($"ERROR GetUser: {JsonConvert.SerializeObject(response.Data?.errors)}");
                }

                output = response.Data;
            }
            catch (Exception ex)
            {
                _log.Fatal("EXCEPTION GetUser", ex);
            }
            finally
            {
                _log.Info($"ENDED GetUser: {resource}");
            }

            return(output);
        }
        public UserListOutputDto CreateUser(string Domain, List <ProofPointUserModal> createUser)
        {
            UserListOutputDto output = new UserListOutputDto {
                IsSuccessful = false
            };
            string resource = ProofPointEndpoints.CreateUserEndpoint(Domain);

            try
            {
                _log.Info($"INITIATING CreateUser: {resource} | {string.Join(",", createUser.Select(x => x.primary_email))}");

                if (Domain.IsNullOrEmpty())
                {
                    throw new Exception("Domain was not provided");
                }

                if (createUser.Any(x => x.primary_email.IsNullOrEmpty()))
                {
                    throw new Exception("UserEmail was not provided");
                }

                var request = new RestRequest(resource, Method.POST).AddAuthenticationHeaders();
                request.AddJsonBody(createUser);

                IRestResponse <UserListOutputDto> response = _client.Execute <UserListOutputDto>(request);
                response.Data.IsSuccessful = response.IsSuccessful;

                _log.Info($"RESPONSE CreateUser: {response.IsSuccessful}");
                if (response.Data.errors != null && response.Data.errors.Any())
                {
                    _log.Error($"ERROR CreateUser: {JsonConvert.SerializeObject(response.Data?.errors)}");
                }

                output = response.Data;
            }
            catch (Exception ex)
            {
                _log.Fatal("EXCEPTION CreateUser: "******"ENDED CreateUser: {resource}");
            }

            return(output);
        }