/*
 * 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 runtime.sagemaker-2017-05-13.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.SageMakerRuntime.Model
{
    /// 
    /// Container for the parameters to the InvokeEndpointAsync operation.
    /// After you deploy a model into production using Amazon SageMaker hosting services,
    /// your client applications use this API to get inferences from the model hosted at the
    /// specified endpoint in an asynchronous manner.
    /// 
    ///  
    /// 
    /// Inference requests sent to this API are enqueued for asynchronous processing. The
    /// processing of the inference request may or may not complete before you receive a response
    /// from this API. The response from this API will not contain the result of the inference
    /// request but contain information about where you can locate it.
    /// 
    ///  
    /// 
    /// Amazon SageMaker strips all POST headers except those supported by the
    /// API. Amazon SageMaker might add additional headers. You should not rely on the behavior
    /// of headers outside those enumerated in the request syntax.
    /// 
    ///  
    /// 
    /// Calls to InvokeEndpointAsync are authenticated by using Amazon Web Services
    /// Signature Version 4. For information, see Authenticating
    /// Requests (Amazon Web Services Signature Version 4) in the Amazon S3 API Reference.
    /// 
    /// 
    public partial class InvokeEndpointAsyncRequest : AmazonSageMakerRuntimeRequest
    {
        private string _accept;
        private string _contentType;
        private string _customAttributes;
        private string _endpointName;
        private string _inferenceId;
        private string _inputLocation;
        private int? _invocationTimeoutSeconds;
        private int? _requestTTLSeconds;
        /// 
        /// Gets and sets the property Accept. 
        /// 
        /// The desired MIME type of the inference in the response.
        /// 
        /// 
        [AWSProperty(Max=1024)]
        public string Accept
        {
            get { return this._accept; }
            set { this._accept = value; }
        }
        // Check to see if Accept property is set
        internal bool IsSetAccept()
        {
            return this._accept != null;
        }
        /// 
        /// Gets and sets the property ContentType. 
        /// 
        /// The MIME type of the input data in the request body.
        /// 
        /// 
        [AWSProperty(Max=1024)]
        public string ContentType
        {
            get { return this._contentType; }
            set { this._contentType = value; }
        }
        // Check to see if ContentType property is set
        internal bool IsSetContentType()
        {
            return this._contentType != null;
        }
        /// 
        /// Gets and sets the property CustomAttributes. 
        /// 
        /// Provides additional information about a request for an inference submitted to a model
        /// hosted at an Amazon SageMaker endpoint. The information is an opaque value that is
        /// forwarded verbatim. You could use this value, for example, to provide an ID that you
        /// can use to track a request or to provide other metadata that a service endpoint was
        /// programmed to process. The value must consist of no more than 1024 visible US-ASCII
        /// characters as specified in Section
        /// 3.3.6. Field Value Components of the Hypertext Transfer Protocol (HTTP/1.1). 
        /// 
        ///  
        /// 
        /// The code in your model is responsible for setting or updating any custom attributes
        /// in the response. If your code does not set this value in the response, an empty value
        /// is returned. For example, if a custom attribute represents the trace ID, your model
        /// can prepend the custom attribute with Trace ID: in your post-processing
        /// function. 
        /// 
        ///  
        /// 
        /// This feature is currently supported in the Amazon Web Services SDKs but not in the
        /// Amazon SageMaker Python SDK. 
        /// 
        /// 
        [AWSProperty(Sensitive=true, Max=1024)]
        public string CustomAttributes
        {
            get { return this._customAttributes; }
            set { this._customAttributes = value; }
        }
        // Check to see if CustomAttributes property is set
        internal bool IsSetCustomAttributes()
        {
            return this._customAttributes != null;
        }
        /// 
        /// Gets and sets the property EndpointName. 
        /// 
        /// The name of the endpoint that you specified when you created the endpoint using the
        /// 
        /// CreateEndpoint  API.
        /// 
        /// 
        [AWSProperty(Required=true, Max=63)]
        public string EndpointName
        {
            get { return this._endpointName; }
            set { this._endpointName = value; }
        }
        // Check to see if EndpointName property is set
        internal bool IsSetEndpointName()
        {
            return this._endpointName != null;
        }
        /// 
        /// Gets and sets the property InferenceId. 
        /// 
        /// The identifier for the inference request. Amazon SageMaker will generate an identifier
        /// for you if none is specified. 
        /// 
        /// 
        [AWSProperty(Min=1, Max=64)]
        public string InferenceId
        {
            get { return this._inferenceId; }
            set { this._inferenceId = value; }
        }
        // Check to see if InferenceId property is set
        internal bool IsSetInferenceId()
        {
            return this._inferenceId != null;
        }
        /// 
        /// Gets and sets the property InputLocation. 
        /// 
        /// The Amazon S3 URI where the inference request payload is stored.
        /// 
        /// 
        [AWSProperty(Required=true, Min=1, Max=1024)]
        public string InputLocation
        {
            get { return this._inputLocation; }
            set { this._inputLocation = value; }
        }
        // Check to see if InputLocation property is set
        internal bool IsSetInputLocation()
        {
            return this._inputLocation != null;
        }
        /// 
        /// Gets and sets the property InvocationTimeoutSeconds. 
        /// 
        /// Maximum amount of time in seconds a request can be processed before it is marked as
        /// expired. The default is 15 minutes, or 900 seconds.
        /// 
        /// 
        [AWSProperty(Min=1, Max=3600)]
        public int InvocationTimeoutSeconds
        {
            get { return this._invocationTimeoutSeconds.GetValueOrDefault(); }
            set { this._invocationTimeoutSeconds = value; }
        }
        // Check to see if InvocationTimeoutSeconds property is set
        internal bool IsSetInvocationTimeoutSeconds()
        {
            return this._invocationTimeoutSeconds.HasValue; 
        }
        /// 
        /// Gets and sets the property RequestTTLSeconds. 
        /// 
        /// Maximum age in seconds a request can be in the queue before it is marked as expired.
        /// The default is 6 hours, or 21,600 seconds.
        /// 
        /// 
        [AWSProperty(Min=60, Max=21600)]
        public int RequestTTLSeconds
        {
            get { return this._requestTTLSeconds.GetValueOrDefault(); }
            set { this._requestTTLSeconds = value; }
        }
        // Check to see if RequestTTLSeconds property is set
        internal bool IsSetRequestTTLSeconds()
        {
            return this._requestTTLSeconds.HasValue; 
        }
    }
}