/*
 * 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 gamesparks-2021-08-17.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.GameSparks.Model;
using Amazon.GameSparks.Model.Internal.MarshallTransformations;
using Amazon.GameSparks.Internal;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
using Amazon.Runtime.Internal.Auth;
using Amazon.Runtime.Internal.Transform;
namespace Amazon.GameSparks
{
    /// 
    /// Implementation for accessing GameSparks
    ///
    /// 
    /// 
    public partial class AmazonGameSparksClient : AmazonServiceClient, IAmazonGameSparks
    {
        private static IServiceMetadata serviceMetadata = new AmazonGameSparksMetadata();
        private IGameSparksPaginatorFactory _paginators;
        /// 
        /// Paginators for the service
        /// 
        public IGameSparksPaginatorFactory Paginators 
        {
            get 
            {
                if (this._paginators == null) 
                {
                    this._paginators = new GameSparksPaginatorFactory(this);
                }
                return this._paginators;
            }
        }
        #region Constructors
        /// 
        /// Constructs AmazonGameSparksClient 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 AmazonGameSparksClient()
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonGameSparksConfig()) { }
        /// 
        /// Constructs AmazonGameSparksClient 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 AmazonGameSparksClient(RegionEndpoint region)
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonGameSparksConfig{RegionEndpoint = region}) { }
        /// 
        /// Constructs AmazonGameSparksClient 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 AmazonGameSparksClient Configuration Object
        public AmazonGameSparksClient(AmazonGameSparksConfig config)
            : base(FallbackCredentialsFactory.GetCredentials(config), config){}
        /// 
        /// Constructs AmazonGameSparksClient with AWS Credentials
        /// 
        /// AWS Credentials
        public AmazonGameSparksClient(AWSCredentials credentials)
            : this(credentials, new AmazonGameSparksConfig())
        {
        }
        /// 
        /// Constructs AmazonGameSparksClient with AWS Credentials
        /// 
        /// AWS Credentials
        /// The region to connect.
        public AmazonGameSparksClient(AWSCredentials credentials, RegionEndpoint region)
            : this(credentials, new AmazonGameSparksConfig{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonGameSparksClient with AWS Credentials and an
        /// AmazonGameSparksClient Configuration object.
        /// 
        /// AWS Credentials
        /// The AmazonGameSparksClient Configuration Object
        public AmazonGameSparksClient(AWSCredentials credentials, AmazonGameSparksConfig clientConfig)
            : base(credentials, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonGameSparksClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        public AmazonGameSparksClient(string awsAccessKeyId, string awsSecretAccessKey)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonGameSparksConfig())
        {
        }
        /// 
        /// Constructs AmazonGameSparksClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The region to connect.
        public AmazonGameSparksClient(string awsAccessKeyId, string awsSecretAccessKey, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonGameSparksConfig() {RegionEndpoint=region})
        {
        }
        /// 
        /// Constructs AmazonGameSparksClient with AWS Access Key ID, AWS Secret Key and an
        /// AmazonGameSparksClient Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The AmazonGameSparksClient Configuration Object
        public AmazonGameSparksClient(string awsAccessKeyId, string awsSecretAccessKey, AmazonGameSparksConfig clientConfig)
            : base(awsAccessKeyId, awsSecretAccessKey, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonGameSparksClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        public AmazonGameSparksClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonGameSparksConfig())
        {
        }
        /// 
        /// Constructs AmazonGameSparksClient 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 AmazonGameSparksClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonGameSparksConfig{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonGameSparksClient with AWS Access Key ID, AWS Secret Key and an
        /// AmazonGameSparksClient Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        /// The AmazonGameSparksClient Configuration Object
        public AmazonGameSparksClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, AmazonGameSparksConfig 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 AmazonGameSparksEndpointResolver());
        }    
        /// 
        /// 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  CreateGame
        /// 
        /// Creates a new game with an empty configuration. After creating your game, you can
        /// update the configuration using UpdateGameConfiguration or ImportGameConfiguration.
        /// 
        /// Container for the necessary parameters to execute the CreateGame service method.
        /// 
        /// The response from the CreateGame service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The resource already exists, or another operation is in progress.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The request would result in exceeding service quota.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for CreateGame Operation
        public virtual CreateGameResponse CreateGame(CreateGameRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateGameRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateGameResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Creates a new game with an empty configuration. After creating your game, you can
        /// update the configuration using UpdateGameConfiguration or ImportGameConfiguration.
        /// 
        /// Container for the necessary parameters to execute the CreateGame service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the CreateGame service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The resource already exists, or another operation is in progress.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The request would result in exceeding service quota.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for CreateGame Operation
        public virtual Task CreateGameAsync(CreateGameRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateGameRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateGameResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  CreateSnapshot
        /// 
        /// Creates a snapshot of the game configuration.
        /// 
        /// Container for the necessary parameters to execute the CreateSnapshot service method.
        /// 
        /// The response from the CreateSnapshot service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The resource already exists, or another operation is in progress.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for CreateSnapshot Operation
        public virtual CreateSnapshotResponse CreateSnapshot(CreateSnapshotRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateSnapshotRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateSnapshotResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Creates a snapshot of the game configuration.
        /// 
        /// Container for the necessary parameters to execute the CreateSnapshot service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the CreateSnapshot service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The resource already exists, or another operation is in progress.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for CreateSnapshot Operation
        public virtual Task CreateSnapshotAsync(CreateSnapshotRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateSnapshotRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateSnapshotResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  CreateStage
        /// 
        /// Creates a new stage for stage-by-stage game development and deployment.
        /// 
        /// Container for the necessary parameters to execute the CreateStage service method.
        /// 
        /// The response from the CreateStage service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The resource already exists, or another operation is in progress.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for CreateStage Operation
        public virtual CreateStageResponse CreateStage(CreateStageRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateStageRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateStageResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Creates a new stage for stage-by-stage game development and deployment.
        /// 
        /// Container for the necessary parameters to execute the CreateStage service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the CreateStage service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The resource already exists, or another operation is in progress.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for CreateStage Operation
        public virtual Task CreateStageAsync(CreateStageRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateStageRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateStageResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteGame
        /// 
        /// Deletes a game.
        /// 
        /// Container for the necessary parameters to execute the DeleteGame service method.
        /// 
        /// The response from the DeleteGame service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The resource already exists, or another operation is in progress.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for DeleteGame Operation
        public virtual DeleteGameResponse DeleteGame(DeleteGameRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteGameRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteGameResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes a game.
        /// 
        /// Container for the necessary parameters to execute the DeleteGame service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteGame service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The resource already exists, or another operation is in progress.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for DeleteGame Operation
        public virtual Task DeleteGameAsync(DeleteGameRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteGameRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteGameResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteStage
        /// 
        /// Deletes a stage from a game, along with the associated game runtime.
        /// 
        /// Container for the necessary parameters to execute the DeleteStage service method.
        /// 
        /// The response from the DeleteStage service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The resource already exists, or another operation is in progress.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for DeleteStage Operation
        public virtual DeleteStageResponse DeleteStage(DeleteStageRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteStageRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteStageResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes a stage from a game, along with the associated game runtime.
        /// 
        /// Container for the necessary parameters to execute the DeleteStage service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteStage service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The resource already exists, or another operation is in progress.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for DeleteStage Operation
        public virtual Task DeleteStageAsync(DeleteStageRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteStageRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteStageResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DisconnectPlayer
        /// 
        /// Disconnects a player from the game runtime.
        /// 
        ///  
        /// 
        ///  If a player has multiple connections, this operation attempts to close all of them.
        /// 
        /// 
        /// 
        /// Container for the necessary parameters to execute the DisconnectPlayer service method.
        /// 
        /// The response from the DisconnectPlayer service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for DisconnectPlayer Operation
        public virtual DisconnectPlayerResponse DisconnectPlayer(DisconnectPlayerRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DisconnectPlayerRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DisconnectPlayerResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Disconnects a player from the game runtime.
        /// 
        ///  
        /// 
        ///  If a player has multiple connections, this operation attempts to close all of them.
        /// 
        /// 
        /// 
        /// Container for the necessary parameters to execute the DisconnectPlayer service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DisconnectPlayer service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for DisconnectPlayer Operation
        public virtual Task DisconnectPlayerAsync(DisconnectPlayerRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DisconnectPlayerRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DisconnectPlayerResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ExportSnapshot
        /// 
        /// Exports a game configuration snapshot.
        /// 
        /// Container for the necessary parameters to execute the ExportSnapshot service method.
        /// 
        /// The response from the ExportSnapshot service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for ExportSnapshot Operation
        public virtual ExportSnapshotResponse ExportSnapshot(ExportSnapshotRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ExportSnapshotRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ExportSnapshotResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Exports a game configuration snapshot.
        /// 
        /// Container for the necessary parameters to execute the ExportSnapshot service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ExportSnapshot service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for ExportSnapshot Operation
        public virtual Task ExportSnapshotAsync(ExportSnapshotRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ExportSnapshotRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ExportSnapshotResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetExtension
        /// 
        /// Gets details about a specified extension.
        /// 
        /// Container for the necessary parameters to execute the GetExtension service method.
        /// 
        /// The response from the GetExtension service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for GetExtension Operation
        public virtual GetExtensionResponse GetExtension(GetExtensionRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetExtensionRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetExtensionResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Gets details about a specified extension.
        /// 
        /// Container for the necessary parameters to execute the GetExtension service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetExtension service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for GetExtension Operation
        public virtual Task GetExtensionAsync(GetExtensionRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetExtensionRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetExtensionResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetExtensionVersion
        /// 
        /// Gets details about a specified extension version.
        /// 
        /// Container for the necessary parameters to execute the GetExtensionVersion service method.
        /// 
        /// The response from the GetExtensionVersion service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for GetExtensionVersion Operation
        public virtual GetExtensionVersionResponse GetExtensionVersion(GetExtensionVersionRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetExtensionVersionRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetExtensionVersionResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Gets details about a specified extension version.
        /// 
        /// Container for the necessary parameters to execute the GetExtensionVersion service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetExtensionVersion service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for GetExtensionVersion Operation
        public virtual Task GetExtensionVersionAsync(GetExtensionVersionRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetExtensionVersionRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetExtensionVersionResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetGame
        /// 
        /// Gets details about a game.
        /// 
        /// Container for the necessary parameters to execute the GetGame service method.
        /// 
        /// The response from the GetGame service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for GetGame Operation
        public virtual GetGameResponse GetGame(GetGameRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetGameRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetGameResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Gets details about a game.
        /// 
        /// Container for the necessary parameters to execute the GetGame service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetGame service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for GetGame Operation
        public virtual Task GetGameAsync(GetGameRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetGameRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetGameResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetGameConfiguration
        /// 
        /// Gets the configuration of the game.
        /// 
        /// Container for the necessary parameters to execute the GetGameConfiguration service method.
        /// 
        /// The response from the GetGameConfiguration service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for GetGameConfiguration Operation
        public virtual GetGameConfigurationResponse GetGameConfiguration(GetGameConfigurationRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetGameConfigurationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetGameConfigurationResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Gets the configuration of the game.
        /// 
        /// Container for the necessary parameters to execute the GetGameConfiguration service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetGameConfiguration service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for GetGameConfiguration Operation
        public virtual Task GetGameConfigurationAsync(GetGameConfigurationRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetGameConfigurationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetGameConfigurationResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetGeneratedCodeJob
        /// 
        /// Gets details about a job that is generating code for a snapshot.
        /// 
        /// Container for the necessary parameters to execute the GetGeneratedCodeJob service method.
        /// 
        /// The response from the GetGeneratedCodeJob service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for GetGeneratedCodeJob Operation
        public virtual GetGeneratedCodeJobResponse GetGeneratedCodeJob(GetGeneratedCodeJobRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetGeneratedCodeJobRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetGeneratedCodeJobResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Gets details about a job that is generating code for a snapshot.
        /// 
        /// Container for the necessary parameters to execute the GetGeneratedCodeJob service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetGeneratedCodeJob service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for GetGeneratedCodeJob Operation
        public virtual Task GetGeneratedCodeJobAsync(GetGeneratedCodeJobRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetGeneratedCodeJobRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetGeneratedCodeJobResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetPlayerConnectionStatus
        /// 
        /// Gets the status of a player's connection to the game runtime.
        /// 
        ///  
        /// 
        ///  It's possible for a single player to have multiple connections to the game runtime.
        /// If a player is not connected, this operation returns an empty list. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the GetPlayerConnectionStatus service method.
        /// 
        /// The response from the GetPlayerConnectionStatus service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for GetPlayerConnectionStatus Operation
        public virtual GetPlayerConnectionStatusResponse GetPlayerConnectionStatus(GetPlayerConnectionStatusRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetPlayerConnectionStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetPlayerConnectionStatusResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Gets the status of a player's connection to the game runtime.
        /// 
        ///  
        /// 
        ///  It's possible for a single player to have multiple connections to the game runtime.
        /// If a player is not connected, this operation returns an empty list. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the GetPlayerConnectionStatus service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetPlayerConnectionStatus service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for GetPlayerConnectionStatus Operation
        public virtual Task GetPlayerConnectionStatusAsync(GetPlayerConnectionStatusRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetPlayerConnectionStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetPlayerConnectionStatusResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetSnapshot
        /// 
        /// Gets a copy of the game configuration in a snapshot.
        /// 
        /// Container for the necessary parameters to execute the GetSnapshot service method.
        /// 
        /// The response from the GetSnapshot service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for GetSnapshot Operation
        public virtual GetSnapshotResponse GetSnapshot(GetSnapshotRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetSnapshotRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetSnapshotResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Gets a copy of the game configuration in a snapshot.
        /// 
        /// Container for the necessary parameters to execute the GetSnapshot service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetSnapshot service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for GetSnapshot Operation
        public virtual Task GetSnapshotAsync(GetSnapshotRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetSnapshotRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetSnapshotResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetStage
        /// 
        /// Gets information about a stage.
        /// 
        /// Container for the necessary parameters to execute the GetStage service method.
        /// 
        /// The response from the GetStage service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for GetStage Operation
        public virtual GetStageResponse GetStage(GetStageRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetStageRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetStageResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Gets information about a stage.
        /// 
        /// Container for the necessary parameters to execute the GetStage service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetStage service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for GetStage Operation
        public virtual Task GetStageAsync(GetStageRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetStageRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetStageResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetStageDeployment
        /// 
        /// Gets information about a stage deployment.
        /// 
        /// Container for the necessary parameters to execute the GetStageDeployment service method.
        /// 
        /// The response from the GetStageDeployment service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for GetStageDeployment Operation
        public virtual GetStageDeploymentResponse GetStageDeployment(GetStageDeploymentRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetStageDeploymentRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetStageDeploymentResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Gets information about a stage deployment.
        /// 
        /// Container for the necessary parameters to execute the GetStageDeployment service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetStageDeployment service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for GetStageDeployment Operation
        public virtual Task GetStageDeploymentAsync(GetStageDeploymentRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetStageDeploymentRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetStageDeploymentResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ImportGameConfiguration
        /// 
        /// Imports a game configuration.
        /// 
        ///  
        /// 
        ///  This operation replaces the current configuration of the game with the provided input.
        /// This is not a reversible operation. If you want to preserve the previous configuration,
        /// use CreateSnapshot to make a new snapshot before importing. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the ImportGameConfiguration service method.
        /// 
        /// The response from the ImportGameConfiguration service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request would result in exceeding service quota.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for ImportGameConfiguration Operation
        public virtual ImportGameConfigurationResponse ImportGameConfiguration(ImportGameConfigurationRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ImportGameConfigurationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ImportGameConfigurationResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Imports a game configuration.
        /// 
        ///  
        /// 
        ///  This operation replaces the current configuration of the game with the provided input.
        /// This is not a reversible operation. If you want to preserve the previous configuration,
        /// use CreateSnapshot to make a new snapshot before importing. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the ImportGameConfiguration service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ImportGameConfiguration service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request would result in exceeding service quota.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for ImportGameConfiguration Operation
        public virtual Task ImportGameConfigurationAsync(ImportGameConfigurationRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ImportGameConfigurationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ImportGameConfigurationResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListExtensions
        /// 
        /// Gets a paginated list of available extensions.
        /// 
        ///  
        /// 
        ///  Extensions provide features that games can use from scripts. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListExtensions service method.
        /// 
        /// The response from the ListExtensions service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for ListExtensions Operation
        public virtual ListExtensionsResponse ListExtensions(ListExtensionsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListExtensionsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListExtensionsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Gets a paginated list of available extensions.
        /// 
        ///  
        /// 
        ///  Extensions provide features that games can use from scripts. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListExtensions service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListExtensions service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for ListExtensions Operation
        public virtual Task ListExtensionsAsync(ListExtensionsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListExtensionsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListExtensionsResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListExtensionVersions
        /// 
        /// Gets a paginated list of available versions for the extension.
        /// 
        ///  
        /// 
        ///  Each time an API change is made to an extension, the version is incremented. The
        /// list retrieved by this operation shows the versions that are currently available.
        /// 
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListExtensionVersions service method.
        /// 
        /// The response from the ListExtensionVersions service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for ListExtensionVersions Operation
        public virtual ListExtensionVersionsResponse ListExtensionVersions(ListExtensionVersionsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListExtensionVersionsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListExtensionVersionsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Gets a paginated list of available versions for the extension.
        /// 
        ///  
        /// 
        ///  Each time an API change is made to an extension, the version is incremented. The
        /// list retrieved by this operation shows the versions that are currently available.
        /// 
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListExtensionVersions service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListExtensionVersions service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for ListExtensionVersions Operation
        public virtual Task ListExtensionVersionsAsync(ListExtensionVersionsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListExtensionVersionsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListExtensionVersionsResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListGames
        /// 
        /// Gets a paginated list of games.
        /// 
        /// Container for the necessary parameters to execute the ListGames service method.
        /// 
        /// The response from the ListGames service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for ListGames Operation
        public virtual ListGamesResponse ListGames(ListGamesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListGamesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListGamesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Gets a paginated list of games.
        /// 
        /// Container for the necessary parameters to execute the ListGames service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListGames service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for ListGames Operation
        public virtual Task ListGamesAsync(ListGamesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListGamesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListGamesResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListGeneratedCodeJobs
        /// 
        /// Gets a paginated list of code generation jobs for a snapshot.
        /// 
        /// Container for the necessary parameters to execute the ListGeneratedCodeJobs service method.
        /// 
        /// The response from the ListGeneratedCodeJobs service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for ListGeneratedCodeJobs Operation
        public virtual ListGeneratedCodeJobsResponse ListGeneratedCodeJobs(ListGeneratedCodeJobsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListGeneratedCodeJobsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListGeneratedCodeJobsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Gets a paginated list of code generation jobs for a snapshot.
        /// 
        /// Container for the necessary parameters to execute the ListGeneratedCodeJobs service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListGeneratedCodeJobs service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for ListGeneratedCodeJobs Operation
        public virtual Task ListGeneratedCodeJobsAsync(ListGeneratedCodeJobsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListGeneratedCodeJobsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListGeneratedCodeJobsResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListSnapshots
        /// 
        /// Gets a paginated list of snapshot summaries from the game.
        /// 
        /// Container for the necessary parameters to execute the ListSnapshots service method.
        /// 
        /// The response from the ListSnapshots service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for ListSnapshots Operation
        public virtual ListSnapshotsResponse ListSnapshots(ListSnapshotsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListSnapshotsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListSnapshotsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Gets a paginated list of snapshot summaries from the game.
        /// 
        /// Container for the necessary parameters to execute the ListSnapshots service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListSnapshots service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for ListSnapshots Operation
        public virtual Task ListSnapshotsAsync(ListSnapshotsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListSnapshotsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListSnapshotsResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListStageDeployments
        /// 
        /// Gets a paginated list of stage deployment summaries from the game.
        /// 
        /// Container for the necessary parameters to execute the ListStageDeployments service method.
        /// 
        /// The response from the ListStageDeployments service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for ListStageDeployments Operation
        public virtual ListStageDeploymentsResponse ListStageDeployments(ListStageDeploymentsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListStageDeploymentsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListStageDeploymentsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Gets a paginated list of stage deployment summaries from the game.
        /// 
        /// Container for the necessary parameters to execute the ListStageDeployments service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListStageDeployments service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for ListStageDeployments Operation
        public virtual Task ListStageDeploymentsAsync(ListStageDeploymentsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListStageDeploymentsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListStageDeploymentsResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListStages
        /// 
        /// Gets a paginated list of stage summaries from the game.
        /// 
        /// Container for the necessary parameters to execute the ListStages service method.
        /// 
        /// The response from the ListStages service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for ListStages Operation
        public virtual ListStagesResponse ListStages(ListStagesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListStagesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListStagesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Gets a paginated list of stage summaries from the game.
        /// 
        /// Container for the necessary parameters to execute the ListStages service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListStages service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for ListStages Operation
        public virtual Task ListStagesAsync(ListStagesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListStagesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListStagesResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListTagsForResource
        /// 
        /// Lists the tags associated with a GameSparks resource.
        /// 
        /// Container for the necessary parameters to execute the ListTagsForResource service method.
        /// 
        /// The response from the ListTagsForResource service method, as returned by GameSparks.
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// 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 associated with a GameSparks 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 GameSparks.
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// 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  StartGeneratedCodeJob
        /// 
        /// Starts an asynchronous process that generates client code for system-defined and
        /// custom messages. The resulting code is collected as a .zip file and uploaded to a
        /// pre-signed Amazon S3 URL.
        /// 
        /// Container for the necessary parameters to execute the StartGeneratedCodeJob service method.
        /// 
        /// The response from the StartGeneratedCodeJob service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for StartGeneratedCodeJob Operation
        public virtual StartGeneratedCodeJobResponse StartGeneratedCodeJob(StartGeneratedCodeJobRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = StartGeneratedCodeJobRequestMarshaller.Instance;
            options.ResponseUnmarshaller = StartGeneratedCodeJobResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Starts an asynchronous process that generates client code for system-defined and
        /// custom messages. The resulting code is collected as a .zip file and uploaded to a
        /// pre-signed Amazon S3 URL.
        /// 
        /// Container for the necessary parameters to execute the StartGeneratedCodeJob service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the StartGeneratedCodeJob service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for StartGeneratedCodeJob Operation
        public virtual Task StartGeneratedCodeJobAsync(StartGeneratedCodeJobRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = StartGeneratedCodeJobRequestMarshaller.Instance;
            options.ResponseUnmarshaller = StartGeneratedCodeJobResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  StartStageDeployment
        /// 
        /// Deploys a snapshot to the stage and creates a new game runtime.
        /// 
        ///  
        /// 
        ///  After you call this operation, you can check the deployment status by using GetStageDeployment.
        /// 
        /// 
        ///  
        /// 
        ///  If there are any players connected to the previous game runtime, then both runtimes
        /// persist. Existing connections to the previous runtime are maintained. When players
        /// disconnect and reconnect, they connect to the new runtime. After there are no connections
        /// to the previous game runtime, it is deleted. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the StartStageDeployment service method.
        /// 
        /// The response from the StartStageDeployment service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The resource already exists, or another operation is in progress.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for StartStageDeployment Operation
        public virtual StartStageDeploymentResponse StartStageDeployment(StartStageDeploymentRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = StartStageDeploymentRequestMarshaller.Instance;
            options.ResponseUnmarshaller = StartStageDeploymentResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deploys a snapshot to the stage and creates a new game runtime.
        /// 
        ///  
        /// 
        ///  After you call this operation, you can check the deployment status by using GetStageDeployment.
        /// 
        /// 
        ///  
        /// 
        ///  If there are any players connected to the previous game runtime, then both runtimes
        /// persist. Existing connections to the previous runtime are maintained. When players
        /// disconnect and reconnect, they connect to the new runtime. After there are no connections
        /// to the previous game runtime, it is deleted. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the StartStageDeployment service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the StartStageDeployment service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The resource already exists, or another operation is in progress.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for StartStageDeployment Operation
        public virtual Task StartStageDeploymentAsync(StartStageDeploymentRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = StartStageDeploymentRequestMarshaller.Instance;
            options.ResponseUnmarshaller = StartStageDeploymentResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  TagResource
        /// 
        /// Adds tags to a GameSparks resource.
        /// 
        /// Container for the necessary parameters to execute the TagResource service method.
        /// 
        /// The response from the TagResource service method, as returned by GameSparks.
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// 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);
        }
        /// 
        /// Adds tags to a GameSparks resource.
        /// 
        /// 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 GameSparks.
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// 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 tags from a GameSparks resource.
        /// 
        /// Container for the necessary parameters to execute the UntagResource service method.
        /// 
        /// The response from the UntagResource service method, as returned by GameSparks.
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// 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 tags from a GameSparks 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 GameSparks.
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// 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  UpdateGame
        /// 
        /// Updates details of the game.
        /// 
        /// Container for the necessary parameters to execute the UpdateGame service method.
        /// 
        /// The response from the UpdateGame service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for UpdateGame Operation
        public virtual UpdateGameResponse UpdateGame(UpdateGameRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateGameRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateGameResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Updates details of the game.
        /// 
        /// Container for the necessary parameters to execute the UpdateGame service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the UpdateGame service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for UpdateGame Operation
        public virtual Task UpdateGameAsync(UpdateGameRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateGameRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateGameResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  UpdateGameConfiguration
        /// 
        /// Updates one or more sections of the game configuration.
        /// 
        /// Container for the necessary parameters to execute the UpdateGameConfiguration service method.
        /// 
        /// The response from the UpdateGameConfiguration service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request would result in exceeding service quota.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for UpdateGameConfiguration Operation
        public virtual UpdateGameConfigurationResponse UpdateGameConfiguration(UpdateGameConfigurationRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateGameConfigurationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateGameConfigurationResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Updates one or more sections of the game configuration.
        /// 
        /// Container for the necessary parameters to execute the UpdateGameConfiguration service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the UpdateGameConfiguration service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request would result in exceeding service quota.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for UpdateGameConfiguration Operation
        public virtual Task UpdateGameConfigurationAsync(UpdateGameConfigurationRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateGameConfigurationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateGameConfigurationResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  UpdateSnapshot
        /// 
        /// Updates the metadata of a GameSparks snapshot.
        /// 
        /// Container for the necessary parameters to execute the UpdateSnapshot service method.
        /// 
        /// The response from the UpdateSnapshot service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for UpdateSnapshot Operation
        public virtual UpdateSnapshotResponse UpdateSnapshot(UpdateSnapshotRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateSnapshotRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateSnapshotResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Updates the metadata of a GameSparks snapshot.
        /// 
        /// Container for the necessary parameters to execute the UpdateSnapshot service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the UpdateSnapshot service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for UpdateSnapshot Operation
        public virtual Task UpdateSnapshotAsync(UpdateSnapshotRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateSnapshotRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateSnapshotResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  UpdateStage
        /// 
        /// Updates the metadata of a stage.
        /// 
        /// Container for the necessary parameters to execute the UpdateStage service method.
        /// 
        /// The response from the UpdateStage service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for UpdateStage Operation
        public virtual UpdateStageResponse UpdateStage(UpdateStageRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateStageRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateStageResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Updates the metadata of a stage.
        /// 
        /// Container for the necessary parameters to execute the UpdateStage service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the UpdateStage service method, as returned by GameSparks.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The service encountered an internal error.
        /// 
        /// 
        /// The resource specified in the request does not exist.
        /// 
        /// 
        /// The request throughput limit was exceeded.
        /// 
        /// 
        /// One of the parameters in the request is invalid.
        /// 
        /// REST API Reference for UpdateStage Operation
        public virtual Task UpdateStageAsync(UpdateStageRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateStageRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateStageResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
    }
}