/*
 * 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 mq-2017-11-27.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Net;
using Amazon.MQ.Model;
using Amazon.MQ.Model.Internal.MarshallTransformations;
using Amazon.MQ.Internal;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
using Amazon.Runtime.Internal.Auth;
using Amazon.Runtime.Internal.Transform;
namespace Amazon.MQ
{
    /// 
    /// Implementation for accessing MQ
    ///
    /// Amazon MQ is a managed message broker service for Apache ActiveMQ and RabbitMQ that
    /// makes it easy to set up and operate message brokers in the cloud. A message broker
    /// allows software applications and components to communicate using various programming
    /// languages, operating systems, and formal messaging protocols.
    /// 
    public partial class AmazonMQClient : AmazonServiceClient, IAmazonMQ
    {
        private static IServiceMetadata serviceMetadata = new AmazonMQMetadata();
#if BCL45 || AWS_ASYNC_ENUMERABLES_API
        private IMQPaginatorFactory _paginators;
        /// 
        /// Paginators for the service
        /// 
        public IMQPaginatorFactory Paginators 
        {
            get 
            {
                if (this._paginators == null) 
                {
                    this._paginators = new MQPaginatorFactory(this);
                }
                return this._paginators;
            }
        }
#endif
        #region Constructors
        /// 
        /// Constructs AmazonMQClient 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 AmazonMQClient()
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonMQConfig()) { }
        /// 
        /// Constructs AmazonMQClient 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 AmazonMQClient(RegionEndpoint region)
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonMQConfig{RegionEndpoint = region}) { }
        /// 
        /// Constructs AmazonMQClient 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 AmazonMQClient Configuration Object
        public AmazonMQClient(AmazonMQConfig config)
            : base(FallbackCredentialsFactory.GetCredentials(config), config){}
        /// 
        /// Constructs AmazonMQClient with AWS Credentials
        /// 
        /// AWS Credentials
        public AmazonMQClient(AWSCredentials credentials)
            : this(credentials, new AmazonMQConfig())
        {
        }
        /// 
        /// Constructs AmazonMQClient with AWS Credentials
        /// 
        /// AWS Credentials
        /// The region to connect.
        public AmazonMQClient(AWSCredentials credentials, RegionEndpoint region)
            : this(credentials, new AmazonMQConfig{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonMQClient with AWS Credentials and an
        /// AmazonMQClient Configuration object.
        /// 
        /// AWS Credentials
        /// The AmazonMQClient Configuration Object
        public AmazonMQClient(AWSCredentials credentials, AmazonMQConfig clientConfig)
            : base(credentials, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonMQClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        public AmazonMQClient(string awsAccessKeyId, string awsSecretAccessKey)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonMQConfig())
        {
        }
        /// 
        /// Constructs AmazonMQClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The region to connect.
        public AmazonMQClient(string awsAccessKeyId, string awsSecretAccessKey, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonMQConfig() {RegionEndpoint=region})
        {
        }
        /// 
        /// Constructs AmazonMQClient with AWS Access Key ID, AWS Secret Key and an
        /// AmazonMQClient Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The AmazonMQClient Configuration Object
        public AmazonMQClient(string awsAccessKeyId, string awsSecretAccessKey, AmazonMQConfig clientConfig)
            : base(awsAccessKeyId, awsSecretAccessKey, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonMQClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        public AmazonMQClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonMQConfig())
        {
        }
        /// 
        /// Constructs AmazonMQClient 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 AmazonMQClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonMQConfig{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonMQClient with AWS Access Key ID, AWS Secret Key and an
        /// AmazonMQClient Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        /// The AmazonMQClient Configuration Object
        public AmazonMQClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, AmazonMQConfig 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 AmazonMQEndpointResolver());
        }
        /// 
        /// 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  CreateBroker
        /// 
        /// Creates a broker. Note: This API is asynchronous.
        /// 
        ///  
        /// 
        /// To create a broker, you must either use the AmazonMQFullAccess IAM policy or include
        /// the following EC2 permissions in your IAM policy.
        /// 
        ///  - 
        /// 
        /// ec2:CreateNetworkInterface
        /// 
        ///  
        /// 
        /// This permission is required to allow Amazon MQ to create an elastic network interface
        /// (ENI) on behalf of your account.
        /// 
        /// 
- 
        /// 
        /// ec2:CreateNetworkInterfacePermission
        /// 
        ///  
        /// 
        /// This permission is required to attach the ENI to the broker instance.
        /// 
        /// 
- 
        /// 
        /// ec2:DeleteNetworkInterface
        /// 
        /// 
- 
        /// 
        /// ec2:DeleteNetworkInterfacePermission
        /// 
        /// 
- 
        /// 
        /// ec2:DetachNetworkInterface
        /// 
        /// 
- 
        /// 
        /// ec2:DescribeInternetGateways
        /// 
        /// 
- 
        /// 
        /// ec2:DescribeNetworkInterfaces
        /// 
        /// 
- 
        /// 
        /// ec2:DescribeNetworkInterfacePermissions
        /// 
        /// 
- 
        /// 
        /// ec2:DescribeRouteTables
        /// 
        /// 
- 
        /// 
        /// ec2:DescribeSecurityGroups
        /// 
        /// 
- 
        /// 
        /// ec2:DescribeSubnets
        /// 
        /// 
- 
        /// 
        /// ec2:DescribeVpcs
        /// 
        /// 
/// 
        /// For more information, see Create
        /// an IAM User and Get Your Amazon Web Services Credentials and Never
        /// Modify or Delete the Amazon MQ Elastic Network Interface in the Amazon MQ Developer
        /// Guide.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateBroker service method.
        /// 
        /// The response from the CreateBroker service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for CreateBroker Operation
        public virtual CreateBrokerResponse CreateBroker(CreateBrokerRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateBrokerRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateBrokerResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreateBroker operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateBroker operation on AmazonMQClient.
        /// 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 EndCreateBroker
        ///         operation.
        /// REST API Reference for CreateBroker Operation
        public virtual IAsyncResult BeginCreateBroker(CreateBrokerRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateBrokerRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateBrokerResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreateBroker operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreateBroker.
        /// 
        /// Returns a  CreateBrokerResult from MQ.
        /// REST API Reference for CreateBroker Operation
        public virtual CreateBrokerResponse EndCreateBroker(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  CreateConfiguration
        /// 
        /// Creates a new configuration for the specified configuration name. Amazon MQ uses the
        /// default configuration (the engine type and version).
        /// 
        /// Container for the necessary parameters to execute the CreateConfiguration service method.
        /// 
        /// The response from the CreateConfiguration service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for CreateConfiguration Operation
        public virtual CreateConfigurationResponse CreateConfiguration(CreateConfigurationRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateConfigurationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateConfigurationResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreateConfiguration operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateConfiguration operation on AmazonMQClient.
        /// 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 EndCreateConfiguration
        ///         operation.
        /// REST API Reference for CreateConfiguration Operation
        public virtual IAsyncResult BeginCreateConfiguration(CreateConfigurationRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateConfigurationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateConfigurationResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreateConfiguration operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreateConfiguration.
        /// 
        /// Returns a  CreateConfigurationResult from MQ.
        /// REST API Reference for CreateConfiguration Operation
        public virtual CreateConfigurationResponse EndCreateConfiguration(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  CreateTags
        /// 
        /// Add a tag to a resource.
        /// 
        /// Container for the necessary parameters to execute the CreateTags service method.
        /// 
        /// The response from the CreateTags service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for CreateTags Operation
        public virtual CreateTagsResponse CreateTags(CreateTagsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateTagsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateTagsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreateTags operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateTags operation on AmazonMQClient.
        /// 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 EndCreateTags
        ///         operation.
        /// REST API Reference for CreateTags Operation
        public virtual IAsyncResult BeginCreateTags(CreateTagsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateTagsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateTagsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreateTags operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreateTags.
        /// 
        /// Returns a  CreateTagsResult from MQ.
        /// REST API Reference for CreateTags Operation
        public virtual CreateTagsResponse EndCreateTags(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  CreateUser
        /// 
        /// Creates an ActiveMQ user.
        /// 
        ///  
        /// 
        /// Do not add personally identifiable information (PII) or other confidential or sensitive
        /// information in broker usernames. Broker usernames are accessible to other Amazon Web
        /// Services services, including CloudWatch Logs. Broker usernames are not intended to
        /// be used for private or sensitive data.
        /// 
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateUser service method.
        /// 
        /// The response from the CreateUser service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for CreateUser Operation
        public virtual CreateUserResponse CreateUser(CreateUserRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateUserRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateUserResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreateUser operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateUser operation on AmazonMQClient.
        /// 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 EndCreateUser
        ///         operation.
        /// REST API Reference for CreateUser Operation
        public virtual IAsyncResult BeginCreateUser(CreateUserRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateUserRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateUserResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreateUser operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreateUser.
        /// 
        /// Returns a  CreateUserResult from MQ.
        /// REST API Reference for CreateUser Operation
        public virtual CreateUserResponse EndCreateUser(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteBroker
        /// 
        /// Deletes a broker. Note: This API is asynchronous.
        /// 
        /// Container for the necessary parameters to execute the DeleteBroker service method.
        /// 
        /// The response from the DeleteBroker service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for DeleteBroker Operation
        public virtual DeleteBrokerResponse DeleteBroker(DeleteBrokerRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteBrokerRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteBrokerResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteBroker operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteBroker operation on AmazonMQClient.
        /// 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 EndDeleteBroker
        ///         operation.
        /// REST API Reference for DeleteBroker Operation
        public virtual IAsyncResult BeginDeleteBroker(DeleteBrokerRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteBrokerRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteBrokerResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteBroker operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteBroker.
        /// 
        /// Returns a  DeleteBrokerResult from MQ.
        /// REST API Reference for DeleteBroker Operation
        public virtual DeleteBrokerResponse EndDeleteBroker(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteTags
        /// 
        /// Removes a tag from a resource.
        /// 
        /// Container for the necessary parameters to execute the DeleteTags service method.
        /// 
        /// The response from the DeleteTags service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for DeleteTags Operation
        public virtual DeleteTagsResponse DeleteTags(DeleteTagsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteTagsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteTagsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteTags operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteTags operation on AmazonMQClient.
        /// 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 EndDeleteTags
        ///         operation.
        /// REST API Reference for DeleteTags Operation
        public virtual IAsyncResult BeginDeleteTags(DeleteTagsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteTagsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteTagsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteTags operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteTags.
        /// 
        /// Returns a  DeleteTagsResult from MQ.
        /// REST API Reference for DeleteTags Operation
        public virtual DeleteTagsResponse EndDeleteTags(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteUser
        /// 
        /// Deletes an ActiveMQ user.
        /// 
        /// Container for the necessary parameters to execute the DeleteUser service method.
        /// 
        /// The response from the DeleteUser service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for DeleteUser Operation
        public virtual DeleteUserResponse DeleteUser(DeleteUserRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteUserRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteUserResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteUser operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteUser operation on AmazonMQClient.
        /// 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 EndDeleteUser
        ///         operation.
        /// REST API Reference for DeleteUser Operation
        public virtual IAsyncResult BeginDeleteUser(DeleteUserRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteUserRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteUserResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteUser operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteUser.
        /// 
        /// Returns a  DeleteUserResult from MQ.
        /// REST API Reference for DeleteUser Operation
        public virtual DeleteUserResponse EndDeleteUser(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DescribeBroker
        /// 
        /// Returns information about the specified broker.
        /// 
        /// Container for the necessary parameters to execute the DescribeBroker service method.
        /// 
        /// The response from the DescribeBroker service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for DescribeBroker Operation
        public virtual DescribeBrokerResponse DescribeBroker(DescribeBrokerRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeBrokerRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeBrokerResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DescribeBroker operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeBroker operation on AmazonMQClient.
        /// 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 EndDescribeBroker
        ///         operation.
        /// REST API Reference for DescribeBroker Operation
        public virtual IAsyncResult BeginDescribeBroker(DescribeBrokerRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeBrokerRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeBrokerResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DescribeBroker operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDescribeBroker.
        /// 
        /// Returns a  DescribeBrokerResult from MQ.
        /// REST API Reference for DescribeBroker Operation
        public virtual DescribeBrokerResponse EndDescribeBroker(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DescribeBrokerEngineTypes
        /// 
        /// Describe available engine types and versions.
        /// 
        /// Container for the necessary parameters to execute the DescribeBrokerEngineTypes service method.
        /// 
        /// The response from the DescribeBrokerEngineTypes service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for DescribeBrokerEngineTypes Operation
        public virtual DescribeBrokerEngineTypesResponse DescribeBrokerEngineTypes(DescribeBrokerEngineTypesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeBrokerEngineTypesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeBrokerEngineTypesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DescribeBrokerEngineTypes operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeBrokerEngineTypes operation on AmazonMQClient.
        /// 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 EndDescribeBrokerEngineTypes
        ///         operation.
        /// REST API Reference for DescribeBrokerEngineTypes Operation
        public virtual IAsyncResult BeginDescribeBrokerEngineTypes(DescribeBrokerEngineTypesRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeBrokerEngineTypesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeBrokerEngineTypesResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DescribeBrokerEngineTypes operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDescribeBrokerEngineTypes.
        /// 
        /// Returns a  DescribeBrokerEngineTypesResult from MQ.
        /// REST API Reference for DescribeBrokerEngineTypes Operation
        public virtual DescribeBrokerEngineTypesResponse EndDescribeBrokerEngineTypes(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DescribeBrokerInstanceOptions
        /// 
        /// Describe available broker instance options.
        /// 
        /// Container for the necessary parameters to execute the DescribeBrokerInstanceOptions service method.
        /// 
        /// The response from the DescribeBrokerInstanceOptions service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for DescribeBrokerInstanceOptions Operation
        public virtual DescribeBrokerInstanceOptionsResponse DescribeBrokerInstanceOptions(DescribeBrokerInstanceOptionsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeBrokerInstanceOptionsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeBrokerInstanceOptionsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DescribeBrokerInstanceOptions operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeBrokerInstanceOptions operation on AmazonMQClient.
        /// 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 EndDescribeBrokerInstanceOptions
        ///         operation.
        /// REST API Reference for DescribeBrokerInstanceOptions Operation
        public virtual IAsyncResult BeginDescribeBrokerInstanceOptions(DescribeBrokerInstanceOptionsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeBrokerInstanceOptionsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeBrokerInstanceOptionsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DescribeBrokerInstanceOptions operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDescribeBrokerInstanceOptions.
        /// 
        /// Returns a  DescribeBrokerInstanceOptionsResult from MQ.
        /// REST API Reference for DescribeBrokerInstanceOptions Operation
        public virtual DescribeBrokerInstanceOptionsResponse EndDescribeBrokerInstanceOptions(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DescribeConfiguration
        /// 
        /// Returns information about the specified configuration.
        /// 
        /// Container for the necessary parameters to execute the DescribeConfiguration service method.
        /// 
        /// The response from the DescribeConfiguration service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for DescribeConfiguration Operation
        public virtual DescribeConfigurationResponse DescribeConfiguration(DescribeConfigurationRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConfigurationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConfigurationResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DescribeConfiguration operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeConfiguration operation on AmazonMQClient.
        /// 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 EndDescribeConfiguration
        ///         operation.
        /// REST API Reference for DescribeConfiguration Operation
        public virtual IAsyncResult BeginDescribeConfiguration(DescribeConfigurationRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConfigurationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConfigurationResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DescribeConfiguration operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDescribeConfiguration.
        /// 
        /// Returns a  DescribeConfigurationResult from MQ.
        /// REST API Reference for DescribeConfiguration Operation
        public virtual DescribeConfigurationResponse EndDescribeConfiguration(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DescribeConfigurationRevision
        /// 
        /// Returns the specified configuration revision for the specified configuration.
        /// 
        /// Container for the necessary parameters to execute the DescribeConfigurationRevision service method.
        /// 
        /// The response from the DescribeConfigurationRevision service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for DescribeConfigurationRevision Operation
        public virtual DescribeConfigurationRevisionResponse DescribeConfigurationRevision(DescribeConfigurationRevisionRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConfigurationRevisionRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConfigurationRevisionResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DescribeConfigurationRevision operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeConfigurationRevision operation on AmazonMQClient.
        /// 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 EndDescribeConfigurationRevision
        ///         operation.
        /// REST API Reference for DescribeConfigurationRevision Operation
        public virtual IAsyncResult BeginDescribeConfigurationRevision(DescribeConfigurationRevisionRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConfigurationRevisionRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConfigurationRevisionResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DescribeConfigurationRevision operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDescribeConfigurationRevision.
        /// 
        /// Returns a  DescribeConfigurationRevisionResult from MQ.
        /// REST API Reference for DescribeConfigurationRevision Operation
        public virtual DescribeConfigurationRevisionResponse EndDescribeConfigurationRevision(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DescribeUser
        /// 
        /// Returns information about an ActiveMQ user.
        /// 
        /// Container for the necessary parameters to execute the DescribeUser service method.
        /// 
        /// The response from the DescribeUser service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for DescribeUser Operation
        public virtual DescribeUserResponse DescribeUser(DescribeUserRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeUserRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeUserResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DescribeUser operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeUser operation on AmazonMQClient.
        /// 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 EndDescribeUser
        ///         operation.
        /// REST API Reference for DescribeUser Operation
        public virtual IAsyncResult BeginDescribeUser(DescribeUserRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeUserRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeUserResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DescribeUser operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDescribeUser.
        /// 
        /// Returns a  DescribeUserResult from MQ.
        /// REST API Reference for DescribeUser Operation
        public virtual DescribeUserResponse EndDescribeUser(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListBrokers
        /// 
        /// Returns a list of all brokers.
        /// 
        /// Container for the necessary parameters to execute the ListBrokers service method.
        /// 
        /// The response from the ListBrokers service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for ListBrokers Operation
        public virtual ListBrokersResponse ListBrokers(ListBrokersRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListBrokersRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListBrokersResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListBrokers operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListBrokers operation on AmazonMQClient.
        /// 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 EndListBrokers
        ///         operation.
        /// REST API Reference for ListBrokers Operation
        public virtual IAsyncResult BeginListBrokers(ListBrokersRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListBrokersRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListBrokersResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListBrokers operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListBrokers.
        /// 
        /// Returns a  ListBrokersResult from MQ.
        /// REST API Reference for ListBrokers Operation
        public virtual ListBrokersResponse EndListBrokers(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListConfigurationRevisions
        /// 
        /// Returns a list of all revisions for the specified configuration.
        /// 
        /// Container for the necessary parameters to execute the ListConfigurationRevisions service method.
        /// 
        /// The response from the ListConfigurationRevisions service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for ListConfigurationRevisions Operation
        public virtual ListConfigurationRevisionsResponse ListConfigurationRevisions(ListConfigurationRevisionsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListConfigurationRevisionsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListConfigurationRevisionsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListConfigurationRevisions operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListConfigurationRevisions operation on AmazonMQClient.
        /// 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 EndListConfigurationRevisions
        ///         operation.
        /// REST API Reference for ListConfigurationRevisions Operation
        public virtual IAsyncResult BeginListConfigurationRevisions(ListConfigurationRevisionsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListConfigurationRevisionsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListConfigurationRevisionsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListConfigurationRevisions operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListConfigurationRevisions.
        /// 
        /// Returns a  ListConfigurationRevisionsResult from MQ.
        /// REST API Reference for ListConfigurationRevisions Operation
        public virtual ListConfigurationRevisionsResponse EndListConfigurationRevisions(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListConfigurations
        /// 
        /// Returns a list of all configurations.
        /// 
        /// Container for the necessary parameters to execute the ListConfigurations service method.
        /// 
        /// The response from the ListConfigurations service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for ListConfigurations Operation
        public virtual ListConfigurationsResponse ListConfigurations(ListConfigurationsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListConfigurationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListConfigurationsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListConfigurations operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListConfigurations operation on AmazonMQClient.
        /// 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 EndListConfigurations
        ///         operation.
        /// REST API Reference for ListConfigurations Operation
        public virtual IAsyncResult BeginListConfigurations(ListConfigurationsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListConfigurationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListConfigurationsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListConfigurations operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListConfigurations.
        /// 
        /// Returns a  ListConfigurationsResult from MQ.
        /// REST API Reference for ListConfigurations Operation
        public virtual ListConfigurationsResponse EndListConfigurations(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListTags
        /// 
        /// Lists tags for a resource.
        /// 
        /// Container for the necessary parameters to execute the ListTags service method.
        /// 
        /// The response from the ListTags service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for ListTags Operation
        public virtual ListTagsResponse ListTags(ListTagsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListTagsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListTagsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListTags operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListTags operation on AmazonMQClient.
        /// 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 EndListTags
        ///         operation.
        /// REST API Reference for ListTags Operation
        public virtual IAsyncResult BeginListTags(ListTagsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListTagsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListTagsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListTags operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListTags.
        /// 
        /// Returns a  ListTagsResult from MQ.
        /// REST API Reference for ListTags Operation
        public virtual ListTagsResponse EndListTags(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListUsers
        /// 
        /// Returns a list of all ActiveMQ users.
        /// 
        /// Container for the necessary parameters to execute the ListUsers service method.
        /// 
        /// The response from the ListUsers service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for ListUsers Operation
        public virtual ListUsersResponse ListUsers(ListUsersRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListUsersRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListUsersResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListUsers operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListUsers operation on AmazonMQClient.
        /// 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 EndListUsers
        ///         operation.
        /// REST API Reference for ListUsers Operation
        public virtual IAsyncResult BeginListUsers(ListUsersRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListUsersRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListUsersResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListUsers operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListUsers.
        /// 
        /// Returns a  ListUsersResult from MQ.
        /// REST API Reference for ListUsers Operation
        public virtual ListUsersResponse EndListUsers(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  Promote
        /// 
        /// Promotes a data replication replica broker to the primary broker role.
        /// 
        /// Container for the necessary parameters to execute the Promote service method.
        /// 
        /// The response from the Promote service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for Promote Operation
        public virtual PromoteResponse Promote(PromoteRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PromoteRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PromoteResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the Promote operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the Promote operation on AmazonMQClient.
        /// 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 EndPromote
        ///         operation.
        /// REST API Reference for Promote Operation
        public virtual IAsyncResult BeginPromote(PromoteRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PromoteRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PromoteResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  Promote operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginPromote.
        /// 
        /// Returns a  PromoteResult from MQ.
        /// REST API Reference for Promote Operation
        public virtual PromoteResponse EndPromote(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  RebootBroker
        /// 
        /// Reboots a broker. Note: This API is asynchronous.
        /// 
        /// Container for the necessary parameters to execute the RebootBroker service method.
        /// 
        /// The response from the RebootBroker service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for RebootBroker Operation
        public virtual RebootBrokerResponse RebootBroker(RebootBrokerRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = RebootBrokerRequestMarshaller.Instance;
            options.ResponseUnmarshaller = RebootBrokerResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the RebootBroker operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the RebootBroker operation on AmazonMQClient.
        /// 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 EndRebootBroker
        ///         operation.
        /// REST API Reference for RebootBroker Operation
        public virtual IAsyncResult BeginRebootBroker(RebootBrokerRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = RebootBrokerRequestMarshaller.Instance;
            options.ResponseUnmarshaller = RebootBrokerResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  RebootBroker operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginRebootBroker.
        /// 
        /// Returns a  RebootBrokerResult from MQ.
        /// REST API Reference for RebootBroker Operation
        public virtual RebootBrokerResponse EndRebootBroker(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  UpdateBroker
        /// 
        /// Adds a pending configuration change to a broker.
        /// 
        /// Container for the necessary parameters to execute the UpdateBroker service method.
        /// 
        /// The response from the UpdateBroker service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for UpdateBroker Operation
        public virtual UpdateBrokerResponse UpdateBroker(UpdateBrokerRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateBrokerRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateBrokerResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the UpdateBroker operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateBroker operation on AmazonMQClient.
        /// 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 EndUpdateBroker
        ///         operation.
        /// REST API Reference for UpdateBroker Operation
        public virtual IAsyncResult BeginUpdateBroker(UpdateBrokerRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateBrokerRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateBrokerResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  UpdateBroker operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginUpdateBroker.
        /// 
        /// Returns a  UpdateBrokerResult from MQ.
        /// REST API Reference for UpdateBroker Operation
        public virtual UpdateBrokerResponse EndUpdateBroker(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  UpdateConfiguration
        /// 
        /// Updates the specified configuration.
        /// 
        /// Container for the necessary parameters to execute the UpdateConfiguration service method.
        /// 
        /// The response from the UpdateConfiguration service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for UpdateConfiguration Operation
        public virtual UpdateConfigurationResponse UpdateConfiguration(UpdateConfigurationRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateConfigurationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateConfigurationResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the UpdateConfiguration operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateConfiguration operation on AmazonMQClient.
        /// 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 EndUpdateConfiguration
        ///         operation.
        /// REST API Reference for UpdateConfiguration Operation
        public virtual IAsyncResult BeginUpdateConfiguration(UpdateConfigurationRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateConfigurationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateConfigurationResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  UpdateConfiguration operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginUpdateConfiguration.
        /// 
        /// Returns a  UpdateConfigurationResult from MQ.
        /// REST API Reference for UpdateConfiguration Operation
        public virtual UpdateConfigurationResponse EndUpdateConfiguration(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  UpdateUser
        /// 
        /// Updates the information for an ActiveMQ user.
        /// 
        /// Container for the necessary parameters to execute the UpdateUser service method.
        /// 
        /// The response from the UpdateUser service method, as returned by MQ.
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// 
        /// Returns information about an error.
        /// 
        /// REST API Reference for UpdateUser Operation
        public virtual UpdateUserResponse UpdateUser(UpdateUserRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateUserRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateUserResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the UpdateUser operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateUser operation on AmazonMQClient.
        /// 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 EndUpdateUser
        ///         operation.
        /// REST API Reference for UpdateUser Operation
        public virtual IAsyncResult BeginUpdateUser(UpdateUserRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateUserRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateUserResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  UpdateUser operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginUpdateUser.
        /// 
        /// Returns a  UpdateUserResult from MQ.
        /// REST API Reference for UpdateUser Operation
        public virtual UpdateUserResponse EndUpdateUser(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
    }
}