/*
 * 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 mediapackagev2-2022-12-25.normal.json service model.
 */
using System;
using System.Runtime.ExceptionServices;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Net;
using Amazon.MediaPackageV2.Model;
using Amazon.MediaPackageV2.Model.Internal.MarshallTransformations;
using Amazon.MediaPackageV2.Internal;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
using Amazon.Runtime.Internal.Auth;
using Amazon.Runtime.Internal.Transform;
namespace Amazon.MediaPackageV2
{
    /// 
    /// Implementation for accessing MediaPackageV2
    ///
    ///  
    /// 
    /// This guide is intended for creating AWS Elemental MediaPackage resources in MediaPackage
    /// Version 2 (v2) starting from May 2023. To get started with MediaPackage v2, create
    /// your MediaPackage resources. There isn't an automated process to migrate your resources
    /// from MediaPackage v1 to MediaPackage v2. 
    /// 
    ///  
    /// 
    /// The names of the entities that you use to access this API, like URLs and ARNs, all
    /// have the versioning information added, like "v2", to distinguish from the prior version.
    /// If you used MediaPackage prior to this release, you can't use the MediaPackage v2
    /// CLI or the MediaPackage v2 API to access any MediaPackage v1 resources.
    /// 
    ///  
    /// 
    /// If you created resources in MediaPackage v1, use video on demand (VOD) workflows,
    /// and aren't looking to migrate to MediaPackage v2 yet, see the MediaPackage
    /// v1 Live API Reference.
    /// 
    ///   
    /// 
    /// This is the AWS Elemental MediaPackage v2 Live REST API Reference. It describes all
    /// the MediaPackage API operations for live content in detail, and provides sample requests,
    /// responses, and errors for the supported web services protocols.
    /// 
    ///  
    /// 
    /// We assume that you have the IAM permissions that you need to use MediaPackage via
    /// the REST API. We also assume that you are familiar with the features and operations
    /// of MediaPackage, as described in the AWS Elemental MediaPackage User Guide.
    /// 
    /// 
    public partial class AmazonMediaPackageV2Client : AmazonServiceClient, IAmazonMediaPackageV2
    {
        private static IServiceMetadata serviceMetadata = new AmazonMediaPackageV2Metadata();
        private IMediaPackageV2PaginatorFactory _paginators;
        /// 
        /// Paginators for the service
        /// 
        public IMediaPackageV2PaginatorFactory Paginators 
        {
            get 
            {
                if (this._paginators == null) 
                {
                    this._paginators = new MediaPackageV2PaginatorFactory(this);
                }
                return this._paginators;
            }
        }
        #region Constructors
        /// 
        /// Constructs AmazonMediaPackageV2Client 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 AmazonMediaPackageV2Client()
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonMediaPackageV2Config()) { }
        /// 
        /// Constructs AmazonMediaPackageV2Client 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 AmazonMediaPackageV2Client(RegionEndpoint region)
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonMediaPackageV2Config{RegionEndpoint = region}) { }
        /// 
        /// Constructs AmazonMediaPackageV2Client 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 AmazonMediaPackageV2Client Configuration Object
        public AmazonMediaPackageV2Client(AmazonMediaPackageV2Config config)
            : base(FallbackCredentialsFactory.GetCredentials(config), config){}
        /// 
        /// Constructs AmazonMediaPackageV2Client with AWS Credentials
        /// 
        /// AWS Credentials
        public AmazonMediaPackageV2Client(AWSCredentials credentials)
            : this(credentials, new AmazonMediaPackageV2Config())
        {
        }
        /// 
        /// Constructs AmazonMediaPackageV2Client with AWS Credentials
        /// 
        /// AWS Credentials
        /// The region to connect.
        public AmazonMediaPackageV2Client(AWSCredentials credentials, RegionEndpoint region)
            : this(credentials, new AmazonMediaPackageV2Config{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonMediaPackageV2Client with AWS Credentials and an
        /// AmazonMediaPackageV2Client Configuration object.
        /// 
        /// AWS Credentials
        /// The AmazonMediaPackageV2Client Configuration Object
        public AmazonMediaPackageV2Client(AWSCredentials credentials, AmazonMediaPackageV2Config clientConfig)
            : base(credentials, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonMediaPackageV2Client with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        public AmazonMediaPackageV2Client(string awsAccessKeyId, string awsSecretAccessKey)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonMediaPackageV2Config())
        {
        }
        /// 
        /// Constructs AmazonMediaPackageV2Client with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The region to connect.
        public AmazonMediaPackageV2Client(string awsAccessKeyId, string awsSecretAccessKey, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonMediaPackageV2Config() {RegionEndpoint=region})
        {
        }
        /// 
        /// Constructs AmazonMediaPackageV2Client with AWS Access Key ID, AWS Secret Key and an
        /// AmazonMediaPackageV2Client Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The AmazonMediaPackageV2Client Configuration Object
        public AmazonMediaPackageV2Client(string awsAccessKeyId, string awsSecretAccessKey, AmazonMediaPackageV2Config clientConfig)
            : base(awsAccessKeyId, awsSecretAccessKey, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonMediaPackageV2Client with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        public AmazonMediaPackageV2Client(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonMediaPackageV2Config())
        {
        }
        /// 
        /// Constructs AmazonMediaPackageV2Client 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 AmazonMediaPackageV2Client(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonMediaPackageV2Config{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonMediaPackageV2Client with AWS Access Key ID, AWS Secret Key and an
        /// AmazonMediaPackageV2Client Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        /// The AmazonMediaPackageV2Client Configuration Object
        public AmazonMediaPackageV2Client(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, AmazonMediaPackageV2Config 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 AmazonMediaPackageV2EndpointResolver());
        }    
        /// 
        /// 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  CreateChannel
        /// 
        /// Create a channel to start receiving content streams. The channel represents the input
        /// to MediaPackage for incoming live content from an encoder such as AWS Elemental MediaLive.
        /// The channel receives content, and after packaging it, outputs it through an origin
        /// endpoint to downstream devices (such as video players or CDNs) that request the content.
        /// You can create only one channel with each request. We recommend that you spread out
        /// channels between channel groups, such as putting redundant channels in the same AWS
        /// Region in different channel groups.
        /// 
        /// Container for the necessary parameters to execute the CreateChannel service method.
        /// 
        /// The response from the CreateChannel service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request would cause a service quota to be exceeded.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for CreateChannel Operation
        public virtual CreateChannelResponse CreateChannel(CreateChannelRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateChannelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateChannelResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Create a channel to start receiving content streams. The channel represents the input
        /// to MediaPackage for incoming live content from an encoder such as AWS Elemental MediaLive.
        /// The channel receives content, and after packaging it, outputs it through an origin
        /// endpoint to downstream devices (such as video players or CDNs) that request the content.
        /// You can create only one channel with each request. We recommend that you spread out
        /// channels between channel groups, such as putting redundant channels in the same AWS
        /// Region in different channel groups.
        /// 
        /// Container for the necessary parameters to execute the CreateChannel service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the CreateChannel service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request would cause a service quota to be exceeded.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for CreateChannel Operation
        public virtual Task CreateChannelAsync(CreateChannelRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateChannelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateChannelResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  CreateChannelGroup
        /// 
        /// Create a channel group to group your channels and origin endpoints. A channel group
        /// is the top-level resource that consists of channels and origin endpoints that are
        /// associated with it and that provides predictable URLs for stream delivery. All channels
        /// and origin endpoints within the channel group are guaranteed to share the DNS. You
        /// can create only one channel group with each request.
        /// 
        /// Container for the necessary parameters to execute the CreateChannelGroup service method.
        /// 
        /// The response from the CreateChannelGroup service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request would cause a service quota to be exceeded.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for CreateChannelGroup Operation
        public virtual CreateChannelGroupResponse CreateChannelGroup(CreateChannelGroupRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateChannelGroupRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateChannelGroupResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Create a channel group to group your channels and origin endpoints. A channel group
        /// is the top-level resource that consists of channels and origin endpoints that are
        /// associated with it and that provides predictable URLs for stream delivery. All channels
        /// and origin endpoints within the channel group are guaranteed to share the DNS. You
        /// can create only one channel group with each request.
        /// 
        /// Container for the necessary parameters to execute the CreateChannelGroup service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the CreateChannelGroup service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request would cause a service quota to be exceeded.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for CreateChannelGroup Operation
        public virtual Task CreateChannelGroupAsync(CreateChannelGroupRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateChannelGroupRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateChannelGroupResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  CreateOriginEndpoint
        /// 
        /// The endpoint is attached to a channel, and represents the output of the live content.
        /// You can associate multiple endpoints to a single channel. Each endpoint gives players
        /// and downstream CDNs (such as Amazon CloudFront) access to the content for playback.
        /// Content can't be served from a channel until it has an endpoint. You can create only
        /// one endpoint with each request.
        /// 
        /// Container for the necessary parameters to execute the CreateOriginEndpoint service method.
        /// 
        /// The response from the CreateOriginEndpoint service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request would cause a service quota to be exceeded.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for CreateOriginEndpoint Operation
        public virtual CreateOriginEndpointResponse CreateOriginEndpoint(CreateOriginEndpointRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateOriginEndpointRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateOriginEndpointResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// The endpoint is attached to a channel, and represents the output of the live content.
        /// You can associate multiple endpoints to a single channel. Each endpoint gives players
        /// and downstream CDNs (such as Amazon CloudFront) access to the content for playback.
        /// Content can't be served from a channel until it has an endpoint. You can create only
        /// one endpoint with each request.
        /// 
        /// Container for the necessary parameters to execute the CreateOriginEndpoint service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the CreateOriginEndpoint service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request would cause a service quota to be exceeded.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for CreateOriginEndpoint Operation
        public virtual Task CreateOriginEndpointAsync(CreateOriginEndpointRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateOriginEndpointRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateOriginEndpointResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteChannel
        /// 
        /// Delete a channel to stop AWS Elemental MediaPackage from receiving further content.
        /// You must delete the channel's origin endpoints before you can delete the channel.
        /// 
        /// Container for the necessary parameters to execute the DeleteChannel service method.
        /// 
        /// The response from the DeleteChannel service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for DeleteChannel Operation
        public virtual DeleteChannelResponse DeleteChannel(DeleteChannelRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteChannelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteChannelResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Delete a channel to stop AWS Elemental MediaPackage from receiving further content.
        /// You must delete the channel's origin endpoints before you can delete the channel.
        /// 
        /// Container for the necessary parameters to execute the DeleteChannel service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteChannel service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for DeleteChannel Operation
        public virtual Task DeleteChannelAsync(DeleteChannelRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteChannelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteChannelResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteChannelGroup
        /// 
        /// Delete a channel group. You must delete the channel group's channels and origin endpoints
        /// before you can delete the channel group. If you delete a channel group, you'll lose
        /// access to the egress domain and will have to create a new channel group to replace
        /// it.
        /// 
        /// Container for the necessary parameters to execute the DeleteChannelGroup service method.
        /// 
        /// The response from the DeleteChannelGroup service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for DeleteChannelGroup Operation
        public virtual DeleteChannelGroupResponse DeleteChannelGroup(DeleteChannelGroupRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteChannelGroupRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteChannelGroupResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Delete a channel group. You must delete the channel group's channels and origin endpoints
        /// before you can delete the channel group. If you delete a channel group, you'll lose
        /// access to the egress domain and will have to create a new channel group to replace
        /// it.
        /// 
        /// Container for the necessary parameters to execute the DeleteChannelGroup service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteChannelGroup service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for DeleteChannelGroup Operation
        public virtual Task DeleteChannelGroupAsync(DeleteChannelGroupRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteChannelGroupRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteChannelGroupResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteChannelPolicy
        /// 
        /// Delete a channel policy.
        /// 
        /// Container for the necessary parameters to execute the DeleteChannelPolicy service method.
        /// 
        /// The response from the DeleteChannelPolicy service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for DeleteChannelPolicy Operation
        public virtual DeleteChannelPolicyResponse DeleteChannelPolicy(DeleteChannelPolicyRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteChannelPolicyRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteChannelPolicyResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Delete a channel policy.
        /// 
        /// Container for the necessary parameters to execute the DeleteChannelPolicy service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteChannelPolicy service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for DeleteChannelPolicy Operation
        public virtual Task DeleteChannelPolicyAsync(DeleteChannelPolicyRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteChannelPolicyRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteChannelPolicyResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteOriginEndpoint
        /// 
        /// Origin endpoints can serve content until they're deleted. Delete the endpoint if it
        /// should no longer respond to playback requests. You must delete all endpoints from
        /// a channel before you can delete the channel.
        /// 
        /// Container for the necessary parameters to execute the DeleteOriginEndpoint service method.
        /// 
        /// The response from the DeleteOriginEndpoint service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for DeleteOriginEndpoint Operation
        public virtual DeleteOriginEndpointResponse DeleteOriginEndpoint(DeleteOriginEndpointRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteOriginEndpointRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteOriginEndpointResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Origin endpoints can serve content until they're deleted. Delete the endpoint if it
        /// should no longer respond to playback requests. You must delete all endpoints from
        /// a channel before you can delete the channel.
        /// 
        /// Container for the necessary parameters to execute the DeleteOriginEndpoint service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteOriginEndpoint service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for DeleteOriginEndpoint Operation
        public virtual Task DeleteOriginEndpointAsync(DeleteOriginEndpointRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteOriginEndpointRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteOriginEndpointResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteOriginEndpointPolicy
        /// 
        /// Delete an origin endpoint policy.
        /// 
        /// Container for the necessary parameters to execute the DeleteOriginEndpointPolicy service method.
        /// 
        /// The response from the DeleteOriginEndpointPolicy service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for DeleteOriginEndpointPolicy Operation
        public virtual DeleteOriginEndpointPolicyResponse DeleteOriginEndpointPolicy(DeleteOriginEndpointPolicyRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteOriginEndpointPolicyRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteOriginEndpointPolicyResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Delete an origin endpoint policy.
        /// 
        /// Container for the necessary parameters to execute the DeleteOriginEndpointPolicy service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteOriginEndpointPolicy service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for DeleteOriginEndpointPolicy Operation
        public virtual Task DeleteOriginEndpointPolicyAsync(DeleteOriginEndpointPolicyRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteOriginEndpointPolicyRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteOriginEndpointPolicyResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetChannel
        /// 
        /// Retrieves the specified channel that's configured in AWS Elemental MediaPackage, including
        /// the origin endpoints that are associated with it.
        /// 
        /// Container for the necessary parameters to execute the GetChannel service method.
        /// 
        /// The response from the GetChannel service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for GetChannel Operation
        public virtual GetChannelResponse GetChannel(GetChannelRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetChannelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetChannelResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Retrieves the specified channel that's configured in AWS Elemental MediaPackage, including
        /// the origin endpoints that are associated with it.
        /// 
        /// Container for the necessary parameters to execute the GetChannel service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetChannel service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for GetChannel Operation
        public virtual Task GetChannelAsync(GetChannelRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetChannelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetChannelResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetChannelGroup
        /// 
        /// Retrieves the specified channel group that's configured in AWS Elemental MediaPackage,
        /// including the channels and origin endpoints that are associated with it.
        /// 
        /// Container for the necessary parameters to execute the GetChannelGroup service method.
        /// 
        /// The response from the GetChannelGroup service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for GetChannelGroup Operation
        public virtual GetChannelGroupResponse GetChannelGroup(GetChannelGroupRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetChannelGroupRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetChannelGroupResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Retrieves the specified channel group that's configured in AWS Elemental MediaPackage,
        /// including the channels and origin endpoints that are associated with it.
        /// 
        /// Container for the necessary parameters to execute the GetChannelGroup service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetChannelGroup service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for GetChannelGroup Operation
        public virtual Task GetChannelGroupAsync(GetChannelGroupRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetChannelGroupRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetChannelGroupResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetChannelPolicy
        /// 
        /// Retrieves the specified channel policy that's configured in AWS Elemental MediaPackage.
        /// With policies, you can specify who has access to AWS resources and what actions they
        /// can perform on those resources.
        /// 
        /// Container for the necessary parameters to execute the GetChannelPolicy service method.
        /// 
        /// The response from the GetChannelPolicy service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for GetChannelPolicy Operation
        public virtual GetChannelPolicyResponse GetChannelPolicy(GetChannelPolicyRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetChannelPolicyRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetChannelPolicyResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Retrieves the specified channel policy that's configured in AWS Elemental MediaPackage.
        /// With policies, you can specify who has access to AWS resources and what actions they
        /// can perform on those resources.
        /// 
        /// Container for the necessary parameters to execute the GetChannelPolicy service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetChannelPolicy service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for GetChannelPolicy Operation
        public virtual Task GetChannelPolicyAsync(GetChannelPolicyRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetChannelPolicyRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetChannelPolicyResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetOriginEndpoint
        /// 
        /// Retrieves the specified origin endpoint that's configured in AWS Elemental MediaPackage
        /// to obtain its playback URL and to view the packaging settings that it's currently
        /// using.
        /// 
        /// Container for the necessary parameters to execute the GetOriginEndpoint service method.
        /// 
        /// The response from the GetOriginEndpoint service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for GetOriginEndpoint Operation
        public virtual GetOriginEndpointResponse GetOriginEndpoint(GetOriginEndpointRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetOriginEndpointRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetOriginEndpointResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Retrieves the specified origin endpoint that's configured in AWS Elemental MediaPackage
        /// to obtain its playback URL and to view the packaging settings that it's currently
        /// using.
        /// 
        /// Container for the necessary parameters to execute the GetOriginEndpoint service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetOriginEndpoint service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for GetOriginEndpoint Operation
        public virtual Task GetOriginEndpointAsync(GetOriginEndpointRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetOriginEndpointRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetOriginEndpointResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetOriginEndpointPolicy
        /// 
        /// Retrieves the specified origin endpoint policy that's configured in AWS Elemental
        /// MediaPackage.
        /// 
        /// Container for the necessary parameters to execute the GetOriginEndpointPolicy service method.
        /// 
        /// The response from the GetOriginEndpointPolicy service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for GetOriginEndpointPolicy Operation
        public virtual GetOriginEndpointPolicyResponse GetOriginEndpointPolicy(GetOriginEndpointPolicyRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetOriginEndpointPolicyRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetOriginEndpointPolicyResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Retrieves the specified origin endpoint policy that's configured in AWS Elemental
        /// MediaPackage.
        /// 
        /// Container for the necessary parameters to execute the GetOriginEndpointPolicy service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetOriginEndpointPolicy service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for GetOriginEndpointPolicy Operation
        public virtual Task GetOriginEndpointPolicyAsync(GetOriginEndpointPolicyRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetOriginEndpointPolicyRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetOriginEndpointPolicyResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListChannelGroups
        /// 
        /// Retrieves all channel groups that are configured in AWS Elemental MediaPackage, including
        /// the channels and origin endpoints that are associated with it.
        /// 
        /// Container for the necessary parameters to execute the ListChannelGroups service method.
        /// 
        /// The response from the ListChannelGroups service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for ListChannelGroups Operation
        public virtual ListChannelGroupsResponse ListChannelGroups(ListChannelGroupsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListChannelGroupsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListChannelGroupsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Retrieves all channel groups that are configured in AWS Elemental MediaPackage, including
        /// the channels and origin endpoints that are associated with it.
        /// 
        /// Container for the necessary parameters to execute the ListChannelGroups service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListChannelGroups service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for ListChannelGroups Operation
        public virtual Task ListChannelGroupsAsync(ListChannelGroupsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListChannelGroupsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListChannelGroupsResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListChannels
        /// 
        /// Retrieves all channels in a specific channel group that are configured in AWS Elemental
        /// MediaPackage, including the origin endpoints that are associated with it.
        /// 
        /// Container for the necessary parameters to execute the ListChannels service method.
        /// 
        /// The response from the ListChannels service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for ListChannels Operation
        public virtual ListChannelsResponse ListChannels(ListChannelsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListChannelsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListChannelsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Retrieves all channels in a specific channel group that are configured in AWS Elemental
        /// MediaPackage, including the origin endpoints that are associated with it.
        /// 
        /// Container for the necessary parameters to execute the ListChannels service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListChannels service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for ListChannels Operation
        public virtual Task ListChannelsAsync(ListChannelsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListChannelsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListChannelsResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListOriginEndpoints
        /// 
        /// Retrieves all origin endpoints in a specific channel that are configured in AWS Elemental
        /// MediaPackage.
        /// 
        /// Container for the necessary parameters to execute the ListOriginEndpoints service method.
        /// 
        /// The response from the ListOriginEndpoints service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for ListOriginEndpoints Operation
        public virtual ListOriginEndpointsResponse ListOriginEndpoints(ListOriginEndpointsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListOriginEndpointsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListOriginEndpointsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Retrieves all origin endpoints in a specific channel that are configured in AWS Elemental
        /// MediaPackage.
        /// 
        /// Container for the necessary parameters to execute the ListOriginEndpoints service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListOriginEndpoints service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for ListOriginEndpoints Operation
        public virtual Task ListOriginEndpointsAsync(ListOriginEndpointsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListOriginEndpointsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListOriginEndpointsResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListTagsForResource
        /// 
        /// Lists the tags assigned to a resource.
        /// 
        /// Container for the necessary parameters to execute the ListTagsForResource service method.
        /// 
        /// The response from the ListTagsForResource service method, as returned by MediaPackageV2.
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// 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);
        }
        /// 
        /// Lists the tags assigned to a resource.
        /// 
        /// Container for the necessary parameters to execute the ListTagsForResource service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListTagsForResource service method, as returned by MediaPackageV2.
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for ListTagsForResource Operation
        public virtual Task ListTagsForResourceAsync(ListTagsForResourceRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListTagsForResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListTagsForResourceResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  PutChannelPolicy
        /// 
        /// Attaches an IAM policy to the specified channel. With policies, you can specify who
        /// has access to AWS resources and what actions they can perform on those resources.
        /// You can attach only one policy with each request.
        /// 
        /// Container for the necessary parameters to execute the PutChannelPolicy service method.
        /// 
        /// The response from the PutChannelPolicy service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for PutChannelPolicy Operation
        public virtual PutChannelPolicyResponse PutChannelPolicy(PutChannelPolicyRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutChannelPolicyRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutChannelPolicyResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Attaches an IAM policy to the specified channel. With policies, you can specify who
        /// has access to AWS resources and what actions they can perform on those resources.
        /// You can attach only one policy with each request.
        /// 
        /// Container for the necessary parameters to execute the PutChannelPolicy service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the PutChannelPolicy service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for PutChannelPolicy Operation
        public virtual Task PutChannelPolicyAsync(PutChannelPolicyRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutChannelPolicyRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutChannelPolicyResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  PutOriginEndpointPolicy
        /// 
        /// Attaches an IAM policy to the specified origin endpoint. You can attach only one policy
        /// with each request.
        /// 
        /// Container for the necessary parameters to execute the PutOriginEndpointPolicy service method.
        /// 
        /// The response from the PutOriginEndpointPolicy service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for PutOriginEndpointPolicy Operation
        public virtual PutOriginEndpointPolicyResponse PutOriginEndpointPolicy(PutOriginEndpointPolicyRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutOriginEndpointPolicyRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutOriginEndpointPolicyResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Attaches an IAM policy to the specified origin endpoint. You can attach only one policy
        /// with each request.
        /// 
        /// Container for the necessary parameters to execute the PutOriginEndpointPolicy service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the PutOriginEndpointPolicy service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for PutOriginEndpointPolicy Operation
        public virtual Task PutOriginEndpointPolicyAsync(PutOriginEndpointPolicyRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutOriginEndpointPolicyRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutOriginEndpointPolicyResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  TagResource
        /// 
        /// Assigns one of more tags (key-value pairs) to the specified MediaPackage resource.
        /// 
        ///  
        /// 
        /// Tags can help you organize and categorize your resources. You can also use them to
        /// scope user permissions, by granting a user permission to access or change only resources
        /// with certain tag values. You can use the TagResource operation with a resource that
        /// already has tags. If you specify a new tag key for the resource, this tag is appended
        /// to the list of tags associated with the resource. If you specify a tag key that is
        /// already associated with the resource, the new tag value that you specify replaces
        /// the previous value for that tag.
        /// 
        /// 
        /// Container for the necessary parameters to execute the TagResource service method.
        /// 
        /// The response from the TagResource service method, as returned by MediaPackageV2.
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// 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);
        }
        /// 
        /// Assigns one of more tags (key-value pairs) to the specified MediaPackage resource.
        /// 
        ///  
        /// 
        /// Tags can help you organize and categorize your resources. You can also use them to
        /// scope user permissions, by granting a user permission to access or change only resources
        /// with certain tag values. You can use the TagResource operation with a resource that
        /// already has tags. If you specify a new tag key for the resource, this tag is appended
        /// to the list of tags associated with the resource. If you specify a tag key that is
        /// already associated with the resource, the new tag value that you specify replaces
        /// the previous value for that tag.
        /// 
        /// 
        /// Container for the necessary parameters to execute the TagResource service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the TagResource service method, as returned by MediaPackageV2.
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for TagResource Operation
        public virtual Task TagResourceAsync(TagResourceRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = TagResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = TagResourceResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  UntagResource
        /// 
        /// Removes one or more tags from the specified resource.
        /// 
        /// Container for the necessary parameters to execute the UntagResource service method.
        /// 
        /// The response from the UntagResource service method, as returned by MediaPackageV2.
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// 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);
        }
        /// 
        /// Removes one or more tags from the specified resource.
        /// 
        /// Container for the necessary parameters to execute the UntagResource service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the UntagResource service method, as returned by MediaPackageV2.
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for UntagResource Operation
        public virtual Task UntagResourceAsync(UntagResourceRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UntagResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UntagResourceResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  UpdateChannel
        /// 
        /// Update the specified channel. You can edit if MediaPackage sends ingest or egress
        /// access logs to the CloudWatch log group, if content will be encrypted, the description
        /// on a channel, and your channel's policy settings. You can't edit the name of the channel
        /// or CloudFront distribution details.
        /// 
        ///  
        /// 
        /// Any edits you make that impact the video output may not be reflected for a few minutes.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateChannel service method.
        /// 
        /// The response from the UpdateChannel service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for UpdateChannel Operation
        public virtual UpdateChannelResponse UpdateChannel(UpdateChannelRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateChannelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateChannelResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Update the specified channel. You can edit if MediaPackage sends ingest or egress
        /// access logs to the CloudWatch log group, if content will be encrypted, the description
        /// on a channel, and your channel's policy settings. You can't edit the name of the channel
        /// or CloudFront distribution details.
        /// 
        ///  
        /// 
        /// Any edits you make that impact the video output may not be reflected for a few minutes.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateChannel service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the UpdateChannel service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for UpdateChannel Operation
        public virtual Task UpdateChannelAsync(UpdateChannelRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateChannelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateChannelResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  UpdateChannelGroup
        /// 
        /// Update the specified channel group. You can edit the description on a channel group
        /// for easier identification later from the AWS Elemental MediaPackage console. You can't
        /// edit the name of the channel group.
        /// 
        ///  
        /// 
        /// Any edits you make that impact the video output may not be reflected for a few minutes.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateChannelGroup service method.
        /// 
        /// The response from the UpdateChannelGroup service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for UpdateChannelGroup Operation
        public virtual UpdateChannelGroupResponse UpdateChannelGroup(UpdateChannelGroupRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateChannelGroupRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateChannelGroupResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Update the specified channel group. You can edit the description on a channel group
        /// for easier identification later from the AWS Elemental MediaPackage console. You can't
        /// edit the name of the channel group.
        /// 
        ///  
        /// 
        /// Any edits you make that impact the video output may not be reflected for a few minutes.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateChannelGroup service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the UpdateChannelGroup service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for UpdateChannelGroup Operation
        public virtual Task UpdateChannelGroupAsync(UpdateChannelGroupRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateChannelGroupRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateChannelGroupResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  UpdateOriginEndpoint
        /// 
        /// Update the specified origin endpoint. Edit the packaging preferences on an endpoint
        /// to optimize the viewing experience. You can't edit the name of the endpoint.
        /// 
        ///  
        /// 
        /// Any edits you make that impact the video output may not be reflected for a few minutes.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateOriginEndpoint service method.
        /// 
        /// The response from the UpdateOriginEndpoint service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request would cause a service quota to be exceeded.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for UpdateOriginEndpoint Operation
        public virtual UpdateOriginEndpointResponse UpdateOriginEndpoint(UpdateOriginEndpointRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateOriginEndpointRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateOriginEndpointResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Update the specified origin endpoint. Edit the packaging preferences on an endpoint
        /// to optimize the viewing experience. You can't edit the name of the endpoint.
        /// 
        ///  
        /// 
        /// Any edits you make that impact the video output may not be reflected for a few minutes.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateOriginEndpoint service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the UpdateOriginEndpoint service method, as returned by MediaPackageV2.
        /// 
        /// You don't have permissions to perform the requested operation. The user or role that
        /// is making the request must have at least one IAM permissions policy attached that
        /// grants the required permissions. For more information, see Access Management in the
        /// IAM User Guide.
        /// 
        /// 
        /// Updating or deleting this resource can cause an inconsistent state.
        /// 
        /// 
        /// Indicates that an error from the service occurred while trying to process a request.
        /// 
        /// 
        /// The specified resource doesn't exist.
        /// 
        /// 
        /// The request would cause a service quota to be exceeded.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// The input failed to meet the constraints specified by the AWS service.
        /// 
        /// REST API Reference for UpdateOriginEndpoint Operation
        public virtual Task UpdateOriginEndpointAsync(UpdateOriginEndpointRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateOriginEndpointRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateOriginEndpointResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
    }
}