/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
/*
 * Do not modify this file. This file is generated from the pinpoint-sms-voice-v2-2022-03-31.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Net;
using Amazon.PinpointSMSVoiceV2.Model;
using Amazon.PinpointSMSVoiceV2.Model.Internal.MarshallTransformations;
using Amazon.PinpointSMSVoiceV2.Internal;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
using Amazon.Runtime.Internal.Auth;
using Amazon.Runtime.Internal.Transform;
namespace Amazon.PinpointSMSVoiceV2
{
    /// 
    /// Implementation for accessing PinpointSMSVoiceV2
    ///
    /// Welcome to the Amazon Pinpoint SMS and Voice, version 2 API Reference. This
    /// guide provides information about Amazon Pinpoint SMS and Voice, version 2 API resources,
    /// including supported HTTP methods, parameters, and schemas.
    /// 
    ///  
    /// 
    /// Amazon Pinpoint is an Amazon Web Services service that you can use to engage with
    /// your recipients across multiple messaging channels. The Amazon Pinpoint SMS and Voice,
    /// version 2 API provides programmatic access to options that are unique to the SMS and
    /// voice channels and supplements the resources provided by the Amazon Pinpoint API.
    /// 
    ///  
    /// 
    /// If you're new to Amazon Pinpoint, it's also helpful to review the 
    /// Amazon Pinpoint Developer Guide. The Amazon Pinpoint Developer Guide provides
    /// tutorials, code samples, and procedures that demonstrate how to use Amazon Pinpoint
    /// features programmatically and how to integrate Amazon Pinpoint functionality into
    /// mobile apps and other types of applications. The guide also provides key information,
    /// such as Amazon Pinpoint integration with other Amazon Web Services services, and the
    /// quotas that apply to use of the service.
    /// 
    /// 
    public partial class AmazonPinpointSMSVoiceV2Client : AmazonServiceClient, IAmazonPinpointSMSVoiceV2
    {
        private static IServiceMetadata serviceMetadata = new AmazonPinpointSMSVoiceV2Metadata();
#if BCL45 || AWS_ASYNC_ENUMERABLES_API
        private IPinpointSMSVoiceV2PaginatorFactory _paginators;
        /// 
        /// Paginators for the service
        /// 
        public IPinpointSMSVoiceV2PaginatorFactory Paginators 
        {
            get 
            {
                if (this._paginators == null) 
                {
                    this._paginators = new PinpointSMSVoiceV2PaginatorFactory(this);
                }
                return this._paginators;
            }
        }
#endif
        #region Constructors
        /// 
        /// Constructs AmazonPinpointSMSVoiceV2Client with the credentials loaded from the application's
        /// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
        /// 
        /// Example App.config with credentials set. 
        /// 
        /// <?xml version="1.0" encoding="utf-8" ?>
        /// <configuration>
        ///     <appSettings>
        ///         <add key="AWSProfileName" value="AWS Default"/>
        ///     </appSettings>
        /// </configuration>
        /// 
        ///
        /// 
        public AmazonPinpointSMSVoiceV2Client()
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonPinpointSMSVoiceV2Config()) { }
        /// 
        /// Constructs AmazonPinpointSMSVoiceV2Client with the credentials loaded from the application's
        /// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
        /// 
        /// Example App.config with credentials set. 
        /// 
        /// <?xml version="1.0" encoding="utf-8" ?>
        /// <configuration>
        ///     <appSettings>
        ///         <add key="AWSProfileName" value="AWS Default"/>
        ///     </appSettings>
        /// </configuration>
        /// 
        ///
        /// 
        /// The region to connect.
        public AmazonPinpointSMSVoiceV2Client(RegionEndpoint region)
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonPinpointSMSVoiceV2Config{RegionEndpoint = region}) { }
        /// 
        /// Constructs AmazonPinpointSMSVoiceV2Client with the credentials loaded from the application's
        /// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
        /// 
        /// Example App.config with credentials set. 
        /// 
        /// <?xml version="1.0" encoding="utf-8" ?>
        /// <configuration>
        ///     <appSettings>
        ///         <add key="AWSProfileName" value="AWS Default"/>
        ///     </appSettings>
        /// </configuration>
        /// 
        ///
        /// 
        /// The AmazonPinpointSMSVoiceV2Client Configuration Object
        public AmazonPinpointSMSVoiceV2Client(AmazonPinpointSMSVoiceV2Config config)
            : base(FallbackCredentialsFactory.GetCredentials(config), config){}
        /// 
        /// Constructs AmazonPinpointSMSVoiceV2Client with AWS Credentials
        /// 
        /// AWS Credentials
        public AmazonPinpointSMSVoiceV2Client(AWSCredentials credentials)
            : this(credentials, new AmazonPinpointSMSVoiceV2Config())
        {
        }
        /// 
        /// Constructs AmazonPinpointSMSVoiceV2Client with AWS Credentials
        /// 
        /// AWS Credentials
        /// The region to connect.
        public AmazonPinpointSMSVoiceV2Client(AWSCredentials credentials, RegionEndpoint region)
            : this(credentials, new AmazonPinpointSMSVoiceV2Config{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonPinpointSMSVoiceV2Client with AWS Credentials and an
        /// AmazonPinpointSMSVoiceV2Client Configuration object.
        /// 
        /// AWS Credentials
        /// The AmazonPinpointSMSVoiceV2Client Configuration Object
        public AmazonPinpointSMSVoiceV2Client(AWSCredentials credentials, AmazonPinpointSMSVoiceV2Config clientConfig)
            : base(credentials, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonPinpointSMSVoiceV2Client with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        public AmazonPinpointSMSVoiceV2Client(string awsAccessKeyId, string awsSecretAccessKey)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonPinpointSMSVoiceV2Config())
        {
        }
        /// 
        /// Constructs AmazonPinpointSMSVoiceV2Client with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The region to connect.
        public AmazonPinpointSMSVoiceV2Client(string awsAccessKeyId, string awsSecretAccessKey, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonPinpointSMSVoiceV2Config() {RegionEndpoint=region})
        {
        }
        /// 
        /// Constructs AmazonPinpointSMSVoiceV2Client with AWS Access Key ID, AWS Secret Key and an
        /// AmazonPinpointSMSVoiceV2Client Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The AmazonPinpointSMSVoiceV2Client Configuration Object
        public AmazonPinpointSMSVoiceV2Client(string awsAccessKeyId, string awsSecretAccessKey, AmazonPinpointSMSVoiceV2Config clientConfig)
            : base(awsAccessKeyId, awsSecretAccessKey, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonPinpointSMSVoiceV2Client with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        public AmazonPinpointSMSVoiceV2Client(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonPinpointSMSVoiceV2Config())
        {
        }
        /// 
        /// Constructs AmazonPinpointSMSVoiceV2Client with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        /// The region to connect.
        public AmazonPinpointSMSVoiceV2Client(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonPinpointSMSVoiceV2Config{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonPinpointSMSVoiceV2Client with AWS Access Key ID, AWS Secret Key and an
        /// AmazonPinpointSMSVoiceV2Client Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        /// The AmazonPinpointSMSVoiceV2Client Configuration Object
        public AmazonPinpointSMSVoiceV2Client(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, AmazonPinpointSMSVoiceV2Config clientConfig)
            : base(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, clientConfig)
        {
        }
        #endregion
        #region Overrides
        
        /// 
        /// Creates the signer for the service.
        /// 
        protected override AbstractAWSSigner CreateSigner()
        {
            return new AWS4Signer();
        }
        /// 
        /// Customize the pipeline
        /// 
        /// 
        protected override void CustomizeRuntimePipeline(RuntimePipeline pipeline)
        {
            pipeline.RemoveHandler();
            pipeline.AddHandlerAfter(new AmazonPinpointSMSVoiceV2EndpointResolver());
        }
        /// 
        /// Capture metadata for the service.
        /// 
        protected override IServiceMetadata ServiceMetadata
        {
            get
            {
                return serviceMetadata;
            }
        }
        #endregion
        #region Dispose
        /// 
        /// Disposes the service client.
        /// 
        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);
        }
        #endregion
        #region  AssociateOriginationIdentity
        /// 
        /// Associates the specified origination identity with a pool.
        /// 
        ///  
        /// 
        /// If the origination identity is a phone number and is already associated with another
        /// pool, an Error is returned. A sender ID can be associated with multiple pools.
        /// 
        ///  
        /// 
        /// If the origination identity configuration doesn't match the pool's configuration,
        /// an Error is returned.
        /// 
        /// 
        /// Container for the necessary parameters to execute the AssociateOriginationIdentity service method.
        /// 
        /// The response from the AssociateOriginationIdentity service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// Your request has conflicting operations. This can occur if you're trying to perform
        /// more than one operation on the same resource at the same time or it could be that
        /// the requested action isn't valid for the current state or configuration of the resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// The request would cause a service quota to be exceeded.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for AssociateOriginationIdentity Operation
        public virtual AssociateOriginationIdentityResponse AssociateOriginationIdentity(AssociateOriginationIdentityRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = AssociateOriginationIdentityRequestMarshaller.Instance;
            options.ResponseUnmarshaller = AssociateOriginationIdentityResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the AssociateOriginationIdentity operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the AssociateOriginationIdentity operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndAssociateOriginationIdentity
        ///         operation.
        /// REST API Reference for AssociateOriginationIdentity Operation
        public virtual IAsyncResult BeginAssociateOriginationIdentity(AssociateOriginationIdentityRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = AssociateOriginationIdentityRequestMarshaller.Instance;
            options.ResponseUnmarshaller = AssociateOriginationIdentityResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  AssociateOriginationIdentity operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginAssociateOriginationIdentity.
        /// 
        /// Returns a  AssociateOriginationIdentityResult from PinpointSMSVoiceV2.
        /// REST API Reference for AssociateOriginationIdentity Operation
        public virtual AssociateOriginationIdentityResponse EndAssociateOriginationIdentity(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  CreateConfigurationSet
        /// 
        /// Creates a new configuration set. After you create the configuration set, you can add
        /// one or more event destinations to it.
        /// 
        ///  
        /// 
        /// A configuration set is a set of rules that you apply to the SMS and voice messages
        /// that you send.
        /// 
        ///  
        /// 
        /// When you send a message, you can optionally specify a single configuration set.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateConfigurationSet service method.
        /// 
        /// The response from the CreateConfigurationSet service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// Your request has conflicting operations. This can occur if you're trying to perform
        /// more than one operation on the same resource at the same time or it could be that
        /// the requested action isn't valid for the current state or configuration of the resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// The request would cause a service quota to be exceeded.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for CreateConfigurationSet Operation
        public virtual CreateConfigurationSetResponse CreateConfigurationSet(CreateConfigurationSetRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateConfigurationSetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateConfigurationSetResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreateConfigurationSet operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateConfigurationSet operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndCreateConfigurationSet
        ///         operation.
        /// REST API Reference for CreateConfigurationSet Operation
        public virtual IAsyncResult BeginCreateConfigurationSet(CreateConfigurationSetRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateConfigurationSetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateConfigurationSetResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreateConfigurationSet operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreateConfigurationSet.
        /// 
        /// Returns a  CreateConfigurationSetResult from PinpointSMSVoiceV2.
        /// REST API Reference for CreateConfigurationSet Operation
        public virtual CreateConfigurationSetResponse EndCreateConfigurationSet(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  CreateEventDestination
        /// 
        /// Creates a new event destination in a configuration set.
        /// 
        ///  
        /// 
        /// An event destination is a location where you send message events. The event options
        /// are Amazon CloudWatch, Amazon Kinesis Data Firehose, or Amazon SNS. For example, when
        /// a message is delivered successfully, you can send information about that event to
        /// an event destination, or send notifications to endpoints that are subscribed to an
        /// Amazon SNS topic.
        /// 
        ///  
        /// 
        /// Each configuration set can contain between 0 and 5 event destinations. Each event
        /// destination can contain a reference to a single destination, such as a CloudWatch
        /// or Kinesis Data Firehose destination.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateEventDestination service method.
        /// 
        /// The response from the CreateEventDestination service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// Your request has conflicting operations. This can occur if you're trying to perform
        /// more than one operation on the same resource at the same time or it could be that
        /// the requested action isn't valid for the current state or configuration of the resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// The request would cause a service quota to be exceeded.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for CreateEventDestination Operation
        public virtual CreateEventDestinationResponse CreateEventDestination(CreateEventDestinationRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateEventDestinationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateEventDestinationResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreateEventDestination operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateEventDestination operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndCreateEventDestination
        ///         operation.
        /// REST API Reference for CreateEventDestination Operation
        public virtual IAsyncResult BeginCreateEventDestination(CreateEventDestinationRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateEventDestinationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateEventDestinationResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreateEventDestination operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreateEventDestination.
        /// 
        /// Returns a  CreateEventDestinationResult from PinpointSMSVoiceV2.
        /// REST API Reference for CreateEventDestination Operation
        public virtual CreateEventDestinationResponse EndCreateEventDestination(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  CreateOptOutList
        /// 
        /// Creates a new opt-out list.
        /// 
        ///  
        /// 
        /// If the opt-out list name already exists, an Error is returned.
        /// 
        ///  
        /// 
        /// An opt-out list is a list of phone numbers that are opted out, meaning you can't send
        /// SMS or voice messages to them. If end user replies with the keyword "STOP," an entry
        /// for the phone number is added to the opt-out list. In addition to STOP, your recipients
        /// can use any supported opt-out keyword, such as CANCEL or OPTOUT. For a list of supported
        /// opt-out keywords, see 
        /// SMS opt out  in the Amazon Pinpoint User Guide.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateOptOutList service method.
        /// 
        /// The response from the CreateOptOutList service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// Your request has conflicting operations. This can occur if you're trying to perform
        /// more than one operation on the same resource at the same time or it could be that
        /// the requested action isn't valid for the current state or configuration of the resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// The request would cause a service quota to be exceeded.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for CreateOptOutList Operation
        public virtual CreateOptOutListResponse CreateOptOutList(CreateOptOutListRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateOptOutListRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateOptOutListResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreateOptOutList operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateOptOutList operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndCreateOptOutList
        ///         operation.
        /// REST API Reference for CreateOptOutList Operation
        public virtual IAsyncResult BeginCreateOptOutList(CreateOptOutListRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateOptOutListRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateOptOutListResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreateOptOutList operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreateOptOutList.
        /// 
        /// Returns a  CreateOptOutListResult from PinpointSMSVoiceV2.
        /// REST API Reference for CreateOptOutList Operation
        public virtual CreateOptOutListResponse EndCreateOptOutList(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  CreatePool
        /// 
        /// Creates a new pool and associates the specified origination identity to the pool.
        /// A pool can include one or more phone numbers and SenderIds that are associated with
        /// your Amazon Web Services account.
        /// 
        ///  
        /// 
        /// The new pool inherits its configuration from the specified origination identity. This
        /// includes keywords, message type, opt-out list, two-way configuration, and self-managed
        /// opt-out configuration. Deletion protection isn't inherited from the origination identity
        /// and defaults to false.
        /// 
        ///  
        /// 
        /// If the origination identity is a phone number and is already associated with another
        /// pool, an Error is returned. A sender ID can be associated with multiple pools.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreatePool service method.
        /// 
        /// The response from the CreatePool service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// Your request has conflicting operations. This can occur if you're trying to perform
        /// more than one operation on the same resource at the same time or it could be that
        /// the requested action isn't valid for the current state or configuration of the resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// The request would cause a service quota to be exceeded.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for CreatePool Operation
        public virtual CreatePoolResponse CreatePool(CreatePoolRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreatePoolRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreatePoolResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreatePool operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreatePool operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndCreatePool
        ///         operation.
        /// REST API Reference for CreatePool Operation
        public virtual IAsyncResult BeginCreatePool(CreatePoolRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreatePoolRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreatePoolResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreatePool operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreatePool.
        /// 
        /// Returns a  CreatePoolResult from PinpointSMSVoiceV2.
        /// REST API Reference for CreatePool Operation
        public virtual CreatePoolResponse EndCreatePool(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteConfigurationSet
        /// 
        /// Deletes an existing configuration set.
        /// 
        ///  
        /// 
        /// A configuration set is a set of rules that you apply to voice and SMS messages that
        /// you send. In a configuration set, you can specify a destination for specific types
        /// of events related to voice and SMS messages. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteConfigurationSet service method.
        /// 
        /// The response from the DeleteConfigurationSet service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DeleteConfigurationSet Operation
        public virtual DeleteConfigurationSetResponse DeleteConfigurationSet(DeleteConfigurationSetRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteConfigurationSetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteConfigurationSetResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteConfigurationSet operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteConfigurationSet operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDeleteConfigurationSet
        ///         operation.
        /// REST API Reference for DeleteConfigurationSet Operation
        public virtual IAsyncResult BeginDeleteConfigurationSet(DeleteConfigurationSetRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteConfigurationSetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteConfigurationSetResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteConfigurationSet operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteConfigurationSet.
        /// 
        /// Returns a  DeleteConfigurationSetResult from PinpointSMSVoiceV2.
        /// REST API Reference for DeleteConfigurationSet Operation
        public virtual DeleteConfigurationSetResponse EndDeleteConfigurationSet(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteDefaultMessageType
        /// 
        /// Deletes an existing default message type on a configuration set.
        /// 
        ///  
        /// 
        ///  A message type is a type of messages that you plan to send. If you send account-related
        /// messages or time-sensitive messages such as one-time passcodes, choose Transactional.
        /// If you plan to send messages that contain marketing material or other promotional
        /// content, choose Promotional. This setting applies to your entire Amazon Web
        /// Services account. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteDefaultMessageType service method.
        /// 
        /// The response from the DeleteDefaultMessageType service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DeleteDefaultMessageType Operation
        public virtual DeleteDefaultMessageTypeResponse DeleteDefaultMessageType(DeleteDefaultMessageTypeRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteDefaultMessageTypeRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteDefaultMessageTypeResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteDefaultMessageType operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteDefaultMessageType operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDeleteDefaultMessageType
        ///         operation.
        /// REST API Reference for DeleteDefaultMessageType Operation
        public virtual IAsyncResult BeginDeleteDefaultMessageType(DeleteDefaultMessageTypeRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteDefaultMessageTypeRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteDefaultMessageTypeResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteDefaultMessageType operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteDefaultMessageType.
        /// 
        /// Returns a  DeleteDefaultMessageTypeResult from PinpointSMSVoiceV2.
        /// REST API Reference for DeleteDefaultMessageType Operation
        public virtual DeleteDefaultMessageTypeResponse EndDeleteDefaultMessageType(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteDefaultSenderId
        /// 
        /// Deletes an existing default sender ID on a configuration set.
        /// 
        ///  
        /// 
        /// A default sender ID is the identity that appears on recipients' devices when they
        /// receive SMS messages. Support for sender ID capabilities varies by country or region.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteDefaultSenderId service method.
        /// 
        /// The response from the DeleteDefaultSenderId service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DeleteDefaultSenderId Operation
        public virtual DeleteDefaultSenderIdResponse DeleteDefaultSenderId(DeleteDefaultSenderIdRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteDefaultSenderIdRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteDefaultSenderIdResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteDefaultSenderId operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteDefaultSenderId operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDeleteDefaultSenderId
        ///         operation.
        /// REST API Reference for DeleteDefaultSenderId Operation
        public virtual IAsyncResult BeginDeleteDefaultSenderId(DeleteDefaultSenderIdRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteDefaultSenderIdRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteDefaultSenderIdResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteDefaultSenderId operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteDefaultSenderId.
        /// 
        /// Returns a  DeleteDefaultSenderIdResult from PinpointSMSVoiceV2.
        /// REST API Reference for DeleteDefaultSenderId Operation
        public virtual DeleteDefaultSenderIdResponse EndDeleteDefaultSenderId(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteEventDestination
        /// 
        /// Deletes an existing event destination.
        /// 
        ///  
        /// 
        /// An event destination is a location where you send response information about the messages
        /// that you send. For example, when a message is delivered successfully, you can send
        /// information about that event to an Amazon CloudWatch destination, or send notifications
        /// to endpoints that are subscribed to an Amazon SNS topic.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteEventDestination service method.
        /// 
        /// The response from the DeleteEventDestination service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DeleteEventDestination Operation
        public virtual DeleteEventDestinationResponse DeleteEventDestination(DeleteEventDestinationRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteEventDestinationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteEventDestinationResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteEventDestination operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteEventDestination operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDeleteEventDestination
        ///         operation.
        /// REST API Reference for DeleteEventDestination Operation
        public virtual IAsyncResult BeginDeleteEventDestination(DeleteEventDestinationRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteEventDestinationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteEventDestinationResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteEventDestination operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteEventDestination.
        /// 
        /// Returns a  DeleteEventDestinationResult from PinpointSMSVoiceV2.
        /// REST API Reference for DeleteEventDestination Operation
        public virtual DeleteEventDestinationResponse EndDeleteEventDestination(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteKeyword
        /// 
        /// Deletes an existing keyword from an origination phone number or pool.
        /// 
        ///  
        /// 
        /// A keyword is a word that you can search for on a particular phone number or pool.
        /// It is also a specific word or phrase that an end user can send to your number to elicit
        /// a response, such as an informational message or a special offer. When your number
        /// receives a message that begins with a keyword, Amazon Pinpoint responds with a customizable
        /// message.
        /// 
        ///  
        /// 
        /// Keywords "HELP" and "STOP" can't be deleted or modified.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteKeyword service method.
        /// 
        /// The response from the DeleteKeyword service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// Your request has conflicting operations. This can occur if you're trying to perform
        /// more than one operation on the same resource at the same time or it could be that
        /// the requested action isn't valid for the current state or configuration of the resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DeleteKeyword Operation
        public virtual DeleteKeywordResponse DeleteKeyword(DeleteKeywordRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteKeywordRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteKeywordResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteKeyword operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteKeyword operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDeleteKeyword
        ///         operation.
        /// REST API Reference for DeleteKeyword Operation
        public virtual IAsyncResult BeginDeleteKeyword(DeleteKeywordRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteKeywordRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteKeywordResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteKeyword operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteKeyword.
        /// 
        /// Returns a  DeleteKeywordResult from PinpointSMSVoiceV2.
        /// REST API Reference for DeleteKeyword Operation
        public virtual DeleteKeywordResponse EndDeleteKeyword(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteOptedOutNumber
        /// 
        /// Deletes an existing opted out destination phone number from the specified opt-out
        /// list.
        /// 
        ///  
        /// 
        /// Each destination phone number can only be deleted once every 30 days.
        /// 
        ///  
        /// 
        /// If the specified destination phone number doesn't exist or if the opt-out list doesn't
        /// exist, an Error is returned.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteOptedOutNumber service method.
        /// 
        /// The response from the DeleteOptedOutNumber service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// Your request has conflicting operations. This can occur if you're trying to perform
        /// more than one operation on the same resource at the same time or it could be that
        /// the requested action isn't valid for the current state or configuration of the resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DeleteOptedOutNumber Operation
        public virtual DeleteOptedOutNumberResponse DeleteOptedOutNumber(DeleteOptedOutNumberRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteOptedOutNumberRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteOptedOutNumberResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteOptedOutNumber operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteOptedOutNumber operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDeleteOptedOutNumber
        ///         operation.
        /// REST API Reference for DeleteOptedOutNumber Operation
        public virtual IAsyncResult BeginDeleteOptedOutNumber(DeleteOptedOutNumberRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteOptedOutNumberRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteOptedOutNumberResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteOptedOutNumber operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteOptedOutNumber.
        /// 
        /// Returns a  DeleteOptedOutNumberResult from PinpointSMSVoiceV2.
        /// REST API Reference for DeleteOptedOutNumber Operation
        public virtual DeleteOptedOutNumberResponse EndDeleteOptedOutNumber(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteOptOutList
        /// 
        /// Deletes an existing opt-out list. All opted out phone numbers in the opt-out list
        /// are deleted.
        /// 
        ///  
        /// 
        /// If the specified opt-out list name doesn't exist or is in-use by an origination phone
        /// number or pool, an Error is returned.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteOptOutList service method.
        /// 
        /// The response from the DeleteOptOutList service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// Your request has conflicting operations. This can occur if you're trying to perform
        /// more than one operation on the same resource at the same time or it could be that
        /// the requested action isn't valid for the current state or configuration of the resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DeleteOptOutList Operation
        public virtual DeleteOptOutListResponse DeleteOptOutList(DeleteOptOutListRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteOptOutListRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteOptOutListResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteOptOutList operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteOptOutList operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDeleteOptOutList
        ///         operation.
        /// REST API Reference for DeleteOptOutList Operation
        public virtual IAsyncResult BeginDeleteOptOutList(DeleteOptOutListRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteOptOutListRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteOptOutListResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteOptOutList operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteOptOutList.
        /// 
        /// Returns a  DeleteOptOutListResult from PinpointSMSVoiceV2.
        /// REST API Reference for DeleteOptOutList Operation
        public virtual DeleteOptOutListResponse EndDeleteOptOutList(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeletePool
        /// 
        /// Deletes an existing pool. Deleting a pool disassociates all origination identities
        /// from that pool.
        /// 
        ///  
        /// 
        /// If the pool status isn't active or if deletion protection is enabled, an Error is
        /// returned.
        /// 
        ///  
        /// 
        /// A pool is a collection of phone numbers and SenderIds. A pool can include one or more
        /// phone numbers and SenderIds that are associated with your Amazon Web Services account.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeletePool service method.
        /// 
        /// The response from the DeletePool service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// Your request has conflicting operations. This can occur if you're trying to perform
        /// more than one operation on the same resource at the same time or it could be that
        /// the requested action isn't valid for the current state or configuration of the resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DeletePool Operation
        public virtual DeletePoolResponse DeletePool(DeletePoolRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeletePoolRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeletePoolResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeletePool operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeletePool operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDeletePool
        ///         operation.
        /// REST API Reference for DeletePool Operation
        public virtual IAsyncResult BeginDeletePool(DeletePoolRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeletePoolRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeletePoolResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeletePool operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeletePool.
        /// 
        /// Returns a  DeletePoolResult from PinpointSMSVoiceV2.
        /// REST API Reference for DeletePool Operation
        public virtual DeletePoolResponse EndDeletePool(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteTextMessageSpendLimitOverride
        /// 
        /// Deletes an account-level monthly spending limit override for sending text messages.
        /// Deleting a spend limit override will set the EnforcedLimit to equal the
        /// MaxLimit, which is controlled by Amazon Web Services. For more information
        /// on spend limits (quotas) see Amazon
        /// Pinpoint quotas  in the Amazon Pinpoint Developer Guide.
        /// 
        /// Container for the necessary parameters to execute the DeleteTextMessageSpendLimitOverride service method.
        /// 
        /// The response from the DeleteTextMessageSpendLimitOverride service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DeleteTextMessageSpendLimitOverride Operation
        public virtual DeleteTextMessageSpendLimitOverrideResponse DeleteTextMessageSpendLimitOverride(DeleteTextMessageSpendLimitOverrideRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteTextMessageSpendLimitOverrideRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteTextMessageSpendLimitOverrideResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteTextMessageSpendLimitOverride operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteTextMessageSpendLimitOverride operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDeleteTextMessageSpendLimitOverride
        ///         operation.
        /// REST API Reference for DeleteTextMessageSpendLimitOverride Operation
        public virtual IAsyncResult BeginDeleteTextMessageSpendLimitOverride(DeleteTextMessageSpendLimitOverrideRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteTextMessageSpendLimitOverrideRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteTextMessageSpendLimitOverrideResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteTextMessageSpendLimitOverride operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteTextMessageSpendLimitOverride.
        /// 
        /// Returns a  DeleteTextMessageSpendLimitOverrideResult from PinpointSMSVoiceV2.
        /// REST API Reference for DeleteTextMessageSpendLimitOverride Operation
        public virtual DeleteTextMessageSpendLimitOverrideResponse EndDeleteTextMessageSpendLimitOverride(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteVoiceMessageSpendLimitOverride
        /// 
        /// Deletes an account level monthly spend limit override for sending voice messages.
        /// Deleting a spend limit override sets the EnforcedLimit equal to the MaxLimit,
        /// which is controlled by Amazon Web Services. For more information on spending limits
        /// (quotas) see Amazon
        /// Pinpoint quotas in the Amazon Pinpoint Developer Guide.
        /// 
        /// Container for the necessary parameters to execute the DeleteVoiceMessageSpendLimitOverride service method.
        /// 
        /// The response from the DeleteVoiceMessageSpendLimitOverride service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DeleteVoiceMessageSpendLimitOverride Operation
        public virtual DeleteVoiceMessageSpendLimitOverrideResponse DeleteVoiceMessageSpendLimitOverride(DeleteVoiceMessageSpendLimitOverrideRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteVoiceMessageSpendLimitOverrideRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteVoiceMessageSpendLimitOverrideResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteVoiceMessageSpendLimitOverride operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteVoiceMessageSpendLimitOverride operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDeleteVoiceMessageSpendLimitOverride
        ///         operation.
        /// REST API Reference for DeleteVoiceMessageSpendLimitOverride Operation
        public virtual IAsyncResult BeginDeleteVoiceMessageSpendLimitOverride(DeleteVoiceMessageSpendLimitOverrideRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteVoiceMessageSpendLimitOverrideRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteVoiceMessageSpendLimitOverrideResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteVoiceMessageSpendLimitOverride operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteVoiceMessageSpendLimitOverride.
        /// 
        /// Returns a  DeleteVoiceMessageSpendLimitOverrideResult from PinpointSMSVoiceV2.
        /// REST API Reference for DeleteVoiceMessageSpendLimitOverride Operation
        public virtual DeleteVoiceMessageSpendLimitOverrideResponse EndDeleteVoiceMessageSpendLimitOverride(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DescribeAccountAttributes
        /// 
        /// Describes attributes of your Amazon Web Services account. The supported account attributes
        /// include account tier, which indicates whether your account is in the sandbox or production
        /// environment. When you're ready to move your account out of the sandbox, create an
        /// Amazon Web Services Support case for a service limit increase request.
        /// 
        ///  
        /// 
        /// New Amazon Pinpoint accounts are placed into an SMS or voice sandbox. The sandbox
        /// protects both Amazon Web Services end recipients and SMS or voice recipients from
        /// fraud and abuse. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeAccountAttributes service method.
        /// 
        /// The response from the DescribeAccountAttributes service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DescribeAccountAttributes Operation
        public virtual DescribeAccountAttributesResponse DescribeAccountAttributes(DescribeAccountAttributesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeAccountAttributesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeAccountAttributesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DescribeAccountAttributes operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeAccountAttributes operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDescribeAccountAttributes
        ///         operation.
        /// REST API Reference for DescribeAccountAttributes Operation
        public virtual IAsyncResult BeginDescribeAccountAttributes(DescribeAccountAttributesRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeAccountAttributesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeAccountAttributesResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DescribeAccountAttributes operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDescribeAccountAttributes.
        /// 
        /// Returns a  DescribeAccountAttributesResult from PinpointSMSVoiceV2.
        /// REST API Reference for DescribeAccountAttributes Operation
        public virtual DescribeAccountAttributesResponse EndDescribeAccountAttributes(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DescribeAccountLimits
        /// 
        /// Describes the current Amazon Pinpoint SMS Voice V2 resource quotas for your account.
        /// The description for a quota includes the quota name, current usage toward that quota,
        /// and the quota's maximum value.
        /// 
        ///  
        /// 
        /// When you establish an Amazon Web Services account, the account has initial quotas
        /// on the maximum number of configuration sets, opt-out lists, phone numbers, and pools
        /// that you can create in a given Region. For more information see 
        /// Amazon Pinpoint quotas  in the Amazon Pinpoint Developer Guide.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeAccountLimits service method.
        /// 
        /// The response from the DescribeAccountLimits service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DescribeAccountLimits Operation
        public virtual DescribeAccountLimitsResponse DescribeAccountLimits(DescribeAccountLimitsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeAccountLimitsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeAccountLimitsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DescribeAccountLimits operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeAccountLimits operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDescribeAccountLimits
        ///         operation.
        /// REST API Reference for DescribeAccountLimits Operation
        public virtual IAsyncResult BeginDescribeAccountLimits(DescribeAccountLimitsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeAccountLimitsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeAccountLimitsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DescribeAccountLimits operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDescribeAccountLimits.
        /// 
        /// Returns a  DescribeAccountLimitsResult from PinpointSMSVoiceV2.
        /// REST API Reference for DescribeAccountLimits Operation
        public virtual DescribeAccountLimitsResponse EndDescribeAccountLimits(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DescribeConfigurationSets
        /// 
        /// Describes the specified configuration sets or all in your account.
        /// 
        ///  
        /// 
        /// If you specify configuration set names, the output includes information for only the
        /// specified configuration sets. If you specify filters, the output includes information
        /// for only those configuration sets that meet the filter criteria. If you don't specify
        /// configuration set names or filters, the output includes information for all configuration
        /// sets.
        /// 
        ///  
        /// 
        /// If you specify a configuration set name that isn't valid, an error is returned.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeConfigurationSets service method.
        /// 
        /// The response from the DescribeConfigurationSets service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DescribeConfigurationSets Operation
        public virtual DescribeConfigurationSetsResponse DescribeConfigurationSets(DescribeConfigurationSetsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConfigurationSetsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConfigurationSetsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DescribeConfigurationSets operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeConfigurationSets operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDescribeConfigurationSets
        ///         operation.
        /// REST API Reference for DescribeConfigurationSets Operation
        public virtual IAsyncResult BeginDescribeConfigurationSets(DescribeConfigurationSetsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConfigurationSetsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConfigurationSetsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DescribeConfigurationSets operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDescribeConfigurationSets.
        /// 
        /// Returns a  DescribeConfigurationSetsResult from PinpointSMSVoiceV2.
        /// REST API Reference for DescribeConfigurationSets Operation
        public virtual DescribeConfigurationSetsResponse EndDescribeConfigurationSets(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DescribeKeywords
        /// 
        /// Describes the specified keywords or all keywords on your origination phone number
        /// or pool.
        /// 
        ///  
        /// 
        /// A keyword is a word that you can search for on a particular phone number or pool.
        /// It is also a specific word or phrase that an end user can send to your number to elicit
        /// a response, such as an informational message or a special offer. When your number
        /// receives a message that begins with a keyword, Amazon Pinpoint responds with a customizable
        /// message.
        /// 
        ///  
        /// 
        /// If you specify a keyword that isn't valid, an Error is returned.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeKeywords service method.
        /// 
        /// The response from the DescribeKeywords service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DescribeKeywords Operation
        public virtual DescribeKeywordsResponse DescribeKeywords(DescribeKeywordsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeKeywordsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeKeywordsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DescribeKeywords operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeKeywords operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDescribeKeywords
        ///         operation.
        /// REST API Reference for DescribeKeywords Operation
        public virtual IAsyncResult BeginDescribeKeywords(DescribeKeywordsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeKeywordsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeKeywordsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DescribeKeywords operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDescribeKeywords.
        /// 
        /// Returns a  DescribeKeywordsResult from PinpointSMSVoiceV2.
        /// REST API Reference for DescribeKeywords Operation
        public virtual DescribeKeywordsResponse EndDescribeKeywords(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DescribeOptedOutNumbers
        /// 
        /// Describes the specified opted out destination numbers or all opted out destination
        /// numbers in an opt-out list.
        /// 
        ///  
        /// 
        /// If you specify opted out numbers, the output includes information for only the specified
        /// opted out numbers. If you specify filters, the output includes information for only
        /// those opted out numbers that meet the filter criteria. If you don't specify opted
        /// out numbers or filters, the output includes information for all opted out destination
        /// numbers in your opt-out list.
        /// 
        ///  
        /// 
        /// If you specify an opted out number that isn't valid, an Error is returned.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeOptedOutNumbers service method.
        /// 
        /// The response from the DescribeOptedOutNumbers service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DescribeOptedOutNumbers Operation
        public virtual DescribeOptedOutNumbersResponse DescribeOptedOutNumbers(DescribeOptedOutNumbersRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeOptedOutNumbersRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeOptedOutNumbersResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DescribeOptedOutNumbers operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeOptedOutNumbers operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDescribeOptedOutNumbers
        ///         operation.
        /// REST API Reference for DescribeOptedOutNumbers Operation
        public virtual IAsyncResult BeginDescribeOptedOutNumbers(DescribeOptedOutNumbersRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeOptedOutNumbersRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeOptedOutNumbersResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DescribeOptedOutNumbers operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDescribeOptedOutNumbers.
        /// 
        /// Returns a  DescribeOptedOutNumbersResult from PinpointSMSVoiceV2.
        /// REST API Reference for DescribeOptedOutNumbers Operation
        public virtual DescribeOptedOutNumbersResponse EndDescribeOptedOutNumbers(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DescribeOptOutLists
        /// 
        /// Describes the specified opt-out list or all opt-out lists in your account.
        /// 
        ///  
        /// 
        /// If you specify opt-out list names, the output includes information for only the specified
        /// opt-out lists. Opt-out lists include only those that meet the filter criteria. If
        /// you don't specify opt-out list names or filters, the output includes information for
        /// all opt-out lists.
        /// 
        ///  
        /// 
        /// If you specify an opt-out list name that isn't valid, an Error is returned.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeOptOutLists service method.
        /// 
        /// The response from the DescribeOptOutLists service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DescribeOptOutLists Operation
        public virtual DescribeOptOutListsResponse DescribeOptOutLists(DescribeOptOutListsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeOptOutListsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeOptOutListsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DescribeOptOutLists operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeOptOutLists operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDescribeOptOutLists
        ///         operation.
        /// REST API Reference for DescribeOptOutLists Operation
        public virtual IAsyncResult BeginDescribeOptOutLists(DescribeOptOutListsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeOptOutListsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeOptOutListsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DescribeOptOutLists operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDescribeOptOutLists.
        /// 
        /// Returns a  DescribeOptOutListsResult from PinpointSMSVoiceV2.
        /// REST API Reference for DescribeOptOutLists Operation
        public virtual DescribeOptOutListsResponse EndDescribeOptOutLists(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DescribePhoneNumbers
        /// 
        /// Describes the specified origination phone number, or all the phone numbers in your
        /// account.
        /// 
        ///  
        /// 
        /// If you specify phone number IDs, the output includes information for only the specified
        /// phone numbers. If you specify filters, the output includes information for only those
        /// phone numbers that meet the filter criteria. If you don't specify phone number IDs
        /// or filters, the output includes information for all phone numbers.
        /// 
        ///  
        /// 
        /// If you specify a phone number ID that isn't valid, an Error is returned.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribePhoneNumbers service method.
        /// 
        /// The response from the DescribePhoneNumbers service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DescribePhoneNumbers Operation
        public virtual DescribePhoneNumbersResponse DescribePhoneNumbers(DescribePhoneNumbersRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribePhoneNumbersRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribePhoneNumbersResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DescribePhoneNumbers operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribePhoneNumbers operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDescribePhoneNumbers
        ///         operation.
        /// REST API Reference for DescribePhoneNumbers Operation
        public virtual IAsyncResult BeginDescribePhoneNumbers(DescribePhoneNumbersRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribePhoneNumbersRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribePhoneNumbersResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DescribePhoneNumbers operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDescribePhoneNumbers.
        /// 
        /// Returns a  DescribePhoneNumbersResult from PinpointSMSVoiceV2.
        /// REST API Reference for DescribePhoneNumbers Operation
        public virtual DescribePhoneNumbersResponse EndDescribePhoneNumbers(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DescribePools
        /// 
        /// Retrieves the specified pools or all pools associated with your Amazon Web Services
        /// account.
        /// 
        ///  
        /// 
        /// If you specify pool IDs, the output includes information for only the specified pools.
        /// If you specify filters, the output includes information for only those pools that
        /// meet the filter criteria. If you don't specify pool IDs or filters, the output includes
        /// information for all pools.
        /// 
        ///  
        /// 
        /// If you specify a pool ID that isn't valid, an Error is returned.
        /// 
        ///  
        /// 
        /// A pool is a collection of phone numbers and SenderIds. A pool can include one or more
        /// phone numbers and SenderIds that are associated with your Amazon Web Services account.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribePools service method.
        /// 
        /// The response from the DescribePools service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DescribePools Operation
        public virtual DescribePoolsResponse DescribePools(DescribePoolsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribePoolsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribePoolsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DescribePools operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribePools operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDescribePools
        ///         operation.
        /// REST API Reference for DescribePools Operation
        public virtual IAsyncResult BeginDescribePools(DescribePoolsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribePoolsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribePoolsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DescribePools operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDescribePools.
        /// 
        /// Returns a  DescribePoolsResult from PinpointSMSVoiceV2.
        /// REST API Reference for DescribePools Operation
        public virtual DescribePoolsResponse EndDescribePools(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DescribeSenderIds
        /// 
        /// Describes the specified SenderIds or all SenderIds associated with your Amazon Web
        /// Services account.
        /// 
        ///  
        /// 
        /// If you specify SenderIds, the output includes information for only the specified SenderIds.
        /// If you specify filters, the output includes information for only those SenderIds that
        /// meet the filter criteria. If you don't specify SenderIds or filters, the output includes
        /// information for all SenderIds.
        /// 
        ///  
        /// 
        /// f you specify a sender ID that isn't valid, an Error is returned.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeSenderIds service method.
        /// 
        /// The response from the DescribeSenderIds service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DescribeSenderIds Operation
        public virtual DescribeSenderIdsResponse DescribeSenderIds(DescribeSenderIdsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeSenderIdsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeSenderIdsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DescribeSenderIds operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeSenderIds operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDescribeSenderIds
        ///         operation.
        /// REST API Reference for DescribeSenderIds Operation
        public virtual IAsyncResult BeginDescribeSenderIds(DescribeSenderIdsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeSenderIdsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeSenderIdsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DescribeSenderIds operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDescribeSenderIds.
        /// 
        /// Returns a  DescribeSenderIdsResult from PinpointSMSVoiceV2.
        /// REST API Reference for DescribeSenderIds Operation
        public virtual DescribeSenderIdsResponse EndDescribeSenderIds(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DescribeSpendLimits
        /// 
        /// Describes the current Amazon Pinpoint monthly spend limits for sending voice and text
        /// messages.
        /// 
        ///  
        /// 
        /// When you establish an Amazon Web Services account, the account has initial monthly
        /// spend limit in a given Region. For more information on increasing your monthly spend
        /// limit, see 
        /// Requesting increases to your monthly SMS spending quota for Amazon Pinpoint  in
        /// the Amazon Pinpoint User Guide.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeSpendLimits service method.
        /// 
        /// The response from the DescribeSpendLimits service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DescribeSpendLimits Operation
        public virtual DescribeSpendLimitsResponse DescribeSpendLimits(DescribeSpendLimitsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeSpendLimitsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeSpendLimitsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DescribeSpendLimits operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeSpendLimits operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDescribeSpendLimits
        ///         operation.
        /// REST API Reference for DescribeSpendLimits Operation
        public virtual IAsyncResult BeginDescribeSpendLimits(DescribeSpendLimitsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeSpendLimitsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeSpendLimitsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DescribeSpendLimits operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDescribeSpendLimits.
        /// 
        /// Returns a  DescribeSpendLimitsResult from PinpointSMSVoiceV2.
        /// REST API Reference for DescribeSpendLimits Operation
        public virtual DescribeSpendLimitsResponse EndDescribeSpendLimits(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DisassociateOriginationIdentity
        /// 
        /// Removes the specified origination identity from an existing pool.
        /// 
        ///  
        /// 
        /// If the origination identity isn't associated with the specified pool, an Error is
        /// returned.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DisassociateOriginationIdentity service method.
        /// 
        /// The response from the DisassociateOriginationIdentity service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// Your request has conflicting operations. This can occur if you're trying to perform
        /// more than one operation on the same resource at the same time or it could be that
        /// the requested action isn't valid for the current state or configuration of the resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for DisassociateOriginationIdentity Operation
        public virtual DisassociateOriginationIdentityResponse DisassociateOriginationIdentity(DisassociateOriginationIdentityRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DisassociateOriginationIdentityRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DisassociateOriginationIdentityResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DisassociateOriginationIdentity operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DisassociateOriginationIdentity operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDisassociateOriginationIdentity
        ///         operation.
        /// REST API Reference for DisassociateOriginationIdentity Operation
        public virtual IAsyncResult BeginDisassociateOriginationIdentity(DisassociateOriginationIdentityRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DisassociateOriginationIdentityRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DisassociateOriginationIdentityResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DisassociateOriginationIdentity operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDisassociateOriginationIdentity.
        /// 
        /// Returns a  DisassociateOriginationIdentityResult from PinpointSMSVoiceV2.
        /// REST API Reference for DisassociateOriginationIdentity Operation
        public virtual DisassociateOriginationIdentityResponse EndDisassociateOriginationIdentity(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListPoolOriginationIdentities
        /// 
        /// Lists all associated origination identities in your pool.
        /// 
        ///  
        /// 
        /// If you specify filters, the output includes information for only those origination
        /// identities that meet the filter criteria.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListPoolOriginationIdentities service method.
        /// 
        /// The response from the ListPoolOriginationIdentities service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for ListPoolOriginationIdentities Operation
        public virtual ListPoolOriginationIdentitiesResponse ListPoolOriginationIdentities(ListPoolOriginationIdentitiesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListPoolOriginationIdentitiesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListPoolOriginationIdentitiesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListPoolOriginationIdentities operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListPoolOriginationIdentities operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndListPoolOriginationIdentities
        ///         operation.
        /// REST API Reference for ListPoolOriginationIdentities Operation
        public virtual IAsyncResult BeginListPoolOriginationIdentities(ListPoolOriginationIdentitiesRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListPoolOriginationIdentitiesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListPoolOriginationIdentitiesResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListPoolOriginationIdentities operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListPoolOriginationIdentities.
        /// 
        /// Returns a  ListPoolOriginationIdentitiesResult from PinpointSMSVoiceV2.
        /// REST API Reference for ListPoolOriginationIdentities Operation
        public virtual ListPoolOriginationIdentitiesResponse EndListPoolOriginationIdentities(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListTagsForResource
        /// 
        /// List all tags associated with a resource.
        /// 
        /// Container for the necessary parameters to execute the ListTagsForResource service method.
        /// 
        /// The response from the ListTagsForResource service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for ListTagsForResource Operation
        public virtual ListTagsForResourceResponse ListTagsForResource(ListTagsForResourceRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListTagsForResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListTagsForResourceResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListTagsForResource operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListTagsForResource operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndListTagsForResource
        ///         operation.
        /// REST API Reference for ListTagsForResource Operation
        public virtual IAsyncResult BeginListTagsForResource(ListTagsForResourceRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListTagsForResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListTagsForResourceResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListTagsForResource operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListTagsForResource.
        /// 
        /// Returns a  ListTagsForResourceResult from PinpointSMSVoiceV2.
        /// REST API Reference for ListTagsForResource Operation
        public virtual ListTagsForResourceResponse EndListTagsForResource(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  PutKeyword
        /// 
        /// Creates or updates a keyword configuration on an origination phone number or pool.
        /// 
        ///  
        /// 
        ///  A keyword is a word that you can search for on a particular phone number or pool.
        /// It is also a specific word or phrase that an end user can send to your number to elicit
        /// a response, such as an informational message or a special offer. When your number
        /// receives a message that begins with a keyword, Amazon Pinpoint responds with a customizable
        /// message.
        /// 
        ///  
        /// 
        /// If you specify a keyword that isn't valid, an Error is returned.
        /// 
        /// 
        /// Container for the necessary parameters to execute the PutKeyword service method.
        /// 
        /// The response from the PutKeyword service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// Your request has conflicting operations. This can occur if you're trying to perform
        /// more than one operation on the same resource at the same time or it could be that
        /// the requested action isn't valid for the current state or configuration of the resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// The request would cause a service quota to be exceeded.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for PutKeyword Operation
        public virtual PutKeywordResponse PutKeyword(PutKeywordRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutKeywordRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutKeywordResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the PutKeyword operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the PutKeyword operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndPutKeyword
        ///         operation.
        /// REST API Reference for PutKeyword Operation
        public virtual IAsyncResult BeginPutKeyword(PutKeywordRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutKeywordRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutKeywordResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  PutKeyword operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginPutKeyword.
        /// 
        /// Returns a  PutKeywordResult from PinpointSMSVoiceV2.
        /// REST API Reference for PutKeyword Operation
        public virtual PutKeywordResponse EndPutKeyword(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  PutOptedOutNumber
        /// 
        /// Creates an opted out destination phone number in the opt-out list.
        /// 
        ///  
        /// 
        /// If the destination phone number isn't valid or if the specified opt-out list doesn't
        /// exist, an Error is returned.
        /// 
        /// 
        /// Container for the necessary parameters to execute the PutOptedOutNumber service method.
        /// 
        /// The response from the PutOptedOutNumber service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for PutOptedOutNumber Operation
        public virtual PutOptedOutNumberResponse PutOptedOutNumber(PutOptedOutNumberRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutOptedOutNumberRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutOptedOutNumberResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the PutOptedOutNumber operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the PutOptedOutNumber operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndPutOptedOutNumber
        ///         operation.
        /// REST API Reference for PutOptedOutNumber Operation
        public virtual IAsyncResult BeginPutOptedOutNumber(PutOptedOutNumberRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutOptedOutNumberRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutOptedOutNumberResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  PutOptedOutNumber operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginPutOptedOutNumber.
        /// 
        /// Returns a  PutOptedOutNumberResult from PinpointSMSVoiceV2.
        /// REST API Reference for PutOptedOutNumber Operation
        public virtual PutOptedOutNumberResponse EndPutOptedOutNumber(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ReleasePhoneNumber
        /// 
        /// Releases an existing origination phone number in your account. Once released, a phone
        /// number is no longer available for sending messages.
        /// 
        ///  
        /// 
        /// If the origination phone number has deletion protection enabled or is associated with
        /// a pool, an Error is returned.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ReleasePhoneNumber service method.
        /// 
        /// The response from the ReleasePhoneNumber service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// Your request has conflicting operations. This can occur if you're trying to perform
        /// more than one operation on the same resource at the same time or it could be that
        /// the requested action isn't valid for the current state or configuration of the resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for ReleasePhoneNumber Operation
        public virtual ReleasePhoneNumberResponse ReleasePhoneNumber(ReleasePhoneNumberRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ReleasePhoneNumberRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ReleasePhoneNumberResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ReleasePhoneNumber operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ReleasePhoneNumber operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndReleasePhoneNumber
        ///         operation.
        /// REST API Reference for ReleasePhoneNumber Operation
        public virtual IAsyncResult BeginReleasePhoneNumber(ReleasePhoneNumberRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ReleasePhoneNumberRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ReleasePhoneNumberResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ReleasePhoneNumber operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginReleasePhoneNumber.
        /// 
        /// Returns a  ReleasePhoneNumberResult from PinpointSMSVoiceV2.
        /// REST API Reference for ReleasePhoneNumber Operation
        public virtual ReleasePhoneNumberResponse EndReleasePhoneNumber(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  RequestPhoneNumber
        /// 
        /// Request an origination phone number for use in your account. For more information
        /// on phone number request see 
        /// Requesting a number  in the Amazon Pinpoint User Guide.
        /// 
        /// Container for the necessary parameters to execute the RequestPhoneNumber service method.
        /// 
        /// The response from the RequestPhoneNumber service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// Your request has conflicting operations. This can occur if you're trying to perform
        /// more than one operation on the same resource at the same time or it could be that
        /// the requested action isn't valid for the current state or configuration of the resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// The request would cause a service quota to be exceeded.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for RequestPhoneNumber Operation
        public virtual RequestPhoneNumberResponse RequestPhoneNumber(RequestPhoneNumberRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = RequestPhoneNumberRequestMarshaller.Instance;
            options.ResponseUnmarshaller = RequestPhoneNumberResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the RequestPhoneNumber operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the RequestPhoneNumber operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndRequestPhoneNumber
        ///         operation.
        /// REST API Reference for RequestPhoneNumber Operation
        public virtual IAsyncResult BeginRequestPhoneNumber(RequestPhoneNumberRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = RequestPhoneNumberRequestMarshaller.Instance;
            options.ResponseUnmarshaller = RequestPhoneNumberResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  RequestPhoneNumber operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginRequestPhoneNumber.
        /// 
        /// Returns a  RequestPhoneNumberResult from PinpointSMSVoiceV2.
        /// REST API Reference for RequestPhoneNumber Operation
        public virtual RequestPhoneNumberResponse EndRequestPhoneNumber(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  SendTextMessage
        /// 
        /// Creates a new text message and sends it to a recipient's phone number.
        /// 
        ///  
        /// 
        /// SMS throughput limits are measured in Message Parts per Second (MPS). Your MPS limit
        /// depends on the destination country of your messages, as well as the type of phone
        /// number (origination number) that you use to send the message. For more information,
        /// see Message
        /// Parts per Second (MPS) limits in the Amazon Pinpoint User Guide.
        /// 
        /// 
        /// Container for the necessary parameters to execute the SendTextMessage service method.
        /// 
        /// The response from the SendTextMessage service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// Your request has conflicting operations. This can occur if you're trying to perform
        /// more than one operation on the same resource at the same time or it could be that
        /// the requested action isn't valid for the current state or configuration of the resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// The request would cause a service quota to be exceeded.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for SendTextMessage Operation
        public virtual SendTextMessageResponse SendTextMessage(SendTextMessageRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = SendTextMessageRequestMarshaller.Instance;
            options.ResponseUnmarshaller = SendTextMessageResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the SendTextMessage operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the SendTextMessage operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndSendTextMessage
        ///         operation.
        /// REST API Reference for SendTextMessage Operation
        public virtual IAsyncResult BeginSendTextMessage(SendTextMessageRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = SendTextMessageRequestMarshaller.Instance;
            options.ResponseUnmarshaller = SendTextMessageResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  SendTextMessage operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginSendTextMessage.
        /// 
        /// Returns a  SendTextMessageResult from PinpointSMSVoiceV2.
        /// REST API Reference for SendTextMessage Operation
        public virtual SendTextMessageResponse EndSendTextMessage(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  SendVoiceMessage
        /// 
        /// Allows you to send a request that sends a text message through Amazon Pinpoint. This
        /// operation uses Amazon Polly to convert
        /// a text script into a voice message.
        /// 
        /// Container for the necessary parameters to execute the SendVoiceMessage service method.
        /// 
        /// The response from the SendVoiceMessage service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// Your request has conflicting operations. This can occur if you're trying to perform
        /// more than one operation on the same resource at the same time or it could be that
        /// the requested action isn't valid for the current state or configuration of the resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// The request would cause a service quota to be exceeded.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for SendVoiceMessage Operation
        public virtual SendVoiceMessageResponse SendVoiceMessage(SendVoiceMessageRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = SendVoiceMessageRequestMarshaller.Instance;
            options.ResponseUnmarshaller = SendVoiceMessageResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the SendVoiceMessage operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the SendVoiceMessage operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndSendVoiceMessage
        ///         operation.
        /// REST API Reference for SendVoiceMessage Operation
        public virtual IAsyncResult BeginSendVoiceMessage(SendVoiceMessageRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = SendVoiceMessageRequestMarshaller.Instance;
            options.ResponseUnmarshaller = SendVoiceMessageResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  SendVoiceMessage operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginSendVoiceMessage.
        /// 
        /// Returns a  SendVoiceMessageResult from PinpointSMSVoiceV2.
        /// REST API Reference for SendVoiceMessage Operation
        public virtual SendVoiceMessageResponse EndSendVoiceMessage(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  SetDefaultMessageType
        /// 
        /// Sets the default message type on a configuration set.
        /// 
        ///  
        /// 
        /// Choose the category of SMS messages that you plan to send from this account. If you
        /// send account-related messages or time-sensitive messages such as one-time passcodes,
        /// choose Transactional. If you plan to send messages that contain marketing material
        /// or other promotional content, choose Promotional. This setting applies to your
        /// entire Amazon Web Services account.
        /// 
        /// 
        /// Container for the necessary parameters to execute the SetDefaultMessageType service method.
        /// 
        /// The response from the SetDefaultMessageType service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for SetDefaultMessageType Operation
        public virtual SetDefaultMessageTypeResponse SetDefaultMessageType(SetDefaultMessageTypeRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = SetDefaultMessageTypeRequestMarshaller.Instance;
            options.ResponseUnmarshaller = SetDefaultMessageTypeResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the SetDefaultMessageType operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the SetDefaultMessageType operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndSetDefaultMessageType
        ///         operation.
        /// REST API Reference for SetDefaultMessageType Operation
        public virtual IAsyncResult BeginSetDefaultMessageType(SetDefaultMessageTypeRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = SetDefaultMessageTypeRequestMarshaller.Instance;
            options.ResponseUnmarshaller = SetDefaultMessageTypeResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  SetDefaultMessageType operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginSetDefaultMessageType.
        /// 
        /// Returns a  SetDefaultMessageTypeResult from PinpointSMSVoiceV2.
        /// REST API Reference for SetDefaultMessageType Operation
        public virtual SetDefaultMessageTypeResponse EndSetDefaultMessageType(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  SetDefaultSenderId
        /// 
        /// Sets default sender ID on a configuration set.
        /// 
        ///  
        /// 
        /// When sending a text message to a destination country that supports sender IDs, the
        /// default sender ID on the configuration set specified will be used if no dedicated
        /// origination phone numbers or registered sender IDs are available in your account.
        /// 
        /// 
        /// Container for the necessary parameters to execute the SetDefaultSenderId service method.
        /// 
        /// The response from the SetDefaultSenderId service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for SetDefaultSenderId Operation
        public virtual SetDefaultSenderIdResponse SetDefaultSenderId(SetDefaultSenderIdRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = SetDefaultSenderIdRequestMarshaller.Instance;
            options.ResponseUnmarshaller = SetDefaultSenderIdResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the SetDefaultSenderId operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the SetDefaultSenderId operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndSetDefaultSenderId
        ///         operation.
        /// REST API Reference for SetDefaultSenderId Operation
        public virtual IAsyncResult BeginSetDefaultSenderId(SetDefaultSenderIdRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = SetDefaultSenderIdRequestMarshaller.Instance;
            options.ResponseUnmarshaller = SetDefaultSenderIdResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  SetDefaultSenderId operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginSetDefaultSenderId.
        /// 
        /// Returns a  SetDefaultSenderIdResult from PinpointSMSVoiceV2.
        /// REST API Reference for SetDefaultSenderId Operation
        public virtual SetDefaultSenderIdResponse EndSetDefaultSenderId(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  SetTextMessageSpendLimitOverride
        /// 
        /// Sets an account level monthly spend limit override for sending text messages. The
        /// requested spend limit must be less than or equal to the MaxLimit, which
        /// is set by Amazon Web Services.
        /// 
        /// Container for the necessary parameters to execute the SetTextMessageSpendLimitOverride service method.
        /// 
        /// The response from the SetTextMessageSpendLimitOverride service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for SetTextMessageSpendLimitOverride Operation
        public virtual SetTextMessageSpendLimitOverrideResponse SetTextMessageSpendLimitOverride(SetTextMessageSpendLimitOverrideRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = SetTextMessageSpendLimitOverrideRequestMarshaller.Instance;
            options.ResponseUnmarshaller = SetTextMessageSpendLimitOverrideResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the SetTextMessageSpendLimitOverride operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the SetTextMessageSpendLimitOverride operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndSetTextMessageSpendLimitOverride
        ///         operation.
        /// REST API Reference for SetTextMessageSpendLimitOverride Operation
        public virtual IAsyncResult BeginSetTextMessageSpendLimitOverride(SetTextMessageSpendLimitOverrideRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = SetTextMessageSpendLimitOverrideRequestMarshaller.Instance;
            options.ResponseUnmarshaller = SetTextMessageSpendLimitOverrideResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  SetTextMessageSpendLimitOverride operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginSetTextMessageSpendLimitOverride.
        /// 
        /// Returns a  SetTextMessageSpendLimitOverrideResult from PinpointSMSVoiceV2.
        /// REST API Reference for SetTextMessageSpendLimitOverride Operation
        public virtual SetTextMessageSpendLimitOverrideResponse EndSetTextMessageSpendLimitOverride(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  SetVoiceMessageSpendLimitOverride
        /// 
        /// Sets an account level monthly spend limit override for sending voice messages. The
        /// requested spend limit must be less than or equal to the MaxLimit, which
        /// is set by Amazon Web Services.
        /// 
        /// Container for the necessary parameters to execute the SetVoiceMessageSpendLimitOverride service method.
        /// 
        /// The response from the SetVoiceMessageSpendLimitOverride service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for SetVoiceMessageSpendLimitOverride Operation
        public virtual SetVoiceMessageSpendLimitOverrideResponse SetVoiceMessageSpendLimitOverride(SetVoiceMessageSpendLimitOverrideRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = SetVoiceMessageSpendLimitOverrideRequestMarshaller.Instance;
            options.ResponseUnmarshaller = SetVoiceMessageSpendLimitOverrideResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the SetVoiceMessageSpendLimitOverride operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the SetVoiceMessageSpendLimitOverride operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndSetVoiceMessageSpendLimitOverride
        ///         operation.
        /// REST API Reference for SetVoiceMessageSpendLimitOverride Operation
        public virtual IAsyncResult BeginSetVoiceMessageSpendLimitOverride(SetVoiceMessageSpendLimitOverrideRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = SetVoiceMessageSpendLimitOverrideRequestMarshaller.Instance;
            options.ResponseUnmarshaller = SetVoiceMessageSpendLimitOverrideResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  SetVoiceMessageSpendLimitOverride operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginSetVoiceMessageSpendLimitOverride.
        /// 
        /// Returns a  SetVoiceMessageSpendLimitOverrideResult from PinpointSMSVoiceV2.
        /// REST API Reference for SetVoiceMessageSpendLimitOverride Operation
        public virtual SetVoiceMessageSpendLimitOverrideResponse EndSetVoiceMessageSpendLimitOverride(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  TagResource
        /// 
        /// Adds or overwrites only the specified tags for the specified Amazon Pinpoint SMS Voice,
        /// version 2 resource. When you specify an existing tag key, the value is overwritten
        /// with the new value. Each resource can have a maximum of 50 tags. Each tag consists
        /// of a key and an optional value. Tag keys must be unique per resource. For more information
        /// about tags, see 
        /// Tagging Amazon Pinpoint resources in the Amazon Pinpoint Developer Guide.
        /// 
        /// Container for the necessary parameters to execute the TagResource service method.
        /// 
        /// The response from the TagResource service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// The request would cause a service quota to be exceeded.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for TagResource Operation
        public virtual TagResourceResponse TagResource(TagResourceRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = TagResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = TagResourceResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the TagResource operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the TagResource operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndTagResource
        ///         operation.
        /// REST API Reference for TagResource Operation
        public virtual IAsyncResult BeginTagResource(TagResourceRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = TagResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = TagResourceResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  TagResource operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginTagResource.
        /// 
        /// Returns a  TagResourceResult from PinpointSMSVoiceV2.
        /// REST API Reference for TagResource Operation
        public virtual TagResourceResponse EndTagResource(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  UntagResource
        /// 
        /// Removes the association of the specified tags from an Amazon Pinpoint SMS Voice V2
        /// resource. For more information on tags see 
        /// Tagging Amazon Pinpoint resources in the Amazon Pinpoint Developer Guide.
        /// 
        /// Container for the necessary parameters to execute the UntagResource service method.
        /// 
        /// The response from the UntagResource service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for UntagResource Operation
        public virtual UntagResourceResponse UntagResource(UntagResourceRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UntagResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UntagResourceResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the UntagResource operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UntagResource operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndUntagResource
        ///         operation.
        /// REST API Reference for UntagResource Operation
        public virtual IAsyncResult BeginUntagResource(UntagResourceRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UntagResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UntagResourceResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  UntagResource operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginUntagResource.
        /// 
        /// Returns a  UntagResourceResult from PinpointSMSVoiceV2.
        /// REST API Reference for UntagResource Operation
        public virtual UntagResourceResponse EndUntagResource(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  UpdateEventDestination
        /// 
        /// Updates an existing event destination in a configuration set. You can update the IAM
        /// role ARN for CloudWatch Logs and Kinesis Data Firehose. You can also enable or disable
        /// the event destination.
        /// 
        ///  
        /// 
        /// You may want to update an event destination to change its matching event types or
        /// updating the destination resource ARN. You can't change an event destination's type
        /// between CloudWatch Logs, Kinesis Data Firehose, and Amazon SNS.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateEventDestination service method.
        /// 
        /// The response from the UpdateEventDestination service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// Your request has conflicting operations. This can occur if you're trying to perform
        /// more than one operation on the same resource at the same time or it could be that
        /// the requested action isn't valid for the current state or configuration of the resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for UpdateEventDestination Operation
        public virtual UpdateEventDestinationResponse UpdateEventDestination(UpdateEventDestinationRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateEventDestinationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateEventDestinationResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the UpdateEventDestination operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateEventDestination operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndUpdateEventDestination
        ///         operation.
        /// REST API Reference for UpdateEventDestination Operation
        public virtual IAsyncResult BeginUpdateEventDestination(UpdateEventDestinationRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateEventDestinationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateEventDestinationResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  UpdateEventDestination operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginUpdateEventDestination.
        /// 
        /// Returns a  UpdateEventDestinationResult from PinpointSMSVoiceV2.
        /// REST API Reference for UpdateEventDestination Operation
        public virtual UpdateEventDestinationResponse EndUpdateEventDestination(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  UpdatePhoneNumber
        /// 
        /// Updates the configuration of an existing origination phone number. You can update
        /// the opt-out list, enable or disable two-way messaging, change the TwoWayChannelArn,
        /// enable or disable self-managed opt-outs, and enable or disable deletion protection.
        /// 
        ///  
        /// 
        /// If the origination phone number is associated with a pool, an Error is returned.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdatePhoneNumber service method.
        /// 
        /// The response from the UpdatePhoneNumber service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// Your request has conflicting operations. This can occur if you're trying to perform
        /// more than one operation on the same resource at the same time or it could be that
        /// the requested action isn't valid for the current state or configuration of the resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for UpdatePhoneNumber Operation
        public virtual UpdatePhoneNumberResponse UpdatePhoneNumber(UpdatePhoneNumberRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdatePhoneNumberRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdatePhoneNumberResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the UpdatePhoneNumber operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdatePhoneNumber operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndUpdatePhoneNumber
        ///         operation.
        /// REST API Reference for UpdatePhoneNumber Operation
        public virtual IAsyncResult BeginUpdatePhoneNumber(UpdatePhoneNumberRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdatePhoneNumberRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdatePhoneNumberResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  UpdatePhoneNumber operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginUpdatePhoneNumber.
        /// 
        /// Returns a  UpdatePhoneNumberResult from PinpointSMSVoiceV2.
        /// REST API Reference for UpdatePhoneNumber Operation
        public virtual UpdatePhoneNumberResponse EndUpdatePhoneNumber(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  UpdatePool
        /// 
        /// Updates the configuration of an existing pool. You can update the opt-out list, enable
        /// or disable two-way messaging, change the TwoWayChannelArn, enable or
        /// disable self-managed opt-outs, enable or disable deletion protection, and enable or
        /// disable shared routes.
        /// 
        /// Container for the necessary parameters to execute the UpdatePool service method.
        /// 
        /// The response from the UpdatePool service method, as returned by PinpointSMSVoiceV2.
        /// 
        /// The request was denied because you don't have sufficient permissions to access the
        /// resource.
        /// 
        /// 
        /// Your request has conflicting operations. This can occur if you're trying to perform
        /// more than one operation on the same resource at the same time or it could be that
        /// the requested action isn't valid for the current state or configuration of the resource.
        /// 
        /// 
        /// The API encountered an unexpected error and couldn't complete the request. You might
        /// be able to successfully issue the request again in the future.
        /// 
        /// 
        /// A requested resource couldn't be found.
        /// 
        /// 
        /// An error that occurred because too many requests were sent during a certain amount
        /// of time.
        /// 
        /// 
        /// A validation exception for a field.
        /// 
        /// REST API Reference for UpdatePool Operation
        public virtual UpdatePoolResponse UpdatePool(UpdatePoolRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdatePoolRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdatePoolResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the UpdatePool operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdatePool operation on AmazonPinpointSMSVoiceV2Client.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndUpdatePool
        ///         operation.
        /// REST API Reference for UpdatePool Operation
        public virtual IAsyncResult BeginUpdatePool(UpdatePoolRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdatePoolRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdatePoolResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  UpdatePool operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginUpdatePool.
        /// 
        /// Returns a  UpdatePoolResult from PinpointSMSVoiceV2.
        /// REST API Reference for UpdatePool Operation
        public virtual UpdatePoolResponse EndUpdatePool(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
    }
}