/*
 * 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 elastictranscoder-2012-09-25.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Net;
using Amazon.ElasticTranscoder.Model;
using Amazon.ElasticTranscoder.Model.Internal.MarshallTransformations;
using Amazon.ElasticTranscoder.Internal;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
using Amazon.Runtime.Internal.Auth;
using Amazon.Runtime.Internal.Transform;
namespace Amazon.ElasticTranscoder
{
    /// 
    /// Implementation for accessing ElasticTranscoder
    ///
    /// AWS Elastic Transcoder Service 
    /// 
    /// The AWS Elastic Transcoder Service.
    /// 
    /// 
    public partial class AmazonElasticTranscoderClient : AmazonServiceClient, IAmazonElasticTranscoder
    {
        private static IServiceMetadata serviceMetadata = new AmazonElasticTranscoderMetadata();
#if BCL45 || AWS_ASYNC_ENUMERABLES_API
        private IElasticTranscoderPaginatorFactory _paginators;
        /// 
        /// Paginators for the service
        /// 
        public IElasticTranscoderPaginatorFactory Paginators 
        {
            get 
            {
                if (this._paginators == null) 
                {
                    this._paginators = new ElasticTranscoderPaginatorFactory(this);
                }
                return this._paginators;
            }
        }
#endif
        #region Constructors
        /// 
        /// Constructs AmazonElasticTranscoderClient 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 AmazonElasticTranscoderClient()
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonElasticTranscoderConfig()) { }
        /// 
        /// Constructs AmazonElasticTranscoderClient 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 AmazonElasticTranscoderClient(RegionEndpoint region)
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonElasticTranscoderConfig{RegionEndpoint = region}) { }
        /// 
        /// Constructs AmazonElasticTranscoderClient 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 AmazonElasticTranscoderClient Configuration Object
        public AmazonElasticTranscoderClient(AmazonElasticTranscoderConfig config)
            : base(FallbackCredentialsFactory.GetCredentials(config), config){}
        /// 
        /// Constructs AmazonElasticTranscoderClient with AWS Credentials
        /// 
        /// AWS Credentials
        public AmazonElasticTranscoderClient(AWSCredentials credentials)
            : this(credentials, new AmazonElasticTranscoderConfig())
        {
        }
        /// 
        /// Constructs AmazonElasticTranscoderClient with AWS Credentials
        /// 
        /// AWS Credentials
        /// The region to connect.
        public AmazonElasticTranscoderClient(AWSCredentials credentials, RegionEndpoint region)
            : this(credentials, new AmazonElasticTranscoderConfig{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonElasticTranscoderClient with AWS Credentials and an
        /// AmazonElasticTranscoderClient Configuration object.
        /// 
        /// AWS Credentials
        /// The AmazonElasticTranscoderClient Configuration Object
        public AmazonElasticTranscoderClient(AWSCredentials credentials, AmazonElasticTranscoderConfig clientConfig)
            : base(credentials, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonElasticTranscoderClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        public AmazonElasticTranscoderClient(string awsAccessKeyId, string awsSecretAccessKey)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonElasticTranscoderConfig())
        {
        }
        /// 
        /// Constructs AmazonElasticTranscoderClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The region to connect.
        public AmazonElasticTranscoderClient(string awsAccessKeyId, string awsSecretAccessKey, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonElasticTranscoderConfig() {RegionEndpoint=region})
        {
        }
        /// 
        /// Constructs AmazonElasticTranscoderClient with AWS Access Key ID, AWS Secret Key and an
        /// AmazonElasticTranscoderClient Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The AmazonElasticTranscoderClient Configuration Object
        public AmazonElasticTranscoderClient(string awsAccessKeyId, string awsSecretAccessKey, AmazonElasticTranscoderConfig clientConfig)
            : base(awsAccessKeyId, awsSecretAccessKey, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonElasticTranscoderClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        public AmazonElasticTranscoderClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonElasticTranscoderConfig())
        {
        }
        /// 
        /// Constructs AmazonElasticTranscoderClient 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 AmazonElasticTranscoderClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonElasticTranscoderConfig{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonElasticTranscoderClient with AWS Access Key ID, AWS Secret Key and an
        /// AmazonElasticTranscoderClient Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        /// The AmazonElasticTranscoderClient Configuration Object
        public AmazonElasticTranscoderClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, AmazonElasticTranscoderConfig 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.AddHandlerBefore(new Amazon.ElasticTranscoder.Internal.AmazonElasticTranscoderPreMarshallHandler());
            pipeline.RemoveHandler();
            pipeline.AddHandlerAfter(new AmazonElasticTranscoderEndpointResolver());
        }
        /// 
        /// 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  CancelJob
        /// 
        /// The CancelJob operation cancels an unfinished job.
        /// 
        ///   
        /// 
        /// You can only cancel a job that has a status of Submitted. To prevent
        /// a pipeline from starting to process a job while you're getting the job identifier,
        /// use UpdatePipelineStatus to temporarily pause the pipeline.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the CancelJob service method.
        /// 
        /// The response from the CancelJob service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// The resource you are attempting to change is in use. For example, you are attempting
        /// to delete a pipeline that is currently in use.
        /// 
        /// 
        /// The requested resource does not exist or is not available. For example, the pipeline
        /// to which you're trying to add a job doesn't exist or is still being created.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for CancelJob Operation
        public virtual CancelJobResponse CancelJob(CancelJobRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CancelJobRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CancelJobResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CancelJob operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CancelJob operation on AmazonElasticTranscoderClient.
        /// 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 EndCancelJob
        ///         operation.
        /// REST API Reference for CancelJob Operation
        public virtual IAsyncResult BeginCancelJob(CancelJobRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CancelJobRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CancelJobResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CancelJob operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCancelJob.
        /// 
        /// Returns a  CancelJobResult from ElasticTranscoder.
        /// REST API Reference for CancelJob Operation
        public virtual CancelJobResponse EndCancelJob(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  CreateJob
        /// 
        /// When you create a job, Elastic Transcoder returns JSON data that includes the values
        /// that you specified plus information about the job that is created.
        /// 
        ///  
        /// 
        /// If you have specified more than one output for your jobs (for example, one output
        /// for the Kindle Fire and another output for the Apple iPhone 4s), you currently must
        /// use the Elastic Transcoder API to list the jobs (as opposed to the AWS Console).
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateJob service method.
        /// 
        /// The response from the CreateJob service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// Too many operations for a given AWS account. For example, the number of pipelines
        /// exceeds the maximum allowed.
        /// 
        /// 
        /// The requested resource does not exist or is not available. For example, the pipeline
        /// to which you're trying to add a job doesn't exist or is still being created.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for CreateJob Operation
        public virtual CreateJobResponse CreateJob(CreateJobRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateJobRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateJobResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreateJob operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateJob operation on AmazonElasticTranscoderClient.
        /// 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 EndCreateJob
        ///         operation.
        /// REST API Reference for CreateJob Operation
        public virtual IAsyncResult BeginCreateJob(CreateJobRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateJobRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateJobResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreateJob operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreateJob.
        /// 
        /// Returns a  CreateJobResult from ElasticTranscoder.
        /// REST API Reference for CreateJob Operation
        public virtual CreateJobResponse EndCreateJob(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  CreatePipeline
        /// 
        /// The CreatePipeline operation creates a pipeline with settings that you specify.
        /// 
        /// Container for the necessary parameters to execute the CreatePipeline service method.
        /// 
        /// The response from the CreatePipeline service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// Too many operations for a given AWS account. For example, the number of pipelines
        /// exceeds the maximum allowed.
        /// 
        /// 
        /// The requested resource does not exist or is not available. For example, the pipeline
        /// to which you're trying to add a job doesn't exist or is still being created.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for CreatePipeline Operation
        public virtual CreatePipelineResponse CreatePipeline(CreatePipelineRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreatePipelineRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreatePipelineResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreatePipeline operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreatePipeline operation on AmazonElasticTranscoderClient.
        /// 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 EndCreatePipeline
        ///         operation.
        /// REST API Reference for CreatePipeline Operation
        public virtual IAsyncResult BeginCreatePipeline(CreatePipelineRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreatePipelineRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreatePipelineResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreatePipeline operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreatePipeline.
        /// 
        /// Returns a  CreatePipelineResult from ElasticTranscoder.
        /// REST API Reference for CreatePipeline Operation
        public virtual CreatePipelineResponse EndCreatePipeline(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  CreatePreset
        /// 
        /// The CreatePreset operation creates a preset with settings that you specify.
        /// 
        ///   
        /// 
        /// Elastic Transcoder checks the CreatePreset settings to ensure that they meet Elastic
        /// Transcoder requirements and to determine whether they comply with H.264 standards.
        /// If your settings are not valid for Elastic Transcoder, Elastic Transcoder returns
        /// an HTTP 400 response (ValidationException) and does not create the preset.
        /// If the settings are valid for Elastic Transcoder but aren't strictly compliant with
        /// the H.264 standard, Elastic Transcoder creates the preset and returns a warning message
        /// in the response. This helps you determine whether your settings comply with the H.264
        /// standard while giving you greater flexibility with respect to the video that Elastic
        /// Transcoder produces.
        /// 
        ///   
        /// 
        /// Elastic Transcoder uses the H.264 video-compression format. For more information,
        /// see the International Telecommunication Union publication Recommendation ITU-T
        /// H.264: Advanced video coding for generic audiovisual services.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreatePreset service method.
        /// 
        /// The response from the CreatePreset service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// Too many operations for a given AWS account. For example, the number of pipelines
        /// exceeds the maximum allowed.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for CreatePreset Operation
        public virtual CreatePresetResponse CreatePreset(CreatePresetRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreatePresetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreatePresetResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreatePreset operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreatePreset operation on AmazonElasticTranscoderClient.
        /// 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 EndCreatePreset
        ///         operation.
        /// REST API Reference for CreatePreset Operation
        public virtual IAsyncResult BeginCreatePreset(CreatePresetRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreatePresetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreatePresetResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreatePreset operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreatePreset.
        /// 
        /// Returns a  CreatePresetResult from ElasticTranscoder.
        /// REST API Reference for CreatePreset Operation
        public virtual CreatePresetResponse EndCreatePreset(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeletePipeline
        /// 
        /// The DeletePipeline operation removes a pipeline.
        /// 
        ///  
        /// 
        ///  You can only delete a pipeline that has never been used or that is not currently
        /// in use (doesn't contain any active jobs). If the pipeline is currently in use, DeletePipeline
        /// returns an error. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeletePipeline service method.
        /// 
        /// The response from the DeletePipeline service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// The resource you are attempting to change is in use. For example, you are attempting
        /// to delete a pipeline that is currently in use.
        /// 
        /// 
        /// The requested resource does not exist or is not available. For example, the pipeline
        /// to which you're trying to add a job doesn't exist or is still being created.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for DeletePipeline Operation
        public virtual DeletePipelineResponse DeletePipeline(DeletePipelineRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeletePipelineRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeletePipelineResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeletePipeline operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeletePipeline operation on AmazonElasticTranscoderClient.
        /// 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 EndDeletePipeline
        ///         operation.
        /// REST API Reference for DeletePipeline Operation
        public virtual IAsyncResult BeginDeletePipeline(DeletePipelineRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeletePipelineRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeletePipelineResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeletePipeline operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeletePipeline.
        /// 
        /// Returns a  DeletePipelineResult from ElasticTranscoder.
        /// REST API Reference for DeletePipeline Operation
        public virtual DeletePipelineResponse EndDeletePipeline(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeletePreset
        /// 
        /// The DeletePreset operation removes a preset that you've added in an AWS region.
        /// 
        ///   
        /// 
        /// You can't delete the default presets that are included with Elastic Transcoder.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DeletePreset service method.
        /// 
        /// The response from the DeletePreset service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// The requested resource does not exist or is not available. For example, the pipeline
        /// to which you're trying to add a job doesn't exist or is still being created.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for DeletePreset Operation
        public virtual DeletePresetResponse DeletePreset(DeletePresetRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeletePresetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeletePresetResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeletePreset operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeletePreset operation on AmazonElasticTranscoderClient.
        /// 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 EndDeletePreset
        ///         operation.
        /// REST API Reference for DeletePreset Operation
        public virtual IAsyncResult BeginDeletePreset(DeletePresetRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeletePresetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeletePresetResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeletePreset operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeletePreset.
        /// 
        /// Returns a  DeletePresetResult from ElasticTranscoder.
        /// REST API Reference for DeletePreset Operation
        public virtual DeletePresetResponse EndDeletePreset(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListJobsByPipeline
        /// 
        /// The ListJobsByPipeline operation gets a list of the jobs currently in a pipeline.
        /// 
        ///  
        /// 
        /// Elastic Transcoder returns all of the jobs currently in the specified pipeline. The
        /// response body contains one element for each job that satisfies the search criteria.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListJobsByPipeline service method.
        /// 
        /// The response from the ListJobsByPipeline service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// The requested resource does not exist or is not available. For example, the pipeline
        /// to which you're trying to add a job doesn't exist or is still being created.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for ListJobsByPipeline Operation
        public virtual ListJobsByPipelineResponse ListJobsByPipeline(ListJobsByPipelineRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListJobsByPipelineRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListJobsByPipelineResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListJobsByPipeline operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListJobsByPipeline operation on AmazonElasticTranscoderClient.
        /// 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 EndListJobsByPipeline
        ///         operation.
        /// REST API Reference for ListJobsByPipeline Operation
        public virtual IAsyncResult BeginListJobsByPipeline(ListJobsByPipelineRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListJobsByPipelineRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListJobsByPipelineResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListJobsByPipeline operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListJobsByPipeline.
        /// 
        /// Returns a  ListJobsByPipelineResult from ElasticTranscoder.
        /// REST API Reference for ListJobsByPipeline Operation
        public virtual ListJobsByPipelineResponse EndListJobsByPipeline(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListJobsByStatus
        /// 
        /// The ListJobsByStatus operation gets a list of jobs that have a specified status. The
        /// response body contains one element for each job that satisfies the search criteria.
        /// 
        /// Container for the necessary parameters to execute the ListJobsByStatus service method.
        /// 
        /// The response from the ListJobsByStatus service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// The requested resource does not exist or is not available. For example, the pipeline
        /// to which you're trying to add a job doesn't exist or is still being created.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for ListJobsByStatus Operation
        public virtual ListJobsByStatusResponse ListJobsByStatus(ListJobsByStatusRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListJobsByStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListJobsByStatusResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListJobsByStatus operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListJobsByStatus operation on AmazonElasticTranscoderClient.
        /// 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 EndListJobsByStatus
        ///         operation.
        /// REST API Reference for ListJobsByStatus Operation
        public virtual IAsyncResult BeginListJobsByStatus(ListJobsByStatusRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListJobsByStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListJobsByStatusResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListJobsByStatus operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListJobsByStatus.
        /// 
        /// Returns a  ListJobsByStatusResult from ElasticTranscoder.
        /// REST API Reference for ListJobsByStatus Operation
        public virtual ListJobsByStatusResponse EndListJobsByStatus(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListPipelines
        /// 
        /// The ListPipelines operation gets a list of the pipelines associated with the current
        /// AWS account.
        /// 
        /// 
        /// The response from the ListPipelines service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for ListPipelines Operation
        public virtual ListPipelinesResponse ListPipelines()
        {
            return ListPipelines(new ListPipelinesRequest());
        }
        /// 
        /// The ListPipelines operation gets a list of the pipelines associated with the current
        /// AWS account.
        /// 
        /// Container for the necessary parameters to execute the ListPipelines service method.
        /// 
        /// The response from the ListPipelines service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for ListPipelines Operation
        public virtual ListPipelinesResponse ListPipelines(ListPipelinesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListPipelinesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListPipelinesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListPipelines operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListPipelines operation on AmazonElasticTranscoderClient.
        /// 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 EndListPipelines
        ///         operation.
        /// REST API Reference for ListPipelines Operation
        public virtual IAsyncResult BeginListPipelines(ListPipelinesRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListPipelinesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListPipelinesResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListPipelines operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListPipelines.
        /// 
        /// Returns a  ListPipelinesResult from ElasticTranscoder.
        /// REST API Reference for ListPipelines Operation
        public virtual ListPipelinesResponse EndListPipelines(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListPresets
        /// 
        /// The ListPresets operation gets a list of the default presets included with Elastic
        /// Transcoder and the presets that you've added in an AWS region.
        /// 
        /// 
        /// The response from the ListPresets service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for ListPresets Operation
        public virtual ListPresetsResponse ListPresets()
        {
            return ListPresets(new ListPresetsRequest());
        }
        /// 
        /// The ListPresets operation gets a list of the default presets included with Elastic
        /// Transcoder and the presets that you've added in an AWS region.
        /// 
        /// Container for the necessary parameters to execute the ListPresets service method.
        /// 
        /// The response from the ListPresets service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for ListPresets Operation
        public virtual ListPresetsResponse ListPresets(ListPresetsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListPresetsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListPresetsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListPresets operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListPresets operation on AmazonElasticTranscoderClient.
        /// 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 EndListPresets
        ///         operation.
        /// REST API Reference for ListPresets Operation
        public virtual IAsyncResult BeginListPresets(ListPresetsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListPresetsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListPresetsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListPresets operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListPresets.
        /// 
        /// Returns a  ListPresetsResult from ElasticTranscoder.
        /// REST API Reference for ListPresets Operation
        public virtual ListPresetsResponse EndListPresets(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ReadJob
        /// 
        /// The ReadJob operation returns detailed information about a job.
        /// 
        /// Container for the necessary parameters to execute the ReadJob service method.
        /// 
        /// The response from the ReadJob service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// The requested resource does not exist or is not available. For example, the pipeline
        /// to which you're trying to add a job doesn't exist or is still being created.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for ReadJob Operation
        public virtual ReadJobResponse ReadJob(ReadJobRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ReadJobRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ReadJobResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ReadJob operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ReadJob operation on AmazonElasticTranscoderClient.
        /// 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 EndReadJob
        ///         operation.
        /// REST API Reference for ReadJob Operation
        public virtual IAsyncResult BeginReadJob(ReadJobRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ReadJobRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ReadJobResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ReadJob operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginReadJob.
        /// 
        /// Returns a  ReadJobResult from ElasticTranscoder.
        /// REST API Reference for ReadJob Operation
        public virtual ReadJobResponse EndReadJob(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ReadPipeline
        /// 
        /// The ReadPipeline operation gets detailed information about a pipeline.
        /// 
        /// Container for the necessary parameters to execute the ReadPipeline service method.
        /// 
        /// The response from the ReadPipeline service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// The requested resource does not exist or is not available. For example, the pipeline
        /// to which you're trying to add a job doesn't exist or is still being created.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for ReadPipeline Operation
        public virtual ReadPipelineResponse ReadPipeline(ReadPipelineRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ReadPipelineRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ReadPipelineResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ReadPipeline operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ReadPipeline operation on AmazonElasticTranscoderClient.
        /// 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 EndReadPipeline
        ///         operation.
        /// REST API Reference for ReadPipeline Operation
        public virtual IAsyncResult BeginReadPipeline(ReadPipelineRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ReadPipelineRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ReadPipelineResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ReadPipeline operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginReadPipeline.
        /// 
        /// Returns a  ReadPipelineResult from ElasticTranscoder.
        /// REST API Reference for ReadPipeline Operation
        public virtual ReadPipelineResponse EndReadPipeline(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ReadPreset
        /// 
        /// The ReadPreset operation gets detailed information about a preset.
        /// 
        /// Container for the necessary parameters to execute the ReadPreset service method.
        /// 
        /// The response from the ReadPreset service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// The requested resource does not exist or is not available. For example, the pipeline
        /// to which you're trying to add a job doesn't exist or is still being created.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for ReadPreset Operation
        public virtual ReadPresetResponse ReadPreset(ReadPresetRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ReadPresetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ReadPresetResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ReadPreset operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ReadPreset operation on AmazonElasticTranscoderClient.
        /// 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 EndReadPreset
        ///         operation.
        /// REST API Reference for ReadPreset Operation
        public virtual IAsyncResult BeginReadPreset(ReadPresetRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ReadPresetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ReadPresetResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ReadPreset operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginReadPreset.
        /// 
        /// Returns a  ReadPresetResult from ElasticTranscoder.
        /// REST API Reference for ReadPreset Operation
        public virtual ReadPresetResponse EndReadPreset(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  TestRole
        /// 
        /// The TestRole operation tests the IAM role used to create the pipeline.
        /// 
        ///  
        /// 
        /// The TestRole action lets you determine whether the IAM role you are using
        /// has sufficient permissions to let Elastic Transcoder perform tasks associated with
        /// the transcoding process. The action attempts to assume the specified IAM role, checks
        /// read access to the input and output buckets, and tries to send a test notification
        /// to Amazon SNS topics that you specify.
        /// 
        /// 
        /// Container for the necessary parameters to execute the TestRole service method.
        /// 
        /// The response from the TestRole service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// The requested resource does not exist or is not available. For example, the pipeline
        /// to which you're trying to add a job doesn't exist or is still being created.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for TestRole Operation
        [Obsolete("This API is deprecated and will be removed in a future release.")]
        public virtual TestRoleResponse TestRole(TestRoleRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = TestRoleRequestMarshaller.Instance;
            options.ResponseUnmarshaller = TestRoleResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the TestRole operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the TestRole operation on AmazonElasticTranscoderClient.
        /// 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 EndTestRole
        ///         operation.
        /// REST API Reference for TestRole Operation
        [Obsolete("This API is deprecated and will be removed in a future release.")]
        public virtual IAsyncResult BeginTestRole(TestRoleRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = TestRoleRequestMarshaller.Instance;
            options.ResponseUnmarshaller = TestRoleResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  TestRole operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginTestRole.
        /// 
        /// Returns a  TestRoleResult from ElasticTranscoder.
        /// REST API Reference for TestRole Operation
        [Obsolete("This API is deprecated and will be removed in a future release.")]
        public virtual TestRoleResponse EndTestRole(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  UpdatePipeline
        /// 
        /// Use the UpdatePipeline operation to update settings for a pipeline.
        /// 
        ///   
        /// 
        /// When you change pipeline settings, your changes take effect immediately. Jobs that
        /// you have already submitted and that Elastic Transcoder has not started to process
        /// are affected in addition to jobs that you submit after you change settings. 
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the UpdatePipeline service method.
        /// 
        /// The response from the UpdatePipeline service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// The resource you are attempting to change is in use. For example, you are attempting
        /// to delete a pipeline that is currently in use.
        /// 
        /// 
        /// The requested resource does not exist or is not available. For example, the pipeline
        /// to which you're trying to add a job doesn't exist or is still being created.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for UpdatePipeline Operation
        public virtual UpdatePipelineResponse UpdatePipeline(UpdatePipelineRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdatePipelineRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdatePipelineResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the UpdatePipeline operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdatePipeline operation on AmazonElasticTranscoderClient.
        /// 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 EndUpdatePipeline
        ///         operation.
        /// REST API Reference for UpdatePipeline Operation
        public virtual IAsyncResult BeginUpdatePipeline(UpdatePipelineRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdatePipelineRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdatePipelineResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  UpdatePipeline operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginUpdatePipeline.
        /// 
        /// Returns a  UpdatePipelineResult from ElasticTranscoder.
        /// REST API Reference for UpdatePipeline Operation
        public virtual UpdatePipelineResponse EndUpdatePipeline(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  UpdatePipelineNotifications
        /// 
        /// With the UpdatePipelineNotifications operation, you can update Amazon Simple Notification
        /// Service (Amazon SNS) notifications for a pipeline.
        /// 
        ///  
        /// 
        /// When you update notifications for a pipeline, Elastic Transcoder returns the values
        /// that you specified in the request.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdatePipelineNotifications service method.
        /// 
        /// The response from the UpdatePipelineNotifications service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// The resource you are attempting to change is in use. For example, you are attempting
        /// to delete a pipeline that is currently in use.
        /// 
        /// 
        /// The requested resource does not exist or is not available. For example, the pipeline
        /// to which you're trying to add a job doesn't exist or is still being created.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for UpdatePipelineNotifications Operation
        public virtual UpdatePipelineNotificationsResponse UpdatePipelineNotifications(UpdatePipelineNotificationsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdatePipelineNotificationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdatePipelineNotificationsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the UpdatePipelineNotifications operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdatePipelineNotifications operation on AmazonElasticTranscoderClient.
        /// 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 EndUpdatePipelineNotifications
        ///         operation.
        /// REST API Reference for UpdatePipelineNotifications Operation
        public virtual IAsyncResult BeginUpdatePipelineNotifications(UpdatePipelineNotificationsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdatePipelineNotificationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdatePipelineNotificationsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  UpdatePipelineNotifications operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginUpdatePipelineNotifications.
        /// 
        /// Returns a  UpdatePipelineNotificationsResult from ElasticTranscoder.
        /// REST API Reference for UpdatePipelineNotifications Operation
        public virtual UpdatePipelineNotificationsResponse EndUpdatePipelineNotifications(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  UpdatePipelineStatus
        /// 
        /// The UpdatePipelineStatus operation pauses or reactivates a pipeline, so that the pipeline
        /// stops or restarts the processing of jobs.
        /// 
        ///  
        /// 
        /// Changing the pipeline status is useful if you want to cancel one or more jobs. You
        /// can't cancel jobs after Elastic Transcoder has started processing them; if you pause
        /// the pipeline to which you submitted the jobs, you have more time to get the job IDs
        /// for the jobs that you want to cancel, and to send a CancelJob request. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdatePipelineStatus service method.
        /// 
        /// The response from the UpdatePipelineStatus service method, as returned by ElasticTranscoder.
        /// 
        /// General authentication failure. The request was not signed correctly.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// Elastic Transcoder encountered an unexpected exception while trying to fulfill the
        /// request.
        /// 
        /// 
        /// The resource you are attempting to change is in use. For example, you are attempting
        /// to delete a pipeline that is currently in use.
        /// 
        /// 
        /// The requested resource does not exist or is not available. For example, the pipeline
        /// to which you're trying to add a job doesn't exist or is still being created.
        /// 
        /// 
        /// One or more required parameter values were not provided in the request.
        /// 
        /// REST API Reference for UpdatePipelineStatus Operation
        public virtual UpdatePipelineStatusResponse UpdatePipelineStatus(UpdatePipelineStatusRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdatePipelineStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdatePipelineStatusResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the UpdatePipelineStatus operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdatePipelineStatus operation on AmazonElasticTranscoderClient.
        /// 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 EndUpdatePipelineStatus
        ///         operation.
        /// REST API Reference for UpdatePipelineStatus Operation
        public virtual IAsyncResult BeginUpdatePipelineStatus(UpdatePipelineStatusRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdatePipelineStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdatePipelineStatusResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  UpdatePipelineStatus operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginUpdatePipelineStatus.
        /// 
        /// Returns a  UpdatePipelineStatusResult from ElasticTranscoder.
        /// REST API Reference for UpdatePipelineStatus Operation
        public virtual UpdatePipelineStatusResponse EndUpdatePipelineStatus(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
    }
}