/*
 * 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 apigateway-2015-07-09.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.APIGateway.Model
{
    /// 
    /// Represents a client-facing interface by which the client calls the API to access
    /// back-end resources. A Method resource is integrated with an Integration resource.
    /// Both consist of a request and one or more responses. The method request takes the
    /// client input that is passed to the back end through the integration request. A method
    /// response returns the output from the back end to the client through an integration
    /// response. A method request is embodied in a Method resource, whereas an integration
    /// request is embodied in an Integration resource. On the other hand, a method response
    /// is represented by a MethodResponse resource, whereas an integration response is represented
    /// by an IntegrationResponse resource.
    /// 
    public partial class GetMethodResponse : AmazonWebServiceResponse
    {
        private bool? _apiKeyRequired;
        private List _authorizationScopes = new List();
        private string _authorizationType;
        private string _authorizerId;
        private string _httpMethod;
        private Integration _methodIntegration;
        private Dictionary _methodResponses = new Dictionary();
        private string _operationName;
        private Dictionary _requestModels = new Dictionary();
        private Dictionary _requestParameters = new Dictionary();
        private string _requestValidatorId;
        /// 
        /// Gets and sets the property ApiKeyRequired. 
        /// 
        /// A boolean flag specifying whether a valid ApiKey is required to invoke this method.
        /// 
        /// 
        public bool ApiKeyRequired
        {
            get { return this._apiKeyRequired.GetValueOrDefault(); }
            set { this._apiKeyRequired = value; }
        }
        // Check to see if ApiKeyRequired property is set
        internal bool IsSetApiKeyRequired()
        {
            return this._apiKeyRequired.HasValue; 
        }
        /// 
        /// Gets and sets the property AuthorizationScopes. 
        /// 
        /// A list of authorization scopes configured on the method. The scopes are used with
        /// a COGNITO_USER_POOLS authorizer to authorize the method invocation. The
        /// authorization works by matching the method scopes against the scopes parsed from the
        /// access token in the incoming request. The method invocation is authorized if any method
        /// scopes matches a claimed scope in the access token. Otherwise, the invocation is not
        /// authorized. When the method scope is configured, the client must provide an access
        /// token instead of an identity token for authorization purposes.
        /// 
        /// 
        public List AuthorizationScopes
        {
            get { return this._authorizationScopes; }
            set { this._authorizationScopes = value; }
        }
        // Check to see if AuthorizationScopes property is set
        internal bool IsSetAuthorizationScopes()
        {
            return this._authorizationScopes != null && this._authorizationScopes.Count > 0; 
        }
        /// 
        /// Gets and sets the property AuthorizationType. 
        /// 
        /// The method's authorization type. Valid values are NONE for open access,
        /// AWS_IAM for using AWS IAM permissions, CUSTOM for using
        /// a custom authorizer, or COGNITO_USER_POOLS for using a Cognito user pool.
        /// 
        /// 
        public string AuthorizationType
        {
            get { return this._authorizationType; }
            set { this._authorizationType = value; }
        }
        // Check to see if AuthorizationType property is set
        internal bool IsSetAuthorizationType()
        {
            return this._authorizationType != null;
        }
        /// 
        /// Gets and sets the property AuthorizerId. 
        /// 
        /// The identifier of an Authorizer to use on this method. The authorizationType
        /// must be CUSTOM.
        /// 
        /// 
        public string AuthorizerId
        {
            get { return this._authorizerId; }
            set { this._authorizerId = value; }
        }
        // Check to see if AuthorizerId property is set
        internal bool IsSetAuthorizerId()
        {
            return this._authorizerId != null;
        }
        /// 
        /// Gets and sets the property HttpMethod. 
        /// 
        /// The method's HTTP verb.
        /// 
        /// 
        public string HttpMethod
        {
            get { return this._httpMethod; }
            set { this._httpMethod = value; }
        }
        // Check to see if HttpMethod property is set
        internal bool IsSetHttpMethod()
        {
            return this._httpMethod != null;
        }
        /// 
        /// Gets and sets the property MethodIntegration. 
        /// 
        /// Gets the method's integration responsible for passing the client-submitted request
        /// to the back end and performing necessary transformations to make the request compliant
        /// with the back end.
        /// 
        /// 
        public Integration MethodIntegration
        {
            get { return this._methodIntegration; }
            set { this._methodIntegration = value; }
        }
        // Check to see if MethodIntegration property is set
        internal bool IsSetMethodIntegration()
        {
            return this._methodIntegration != null;
        }
        /// 
        /// Gets and sets the property MethodResponses. 
        /// 
        /// Gets a method response associated with a given HTTP status code. 
        /// 
        /// 
        public Dictionary MethodResponses
        {
            get { return this._methodResponses; }
            set { this._methodResponses = value; }
        }
        // Check to see if MethodResponses property is set
        internal bool IsSetMethodResponses()
        {
            return this._methodResponses != null && this._methodResponses.Count > 0; 
        }
        /// 
        /// Gets and sets the property OperationName. 
        /// 
        /// A human-friendly operation identifier for the method. For example, you can assign
        /// the operationName of ListPets for the GET /pets
        /// method in the PetStore example.
        /// 
        /// 
        public string OperationName
        {
            get { return this._operationName; }
            set { this._operationName = value; }
        }
        // Check to see if OperationName property is set
        internal bool IsSetOperationName()
        {
            return this._operationName != null;
        }
        /// 
        /// Gets and sets the property RequestModels. 
        /// 
        /// A key-value map specifying data schemas, represented by Model resources, (as the mapped
        /// value) of the request payloads of given content types (as the mapping key).
        /// 
        /// 
        public Dictionary RequestModels
        {
            get { return this._requestModels; }
            set { this._requestModels = value; }
        }
        // Check to see if RequestModels property is set
        internal bool IsSetRequestModels()
        {
            return this._requestModels != null && this._requestModels.Count > 0; 
        }
        /// 
        /// Gets and sets the property RequestParameters. 
        /// 
        /// A key-value map defining required or optional method request parameters that can be
        /// accepted by API Gateway. A key is a method request parameter name matching the pattern
        /// of method.request.{location}.{name}, where location is querystring,
        /// path, or header and name is a valid and unique
        /// parameter name. The value associated with the key is a Boolean flag indicating whether
        /// the parameter is required (true) or optional (false). The
        /// method request parameter names defined here are available in Integration to be mapped
        /// to integration request parameters or templates.
        /// 
        /// 
        public Dictionary RequestParameters
        {
            get { return this._requestParameters; }
            set { this._requestParameters = value; }
        }
        // Check to see if RequestParameters property is set
        internal bool IsSetRequestParameters()
        {
            return this._requestParameters != null && this._requestParameters.Count > 0; 
        }
        /// 
        /// Gets and sets the property RequestValidatorId. 
        /// 
        /// The identifier of a RequestValidator for request validation.
        /// 
        /// 
        public string RequestValidatorId
        {
            get { return this._requestValidatorId; }
            set { this._requestValidatorId = value; }
        }
        // Check to see if RequestValidatorId property is set
        internal bool IsSetRequestValidatorId()
        {
            return this._requestValidatorId != null;
        }
    }
}