com.amazonaws.services.apigateway.model.PutIntegrationRequest Maven / Gradle / Ivy
Show all versions of aws-java-sdk-api-gateway Show documentation
/*
 * Copyright 2011-2016 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.
 */
package com.amazonaws.services.apigateway.model;
import java.io.Serializable;
import com.amazonaws.AmazonWebServiceRequest;
/**
 * 
 * Represents a put integration request.
 * 
 */
public class PutIntegrationRequest extends com.amazonaws.AmazonWebServiceRequest implements Serializable, Cloneable {
    /**
     * 
     * Specifies a put integration request's API identifier.
     * 
     */
    private String restApiId;
    /**
     * 
     * Specifies a put integration request's resource ID.
     * 
     */
    private String resourceId;
    /**
     * 
     * Specifies a put integration request's HTTP method.
     * 
     */
    private String httpMethod;
    /**
     * 
     * Specifies a put integration input's type.
     * 
     */
    private String type;
    /**
     * 
     * Specifies a put integration HTTP method. When the integration type is HTTP or AWS, this field is required.
     * 
     */
    private String integrationHttpMethod;
    /**
     * 
     * Specifies a put integration input's Uniform Resource Identifier (URI). When the integration type is HTTP or AWS,
     * this field is required. For integration with Lambda as an AWS service proxy, this value is of the
     * 'arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/<functionArn>/invocations' format.
     * 
     */
    private String uri;
    /**
     * 
     * Specifies whether credentials are required for a put integration.
     * 
     */
    private String credentials;
    /**
     * 
     * A key-value map specifying request parameters that are passed from the method request to the back end. The key is
     * an integration request parameter name and the associated value is a method request parameter value or static
     * value that must be enclosed within single quotes and pre-encoded as required by the back end. The method request
     * parameter value must match the pattern of method.request.{location}.{name}, where
     * location is querystring, path, or header and
     * name must be a valid and unique method request parameter name.
     * 
     */
    private java.util.Map requestParameters;
    /**
     * 
     * Represents a map of Velocity templates that are applied on the request payload based on the value of the
     * Content-Type header sent by the client. The content type value is the key in this map, and the template (as a
     * String) is the value.
     * 
     */
    private java.util.Map requestTemplates;
    /**
     * 
     * Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and
     * the available mapping templates specified as the requestTemplates property on the Integration
     * resource. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and
     * NEVER.
     * 
     * 
     * - 
     * 
     * WHEN_NO_MATCH passes the request body for unmapped content types through to the integration back end
     * without transformation.
     * 
     *  
     * - 
     * 
     * NEVER rejects unmapped content types with an HTTP 415 'Unsupported Media Type' response.
     * 
     *  
     * - 
     * 
     * WHEN_NO_TEMPLATES allows pass-through when the integration has NO content types mapped to templates.
     * However if there is at least one content type defined, unmapped content types will be rejected with the same 415
     * response.
     * 
     *  
     * 
     */
    private String passthroughBehavior;
    /**
     * 
     * Specifies a put integration input's cache namespace.
     * 
     */
    private String cacheNamespace;
    /**
     * 
     * Specifies a put integration input's cache key parameters.
     * 
     */
    private java.util.List cacheKeyParameters;
    /**
     * 
     * Specifies a put integration request's API identifier.
     * 
     * 
     * @param restApiId
     *        Specifies a put integration request's API identifier.
     */
    public void setRestApiId(String restApiId) {
        this.restApiId = restApiId;
    }
    /**
     * 
     * Specifies a put integration request's API identifier.
     * 
     * 
     * @return Specifies a put integration request's API identifier.
     */
    public String getRestApiId() {
        return this.restApiId;
    }
    /**
     * 
     * Specifies a put integration request's API identifier.
     * 
     * 
     * @param restApiId
     *        Specifies a put integration request's API identifier.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public PutIntegrationRequest withRestApiId(String restApiId) {
        setRestApiId(restApiId);
        return this;
    }
    /**
     * 
     * Specifies a put integration request's resource ID.
     * 
     * 
     * @param resourceId
     *        Specifies a put integration request's resource ID.
     */
    public void setResourceId(String resourceId) {
        this.resourceId = resourceId;
    }
    /**
     * 
     * Specifies a put integration request's resource ID.
     * 
     * 
     * @return Specifies a put integration request's resource ID.
     */
    public String getResourceId() {
        return this.resourceId;
    }
    /**
     * 
     * Specifies a put integration request's resource ID.
     * 
     * 
     * @param resourceId
     *        Specifies a put integration request's resource ID.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public PutIntegrationRequest withResourceId(String resourceId) {
        setResourceId(resourceId);
        return this;
    }
    /**
     * 
     * Specifies a put integration request's HTTP method.
     * 
     * 
     * @param httpMethod
     *        Specifies a put integration request's HTTP method.
     */
    public void setHttpMethod(String httpMethod) {
        this.httpMethod = httpMethod;
    }
    /**
     * 
     * Specifies a put integration request's HTTP method.
     * 
     * 
     * @return Specifies a put integration request's HTTP method.
     */
    public String getHttpMethod() {
        return this.httpMethod;
    }
    /**
     * 
     * Specifies a put integration request's HTTP method.
     * 
     * 
     * @param httpMethod
     *        Specifies a put integration request's HTTP method.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public PutIntegrationRequest withHttpMethod(String httpMethod) {
        setHttpMethod(httpMethod);
        return this;
    }
    /**
     * 
     * Specifies a put integration input's type.
     * 
     * 
     * @param type
     *        Specifies a put integration input's type.
     * @see IntegrationType
     */
    public void setType(String type) {
        this.type = type;
    }
    /**
     * 
     * Specifies a put integration input's type.
     * 
     * 
     * @return Specifies a put integration input's type.
     * @see IntegrationType
     */
    public String getType() {
        return this.type;
    }
    /**
     * 
     * Specifies a put integration input's type.
     * 
     * 
     * @param type
     *        Specifies a put integration input's type.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see IntegrationType
     */
    public PutIntegrationRequest withType(String type) {
        setType(type);
        return this;
    }
    /**
     * 
     * Specifies a put integration input's type.
     * 
     * 
     * @param type
     *        Specifies a put integration input's type.
     * @see IntegrationType
     */
    public void setType(IntegrationType type) {
        this.type = type.toString();
    }
    /**
     * 
     * Specifies a put integration input's type.
     * 
     * 
     * @param type
     *        Specifies a put integration input's type.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see IntegrationType
     */
    public PutIntegrationRequest withType(IntegrationType type) {
        setType(type);
        return this;
    }
    /**
     * 
     * Specifies a put integration HTTP method. When the integration type is HTTP or AWS, this field is required.
     * 
     * 
     * @param integrationHttpMethod
     *        Specifies a put integration HTTP method. When the integration type is HTTP or AWS, this field is required.
     */
    public void setIntegrationHttpMethod(String integrationHttpMethod) {
        this.integrationHttpMethod = integrationHttpMethod;
    }
    /**
     * 
     * Specifies a put integration HTTP method. When the integration type is HTTP or AWS, this field is required.
     * 
     * 
     * @return Specifies a put integration HTTP method. When the integration type is HTTP or AWS, this field is
     *         required.
     */
    public String getIntegrationHttpMethod() {
        return this.integrationHttpMethod;
    }
    /**
     * 
     * Specifies a put integration HTTP method. When the integration type is HTTP or AWS, this field is required.
     * 
     * 
     * @param integrationHttpMethod
     *        Specifies a put integration HTTP method. When the integration type is HTTP or AWS, this field is required.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public PutIntegrationRequest withIntegrationHttpMethod(String integrationHttpMethod) {
        setIntegrationHttpMethod(integrationHttpMethod);
        return this;
    }
    /**
     * 
     * Specifies a put integration input's Uniform Resource Identifier (URI). When the integration type is HTTP or AWS,
     * this field is required. For integration with Lambda as an AWS service proxy, this value is of the
     * 'arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/<functionArn>/invocations' format.
     * 
     * 
     * @param uri
     *        Specifies a put integration input's Uniform Resource Identifier (URI). When the integration type is HTTP
     *        or AWS, this field is required. For integration with Lambda as an AWS service proxy, this value is of the
     *        'arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/<functionArn>/invocations'
     *        format.
     */
    public void setUri(String uri) {
        this.uri = uri;
    }
    /**
     * 
     * Specifies a put integration input's Uniform Resource Identifier (URI). When the integration type is HTTP or AWS,
     * this field is required. For integration with Lambda as an AWS service proxy, this value is of the
     * 'arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/<functionArn>/invocations' format.
     * 
     * 
     * @return Specifies a put integration input's Uniform Resource Identifier (URI). When the integration type is HTTP
     *         or AWS, this field is required. For integration with Lambda as an AWS service proxy, this value is of the
     *         'arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/<functionArn>/invocations'
     *         format.
     */
    public String getUri() {
        return this.uri;
    }
    /**
     * 
     * Specifies a put integration input's Uniform Resource Identifier (URI). When the integration type is HTTP or AWS,
     * this field is required. For integration with Lambda as an AWS service proxy, this value is of the
     * 'arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/<functionArn>/invocations' format.
     * 
     * 
     * @param uri
     *        Specifies a put integration input's Uniform Resource Identifier (URI). When the integration type is HTTP
     *        or AWS, this field is required. For integration with Lambda as an AWS service proxy, this value is of the
     *        'arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/<functionArn>/invocations'
     *        format.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public PutIntegrationRequest withUri(String uri) {
        setUri(uri);
        return this;
    }
    /**
     * 
     * Specifies whether credentials are required for a put integration.
     * 
     * 
     * @param credentials
     *        Specifies whether credentials are required for a put integration.
     */
    public void setCredentials(String credentials) {
        this.credentials = credentials;
    }
    /**
     * 
     * Specifies whether credentials are required for a put integration.
     * 
     * 
     * @return Specifies whether credentials are required for a put integration.
     */
    public String getCredentials() {
        return this.credentials;
    }
    /**
     * 
     * Specifies whether credentials are required for a put integration.
     * 
     * 
     * @param credentials
     *        Specifies whether credentials are required for a put integration.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public PutIntegrationRequest withCredentials(String credentials) {
        setCredentials(credentials);
        return this;
    }
    /**
     * 
     * A key-value map specifying request parameters that are passed from the method request to the back end. The key is
     * an integration request parameter name and the associated value is a method request parameter value or static
     * value that must be enclosed within single quotes and pre-encoded as required by the back end. The method request
     * parameter value must match the pattern of method.request.{location}.{name}, where
     * location is querystring, path, or header and
     * name must be a valid and unique method request parameter name.
     * 
     * 
     * @return A key-value map specifying request parameters that are passed from the method request to the back end.
     *         The key is an integration request parameter name and the associated value is a method request parameter
     *         value or static value that must be enclosed within single quotes and pre-encoded as required by the back
     *         end. The method request parameter value must match the pattern of
     *         method.request.{location}.{name}, where location is querystring,
     *         path, or header and name must be a valid and unique method request
     *         parameter name.
     */
    public java.util.Map getRequestParameters() {
        return requestParameters;
    }
    /**
     * 
     * A key-value map specifying request parameters that are passed from the method request to the back end. The key is
     * an integration request parameter name and the associated value is a method request parameter value or static
     * value that must be enclosed within single quotes and pre-encoded as required by the back end. The method request
     * parameter value must match the pattern of method.request.{location}.{name}, where
     * location is querystring, path, or header and
     * name must be a valid and unique method request parameter name.
     * 
     * 
     * @param requestParameters
     *        A key-value map specifying request parameters that are passed from the method request to the back end. The
     *        key is an integration request parameter name and the associated value is a method request parameter value
     *        or static value that must be enclosed within single quotes and pre-encoded as required by the back end.
     *        The method request parameter value must match the pattern of method.request.{location}.{name}
     *        , where location is querystring, path, or header and
     *        name must be a valid and unique method request parameter name.
     */
    public void setRequestParameters(java.util.Map requestParameters) {
        this.requestParameters = requestParameters;
    }
    /**
     * 
     * A key-value map specifying request parameters that are passed from the method request to the back end. The key is
     * an integration request parameter name and the associated value is a method request parameter value or static
     * value that must be enclosed within single quotes and pre-encoded as required by the back end. The method request
     * parameter value must match the pattern of method.request.{location}.{name}, where
     * location is querystring, path, or header and
     * name must be a valid and unique method request parameter name.
     * 
     * 
     * @param requestParameters
     *        A key-value map specifying request parameters that are passed from the method request to the back end. The
     *        key is an integration request parameter name and the associated value is a method request parameter value
     *        or static value that must be enclosed within single quotes and pre-encoded as required by the back end.
     *        The method request parameter value must match the pattern of method.request.{location}.{name}
     *        , where location is querystring, path, or header and
     *        name must be a valid and unique method request parameter name.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public PutIntegrationRequest withRequestParameters(java.util.Map requestParameters) {
        setRequestParameters(requestParameters);
        return this;
    }
    public PutIntegrationRequest addRequestParametersEntry(String key, String value) {
        if (null == this.requestParameters) {
            this.requestParameters = new java.util.HashMap();
        }
        if (this.requestParameters.containsKey(key))
            throw new IllegalArgumentException("Duplicated keys (" + key.toString() + ") are provided.");
        this.requestParameters.put(key, value);
        return this;
    }
    /**
     * Removes all the entries added into RequestParameters.
     *
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public PutIntegrationRequest clearRequestParametersEntries() {
        this.requestParameters = null;
        return this;
    }
    /**
     * 
     * Represents a map of Velocity templates that are applied on the request payload based on the value of the
     * Content-Type header sent by the client. The content type value is the key in this map, and the template (as a
     * String) is the value.
     * 
     * 
     * @return Represents a map of Velocity templates that are applied on the request payload based on the value of the
     *         Content-Type header sent by the client. The content type value is the key in this map, and the template
     *         (as a String) is the value.
     */
    public java.util.Map getRequestTemplates() {
        return requestTemplates;
    }
    /**
     * 
     * Represents a map of Velocity templates that are applied on the request payload based on the value of the
     * Content-Type header sent by the client. The content type value is the key in this map, and the template (as a
     * String) is the value.
     * 
     * 
     * @param requestTemplates
     *        Represents a map of Velocity templates that are applied on the request payload based on the value of the
     *        Content-Type header sent by the client. The content type value is the key in this map, and the template
     *        (as a String) is the value.
     */
    public void setRequestTemplates(java.util.Map requestTemplates) {
        this.requestTemplates = requestTemplates;
    }
    /**
     * 
     * Represents a map of Velocity templates that are applied on the request payload based on the value of the
     * Content-Type header sent by the client. The content type value is the key in this map, and the template (as a
     * String) is the value.
     * 
     * 
     * @param requestTemplates
     *        Represents a map of Velocity templates that are applied on the request payload based on the value of the
     *        Content-Type header sent by the client. The content type value is the key in this map, and the template
     *        (as a String) is the value.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public PutIntegrationRequest withRequestTemplates(java.util.Map requestTemplates) {
        setRequestTemplates(requestTemplates);
        return this;
    }
    public PutIntegrationRequest addRequestTemplatesEntry(String key, String value) {
        if (null == this.requestTemplates) {
            this.requestTemplates = new java.util.HashMap();
        }
        if (this.requestTemplates.containsKey(key))
            throw new IllegalArgumentException("Duplicated keys (" + key.toString() + ") are provided.");
        this.requestTemplates.put(key, value);
        return this;
    }
    /**
     * Removes all the entries added into RequestTemplates.
     *
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public PutIntegrationRequest clearRequestTemplatesEntries() {
        this.requestTemplates = null;
        return this;
    }
    /**
     * 
     * Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and
     * the available mapping templates specified as the requestTemplates property on the Integration
     * resource. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and
     * NEVER.
     * 
     * 
     * - 
     * 
     * WHEN_NO_MATCH passes the request body for unmapped content types through to the integration back end
     * without transformation.
     * 
     *  
     * - 
     * 
     * NEVER rejects unmapped content types with an HTTP 415 'Unsupported Media Type' response.
     * 
     *  
     * - 
     * 
     * WHEN_NO_TEMPLATES allows pass-through when the integration has NO content types mapped to templates.
     * However if there is at least one content type defined, unmapped content types will be rejected with the same 415
     * response.
     * 
     *  
     * 
     * 
     * @param passthroughBehavior
     *        Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request,
     *        and the available mapping templates specified as the requestTemplates property on the
     *        Integration resource. There are three valid values: WHEN_NO_MATCH,
     *        WHEN_NO_TEMPLATES, and NEVER. 
     *        
     *        - 
     *        
     *        WHEN_NO_MATCH passes the request body for unmapped content types through to the integration
     *        back end without transformation.
     *        
     *         
     *        - 
     *        
     *        NEVER rejects unmapped content types with an HTTP 415 'Unsupported Media Type' response.
     *        
     *         
     *        - 
     *        
     *        WHEN_NO_TEMPLATES allows pass-through when the integration has NO content types mapped to
     *        templates. However if there is at least one content type defined, unmapped content types will be rejected
     *        with the same 415 response.
     *        
     *         
     */
    public void setPassthroughBehavior(String passthroughBehavior) {
        this.passthroughBehavior = passthroughBehavior;
    }
    /**
     * 
     * Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and
     * the available mapping templates specified as the requestTemplates property on the Integration
     * resource. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and
     * NEVER.
     * 
     * 
     * - 
     * 
     * WHEN_NO_MATCH passes the request body for unmapped content types through to the integration back end
     * without transformation.
     * 
     *  
     * - 
     * 
     * NEVER rejects unmapped content types with an HTTP 415 'Unsupported Media Type' response.
     * 
     *  
     * - 
     * 
     * WHEN_NO_TEMPLATES allows pass-through when the integration has NO content types mapped to templates.
     * However if there is at least one content type defined, unmapped content types will be rejected with the same 415
     * response.
     * 
     *  
     * 
     * 
     * @return Specifies the pass-through behavior for incoming requests based on the Content-Type header in the
     *         request, and the available mapping templates specified as the requestTemplates property on
     *         the Integration resource. There are three valid values: WHEN_NO_MATCH,
     *         WHEN_NO_TEMPLATES, and NEVER. 
     *         
     *         - 
     *         
     *         WHEN_NO_MATCH passes the request body for unmapped content types through to the integration
     *         back end without transformation.
     *         
     *          
     *         - 
     *         
     *         NEVER rejects unmapped content types with an HTTP 415 'Unsupported Media Type' response.
     *         
     *          
     *         - 
     *         
     *         WHEN_NO_TEMPLATES allows pass-through when the integration has NO content types mapped to
     *         templates. However if there is at least one content type defined, unmapped content types will be rejected
     *         with the same 415 response.
     *         
     *          
     */
    public String getPassthroughBehavior() {
        return this.passthroughBehavior;
    }
    /**
     * 
     * Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and
     * the available mapping templates specified as the requestTemplates property on the Integration
     * resource. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and
     * NEVER.
     * 
     * 
     * - 
     * 
     * WHEN_NO_MATCH passes the request body for unmapped content types through to the integration back end
     * without transformation.
     * 
     *  
     * - 
     * 
     * NEVER rejects unmapped content types with an HTTP 415 'Unsupported Media Type' response.
     * 
     *  
     * - 
     * 
     * WHEN_NO_TEMPLATES allows pass-through when the integration has NO content types mapped to templates.
     * However if there is at least one content type defined, unmapped content types will be rejected with the same 415
     * response.
     * 
     *  
     * 
     * 
     * @param passthroughBehavior
     *        Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request,
     *        and the available mapping templates specified as the requestTemplates property on the
     *        Integration resource. There are three valid values: WHEN_NO_MATCH,
     *        WHEN_NO_TEMPLATES, and NEVER. 
     *        
     *        - 
     *        
     *        WHEN_NO_MATCH passes the request body for unmapped content types through to the integration
     *        back end without transformation.
     *        
     *         
     *        - 
     *        
     *        NEVER rejects unmapped content types with an HTTP 415 'Unsupported Media Type' response.
     *        
     *         
     *        - 
     *        
     *        WHEN_NO_TEMPLATES allows pass-through when the integration has NO content types mapped to
     *        templates. However if there is at least one content type defined, unmapped content types will be rejected
     *        with the same 415 response.
     *        
     *         
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public PutIntegrationRequest withPassthroughBehavior(String passthroughBehavior) {
        setPassthroughBehavior(passthroughBehavior);
        return this;
    }
    /**
     * 
     * Specifies a put integration input's cache namespace.
     * 
     * 
     * @param cacheNamespace
     *        Specifies a put integration input's cache namespace.
     */
    public void setCacheNamespace(String cacheNamespace) {
        this.cacheNamespace = cacheNamespace;
    }
    /**
     * 
     * Specifies a put integration input's cache namespace.
     * 
     * 
     * @return Specifies a put integration input's cache namespace.
     */
    public String getCacheNamespace() {
        return this.cacheNamespace;
    }
    /**
     * 
     * Specifies a put integration input's cache namespace.
     * 
     * 
     * @param cacheNamespace
     *        Specifies a put integration input's cache namespace.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public PutIntegrationRequest withCacheNamespace(String cacheNamespace) {
        setCacheNamespace(cacheNamespace);
        return this;
    }
    /**
     * 
     * Specifies a put integration input's cache key parameters.
     * 
     * 
     * @return Specifies a put integration input's cache key parameters.
     */
    public java.util.List getCacheKeyParameters() {
        return cacheKeyParameters;
    }
    /**
     * 
     * Specifies a put integration input's cache key parameters.
     * 
     * 
     * @param cacheKeyParameters
     *        Specifies a put integration input's cache key parameters.
     */
    public void setCacheKeyParameters(java.util.Collection cacheKeyParameters) {
        if (cacheKeyParameters == null) {
            this.cacheKeyParameters = null;
            return;
        }
        this.cacheKeyParameters = new java.util.ArrayList(cacheKeyParameters);
    }
    /**
     * 
     * Specifies a put integration input's cache key parameters.
     * 
     * 
     * NOTE: This method appends the values to the existing list (if any). Use
     * {@link #setCacheKeyParameters(java.util.Collection)} or {@link #withCacheKeyParameters(java.util.Collection)} if
     * you want to override the existing values.
     * 
     * 
     * @param cacheKeyParameters
     *        Specifies a put integration input's cache key parameters.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public PutIntegrationRequest withCacheKeyParameters(String... cacheKeyParameters) {
        if (this.cacheKeyParameters == null) {
            setCacheKeyParameters(new java.util.ArrayList(cacheKeyParameters.length));
        }
        for (String ele : cacheKeyParameters) {
            this.cacheKeyParameters.add(ele);
        }
        return this;
    }
    /**
     * 
     * Specifies a put integration input's cache key parameters.
     * 
     * 
     * @param cacheKeyParameters
     *        Specifies a put integration input's cache key parameters.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public PutIntegrationRequest withCacheKeyParameters(java.util.Collection cacheKeyParameters) {
        setCacheKeyParameters(cacheKeyParameters);
        return this;
    }
    /**
     * Returns a string representation of this object; useful for testing and debugging.
     *
     * @return A string representation of this object.
     *
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        if (getRestApiId() != null)
            sb.append("RestApiId: " + getRestApiId() + ",");
        if (getResourceId() != null)
            sb.append("ResourceId: " + getResourceId() + ",");
        if (getHttpMethod() != null)
            sb.append("HttpMethod: " + getHttpMethod() + ",");
        if (getType() != null)
            sb.append("Type: " + getType() + ",");
        if (getIntegrationHttpMethod() != null)
            sb.append("IntegrationHttpMethod: " + getIntegrationHttpMethod() + ",");
        if (getUri() != null)
            sb.append("Uri: " + getUri() + ",");
        if (getCredentials() != null)
            sb.append("Credentials: " + getCredentials() + ",");
        if (getRequestParameters() != null)
            sb.append("RequestParameters: " + getRequestParameters() + ",");
        if (getRequestTemplates() != null)
            sb.append("RequestTemplates: " + getRequestTemplates() + ",");
        if (getPassthroughBehavior() != null)
            sb.append("PassthroughBehavior: " + getPassthroughBehavior() + ",");
        if (getCacheNamespace() != null)
            sb.append("CacheNamespace: " + getCacheNamespace() + ",");
        if (getCacheKeyParameters() != null)
            sb.append("CacheKeyParameters: " + getCacheKeyParameters());
        sb.append("}");
        return sb.toString();
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (obj instanceof PutIntegrationRequest == false)
            return false;
        PutIntegrationRequest other = (PutIntegrationRequest) obj;
        if (other.getRestApiId() == null ^ this.getRestApiId() == null)
            return false;
        if (other.getRestApiId() != null && other.getRestApiId().equals(this.getRestApiId()) == false)
            return false;
        if (other.getResourceId() == null ^ this.getResourceId() == null)
            return false;
        if (other.getResourceId() != null && other.getResourceId().equals(this.getResourceId()) == false)
            return false;
        if (other.getHttpMethod() == null ^ this.getHttpMethod() == null)
            return false;
        if (other.getHttpMethod() != null && other.getHttpMethod().equals(this.getHttpMethod()) == false)
            return false;
        if (other.getType() == null ^ this.getType() == null)
            return false;
        if (other.getType() != null && other.getType().equals(this.getType()) == false)
            return false;
        if (other.getIntegrationHttpMethod() == null ^ this.getIntegrationHttpMethod() == null)
            return false;
        if (other.getIntegrationHttpMethod() != null && other.getIntegrationHttpMethod().equals(this.getIntegrationHttpMethod()) == false)
            return false;
        if (other.getUri() == null ^ this.getUri() == null)
            return false;
        if (other.getUri() != null && other.getUri().equals(this.getUri()) == false)
            return false;
        if (other.getCredentials() == null ^ this.getCredentials() == null)
            return false;
        if (other.getCredentials() != null && other.getCredentials().equals(this.getCredentials()) == false)
            return false;
        if (other.getRequestParameters() == null ^ this.getRequestParameters() == null)
            return false;
        if (other.getRequestParameters() != null && other.getRequestParameters().equals(this.getRequestParameters()) == false)
            return false;
        if (other.getRequestTemplates() == null ^ this.getRequestTemplates() == null)
            return false;
        if (other.getRequestTemplates() != null && other.getRequestTemplates().equals(this.getRequestTemplates()) == false)
            return false;
        if (other.getPassthroughBehavior() == null ^ this.getPassthroughBehavior() == null)
            return false;
        if (other.getPassthroughBehavior() != null && other.getPassthroughBehavior().equals(this.getPassthroughBehavior()) == false)
            return false;
        if (other.getCacheNamespace() == null ^ this.getCacheNamespace() == null)
            return false;
        if (other.getCacheNamespace() != null && other.getCacheNamespace().equals(this.getCacheNamespace()) == false)
            return false;
        if (other.getCacheKeyParameters() == null ^ this.getCacheKeyParameters() == null)
            return false;
        if (other.getCacheKeyParameters() != null && other.getCacheKeyParameters().equals(this.getCacheKeyParameters()) == false)
            return false;
        return true;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int hashCode = 1;
        hashCode = prime * hashCode + ((getRestApiId() == null) ? 0 : getRestApiId().hashCode());
        hashCode = prime * hashCode + ((getResourceId() == null) ? 0 : getResourceId().hashCode());
        hashCode = prime * hashCode + ((getHttpMethod() == null) ? 0 : getHttpMethod().hashCode());
        hashCode = prime * hashCode + ((getType() == null) ? 0 : getType().hashCode());
        hashCode = prime * hashCode + ((getIntegrationHttpMethod() == null) ? 0 : getIntegrationHttpMethod().hashCode());
        hashCode = prime * hashCode + ((getUri() == null) ? 0 : getUri().hashCode());
        hashCode = prime * hashCode + ((getCredentials() == null) ? 0 : getCredentials().hashCode());
        hashCode = prime * hashCode + ((getRequestParameters() == null) ? 0 : getRequestParameters().hashCode());
        hashCode = prime * hashCode + ((getRequestTemplates() == null) ? 0 : getRequestTemplates().hashCode());
        hashCode = prime * hashCode + ((getPassthroughBehavior() == null) ? 0 : getPassthroughBehavior().hashCode());
        hashCode = prime * hashCode + ((getCacheNamespace() == null) ? 0 : getCacheNamespace().hashCode());
        hashCode = prime * hashCode + ((getCacheKeyParameters() == null) ? 0 : getCacheKeyParameters().hashCode());
        return hashCode;
    }
    @Override
    public PutIntegrationRequest clone() {
        return (PutIntegrationRequest) super.clone();
    }
}