/*
 * 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 lookoutvision-2020-11-20.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.LookoutforVision.Model;
using Amazon.LookoutforVision.Model.Internal.MarshallTransformations;
using Amazon.LookoutforVision.Internal;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
using Amazon.Runtime.Internal.Auth;
using Amazon.Runtime.Internal.Transform;
namespace Amazon.LookoutforVision
{
    /// 
    /// Implementation for accessing LookoutforVision
    ///
    /// This is the Amazon Lookout for Vision API Reference. It provides descriptions of actions,
    /// data types, common parameters, and common errors.
    /// 
    ///  
    /// 
    /// Amazon Lookout for Vision enables you to find visual defects in industrial products,
    /// accurately and at scale. It uses computer vision to identify missing components in
    /// an industrial product, damage to vehicles or structures, irregularities in production
    /// lines, and even minuscule defects in silicon wafers — or any other physical item where
    /// quality is important such as a missing capacitor on printed circuit boards.
    /// 
    /// 
    public partial class AmazonLookoutforVisionClient : AmazonServiceClient, IAmazonLookoutforVision
    {
        private static IServiceMetadata serviceMetadata = new AmazonLookoutforVisionMetadata();
        private ILookoutforVisionPaginatorFactory _paginators;
        /// 
        /// Paginators for the service
        /// 
        public ILookoutforVisionPaginatorFactory Paginators 
        {
            get 
            {
                if (this._paginators == null) 
                {
                    this._paginators = new LookoutforVisionPaginatorFactory(this);
                }
                return this._paginators;
            }
        }
        #region Constructors
        /// 
        /// Constructs AmazonLookoutforVisionClient 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 AmazonLookoutforVisionClient()
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonLookoutforVisionConfig()) { }
        /// 
        /// Constructs AmazonLookoutforVisionClient 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 AmazonLookoutforVisionClient(RegionEndpoint region)
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonLookoutforVisionConfig{RegionEndpoint = region}) { }
        /// 
        /// Constructs AmazonLookoutforVisionClient 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 AmazonLookoutforVisionClient Configuration Object
        public AmazonLookoutforVisionClient(AmazonLookoutforVisionConfig config)
            : base(FallbackCredentialsFactory.GetCredentials(config), config){}
        /// 
        /// Constructs AmazonLookoutforVisionClient with AWS Credentials
        /// 
        /// AWS Credentials
        public AmazonLookoutforVisionClient(AWSCredentials credentials)
            : this(credentials, new AmazonLookoutforVisionConfig())
        {
        }
        /// 
        /// Constructs AmazonLookoutforVisionClient with AWS Credentials
        /// 
        /// AWS Credentials
        /// The region to connect.
        public AmazonLookoutforVisionClient(AWSCredentials credentials, RegionEndpoint region)
            : this(credentials, new AmazonLookoutforVisionConfig{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonLookoutforVisionClient with AWS Credentials and an
        /// AmazonLookoutforVisionClient Configuration object.
        /// 
        /// AWS Credentials
        /// The AmazonLookoutforVisionClient Configuration Object
        public AmazonLookoutforVisionClient(AWSCredentials credentials, AmazonLookoutforVisionConfig clientConfig)
            : base(credentials, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonLookoutforVisionClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        public AmazonLookoutforVisionClient(string awsAccessKeyId, string awsSecretAccessKey)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonLookoutforVisionConfig())
        {
        }
        /// 
        /// Constructs AmazonLookoutforVisionClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The region to connect.
        public AmazonLookoutforVisionClient(string awsAccessKeyId, string awsSecretAccessKey, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonLookoutforVisionConfig() {RegionEndpoint=region})
        {
        }
        /// 
        /// Constructs AmazonLookoutforVisionClient with AWS Access Key ID, AWS Secret Key and an
        /// AmazonLookoutforVisionClient Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The AmazonLookoutforVisionClient Configuration Object
        public AmazonLookoutforVisionClient(string awsAccessKeyId, string awsSecretAccessKey, AmazonLookoutforVisionConfig clientConfig)
            : base(awsAccessKeyId, awsSecretAccessKey, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonLookoutforVisionClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        public AmazonLookoutforVisionClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonLookoutforVisionConfig())
        {
        }
        /// 
        /// Constructs AmazonLookoutforVisionClient 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 AmazonLookoutforVisionClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonLookoutforVisionConfig{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonLookoutforVisionClient with AWS Access Key ID, AWS Secret Key and an
        /// AmazonLookoutforVisionClient Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        /// The AmazonLookoutforVisionClient Configuration Object
        public AmazonLookoutforVisionClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, AmazonLookoutforVisionConfig 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 AmazonLookoutforVisionEndpointResolver());
        }    
        /// 
        /// 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  CreateDataset
        /// 
        /// Creates a new dataset in an Amazon Lookout for Vision project. CreateDataset
        /// can create a training or a test dataset from a valid dataset source (DatasetSource).
        /// 
        ///  
        /// 
        /// If you want a single dataset project, specify train for the value of
        /// DatasetType.
        /// 
        ///  
        /// 
        /// To have a project with separate training and test datasets, call CreateDataset
        /// twice. On the first call, specify train for the value of DatasetType.
        /// On the second call, specify test for the value of DatasetType.
        /// 
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:CreateDataset
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateDataset service method.
        /// 
        /// The response from the CreateDataset service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// A service quota was exceeded the allowed limit. For more information, see Limits in
        /// Amazon Lookout for Vision in the Amazon Lookout for Vision Developer Guide.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for CreateDataset Operation
        public virtual CreateDatasetResponse CreateDataset(CreateDatasetRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateDatasetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateDatasetResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Creates a new dataset in an Amazon Lookout for Vision project. CreateDataset
        /// can create a training or a test dataset from a valid dataset source (DatasetSource).
        /// 
        ///  
        /// 
        /// If you want a single dataset project, specify train for the value of
        /// DatasetType.
        /// 
        ///  
        /// 
        /// To have a project with separate training and test datasets, call CreateDataset
        /// twice. On the first call, specify train for the value of DatasetType.
        /// On the second call, specify test for the value of DatasetType.
        /// 
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:CreateDataset
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateDataset service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the CreateDataset service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// A service quota was exceeded the allowed limit. For more information, see Limits in
        /// Amazon Lookout for Vision in the Amazon Lookout for Vision Developer Guide.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for CreateDataset Operation
        public virtual Task CreateDatasetAsync(CreateDatasetRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateDatasetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateDatasetResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  CreateModel
        /// 
        /// Creates a new version of a model within an an Amazon Lookout for Vision project. CreateModel
        /// is an asynchronous operation in which Amazon Lookout for Vision trains, tests, and
        /// evaluates a new version of a model. 
        /// 
        ///  
        /// 
        /// To get the current status, check the Status field returned in the response
        /// from DescribeModel.
        /// 
        ///  
        /// 
        /// If the project has a single dataset, Amazon Lookout for Vision internally splits the
        /// dataset to create a training and a test dataset. If the project has a training and
        /// a test dataset, Lookout for Vision uses the respective datasets to train and test
        /// the model. 
        /// 
        ///  
        /// 
        /// After training completes, the evaluation metrics are stored at the location specified
        /// in OutputConfig. 
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:CreateModel
        /// operation. If you want to tag your model, you also require permission to the lookoutvision:TagResource
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateModel service method.
        /// 
        /// The response from the CreateModel service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// A service quota was exceeded the allowed limit. For more information, see Limits in
        /// Amazon Lookout for Vision in the Amazon Lookout for Vision Developer Guide.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for CreateModel Operation
        public virtual CreateModelResponse CreateModel(CreateModelRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateModelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateModelResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Creates a new version of a model within an an Amazon Lookout for Vision project. CreateModel
        /// is an asynchronous operation in which Amazon Lookout for Vision trains, tests, and
        /// evaluates a new version of a model. 
        /// 
        ///  
        /// 
        /// To get the current status, check the Status field returned in the response
        /// from DescribeModel.
        /// 
        ///  
        /// 
        /// If the project has a single dataset, Amazon Lookout for Vision internally splits the
        /// dataset to create a training and a test dataset. If the project has a training and
        /// a test dataset, Lookout for Vision uses the respective datasets to train and test
        /// the model. 
        /// 
        ///  
        /// 
        /// After training completes, the evaluation metrics are stored at the location specified
        /// in OutputConfig. 
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:CreateModel
        /// operation. If you want to tag your model, you also require permission to the lookoutvision:TagResource
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateModel service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the CreateModel service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// A service quota was exceeded the allowed limit. For more information, see Limits in
        /// Amazon Lookout for Vision in the Amazon Lookout for Vision Developer Guide.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for CreateModel Operation
        public virtual Task CreateModelAsync(CreateModelRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateModelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateModelResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  CreateProject
        /// 
        /// Creates an empty Amazon Lookout for Vision project. After you create the project,
        /// add a dataset by calling CreateDataset.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:CreateProject
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateProject service method.
        /// 
        /// The response from the CreateProject service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// A service quota was exceeded the allowed limit. For more information, see Limits in
        /// Amazon Lookout for Vision in the Amazon Lookout for Vision Developer Guide.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for CreateProject Operation
        public virtual CreateProjectResponse CreateProject(CreateProjectRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateProjectRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateProjectResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Creates an empty Amazon Lookout for Vision project. After you create the project,
        /// add a dataset by calling CreateDataset.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:CreateProject
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateProject service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the CreateProject service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// A service quota was exceeded the allowed limit. For more information, see Limits in
        /// Amazon Lookout for Vision in the Amazon Lookout for Vision Developer Guide.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for CreateProject Operation
        public virtual Task CreateProjectAsync(CreateProjectRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateProjectRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateProjectResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteDataset
        /// 
        /// Deletes an existing Amazon Lookout for Vision dataset. 
        /// 
        ///  
        /// 
        /// If your the project has a single dataset, you must create a new dataset before you
        /// can create a model.
        /// 
        ///  
        /// 
        /// If you project has a training dataset and a test dataset consider the following. 
        /// 
        ///   -  
        /// 
        /// If you delete the test dataset, your project reverts to a single dataset project.
        /// If you then train the model, Amazon Lookout for Vision internally splits the remaining
        /// dataset into a training and test dataset.
        /// 
        ///  
  -  
        /// 
        /// If you delete the training dataset, you must create a training dataset before you
        /// can create a model.
        /// 
        ///  
  
 
        /// 
        /// This operation requires permissions to perform the lookoutvision:DeleteDataset
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteDataset service method.
        /// 
        /// The response from the DeleteDataset service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for DeleteDataset Operation
        public virtual DeleteDatasetResponse DeleteDataset(DeleteDatasetRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteDatasetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteDatasetResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes an existing Amazon Lookout for Vision dataset. 
        /// 
        ///  
        /// 
        /// If your the project has a single dataset, you must create a new dataset before you
        /// can create a model.
        /// 
        ///  
        /// 
        /// If you project has a training dataset and a test dataset consider the following. 
        /// 
        ///   -  
        /// 
        /// If you delete the test dataset, your project reverts to a single dataset project.
        /// If you then train the model, Amazon Lookout for Vision internally splits the remaining
        /// dataset into a training and test dataset.
        /// 
        ///  
  -  
        /// 
        /// If you delete the training dataset, you must create a training dataset before you
        /// can create a model.
        /// 
        ///  
  
 
        /// 
        /// This operation requires permissions to perform the lookoutvision:DeleteDataset
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteDataset service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteDataset service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for DeleteDataset Operation
        public virtual Task DeleteDatasetAsync(DeleteDatasetRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteDatasetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteDatasetResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteModel
        /// 
        /// Deletes an Amazon Lookout for Vision model. You can't delete a running model. To stop
        /// a running model, use the StopModel operation.
        /// 
        ///  
        /// 
        /// It might take a few seconds to delete a model. To determine if a model has been deleted,
        /// call ListModels and check if the version of the model (ModelVersion)
        /// is in the Models array. 
        /// 
        ///   
        /// 
        /// This operation requires permissions to perform the lookoutvision:DeleteModel
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteModel service method.
        /// 
        /// The response from the DeleteModel service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for DeleteModel Operation
        public virtual DeleteModelResponse DeleteModel(DeleteModelRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteModelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteModelResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes an Amazon Lookout for Vision model. You can't delete a running model. To stop
        /// a running model, use the StopModel operation.
        /// 
        ///  
        /// 
        /// It might take a few seconds to delete a model. To determine if a model has been deleted,
        /// call ListModels and check if the version of the model (ModelVersion)
        /// is in the Models array. 
        /// 
        ///   
        /// 
        /// This operation requires permissions to perform the lookoutvision:DeleteModel
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteModel service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteModel service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for DeleteModel Operation
        public virtual Task DeleteModelAsync(DeleteModelRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteModelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteModelResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteProject
        /// 
        /// Deletes an Amazon Lookout for Vision project.
        /// 
        ///  
        /// 
        /// To delete a project, you must first delete each version of the model associated with
        /// the project. To delete a model use the DeleteModel operation.
        /// 
        ///  
        /// 
        /// You also have to delete the dataset(s) associated with the model. For more information,
        /// see DeleteDataset. The images referenced by the training and test datasets
        /// aren't deleted. 
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:DeleteProject
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteProject service method.
        /// 
        /// The response from the DeleteProject service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for DeleteProject Operation
        public virtual DeleteProjectResponse DeleteProject(DeleteProjectRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteProjectRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteProjectResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes an Amazon Lookout for Vision project.
        /// 
        ///  
        /// 
        /// To delete a project, you must first delete each version of the model associated with
        /// the project. To delete a model use the DeleteModel operation.
        /// 
        ///  
        /// 
        /// You also have to delete the dataset(s) associated with the model. For more information,
        /// see DeleteDataset. The images referenced by the training and test datasets
        /// aren't deleted. 
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:DeleteProject
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteProject service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteProject service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for DeleteProject Operation
        public virtual Task DeleteProjectAsync(DeleteProjectRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteProjectRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteProjectResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeDataset
        /// 
        /// Describe an Amazon Lookout for Vision dataset.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:DescribeDataset
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeDataset service method.
        /// 
        /// The response from the DescribeDataset service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for DescribeDataset Operation
        public virtual DescribeDatasetResponse DescribeDataset(DescribeDatasetRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeDatasetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeDatasetResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Describe an Amazon Lookout for Vision dataset.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:DescribeDataset
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeDataset service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeDataset service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for DescribeDataset Operation
        public virtual Task DescribeDatasetAsync(DescribeDatasetRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeDatasetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeDatasetResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeModel
        /// 
        /// Describes a version of an Amazon Lookout for Vision model.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:DescribeModel
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeModel service method.
        /// 
        /// The response from the DescribeModel service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for DescribeModel Operation
        public virtual DescribeModelResponse DescribeModel(DescribeModelRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeModelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeModelResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Describes a version of an Amazon Lookout for Vision model.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:DescribeModel
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeModel service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeModel service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for DescribeModel Operation
        public virtual Task DescribeModelAsync(DescribeModelRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeModelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeModelResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeModelPackagingJob
        /// 
        /// Describes an Amazon Lookout for Vision model packaging job. 
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:DescribeModelPackagingJob
        /// operation.
        /// 
        ///  
        /// 
        /// For more information, see Using your Amazon Lookout for Vision model on an edge
        /// device in the Amazon Lookout for Vision Developer Guide. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeModelPackagingJob service method.
        /// 
        /// The response from the DescribeModelPackagingJob service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for DescribeModelPackagingJob Operation
        public virtual DescribeModelPackagingJobResponse DescribeModelPackagingJob(DescribeModelPackagingJobRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeModelPackagingJobRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeModelPackagingJobResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Describes an Amazon Lookout for Vision model packaging job. 
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:DescribeModelPackagingJob
        /// operation.
        /// 
        ///  
        /// 
        /// For more information, see Using your Amazon Lookout for Vision model on an edge
        /// device in the Amazon Lookout for Vision Developer Guide. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeModelPackagingJob service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeModelPackagingJob service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for DescribeModelPackagingJob Operation
        public virtual Task DescribeModelPackagingJobAsync(DescribeModelPackagingJobRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeModelPackagingJobRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeModelPackagingJobResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeProject
        /// 
        /// Describes an Amazon Lookout for Vision project.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:DescribeProject
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeProject service method.
        /// 
        /// The response from the DescribeProject service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for DescribeProject Operation
        public virtual DescribeProjectResponse DescribeProject(DescribeProjectRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeProjectRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeProjectResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Describes an Amazon Lookout for Vision project.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:DescribeProject
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DescribeProject service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeProject service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for DescribeProject Operation
        public virtual Task DescribeProjectAsync(DescribeProjectRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeProjectRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeProjectResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DetectAnomalies
        /// 
        /// Detects anomalies in an image that you supply. 
        /// 
        ///  
        /// 
        /// The response from DetectAnomalies includes a boolean prediction that
        /// the image contains one or more anomalies and a confidence value for the prediction.
        /// If the model is an image segmentation model, the response also includes segmentation
        /// information for each type of anomaly found in the image.
        /// 
        ///   
        /// 
        /// Before calling DetectAnomalies, you must first start your model with
        /// the StartModel operation. You are charged for the amount of time, in minutes,
        /// that a model runs and for the number of anomaly detection units that your model uses.
        /// If you are not using a model, use the StopModel operation to stop your model.
        /// 
        /// 
        ///   
        /// 
        /// For more information, see Detecting anomalies in an image in the Amazon Lookout
        /// for Vision developer guide.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:DetectAnomalies
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DetectAnomalies service method.
        /// 
        /// The response from the DetectAnomalies service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for DetectAnomalies Operation
        public virtual DetectAnomaliesResponse DetectAnomalies(DetectAnomaliesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DetectAnomaliesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DetectAnomaliesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Detects anomalies in an image that you supply. 
        /// 
        ///  
        /// 
        /// The response from DetectAnomalies includes a boolean prediction that
        /// the image contains one or more anomalies and a confidence value for the prediction.
        /// If the model is an image segmentation model, the response also includes segmentation
        /// information for each type of anomaly found in the image.
        /// 
        ///   
        /// 
        /// Before calling DetectAnomalies, you must first start your model with
        /// the StartModel operation. You are charged for the amount of time, in minutes,
        /// that a model runs and for the number of anomaly detection units that your model uses.
        /// If you are not using a model, use the StopModel operation to stop your model.
        /// 
        /// 
        ///   
        /// 
        /// For more information, see Detecting anomalies in an image in the Amazon Lookout
        /// for Vision developer guide.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:DetectAnomalies
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DetectAnomalies service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DetectAnomalies service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for DetectAnomalies Operation
        public virtual Task DetectAnomaliesAsync(DetectAnomaliesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DetectAnomaliesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DetectAnomaliesResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListDatasetEntries
        /// 
        /// Lists the JSON Lines within a dataset. An Amazon Lookout for Vision JSON Line contains
        /// the anomaly information for a single image, including the image location and the assigned
        /// label.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:ListDatasetEntries
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListDatasetEntries service method.
        /// 
        /// The response from the ListDatasetEntries service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for ListDatasetEntries Operation
        public virtual ListDatasetEntriesResponse ListDatasetEntries(ListDatasetEntriesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListDatasetEntriesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListDatasetEntriesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Lists the JSON Lines within a dataset. An Amazon Lookout for Vision JSON Line contains
        /// the anomaly information for a single image, including the image location and the assigned
        /// label.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:ListDatasetEntries
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListDatasetEntries service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListDatasetEntries service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for ListDatasetEntries Operation
        public virtual Task ListDatasetEntriesAsync(ListDatasetEntriesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListDatasetEntriesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListDatasetEntriesResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListModelPackagingJobs
        /// 
        /// Lists the model packaging jobs created for an Amazon Lookout for Vision project.
        /// 
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:ListModelPackagingJobs
        /// operation. 
        /// 
        ///  
        /// 
        /// For more information, see Using your Amazon Lookout for Vision model on an edge
        /// device in the Amazon Lookout for Vision Developer Guide. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListModelPackagingJobs service method.
        /// 
        /// The response from the ListModelPackagingJobs service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for ListModelPackagingJobs Operation
        public virtual ListModelPackagingJobsResponse ListModelPackagingJobs(ListModelPackagingJobsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListModelPackagingJobsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListModelPackagingJobsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Lists the model packaging jobs created for an Amazon Lookout for Vision project.
        /// 
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:ListModelPackagingJobs
        /// operation. 
        /// 
        ///  
        /// 
        /// For more information, see Using your Amazon Lookout for Vision model on an edge
        /// device in the Amazon Lookout for Vision Developer Guide. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListModelPackagingJobs service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListModelPackagingJobs service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for ListModelPackagingJobs Operation
        public virtual Task ListModelPackagingJobsAsync(ListModelPackagingJobsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListModelPackagingJobsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListModelPackagingJobsResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListModels
        /// 
        /// Lists the versions of a model in an Amazon Lookout for Vision project.
        /// 
        ///  
        /// 
        /// The ListModels operation is eventually consistent. Recent calls to CreateModel
        /// might take a while to appear in the response from ListProjects.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:ListModels
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListModels service method.
        /// 
        /// The response from the ListModels service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for ListModels Operation
        public virtual ListModelsResponse ListModels(ListModelsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListModelsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListModelsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Lists the versions of a model in an Amazon Lookout for Vision project.
        /// 
        ///  
        /// 
        /// The ListModels operation is eventually consistent. Recent calls to CreateModel
        /// might take a while to appear in the response from ListProjects.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:ListModels
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListModels service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListModels service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for ListModels Operation
        public virtual Task ListModelsAsync(ListModelsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListModelsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListModelsResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListProjects
        /// 
        /// Lists the Amazon Lookout for Vision projects in your AWS account that are in the AWS
        /// Region in which you call ListProjects.
        /// 
        ///  
        /// 
        /// The ListProjects operation is eventually consistent. Recent calls to
        /// CreateProject and DeleteProject might take a while to appear
        /// in the response from ListProjects.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:ListProjects
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListProjects service method.
        /// 
        /// The response from the ListProjects service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for ListProjects Operation
        public virtual ListProjectsResponse ListProjects(ListProjectsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListProjectsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListProjectsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Lists the Amazon Lookout for Vision projects in your AWS account that are in the AWS
        /// Region in which you call ListProjects.
        /// 
        ///  
        /// 
        /// The ListProjects operation is eventually consistent. Recent calls to
        /// CreateProject and DeleteProject might take a while to appear
        /// in the response from ListProjects.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:ListProjects
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListProjects service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListProjects service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for ListProjects Operation
        public virtual Task ListProjectsAsync(ListProjectsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListProjectsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListProjectsResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListTagsForResource
        /// 
        /// Returns a list of tags attached to the specified Amazon Lookout for Vision model.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:ListTagsForResource
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListTagsForResource service method.
        /// 
        /// The response from the ListTagsForResource service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token 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);
        }
        /// 
        /// Returns a list of tags attached to the specified Amazon Lookout for Vision model.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:ListTagsForResource
        /// operation.
        /// 
        /// 
        /// 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 LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token 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  StartModel
        /// 
        /// Starts the running of the version of an Amazon Lookout for Vision model. Starting
        /// a model takes a while to complete. To check the current state of the model, use DescribeModel.
        /// 
        ///  
        /// 
        /// A model is ready to use when its status is HOSTED.
        /// 
        ///  
        /// 
        /// Once the model is running, you can detect custom labels in new images by calling DetectAnomalies.
        /// 
        ///   
        /// 
        /// You are charged for the amount of time that the model is running. To stop a running
        /// model, call StopModel.
        /// 
        ///   
        /// 
        /// This operation requires permissions to perform the lookoutvision:StartModel
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the StartModel service method.
        /// 
        /// The response from the StartModel service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// A service quota was exceeded the allowed limit. For more information, see Limits in
        /// Amazon Lookout for Vision in the Amazon Lookout for Vision Developer Guide.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for StartModel Operation
        public virtual StartModelResponse StartModel(StartModelRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = StartModelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = StartModelResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Starts the running of the version of an Amazon Lookout for Vision model. Starting
        /// a model takes a while to complete. To check the current state of the model, use DescribeModel.
        /// 
        ///  
        /// 
        /// A model is ready to use when its status is HOSTED.
        /// 
        ///  
        /// 
        /// Once the model is running, you can detect custom labels in new images by calling DetectAnomalies.
        /// 
        ///   
        /// 
        /// You are charged for the amount of time that the model is running. To stop a running
        /// model, call StopModel.
        /// 
        ///   
        /// 
        /// This operation requires permissions to perform the lookoutvision:StartModel
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the StartModel service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the StartModel service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// A service quota was exceeded the allowed limit. For more information, see Limits in
        /// Amazon Lookout for Vision in the Amazon Lookout for Vision Developer Guide.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for StartModel Operation
        public virtual Task StartModelAsync(StartModelRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = StartModelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = StartModelResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  StartModelPackagingJob
        /// 
        /// Starts an Amazon Lookout for Vision model packaging job. A model packaging job creates
        /// an AWS IoT Greengrass component for a Lookout for Vision model. You can use the component
        /// to deploy your model to an edge device managed by Greengrass. 
        /// 
        ///  
        /// 
        /// Use the DescribeModelPackagingJob API to determine the current status of the
        /// job. The model packaging job is complete if the value of Status is SUCCEEDED.
        /// 
        ///  
        /// 
        /// To deploy the component to the target device, use the component name and component
        /// version with the AWS IoT Greengrass CreateDeployment
        /// API.
        /// 
        ///  
        /// 
        /// This operation requires the following permissions:
        /// 
        ///   -  
        /// 
        ///  
lookoutvision:StartModelPackagingJob 
        /// 
        ///    -  
        /// 
        ///  
s3:PutObject 
        /// 
        ///    -  
        /// 
        ///  
s3:GetBucketLocation 
        /// 
        ///    -  
        /// 
        ///  
kms:GenerateDataKey 
        /// 
        ///    -  
        /// 
        ///  
greengrass:CreateComponentVersion 
        /// 
        ///    -  
        /// 
        ///  
greengrass:DescribeComponent 
        /// 
        ///    -  
        /// 
        /// (Optional) 
greengrass:TagResource. Only required if you want to tag the
        /// component.
        /// 
        ///    
 
        /// 
        /// For more information, see Using your Amazon Lookout for Vision model on an edge
        /// device in the Amazon Lookout for Vision Developer Guide. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the StartModelPackagingJob service method.
        /// 
        /// The response from the StartModelPackagingJob service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// A service quota was exceeded the allowed limit. For more information, see Limits in
        /// Amazon Lookout for Vision in the Amazon Lookout for Vision Developer Guide.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for StartModelPackagingJob Operation
        public virtual StartModelPackagingJobResponse StartModelPackagingJob(StartModelPackagingJobRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = StartModelPackagingJobRequestMarshaller.Instance;
            options.ResponseUnmarshaller = StartModelPackagingJobResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Starts an Amazon Lookout for Vision model packaging job. A model packaging job creates
        /// an AWS IoT Greengrass component for a Lookout for Vision model. You can use the component
        /// to deploy your model to an edge device managed by Greengrass. 
        /// 
        ///  
        /// 
        /// Use the DescribeModelPackagingJob API to determine the current status of the
        /// job. The model packaging job is complete if the value of Status is SUCCEEDED.
        /// 
        ///  
        /// 
        /// To deploy the component to the target device, use the component name and component
        /// version with the AWS IoT Greengrass CreateDeployment
        /// API.
        /// 
        ///  
        /// 
        /// This operation requires the following permissions:
        /// 
        ///   -  
        /// 
        ///  
lookoutvision:StartModelPackagingJob 
        /// 
        ///    -  
        /// 
        ///  
s3:PutObject 
        /// 
        ///    -  
        /// 
        ///  
s3:GetBucketLocation 
        /// 
        ///    -  
        /// 
        ///  
kms:GenerateDataKey 
        /// 
        ///    -  
        /// 
        ///  
greengrass:CreateComponentVersion 
        /// 
        ///    -  
        /// 
        ///  
greengrass:DescribeComponent 
        /// 
        ///    -  
        /// 
        /// (Optional) 
greengrass:TagResource. Only required if you want to tag the
        /// component.
        /// 
        ///    
 
        /// 
        /// For more information, see Using your Amazon Lookout for Vision model on an edge
        /// device in the Amazon Lookout for Vision Developer Guide. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the StartModelPackagingJob service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the StartModelPackagingJob service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// A service quota was exceeded the allowed limit. For more information, see Limits in
        /// Amazon Lookout for Vision in the Amazon Lookout for Vision Developer Guide.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for StartModelPackagingJob Operation
        public virtual Task StartModelPackagingJobAsync(StartModelPackagingJobRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = StartModelPackagingJobRequestMarshaller.Instance;
            options.ResponseUnmarshaller = StartModelPackagingJobResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  StopModel
        /// 
        /// Stops the hosting of a running model. The operation might take a while to complete.
        /// To check the current status, call DescribeModel. 
        /// 
        ///  
        /// 
        /// After the model hosting stops, the Status of the model is TRAINED.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:StopModel
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the StopModel service method.
        /// 
        /// The response from the StopModel service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for StopModel Operation
        public virtual StopModelResponse StopModel(StopModelRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = StopModelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = StopModelResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Stops the hosting of a running model. The operation might take a while to complete.
        /// To check the current status, call DescribeModel. 
        /// 
        ///  
        /// 
        /// After the model hosting stops, the Status of the model is TRAINED.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:StopModel
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the StopModel service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the StopModel service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for StopModel Operation
        public virtual Task StopModelAsync(StopModelRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = StopModelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = StopModelResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  TagResource
        /// 
        /// Adds one or more key-value tags to an Amazon Lookout for Vision model. For more information,
        /// see Tagging a model in the Amazon Lookout for Vision Developer Guide.
        /// 
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:TagResource
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the TagResource service method.
        /// 
        /// The response from the TagResource service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// A service quota was exceeded the allowed limit. For more information, see Limits in
        /// Amazon Lookout for Vision in the Amazon Lookout for Vision Developer Guide.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token 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 one or more key-value tags to an Amazon Lookout for Vision model. For more information,
        /// see Tagging a model in the Amazon Lookout for Vision Developer Guide.
        /// 
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:TagResource
        /// operation.
        /// 
        /// 
        /// 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 LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// A service quota was exceeded the allowed limit. For more information, see Limits in
        /// Amazon Lookout for Vision in the Amazon Lookout for Vision Developer Guide.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token 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 one or more tags from an Amazon Lookout for Vision model. For more information,
        /// see Tagging a model in the Amazon Lookout for Vision Developer Guide.
        /// 
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:UntagResource
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UntagResource service method.
        /// 
        /// The response from the UntagResource service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token 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 one or more tags from an Amazon Lookout for Vision model. For more information,
        /// see Tagging a model in the Amazon Lookout for Vision Developer Guide.
        /// 
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:UntagResource
        /// operation.
        /// 
        /// 
        /// 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 LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token 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  UpdateDatasetEntries
        /// 
        /// Adds or updates one or more JSON Line entries in a dataset. A JSON Line includes information
        /// about an image used for training or testing an Amazon Lookout for Vision model.
        /// 
        ///  
        /// 
        /// To update an existing JSON Line, use the source-ref field to identify
        /// the JSON Line. The JSON line that you supply replaces the existing JSON line. Any
        /// existing annotations that are not in the new JSON line are removed from the dataset.
        /// 
        /// 
        ///  
        /// 
        /// For more information, see Defining JSON lines for anomaly classification in
        /// the Amazon Lookout for Vision Developer Guide. 
        /// 
        ///   
        /// 
        /// The images you reference in the source-ref field of a JSON line, must
        /// be in the same S3 bucket as the existing images in the dataset. 
        /// 
        ///   
        /// 
        /// Updating a dataset might take a while to complete. To check the current status, call
        /// DescribeDataset and check the Status field in the response.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:UpdateDatasetEntries
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateDatasetEntries service method.
        /// 
        /// The response from the UpdateDatasetEntries service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for UpdateDatasetEntries Operation
        public virtual UpdateDatasetEntriesResponse UpdateDatasetEntries(UpdateDatasetEntriesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateDatasetEntriesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateDatasetEntriesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Adds or updates one or more JSON Line entries in a dataset. A JSON Line includes information
        /// about an image used for training or testing an Amazon Lookout for Vision model.
        /// 
        ///  
        /// 
        /// To update an existing JSON Line, use the source-ref field to identify
        /// the JSON Line. The JSON line that you supply replaces the existing JSON line. Any
        /// existing annotations that are not in the new JSON line are removed from the dataset.
        /// 
        /// 
        ///  
        /// 
        /// For more information, see Defining JSON lines for anomaly classification in
        /// the Amazon Lookout for Vision Developer Guide. 
        /// 
        ///   
        /// 
        /// The images you reference in the source-ref field of a JSON line, must
        /// be in the same S3 bucket as the existing images in the dataset. 
        /// 
        ///   
        /// 
        /// Updating a dataset might take a while to complete. To check the current status, call
        /// DescribeDataset and check the Status field in the response.
        /// 
        ///  
        /// 
        /// This operation requires permissions to perform the lookoutvision:UpdateDatasetEntries
        /// operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateDatasetEntries service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the UpdateDatasetEntries service method, as returned by LookoutforVision.
        /// 
        /// You are not authorized to perform the action.
        /// 
        /// 
        /// The update or deletion of a resource caused an inconsistent state.
        /// 
        /// 
        /// Amazon Lookout for Vision experienced a service issue. Try your call again.
        /// 
        /// 
        /// The resource could not be found.
        /// 
        /// 
        /// Amazon Lookout for Vision is temporarily unable to process the request. Try your call
        /// again.
        /// 
        /// 
        /// An input validation error occured. For example, invalid characters in a project name,
        /// or if a pagination token is invalid.
        /// 
        /// REST API Reference for UpdateDatasetEntries Operation
        public virtual Task UpdateDatasetEntriesAsync(UpdateDatasetEntriesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateDatasetEntriesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateDatasetEntriesResponseUnmarshaller.Instance;
            
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
    }
}