private async Task <SendSmsV2Response> SendSMSV2Asycn(SendSmsV2Request infomation, CancellationToken none)
        {
            // Validation Information
            var validationContext = new System.ComponentModel.DataAnnotations.ValidationContext(infomation);

            Validator.ValidateObject(infomation, validationContext);

            SendSmsV2Response responseObject;

            // If Configulation is in SMS disable mode
            if (!_configulation.SendSmsApiEnable)
            {
                Log.Information("{ApiClient} Configulation is in SMS disable mode", _clientTitle);

                // Mockup data SMS Response
                var mockUpString = "{\"status\": \"000\",\"detail\": \"OK\",\"language\": \"ENG\",\"usedCredit\": \"1\",\"sumPhone\": \"1\",\"transaction\": \"150605222\"}";
                responseObject = JsonConvert.DeserializeObject <SendSmsV2Response>(mockUpString);
            }
            else
            {
                // Create request
                var request = new RestRequest(_SendSMSV2Endpoint, DataFormat.Json);
                request.AddJsonBody(infomation);

                // Attemp request to Send SMS
                var response = await Task.FromResult(_client.Post <SendSmsV2Response>(request));

                Log.Verbose("{ApiClient} Requested to API", _clientTitle);

                // Check data is valid
                if (response.Data is null)
                {
                    Log.Error(response.ErrorException, "{ApiClient} Got an error [Message={ErrorMessage}]", _clientTitle, response.ErrorMessage);
                    throw response.ErrorException;
                }

                Log.Debug("{ApiClient} [Response={Response}]", _clientTitle, JsonConvert.SerializeObject(response.Data));
                responseObject = response.Data;
            }

            // Return response
            Log.Information("{ApiClient} SMS have been sent [PhoneNo={PhoneNo},Status={Status}, Detail={Detail}, Transaction={Transaction}]", _clientTitle, infomation.PhoneNo, responseObject.Status, responseObject.Detail, responseObject.Transaction);
            return(responseObject);
        }
 /// <summary>
 /// Send a single SMS message
 /// </summary>
 /// <param name="infomation">Required parameter for send SMS</param>
 /// <returns>Response of sent SMS</returns>
 /// <exception cref="ValidationException"></exception>
 /// <exception cref="InvalidOperationException"></exception>
 public virtual Task <SendSmsV2Response> SendSMSV2Asycn(SendSmsV2Request infomation)
 {
     Log.Debug("{ApiClient} Attempt to send SMS [PhoneNo={PhoneNo}]", _clientTitle, infomation.PhoneNo);
     return(SendSMSV2Asycn(infomation, System.Threading.CancellationToken.None));
 }