/*
 * 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 chime-sdk-meetings-2021-07-15.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Net;
using Amazon.ChimeSDKMeetings.Model;
using Amazon.ChimeSDKMeetings.Model.Internal.MarshallTransformations;
using Amazon.ChimeSDKMeetings.Internal;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
using Amazon.Runtime.Internal.Auth;
using Amazon.Runtime.Internal.Transform;
namespace Amazon.ChimeSDKMeetings
{
    /// 
    /// Implementation for accessing ChimeSDKMeetings
    ///
    /// The Amazon Chime SDK meetings APIs in this section allow software developers to create
    /// Amazon Chime SDK meetings, set the AWS Regions for meetings, create and manage users,
    /// and send and receive meeting notifications. For more information about the meeting
    /// APIs, see Amazon
    /// Chime SDK meetings.
    /// 
    public partial class AmazonChimeSDKMeetingsClient : AmazonServiceClient, IAmazonChimeSDKMeetings
    {
        private static IServiceMetadata serviceMetadata = new AmazonChimeSDKMeetingsMetadata();
#if BCL45 || AWS_ASYNC_ENUMERABLES_API
        private IChimeSDKMeetingsPaginatorFactory _paginators;
        /// 
        /// Paginators for the service
        /// 
        public IChimeSDKMeetingsPaginatorFactory Paginators 
        {
            get 
            {
                if (this._paginators == null) 
                {
                    this._paginators = new ChimeSDKMeetingsPaginatorFactory(this);
                }
                return this._paginators;
            }
        }
#endif
        #region Constructors
        /// 
        /// Constructs AmazonChimeSDKMeetingsClient 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 AmazonChimeSDKMeetingsClient()
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonChimeSDKMeetingsConfig()) { }
        /// 
        /// Constructs AmazonChimeSDKMeetingsClient 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 AmazonChimeSDKMeetingsClient(RegionEndpoint region)
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonChimeSDKMeetingsConfig{RegionEndpoint = region}) { }
        /// 
        /// Constructs AmazonChimeSDKMeetingsClient 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 AmazonChimeSDKMeetingsClient Configuration Object
        public AmazonChimeSDKMeetingsClient(AmazonChimeSDKMeetingsConfig config)
            : base(FallbackCredentialsFactory.GetCredentials(config), config){}
        /// 
        /// Constructs AmazonChimeSDKMeetingsClient with AWS Credentials
        /// 
        /// AWS Credentials
        public AmazonChimeSDKMeetingsClient(AWSCredentials credentials)
            : this(credentials, new AmazonChimeSDKMeetingsConfig())
        {
        }
        /// 
        /// Constructs AmazonChimeSDKMeetingsClient with AWS Credentials
        /// 
        /// AWS Credentials
        /// The region to connect.
        public AmazonChimeSDKMeetingsClient(AWSCredentials credentials, RegionEndpoint region)
            : this(credentials, new AmazonChimeSDKMeetingsConfig{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonChimeSDKMeetingsClient with AWS Credentials and an
        /// AmazonChimeSDKMeetingsClient Configuration object.
        /// 
        /// AWS Credentials
        /// The AmazonChimeSDKMeetingsClient Configuration Object
        public AmazonChimeSDKMeetingsClient(AWSCredentials credentials, AmazonChimeSDKMeetingsConfig clientConfig)
            : base(credentials, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonChimeSDKMeetingsClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        public AmazonChimeSDKMeetingsClient(string awsAccessKeyId, string awsSecretAccessKey)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonChimeSDKMeetingsConfig())
        {
        }
        /// 
        /// Constructs AmazonChimeSDKMeetingsClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The region to connect.
        public AmazonChimeSDKMeetingsClient(string awsAccessKeyId, string awsSecretAccessKey, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonChimeSDKMeetingsConfig() {RegionEndpoint=region})
        {
        }
        /// 
        /// Constructs AmazonChimeSDKMeetingsClient with AWS Access Key ID, AWS Secret Key and an
        /// AmazonChimeSDKMeetingsClient Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The AmazonChimeSDKMeetingsClient Configuration Object
        public AmazonChimeSDKMeetingsClient(string awsAccessKeyId, string awsSecretAccessKey, AmazonChimeSDKMeetingsConfig clientConfig)
            : base(awsAccessKeyId, awsSecretAccessKey, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonChimeSDKMeetingsClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        public AmazonChimeSDKMeetingsClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonChimeSDKMeetingsConfig())
        {
        }
        /// 
        /// Constructs AmazonChimeSDKMeetingsClient 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 AmazonChimeSDKMeetingsClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonChimeSDKMeetingsConfig{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonChimeSDKMeetingsClient with AWS Access Key ID, AWS Secret Key and an
        /// AmazonChimeSDKMeetingsClient Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        /// The AmazonChimeSDKMeetingsClient Configuration Object
        public AmazonChimeSDKMeetingsClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, AmazonChimeSDKMeetingsConfig 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 AmazonChimeSDKMeetingsEndpointResolver());
        }
        /// 
        /// 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  BatchCreateAttendee
        /// 
        /// Creates up to 100 attendees for an active Amazon Chime SDK meeting. For more information
        /// about the Amazon Chime SDK, see Using
        /// the Amazon Chime SDK in the Amazon Chime Developer Guide.
        /// 
        /// Container for the necessary parameters to execute the BatchCreateAttendee service method.
        /// 
        /// The response from the BatchCreateAttendee service method, as returned by ChimeSDKMeetings.
        /// 
        /// The input parameters don't match the service's restrictions.
        /// 
        /// 
        /// The client is permanently forbidden from making the request.
        /// 
        /// 
        /// The request exceeds the resource limit.
        /// 
        /// 
        /// One or more of the resources in the request does not exist in the system.
        /// 
        /// 
        /// The service encountered an unexpected error.
        /// 
        /// 
        /// The service is currently unavailable.
        /// 
        /// 
        /// The number of customer requests exceeds the request rate limit.
        /// 
        /// 
        /// The user isn't authorized to request a resource.
        /// 
        /// 
        /// The request was well-formed but was unable to be followed due to semantic errors.
        /// 
        /// REST API Reference for BatchCreateAttendee Operation
        public virtual BatchCreateAttendeeResponse BatchCreateAttendee(BatchCreateAttendeeRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = BatchCreateAttendeeRequestMarshaller.Instance;
            options.ResponseUnmarshaller = BatchCreateAttendeeResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the BatchCreateAttendee operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the BatchCreateAttendee operation on AmazonChimeSDKMeetingsClient.
        /// 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 EndBatchCreateAttendee
        ///         operation.
        /// REST API Reference for BatchCreateAttendee Operation
        public virtual IAsyncResult BeginBatchCreateAttendee(BatchCreateAttendeeRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = BatchCreateAttendeeRequestMarshaller.Instance;
            options.ResponseUnmarshaller = BatchCreateAttendeeResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  BatchCreateAttendee operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginBatchCreateAttendee.
        /// 
        /// Returns a  BatchCreateAttendeeResult from ChimeSDKMeetings.
        /// REST API Reference for BatchCreateAttendee Operation
        public virtual BatchCreateAttendeeResponse EndBatchCreateAttendee(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  BatchUpdateAttendeeCapabilitiesExcept
        /// 
        /// Updates AttendeeCapabilities except the capabilities listed in an ExcludedAttendeeIds
        /// table.
        /// 
        ///   
        /// 
        /// You use the capabilities with a set of values that control what the capabilities can
        /// do, such as SendReceive data. For more information about those values,
        /// see .
        /// 
        ///   
        /// 
        /// When using capabilities, be aware of these corner cases:
        /// 
        ///   -  
        /// 
        /// You can't set contentcapabilities toSendReceiveorReceive/// unless you also setvideocapabilities toSendReceiveor
        ///Receive. If you don't set thevideocapability to receive,
        /// the response will contain an HTTP 400 Bad Request status code. However, you can set
        /// yourvideocapability to receive and you set yourcontent/// capability to not receive.
        /// 
        ///
-  
        /// 
        /// When you change an audiocapability fromNoneorReceive/// toSendorSendReceive, and if the attendee left their
        /// microphone unmuted, audio will flow from the attendee to the other meeting participants.
        /// 
        ///
-  
        /// 
        /// When you change a videoorcontentcapability fromNone/// orReceivetoSendorSendReceive, and if
        /// the attendee turned on their video or content streams, remote attendees can receive
        /// those streams, but only after media renegotiation between the client and the Amazon
        /// Chime back-end server.
        /// 
        ///
/// 
        /// Container for the necessary parameters to execute the BatchUpdateAttendeeCapabilitiesExcept service method.
        /// 
        /// The response from the BatchUpdateAttendeeCapabilitiesExcept service method, as returned by ChimeSDKMeetings.
        /// 
        /// The input parameters don't match the service's restrictions.
        /// 
        /// 
        /// Multiple instances of the same request have been made simultaneously.
        /// 
        /// 
        /// The client is permanently forbidden from making the request.
        /// 
        /// 
        /// One or more of the resources in the request does not exist in the system.
        /// 
        /// 
        /// The service is currently unavailable.
        /// 
        /// 
        /// The user isn't authorized to request a resource.
        /// 
        /// REST API Reference for BatchUpdateAttendeeCapabilitiesExcept Operation
        public virtual BatchUpdateAttendeeCapabilitiesExceptResponse BatchUpdateAttendeeCapabilitiesExcept(BatchUpdateAttendeeCapabilitiesExceptRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = BatchUpdateAttendeeCapabilitiesExceptRequestMarshaller.Instance;
            options.ResponseUnmarshaller = BatchUpdateAttendeeCapabilitiesExceptResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the BatchUpdateAttendeeCapabilitiesExcept operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the BatchUpdateAttendeeCapabilitiesExcept operation on AmazonChimeSDKMeetingsClient.
        /// 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 EndBatchUpdateAttendeeCapabilitiesExcept
        ///         operation.
        /// REST API Reference for BatchUpdateAttendeeCapabilitiesExcept Operation
        public virtual IAsyncResult BeginBatchUpdateAttendeeCapabilitiesExcept(BatchUpdateAttendeeCapabilitiesExceptRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = BatchUpdateAttendeeCapabilitiesExceptRequestMarshaller.Instance;
            options.ResponseUnmarshaller = BatchUpdateAttendeeCapabilitiesExceptResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  BatchUpdateAttendeeCapabilitiesExcept operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginBatchUpdateAttendeeCapabilitiesExcept.
        /// 
        /// Returns a  BatchUpdateAttendeeCapabilitiesExceptResult from ChimeSDKMeetings.
        /// REST API Reference for BatchUpdateAttendeeCapabilitiesExcept Operation
        public virtual BatchUpdateAttendeeCapabilitiesExceptResponse EndBatchUpdateAttendeeCapabilitiesExcept(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  CreateAttendee
        /// 
        /// Creates a new attendee for an active Amazon Chime SDK meeting. For more information
        /// about the Amazon Chime SDK, see Using
        /// the Amazon Chime SDK in the Amazon Chime Developer Guide.
        /// 
        /// Container for the necessary parameters to execute the CreateAttendee service method.
        /// 
        /// The response from the CreateAttendee service method, as returned by ChimeSDKMeetings.
        /// 
        /// The input parameters don't match the service's restrictions.
        /// 
        /// 
        /// The client is permanently forbidden from making the request.
        /// 
        /// 
        /// The request exceeds the resource limit.
        /// 
        /// 
        /// One or more of the resources in the request does not exist in the system.
        /// 
        /// 
        /// The service encountered an unexpected error.
        /// 
        /// 
        /// The service is currently unavailable.
        /// 
        /// 
        /// The number of customer requests exceeds the request rate limit.
        /// 
        /// 
        /// The user isn't authorized to request a resource.
        /// 
        /// 
        /// The request was well-formed but was unable to be followed due to semantic errors.
        /// 
        /// REST API Reference for CreateAttendee Operation
        public virtual CreateAttendeeResponse CreateAttendee(CreateAttendeeRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateAttendeeRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateAttendeeResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreateAttendee operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateAttendee operation on AmazonChimeSDKMeetingsClient.
        /// 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 EndCreateAttendee
        ///         operation.
        /// REST API Reference for CreateAttendee Operation
        public virtual IAsyncResult BeginCreateAttendee(CreateAttendeeRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateAttendeeRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateAttendeeResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreateAttendee operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreateAttendee.
        /// 
        /// Returns a  CreateAttendeeResult from ChimeSDKMeetings.
        /// REST API Reference for CreateAttendee Operation
        public virtual CreateAttendeeResponse EndCreateAttendee(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  CreateMeeting
        /// 
        /// Creates a new Amazon Chime SDK meeting in the specified media Region with no initial
        /// attendees. For more information about specifying media Regions, see Amazon
        /// Chime SDK Media Regions in the Amazon Chime Developer Guide. For more information
        /// about the Amazon Chime SDK, see Using
        /// the Amazon Chime SDK in the Amazon Chime Developer Guide.
        /// 
        /// Container for the necessary parameters to execute the CreateMeeting service method.
        /// 
        /// The response from the CreateMeeting service method, as returned by ChimeSDKMeetings.
        /// 
        /// The input parameters don't match the service's restrictions.
        /// 
        /// 
        /// The client is permanently forbidden from making the request.
        /// 
        /// 
        /// The request exceeds the resource limit.
        /// 
        /// 
        /// The service encountered an unexpected error.
        /// 
        /// 
        /// The service is currently unavailable.
        /// 
        /// 
        /// The number of customer requests exceeds the request rate limit.
        /// 
        /// 
        /// The user isn't authorized to request a resource.
        /// 
        /// REST API Reference for CreateMeeting Operation
        public virtual CreateMeetingResponse CreateMeeting(CreateMeetingRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateMeetingRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateMeetingResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreateMeeting operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateMeeting operation on AmazonChimeSDKMeetingsClient.
        /// 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 EndCreateMeeting
        ///         operation.
        /// REST API Reference for CreateMeeting Operation
        public virtual IAsyncResult BeginCreateMeeting(CreateMeetingRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateMeetingRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateMeetingResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreateMeeting operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreateMeeting.
        /// 
        /// Returns a  CreateMeetingResult from ChimeSDKMeetings.
        /// REST API Reference for CreateMeeting Operation
        public virtual CreateMeetingResponse EndCreateMeeting(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  CreateMeetingWithAttendees
        /// 
        /// Creates a new Amazon Chime SDK meeting in the specified media Region, with attendees.
        /// For more information about specifying media Regions, see Amazon
        /// Chime SDK Media Regions in the Amazon Chime Developer Guide. For more information
        /// about the Amazon Chime SDK, see Using
        /// the Amazon Chime SDK in the Amazon Chime Developer Guide.
        /// 
        /// Container for the necessary parameters to execute the CreateMeetingWithAttendees service method.
        /// 
        /// The response from the CreateMeetingWithAttendees service method, as returned by ChimeSDKMeetings.
        /// 
        /// The input parameters don't match the service's restrictions.
        /// 
        /// 
        /// The client is permanently forbidden from making the request.
        /// 
        /// 
        /// The request exceeds the resource limit.
        /// 
        /// 
        /// The service encountered an unexpected error.
        /// 
        /// 
        /// The service is currently unavailable.
        /// 
        /// 
        /// The number of customer requests exceeds the request rate limit.
        /// 
        /// 
        /// The user isn't authorized to request a resource.
        /// 
        /// REST API Reference for CreateMeetingWithAttendees Operation
        public virtual CreateMeetingWithAttendeesResponse CreateMeetingWithAttendees(CreateMeetingWithAttendeesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateMeetingWithAttendeesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateMeetingWithAttendeesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreateMeetingWithAttendees operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateMeetingWithAttendees operation on AmazonChimeSDKMeetingsClient.
        /// 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 EndCreateMeetingWithAttendees
        ///         operation.
        /// REST API Reference for CreateMeetingWithAttendees Operation
        public virtual IAsyncResult BeginCreateMeetingWithAttendees(CreateMeetingWithAttendeesRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateMeetingWithAttendeesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateMeetingWithAttendeesResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreateMeetingWithAttendees operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreateMeetingWithAttendees.
        /// 
        /// Returns a  CreateMeetingWithAttendeesResult from ChimeSDKMeetings.
        /// REST API Reference for CreateMeetingWithAttendees Operation
        public virtual CreateMeetingWithAttendeesResponse EndCreateMeetingWithAttendees(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteAttendee
        /// 
        /// Deletes an attendee from the specified Amazon Chime SDK meeting and deletes their
        ///JoinToken. Attendees are automatically deleted when a Amazon Chime SDK
        /// meeting is deleted. For more information about the Amazon Chime SDK, see Using
        /// the Amazon Chime SDK in the Amazon Chime Developer Guide.
        /// 
        /// Container for the necessary parameters to execute the DeleteAttendee service method.
        /// 
        /// The response from the DeleteAttendee service method, as returned by ChimeSDKMeetings.
        /// 
        /// The input parameters don't match the service's restrictions.
        /// 
        /// 
        /// The client is permanently forbidden from making the request.
        /// 
        /// 
        /// One or more of the resources in the request does not exist in the system.
        /// 
        /// 
        /// The service encountered an unexpected error.
        /// 
        /// 
        /// The service is currently unavailable.
        /// 
        /// 
        /// The number of customer requests exceeds the request rate limit.
        /// 
        /// 
        /// The user isn't authorized to request a resource.
        /// 
        /// REST API Reference for DeleteAttendee Operation
        public virtual DeleteAttendeeResponse DeleteAttendee(DeleteAttendeeRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteAttendeeRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteAttendeeResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteAttendee operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteAttendee operation on AmazonChimeSDKMeetingsClient.
        /// 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 EndDeleteAttendee
        ///         operation.
        /// REST API Reference for DeleteAttendee Operation
        public virtual IAsyncResult BeginDeleteAttendee(DeleteAttendeeRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteAttendeeRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteAttendeeResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteAttendee operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteAttendee.
        /// 
        /// Returns a  DeleteAttendeeResult from ChimeSDKMeetings.
        /// REST API Reference for DeleteAttendee Operation
        public virtual DeleteAttendeeResponse EndDeleteAttendee(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteMeeting
        /// 
        /// Deletes the specified Amazon Chime SDK meeting. The operation deletes all attendees,
        /// disconnects all clients, and prevents new clients from joining the meeting. For more
        /// information about the Amazon Chime SDK, see Using
        /// the Amazon Chime SDK in the Amazon Chime Developer Guide.
        /// 
        /// Container for the necessary parameters to execute the DeleteMeeting service method.
        /// 
        /// The response from the DeleteMeeting service method, as returned by ChimeSDKMeetings.
        /// 
        /// The input parameters don't match the service's restrictions.
        /// 
        /// 
        /// The client is permanently forbidden from making the request.
        /// 
        /// 
        /// One or more of the resources in the request does not exist in the system.
        /// 
        /// 
        /// The service encountered an unexpected error.
        /// 
        /// 
        /// The service is currently unavailable.
        /// 
        /// 
        /// The number of customer requests exceeds the request rate limit.
        /// 
        /// 
        /// The user isn't authorized to request a resource.
        /// 
        /// REST API Reference for DeleteMeeting Operation
        public virtual DeleteMeetingResponse DeleteMeeting(DeleteMeetingRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteMeetingRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteMeetingResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteMeeting operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteMeeting operation on AmazonChimeSDKMeetingsClient.
        /// 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 EndDeleteMeeting
        ///         operation.
        /// REST API Reference for DeleteMeeting Operation
        public virtual IAsyncResult BeginDeleteMeeting(DeleteMeetingRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteMeetingRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteMeetingResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteMeeting operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteMeeting.
        /// 
        /// Returns a  DeleteMeetingResult from ChimeSDKMeetings.
        /// REST API Reference for DeleteMeeting Operation
        public virtual DeleteMeetingResponse EndDeleteMeeting(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  GetAttendee
        /// 
        /// Gets the Amazon Chime SDK attendee details for a specified meeting ID and attendee
        /// ID. For more information about the Amazon Chime SDK, see Using
        /// the Amazon Chime SDK in the Amazon Chime Developer Guide.
        /// 
        /// Container for the necessary parameters to execute the GetAttendee service method.
        /// 
        /// The response from the GetAttendee service method, as returned by ChimeSDKMeetings.
        /// 
        /// The input parameters don't match the service's restrictions.
        /// 
        /// 
        /// The client is permanently forbidden from making the request.
        /// 
        /// 
        /// One or more of the resources in the request does not exist in the system.
        /// 
        /// 
        /// The service encountered an unexpected error.
        /// 
        /// 
        /// The service is currently unavailable.
        /// 
        /// 
        /// The number of customer requests exceeds the request rate limit.
        /// 
        /// 
        /// The user isn't authorized to request a resource.
        /// 
        /// REST API Reference for GetAttendee Operation
        public virtual GetAttendeeResponse GetAttendee(GetAttendeeRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetAttendeeRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetAttendeeResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the GetAttendee operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the GetAttendee operation on AmazonChimeSDKMeetingsClient.
        /// 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 EndGetAttendee
        ///         operation.
        /// REST API Reference for GetAttendee Operation
        public virtual IAsyncResult BeginGetAttendee(GetAttendeeRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetAttendeeRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetAttendeeResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  GetAttendee operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginGetAttendee.
        /// 
        /// Returns a  GetAttendeeResult from ChimeSDKMeetings.
        /// REST API Reference for GetAttendee Operation
        public virtual GetAttendeeResponse EndGetAttendee(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  GetMeeting
        /// 
        /// Gets the Amazon Chime SDK meeting details for the specified meeting ID. For more information
        /// about the Amazon Chime SDK, see Using
        /// the Amazon Chime SDK in the Amazon Chime Developer Guide.
        /// 
        /// Container for the necessary parameters to execute the GetMeeting service method.
        /// 
        /// The response from the GetMeeting service method, as returned by ChimeSDKMeetings.
        /// 
        /// The input parameters don't match the service's restrictions.
        /// 
        /// 
        /// The client is permanently forbidden from making the request.
        /// 
        /// 
        /// One or more of the resources in the request does not exist in the system.
        /// 
        /// 
        /// The service encountered an unexpected error.
        /// 
        /// 
        /// The service is currently unavailable.
        /// 
        /// 
        /// The number of customer requests exceeds the request rate limit.
        /// 
        /// 
        /// The user isn't authorized to request a resource.
        /// 
        /// REST API Reference for GetMeeting Operation
        public virtual GetMeetingResponse GetMeeting(GetMeetingRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetMeetingRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetMeetingResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the GetMeeting operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the GetMeeting operation on AmazonChimeSDKMeetingsClient.
        /// 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 EndGetMeeting
        ///         operation.
        /// REST API Reference for GetMeeting Operation
        public virtual IAsyncResult BeginGetMeeting(GetMeetingRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetMeetingRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetMeetingResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  GetMeeting operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginGetMeeting.
        /// 
        /// Returns a  GetMeetingResult from ChimeSDKMeetings.
        /// REST API Reference for GetMeeting Operation
        public virtual GetMeetingResponse EndGetMeeting(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListAttendees
        /// 
        /// Lists the attendees for the specified Amazon Chime SDK meeting. For more information
        /// about the Amazon Chime SDK, see Using
        /// the Amazon Chime SDK in the Amazon Chime Developer Guide.
        /// 
        /// Container for the necessary parameters to execute the ListAttendees service method.
        /// 
        /// The response from the ListAttendees service method, as returned by ChimeSDKMeetings.
        /// 
        /// The input parameters don't match the service's restrictions.
        /// 
        /// 
        /// The client is permanently forbidden from making the request.
        /// 
        /// 
        /// One or more of the resources in the request does not exist in the system.
        /// 
        /// 
        /// The service encountered an unexpected error.
        /// 
        /// 
        /// The service is currently unavailable.
        /// 
        /// 
        /// The number of customer requests exceeds the request rate limit.
        /// 
        /// 
        /// The user isn't authorized to request a resource.
        /// 
        /// REST API Reference for ListAttendees Operation
        public virtual ListAttendeesResponse ListAttendees(ListAttendeesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListAttendeesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListAttendeesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListAttendees operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListAttendees operation on AmazonChimeSDKMeetingsClient.
        /// 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 EndListAttendees
        ///         operation.
        /// REST API Reference for ListAttendees Operation
        public virtual IAsyncResult BeginListAttendees(ListAttendeesRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListAttendeesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListAttendeesResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListAttendees operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListAttendees.
        /// 
        /// Returns a  ListAttendeesResult from ChimeSDKMeetings.
        /// REST API Reference for ListAttendees Operation
        public virtual ListAttendeesResponse EndListAttendees(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListTagsForResource
        /// 
        /// Returns a list of the tags available for the specified resource.
        /// 
        /// Container for the necessary parameters to execute the ListTagsForResource service method.
        /// 
        /// The response from the ListTagsForResource service method, as returned by ChimeSDKMeetings.
        /// 
        /// The resource that you want to tag couldn't be found.
        /// 
        /// 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 AmazonChimeSDKMeetingsClient.
        /// 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 ChimeSDKMeetings.
        /// REST API Reference for ListTagsForResource Operation
        public virtual ListTagsForResourceResponse EndListTagsForResource(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  StartMeetingTranscription
        /// 
        /// Starts transcription for the specified meetingId. For more information,
        /// refer to 
        /// Using Amazon Chime SDK live transcription  in the Amazon Chime SDK Developer
        /// Guide.
        /// 
        ///  
        /// 
        /// If you specify an invalid configuration, a TranscriptFailed event will
        /// be sent with the contents of the BadRequestException generated by Amazon
        /// Transcribe. For more information on each parameter and which combinations are valid,
        /// refer to the StartStreamTranscription
        /// API in the Amazon Transcribe Developer Guide.
        /// 
        ///   
        /// 
        /// Amazon Chime SDK live transcription is powered by Amazon Transcribe. Use of Amazon
        /// Transcribe is subject to the AWS Service
        /// Terms, including the terms specific to the AWS Machine Learning and Artificial
        /// Intelligence Services.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the StartMeetingTranscription service method.
        /// 
        /// The response from the StartMeetingTranscription service method, as returned by ChimeSDKMeetings.
        /// 
        /// The input parameters don't match the service's restrictions.
        /// 
        /// 
        /// The client is permanently forbidden from making the request.
        /// 
        /// 
        /// The request exceeds the resource limit.
        /// 
        /// 
        /// One or more of the resources in the request does not exist in the system.
        /// 
        /// 
        /// The service encountered an unexpected error.
        /// 
        /// 
        /// The service is currently unavailable.
        /// 
        /// 
        /// The number of customer requests exceeds the request rate limit.
        /// 
        /// 
        /// The user isn't authorized to request a resource.
        /// 
        /// 
        /// The request was well-formed but was unable to be followed due to semantic errors.
        /// 
        /// REST API Reference for StartMeetingTranscription Operation
        public virtual StartMeetingTranscriptionResponse StartMeetingTranscription(StartMeetingTranscriptionRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = StartMeetingTranscriptionRequestMarshaller.Instance;
            options.ResponseUnmarshaller = StartMeetingTranscriptionResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the StartMeetingTranscription operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the StartMeetingTranscription operation on AmazonChimeSDKMeetingsClient.
        /// 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 EndStartMeetingTranscription
        ///         operation.
        /// REST API Reference for StartMeetingTranscription Operation
        public virtual IAsyncResult BeginStartMeetingTranscription(StartMeetingTranscriptionRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = StartMeetingTranscriptionRequestMarshaller.Instance;
            options.ResponseUnmarshaller = StartMeetingTranscriptionResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  StartMeetingTranscription operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginStartMeetingTranscription.
        /// 
        /// Returns a  StartMeetingTranscriptionResult from ChimeSDKMeetings.
        /// REST API Reference for StartMeetingTranscription Operation
        public virtual StartMeetingTranscriptionResponse EndStartMeetingTranscription(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  StopMeetingTranscription
        /// 
        /// Stops transcription for the specified meetingId. For more information,
        /// refer to 
        /// Using Amazon Chime SDK live transcription  in the Amazon Chime SDK Developer
        /// Guide.
        /// 
        ///   
        /// 
        /// Amazon Chime SDK live transcription is powered by Amazon Transcribe. Use of Amazon
        /// Transcribe is subject to the AWS Service
        /// Terms, including the terms specific to the AWS Machine Learning and Artificial
        /// Intelligence Services.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the StopMeetingTranscription service method.
        /// 
        /// The response from the StopMeetingTranscription service method, as returned by ChimeSDKMeetings.
        /// 
        /// The input parameters don't match the service's restrictions.
        /// 
        /// 
        /// The client is permanently forbidden from making the request.
        /// 
        /// 
        /// One or more of the resources in the request does not exist in the system.
        /// 
        /// 
        /// The service encountered an unexpected error.
        /// 
        /// 
        /// The service is currently unavailable.
        /// 
        /// 
        /// The number of customer requests exceeds the request rate limit.
        /// 
        /// 
        /// The user isn't authorized to request a resource.
        /// 
        /// 
        /// The request was well-formed but was unable to be followed due to semantic errors.
        /// 
        /// REST API Reference for StopMeetingTranscription Operation
        public virtual StopMeetingTranscriptionResponse StopMeetingTranscription(StopMeetingTranscriptionRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = StopMeetingTranscriptionRequestMarshaller.Instance;
            options.ResponseUnmarshaller = StopMeetingTranscriptionResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the StopMeetingTranscription operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the StopMeetingTranscription operation on AmazonChimeSDKMeetingsClient.
        /// 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 EndStopMeetingTranscription
        ///         operation.
        /// REST API Reference for StopMeetingTranscription Operation
        public virtual IAsyncResult BeginStopMeetingTranscription(StopMeetingTranscriptionRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = StopMeetingTranscriptionRequestMarshaller.Instance;
            options.ResponseUnmarshaller = StopMeetingTranscriptionResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  StopMeetingTranscription operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginStopMeetingTranscription.
        /// 
        /// Returns a  StopMeetingTranscriptionResult from ChimeSDKMeetings.
        /// REST API Reference for StopMeetingTranscription Operation
        public virtual StopMeetingTranscriptionResponse EndStopMeetingTranscription(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  TagResource
        /// 
        /// The resource that supports tags.
        /// 
        /// Container for the necessary parameters to execute the TagResource service method.
        /// 
        /// The response from the TagResource service method, as returned by ChimeSDKMeetings.
        /// 
        /// The input parameters don't match the service's restrictions.
        /// 
        /// 
        /// The resource that you want to tag couldn't be found.
        /// 
        /// 
        /// Too many tags were added to the specified resource.
        /// 
        /// 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 AmazonChimeSDKMeetingsClient.
        /// 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 ChimeSDKMeetings.
        /// REST API Reference for TagResource Operation
        public virtual TagResourceResponse EndTagResource(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  UntagResource
        /// 
        /// Removes the specified tags from the specified resources. When you specify a tag key,
        /// the action removes both that key and its associated value. The operation succeeds
        /// even if you attempt to remove tags from a resource that were already removed. Note
        /// the following:
        /// 
        ///   -  
        /// 
        /// To remove tags from a resource, you need the necessary permissions for the service
        /// that the resource belongs to as well as permissions for removing tags. For more information,
        /// see the documentation for the service whose resource you want to untag.
        /// 
        ///  
-  
        /// 
        /// You can only tag resources that are located in the specified AWS Region for the calling
        /// AWS account.
        /// 
        ///  
/// 
        ///  Minimum permissions 
        /// 
        ///  
        /// 
        /// In addition to thetag:UntagResources permission required by this operation,
        /// you must also have the remove tags permission defined by the service that created
        /// the resource. For example, to remove the tags from an Amazon EC2 instance using the
        /// UntagResources operation, you must have both of the following permissions:
        /// 
        ///  
        /// 
        ///  tag:UntagResource 
        /// 
        ///  
        /// 
        ///  ChimeSDKMeetings:DeleteTags 
        /// 
        /// 
        /// Container for the necessary parameters to execute the UntagResource service method.
        /// 
        /// The response from the UntagResource service method, as returned by ChimeSDKMeetings.
        /// 
        /// The input parameters don't match the service's restrictions.
        /// 
        /// 
        /// The resource that you want to tag couldn't be found.
        /// 
        /// 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 AmazonChimeSDKMeetingsClient.
        /// 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 ChimeSDKMeetings.
        /// REST API Reference for UntagResource Operation
        public virtual UntagResourceResponse EndUntagResource(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  UpdateAttendeeCapabilities
        /// 
        /// The capabilities that you want to update.
        /// 
        ///   
        /// 
        /// You use the capabilities with a set of values that control what the capabilities can
        /// do, such as SendReceive data. For more information about those values,
        /// see .
        /// 
        ///   
        /// 
        /// When using capabilities, be aware of these corner cases:
        /// 
        ///   -  
        /// 
        /// You can't set contentcapabilities toSendReceiveorReceive/// unless you also setvideocapabilities toSendReceiveor
        ///Receive. If you don't set thevideocapability to receive,
        /// the response will contain an HTTP 400 Bad Request status code. However, you can set
        /// yourvideocapability to receive and you set yourcontent/// capability to not receive.
        /// 
        ///
-  
        /// 
        /// When you change an audiocapability fromNoneorReceive/// toSendorSendReceive, and if the attendee left their
        /// microphone unmuted, audio will flow from the attendee to the other meeting participants.
        /// 
        ///
-  
        /// 
        /// When you change a videoorcontentcapability fromNone/// orReceivetoSendorSendReceive, and if
        /// the attendee turned on their video or content streams, remote attendees can receive
        /// those streams, but only after media renegotiation between the client and the Amazon
        /// Chime back-end server.
        /// 
        ///
/// 
        /// Container for the necessary parameters to execute the UpdateAttendeeCapabilities service method.
        /// 
        /// The response from the UpdateAttendeeCapabilities service method, as returned by ChimeSDKMeetings.
        /// 
        /// The input parameters don't match the service's restrictions.
        /// 
        /// 
        /// Multiple instances of the same request have been made simultaneously.
        /// 
        /// 
        /// The client is permanently forbidden from making the request.
        /// 
        /// 
        /// One or more of the resources in the request does not exist in the system.
        /// 
        /// 
        /// The service is currently unavailable.
        /// 
        /// 
        /// The user isn't authorized to request a resource.
        /// 
        /// REST API Reference for UpdateAttendeeCapabilities Operation
        public virtual UpdateAttendeeCapabilitiesResponse UpdateAttendeeCapabilities(UpdateAttendeeCapabilitiesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateAttendeeCapabilitiesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateAttendeeCapabilitiesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the UpdateAttendeeCapabilities operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateAttendeeCapabilities operation on AmazonChimeSDKMeetingsClient.
        /// 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 EndUpdateAttendeeCapabilities
        ///         operation.
        /// REST API Reference for UpdateAttendeeCapabilities Operation
        public virtual IAsyncResult BeginUpdateAttendeeCapabilities(UpdateAttendeeCapabilitiesRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateAttendeeCapabilitiesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateAttendeeCapabilitiesResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  UpdateAttendeeCapabilities operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginUpdateAttendeeCapabilities.
        /// 
        /// Returns a  UpdateAttendeeCapabilitiesResult from ChimeSDKMeetings.
        /// REST API Reference for UpdateAttendeeCapabilities Operation
        public virtual UpdateAttendeeCapabilitiesResponse EndUpdateAttendeeCapabilities(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
    }
}