All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.awssdk.services.apigateway.model.Method Maven / Gradle / Ivy

Go to download

The AWS Java SDK for Amazon API Gateway module holds the client classes that are used for communicating with Amazon API Gateway

There is a newer version: 2.0.0-preview-11
Show newest version
/*
 * Copyright 2013-2018 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 software.amazon.awssdk.services.apigateway.model;

import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.function.Consumer;
import javax.annotation.Generated;
import software.amazon.awssdk.annotations.SdkInternalApi;
import software.amazon.awssdk.core.protocol.ProtocolMarshaller;
import software.amazon.awssdk.core.protocol.StructuredPojo;
import software.amazon.awssdk.services.apigateway.transform.MethodMarshaller;
import software.amazon.awssdk.utils.CollectionUtils;
import software.amazon.awssdk.utils.ToString;
import software.amazon.awssdk.utils.builder.CopyableBuilder;
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;

/**
 * 

* 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. *

*
*

*

Example: Retrive the GET method on a specified resource

*
Request
*

* The following example request retrieves the information about the GET method on an API resource ( * 3kzxbg5sa2) of an API (fugvjdxtri). *

* *
 * GET /restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date: 20160603T210259Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160603/us-east-1/apigateway/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash}
 * 
* *
Response
*

* The successful response returns a 200 OK status code and a payload similar to the following: *

* *
 * { "_links": { "curies": [ { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-{rel}.html", "name": "integration", "templated": true }, { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-response-{rel}.html", "name": "integrationresponse", "templated": true }, { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-{rel}.html", "name": "method", "templated": true }, { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-response-{rel}.html", "name": "methodresponse", "templated": true } ], "self": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET", "name": "GET", "title": "GET" }, "integration:put": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" }, "method:delete": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET" }, "method:integration": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" }, "method:responses": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200", "name": "200", "title": "200" }, "method:update": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET" }, "methodresponse:put": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/{status_code}", "templated": true } }, "apiKeyRequired": true, "authorizationType": "NONE", "httpMethod": "GET", "_embedded": { "method:integration": { "_links": { "self": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" }, "integration:delete": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" }, "integration:responses": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200", "name": "200", "title": "200" }, "integration:update": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" }, "integrationresponse:put": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/{status_code}", "templated": true } }, "cacheKeyParameters": [], "cacheNamespace": "3kzxbg5sa2", "credentials": "arn:aws:iam::123456789012:role/apigAwsProxyRole", "httpMethod": "POST", "passthroughBehavior": "WHEN_NO_MATCH", "requestParameters": { "integration.request.header.Content-Type": "'application/x-amz-json-1.1'" }, "requestTemplates": { "application/json": "{\n}" }, "type": "AWS", "uri": "arn:aws:apigateway:us-east-1:kinesis:action/ListStreams", "_embedded": { "integration:responses": { "_links": { "self": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200", "name": "200", "title": "200" }, "integrationresponse:delete": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200" }, "integrationresponse:update": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200" } }, "responseParameters": { "method.response.header.Content-Type": "'application/xml'" }, "responseTemplates": { "application/json": "$util.urlDecode(\"%3CkinesisStreams%3E%23foreach(%24stream%20in%20%24input.path(%27%24.StreamNames%27))%3Cstream%3E%3Cname%3E%24stream%3C%2Fname%3E%3C%2Fstream%3E%23end%3C%2FkinesisStreams%3E\")" }, "statusCode": "200" } } }, "method:responses": { "_links": { "self": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200", "name": "200", "title": "200" }, "methodresponse:delete": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200" }, "methodresponse:update": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200" } }, "responseModels": { "application/json": "Empty" }, "responseParameters": { "method.response.header.Content-Type": false }, "statusCode": "200" } } }
 * 
*

* In the example above, the response template for the 200 OK response maps the JSON output from the * ListStreams action in the back end to an XML output. The mapping template is URL-encoded as * %3CkinesisStreams%3E%23foreach(%24stream%20in%20%24input.path(%27%24.StreamNames%27))%3Cstream%3E%3Cname%3E%24stream%3C%2Fname%3E%3C%2Fstream%3E%23end%3C%2FkinesisStreams%3E * and the output is decoded using the $util.urlDecode() helper function. *

*
*/ @Generated("software.amazon.awssdk:codegen") public class Method implements StructuredPojo, ToCopyableBuilder { private final String httpMethod; private final String authorizationType; private final String authorizerId; private final Boolean apiKeyRequired; private final String requestValidatorId; private final String operationName; private final Map requestParameters; private final Map requestModels; private final Map methodResponses; private final Integration methodIntegration; private Method(BuilderImpl builder) { this.httpMethod = builder.httpMethod; this.authorizationType = builder.authorizationType; this.authorizerId = builder.authorizerId; this.apiKeyRequired = builder.apiKeyRequired; this.requestValidatorId = builder.requestValidatorId; this.operationName = builder.operationName; this.requestParameters = builder.requestParameters; this.requestModels = builder.requestModels; this.methodResponses = builder.methodResponses; this.methodIntegration = builder.methodIntegration; } /** *

* The method's HTTP verb. *

* * @return The method's HTTP verb. */ public String httpMethod() { return httpMethod; } /** *

* 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. *

* * @return 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() { return authorizationType; } /** *

* The identifier of an Authorizer to use on this method. The authorizationType must be * CUSTOM. *

* * @return The identifier of an Authorizer to use on this method. The authorizationType must be * CUSTOM. */ public String authorizerId() { return authorizerId; } /** *

* A boolean flag specifying whether a valid ApiKey is required to invoke this method. *

* * @return A boolean flag specifying whether a valid ApiKey is required to invoke this method. */ public Boolean apiKeyRequired() { return apiKeyRequired; } /** *

* The identifier of a RequestValidator for request validation. *

* * @return The identifier of a RequestValidator for request validation. */ public String requestValidatorId() { return requestValidatorId; } /** *

* A human-friendly operation identifier for the method. For example, you can assign the operationName * of ListPets for the GET /pets method in PetStore example. *

* * @return A human-friendly operation identifier for the method. For example, you can assign the * operationName of ListPets for the GET /pets method in PetStore example. */ public String operationName() { return operationName; } /** *

* A key-value map defining required or optional method request parameters that can be accepted by Amazon 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. *

*

* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException. *

* * @return A key-value map defining required or optional method request parameters that can be accepted by Amazon * 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 Map requestParameters() { return requestParameters; } /** *

* 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). *

*

* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException. *

* * @return 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 Map requestModels() { return requestModels; } /** *

* Gets a method response associated with a given HTTP status code. *

*
*

* The collection of method responses are encapsulated in a key-value map, where the key is a response's HTTP status * code and the value is a MethodResponse resource that specifies the response returned to the caller from * the back end through the integration response. *

*

Example: Get a 200 OK response of a GET method

Request
*

* *

     * GET /restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200 HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com Content-Length: 117 X-Amz-Date: 20160613T215008Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160613/us-east-1/apigateway/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash}
     * 
* *
Response
*

* The successful response returns a 200 OK status code and a payload similar to the following: *

* *
     * { "_links": { "curies": { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-response-{rel}.html", "name": "methodresponse", "templated": true }, "self": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200", "title": "200" }, "methodresponse:delete": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200" }, "methodresponse:update": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200" } }, "responseModels": { "application/json": "Empty" }, "responseParameters": { "method.response.header.operator": false, "method.response.header.operand_2": false, "method.response.header.operand_1": false }, "statusCode": "200" }
     * 
*

*

*

* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException. *

* * @return Gets a method response associated with a given HTTP status code.

*

* The collection of method responses are encapsulated in a key-value map, where the key is a response's * HTTP status code and the value is a MethodResponse resource that specifies the response returned * to the caller from the back end through the integration response. *

*

Example: Get a 200 OK response of a GET method

Request
*

* *

     * GET /restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200 HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com Content-Length: 117 X-Amz-Date: 20160613T215008Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160613/us-east-1/apigateway/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash}
     * 
* *
Response
*

* The successful response returns a 200 OK status code and a payload similar to the following: *

* *
     * { "_links": { "curies": { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-response-{rel}.html", "name": "methodresponse", "templated": true }, "self": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200", "title": "200" }, "methodresponse:delete": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200" }, "methodresponse:update": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200" } }, "responseModels": { "application/json": "Empty" }, "responseParameters": { "method.response.header.operator": false, "method.response.header.operand_2": false, "method.response.header.operand_1": false }, "statusCode": "200" }
     * 
*

*

AWS CLI */ public Map methodResponses() { return methodResponses; } /** *

* 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. *

*
*

*

Example:

*
Request
*

* *

     * GET /restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com Content-Length: 117 X-Amz-Date: 20160613T213210Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160613/us-east-1/apigateway/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash}
     * 
* *
Response
*

* The successful response returns a 200 OK status code and a payload similar to the following: *

* *
     * { "_links": { "curies": [ { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-{rel}.html", "name": "integration", "templated": true }, { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-response-{rel}.html", "name": "integrationresponse", "templated": true } ], "self": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" }, "integration:delete": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" }, "integration:responses": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200", "name": "200", "title": "200" }, "integration:update": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" }, "integrationresponse:put": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/{status_code}", "templated": true } }, "cacheKeyParameters": [], "cacheNamespace": "0cjtch", "credentials": "arn:aws:iam::123456789012:role/apigAwsProxyRole", "httpMethod": "POST", "passthroughBehavior": "WHEN_NO_MATCH", "requestTemplates": { "application/json": "{\n \"a\": \"$input.params('operand1')\",\n \"b\": \"$input.params('operand2')\", \n \"op\": \"$input.params('operator')\" \n}" }, "type": "AWS", "uri": "arn:aws:apigateway:us-west-2:lambda:path//2015-03-31/functions/arn:aws:lambda:us-west-2:123456789012:function:Calc/invocations", "_embedded": { "integration:responses": { "_links": { "self": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200", "name": "200", "title": "200" }, "integrationresponse:delete": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200" }, "integrationresponse:update": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200" } }, "responseParameters": { "method.response.header.operator": "integration.response.body.op", "method.response.header.operand_2": "integration.response.body.b", "method.response.header.operand_1": "integration.response.body.a" }, "responseTemplates": { "application/json": "#set($res = $input.path('$'))\n{\n \"result\": \"$res.a, $res.b, $res.op => $res.c\",\n \"a\" : \"$res.a\",\n \"b\" : \"$res.b\",\n \"op\" : \"$res.op\",\n \"c\" : \"$res.c\"\n}" }, "selectionPattern": "", "statusCode": "200" } } }
     * 
*

*

* * @return 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. *

*
*

*

Example:

*
Request
*

* *

     * GET /restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com Content-Length: 117 X-Amz-Date: 20160613T213210Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160613/us-east-1/apigateway/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash}
     * 
* *
Response
*

* The successful response returns a 200 OK status code and a payload similar to the following: *

* *
     * { "_links": { "curies": [ { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-{rel}.html", "name": "integration", "templated": true }, { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-response-{rel}.html", "name": "integrationresponse", "templated": true } ], "self": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" }, "integration:delete": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" }, "integration:responses": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200", "name": "200", "title": "200" }, "integration:update": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" }, "integrationresponse:put": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/{status_code}", "templated": true } }, "cacheKeyParameters": [], "cacheNamespace": "0cjtch", "credentials": "arn:aws:iam::123456789012:role/apigAwsProxyRole", "httpMethod": "POST", "passthroughBehavior": "WHEN_NO_MATCH", "requestTemplates": { "application/json": "{\n \"a\": \"$input.params('operand1')\",\n \"b\": \"$input.params('operand2')\", \n \"op\": \"$input.params('operator')\" \n}" }, "type": "AWS", "uri": "arn:aws:apigateway:us-west-2:lambda:path//2015-03-31/functions/arn:aws:lambda:us-west-2:123456789012:function:Calc/invocations", "_embedded": { "integration:responses": { "_links": { "self": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200", "name": "200", "title": "200" }, "integrationresponse:delete": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200" }, "integrationresponse:update": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200" } }, "responseParameters": { "method.response.header.operator": "integration.response.body.op", "method.response.header.operand_2": "integration.response.body.b", "method.response.header.operand_1": "integration.response.body.a" }, "responseTemplates": { "application/json": "#set($res = $input.path('$'))\n{\n \"result\": \"$res.a, $res.b, $res.op => $res.c\",\n \"a\" : \"$res.a\",\n \"b\" : \"$res.b\",\n \"op\" : \"$res.op\",\n \"c\" : \"$res.c\"\n}" }, "selectionPattern": "", "statusCode": "200" } } }
     * 
*

*

AWS CLI */ public Integration methodIntegration() { return methodIntegration; } @Override public Builder toBuilder() { return new BuilderImpl(this); } public static Builder builder() { return new BuilderImpl(); } public static Class serializableBuilderClass() { return BuilderImpl.class; } @Override public int hashCode() { int hashCode = 1; hashCode = 31 * hashCode + Objects.hashCode(httpMethod()); hashCode = 31 * hashCode + Objects.hashCode(authorizationType()); hashCode = 31 * hashCode + Objects.hashCode(authorizerId()); hashCode = 31 * hashCode + Objects.hashCode(apiKeyRequired()); hashCode = 31 * hashCode + Objects.hashCode(requestValidatorId()); hashCode = 31 * hashCode + Objects.hashCode(operationName()); hashCode = 31 * hashCode + Objects.hashCode(requestParameters()); hashCode = 31 * hashCode + Objects.hashCode(requestModels()); hashCode = 31 * hashCode + Objects.hashCode(methodResponses()); hashCode = 31 * hashCode + Objects.hashCode(methodIntegration()); return hashCode; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof Method)) { return false; } Method other = (Method) obj; return Objects.equals(httpMethod(), other.httpMethod()) && Objects.equals(authorizationType(), other.authorizationType()) && Objects.equals(authorizerId(), other.authorizerId()) && Objects.equals(apiKeyRequired(), other.apiKeyRequired()) && Objects.equals(requestValidatorId(), other.requestValidatorId()) && Objects.equals(operationName(), other.operationName()) && Objects.equals(requestParameters(), other.requestParameters()) && Objects.equals(requestModels(), other.requestModels()) && Objects.equals(methodResponses(), other.methodResponses()) && Objects.equals(methodIntegration(), other.methodIntegration()); } @Override public String toString() { return ToString.builder("Method").add("HttpMethod", httpMethod()).add("AuthorizationType", authorizationType()) .add("AuthorizerId", authorizerId()).add("ApiKeyRequired", apiKeyRequired()) .add("RequestValidatorId", requestValidatorId()).add("OperationName", operationName()) .add("RequestParameters", requestParameters()).add("RequestModels", requestModels()) .add("MethodResponses", methodResponses()).add("MethodIntegration", methodIntegration()).build(); } public Optional getValueForField(String fieldName, Class clazz) { switch (fieldName) { case "httpMethod": return Optional.of(clazz.cast(httpMethod())); case "authorizationType": return Optional.of(clazz.cast(authorizationType())); case "authorizerId": return Optional.of(clazz.cast(authorizerId())); case "apiKeyRequired": return Optional.of(clazz.cast(apiKeyRequired())); case "requestValidatorId": return Optional.of(clazz.cast(requestValidatorId())); case "operationName": return Optional.of(clazz.cast(operationName())); case "requestParameters": return Optional.of(clazz.cast(requestParameters())); case "requestModels": return Optional.of(clazz.cast(requestModels())); case "methodResponses": return Optional.of(clazz.cast(methodResponses())); case "methodIntegration": return Optional.of(clazz.cast(methodIntegration())); default: return Optional.empty(); } } @SdkInternalApi @Override public void marshall(ProtocolMarshaller protocolMarshaller) { MethodMarshaller.getInstance().marshall(this, protocolMarshaller); } public interface Builder extends CopyableBuilder { /** *

* The method's HTTP verb. *

* * @param httpMethod * The method's HTTP verb. * @return Returns a reference to this object so that method calls can be chained together. */ Builder httpMethod(String httpMethod); /** *

* 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. *

* * @param 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. * @return Returns a reference to this object so that method calls can be chained together. */ Builder authorizationType(String authorizationType); /** *

* The identifier of an Authorizer to use on this method. The authorizationType must be * CUSTOM. *

* * @param authorizerId * The identifier of an Authorizer to use on this method. The authorizationType must * be CUSTOM. * @return Returns a reference to this object so that method calls can be chained together. */ Builder authorizerId(String authorizerId); /** *

* A boolean flag specifying whether a valid ApiKey is required to invoke this method. *

* * @param apiKeyRequired * A boolean flag specifying whether a valid ApiKey is required to invoke this method. * @return Returns a reference to this object so that method calls can be chained together. */ Builder apiKeyRequired(Boolean apiKeyRequired); /** *

* The identifier of a RequestValidator for request validation. *

* * @param requestValidatorId * The identifier of a RequestValidator for request validation. * @return Returns a reference to this object so that method calls can be chained together. */ Builder requestValidatorId(String requestValidatorId); /** *

* A human-friendly operation identifier for the method. For example, you can assign the * operationName of ListPets for the GET /pets method in PetStore example. *

* * @param operationName * A human-friendly operation identifier for the method. For example, you can assign the * operationName of ListPets for the GET /pets method in PetStore example. * @return Returns a reference to this object so that method calls can be chained together. */ Builder operationName(String operationName); /** *

* A key-value map defining required or optional method request parameters that can be accepted by Amazon 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. *

* * @param requestParameters * A key-value map defining required or optional method request parameters that can be accepted by Amazon * 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. * @return Returns a reference to this object so that method calls can be chained together. */ Builder requestParameters(Map requestParameters); /** *

* 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). *

* * @param 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). * @return Returns a reference to this object so that method calls can be chained together. */ Builder requestModels(Map requestModels); /** *

* Gets a method response associated with a given HTTP status code. *

*
*

* The collection of method responses are encapsulated in a key-value map, where the key is a response's HTTP * status code and the value is a MethodResponse resource that specifies the response returned to the * caller from the back end through the integration response. *

*

Example: Get a 200 OK response of a GET method

Request
*

* *

         * GET /restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200 HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com Content-Length: 117 X-Amz-Date: 20160613T215008Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160613/us-east-1/apigateway/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash}
         * 
* *
Response
*

* The successful response returns a 200 OK status code and a payload similar to the following: *

* *
         * { "_links": { "curies": { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-response-{rel}.html", "name": "methodresponse", "templated": true }, "self": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200", "title": "200" }, "methodresponse:delete": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200" }, "methodresponse:update": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200" } }, "responseModels": { "application/json": "Empty" }, "responseParameters": { "method.response.header.operator": false, "method.response.header.operand_2": false, "method.response.header.operand_1": false }, "statusCode": "200" }
         * 
*

*

* * @param methodResponses * Gets a method response associated with a given HTTP status code. *

*
*

* The collection of method responses are encapsulated in a key-value map, where the key is a response's * HTTP status code and the value is a MethodResponse resource that specifies the response * returned to the caller from the back end through the integration response. *

*

Example: Get a 200 OK response of a GET method

Request
*

* *

         * GET /restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200 HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com Content-Length: 117 X-Amz-Date: 20160613T215008Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160613/us-east-1/apigateway/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash}
         * 
* *
Response
*

* The successful response returns a 200 OK status code and a payload similar to the * following: *

* *
         * { "_links": { "curies": { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-response-{rel}.html", "name": "methodresponse", "templated": true }, "self": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200", "title": "200" }, "methodresponse:delete": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200" }, "methodresponse:update": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200" } }, "responseModels": { "application/json": "Empty" }, "responseParameters": { "method.response.header.operator": false, "method.response.header.operand_2": false, "method.response.header.operand_1": false }, "statusCode": "200" }
         * 
*

*

AWS CLI * @return Returns a reference to this object so that method calls can be chained together. */ Builder methodResponses(Map methodResponses); /** *

* 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. *

*
*

*

Example:

*
Request
*

* *

         * GET /restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com Content-Length: 117 X-Amz-Date: 20160613T213210Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160613/us-east-1/apigateway/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash}
         * 
* *
Response
*

* The successful response returns a 200 OK status code and a payload similar to the following: *

* *
         * { "_links": { "curies": [ { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-{rel}.html", "name": "integration", "templated": true }, { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-response-{rel}.html", "name": "integrationresponse", "templated": true } ], "self": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" }, "integration:delete": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" }, "integration:responses": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200", "name": "200", "title": "200" }, "integration:update": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" }, "integrationresponse:put": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/{status_code}", "templated": true } }, "cacheKeyParameters": [], "cacheNamespace": "0cjtch", "credentials": "arn:aws:iam::123456789012:role/apigAwsProxyRole", "httpMethod": "POST", "passthroughBehavior": "WHEN_NO_MATCH", "requestTemplates": { "application/json": "{\n \"a\": \"$input.params('operand1')\",\n \"b\": \"$input.params('operand2')\", \n \"op\": \"$input.params('operator')\" \n}" }, "type": "AWS", "uri": "arn:aws:apigateway:us-west-2:lambda:path//2015-03-31/functions/arn:aws:lambda:us-west-2:123456789012:function:Calc/invocations", "_embedded": { "integration:responses": { "_links": { "self": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200", "name": "200", "title": "200" }, "integrationresponse:delete": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200" }, "integrationresponse:update": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200" } }, "responseParameters": { "method.response.header.operator": "integration.response.body.op", "method.response.header.operand_2": "integration.response.body.b", "method.response.header.operand_1": "integration.response.body.a" }, "responseTemplates": { "application/json": "#set($res = $input.path('$'))\n{\n \"result\": \"$res.a, $res.b, $res.op => $res.c\",\n \"a\" : \"$res.a\",\n \"b\" : \"$res.b\",\n \"op\" : \"$res.op\",\n \"c\" : \"$res.c\"\n}" }, "selectionPattern": "", "statusCode": "200" } } }
         * 
*

*

* * @param 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. *

*
*

*

Example:

*
Request
*

* *

         * GET /restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com Content-Length: 117 X-Amz-Date: 20160613T213210Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160613/us-east-1/apigateway/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash}
         * 
* *
Response
*

* The successful response returns a 200 OK status code and a payload similar to the * following: *

* *
         * { "_links": { "curies": [ { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-{rel}.html", "name": "integration", "templated": true }, { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-response-{rel}.html", "name": "integrationresponse", "templated": true } ], "self": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" }, "integration:delete": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" }, "integration:responses": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200", "name": "200", "title": "200" }, "integration:update": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" }, "integrationresponse:put": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/{status_code}", "templated": true } }, "cacheKeyParameters": [], "cacheNamespace": "0cjtch", "credentials": "arn:aws:iam::123456789012:role/apigAwsProxyRole", "httpMethod": "POST", "passthroughBehavior": "WHEN_NO_MATCH", "requestTemplates": { "application/json": "{\n \"a\": \"$input.params('operand1')\",\n \"b\": \"$input.params('operand2')\", \n \"op\": \"$input.params('operator')\" \n}" }, "type": "AWS", "uri": "arn:aws:apigateway:us-west-2:lambda:path//2015-03-31/functions/arn:aws:lambda:us-west-2:123456789012:function:Calc/invocations", "_embedded": { "integration:responses": { "_links": { "self": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200", "name": "200", "title": "200" }, "integrationresponse:delete": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200" }, "integrationresponse:update": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200" } }, "responseParameters": { "method.response.header.operator": "integration.response.body.op", "method.response.header.operand_2": "integration.response.body.b", "method.response.header.operand_1": "integration.response.body.a" }, "responseTemplates": { "application/json": "#set($res = $input.path('$'))\n{\n \"result\": \"$res.a, $res.b, $res.op => $res.c\",\n \"a\" : \"$res.a\",\n \"b\" : \"$res.b\",\n \"op\" : \"$res.op\",\n \"c\" : \"$res.c\"\n}" }, "selectionPattern": "", "statusCode": "200" } } }
         * 
*

*

AWS CLI * @return Returns a reference to this object so that method calls can be chained together. */ Builder methodIntegration(Integration 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. *

*
*

*

Example:

*
Request
*

* *

         * GET /restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com Content-Length: 117 X-Amz-Date: 20160613T213210Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160613/us-east-1/apigateway/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash}
         * 
* *
Response
*

* The successful response returns a 200 OK status code and a payload similar to the following: *

* *
         * { "_links": { "curies": [ { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-{rel}.html", "name": "integration", "templated": true }, { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-response-{rel}.html", "name": "integrationresponse", "templated": true } ], "self": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" }, "integration:delete": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" }, "integration:responses": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200", "name": "200", "title": "200" }, "integration:update": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" }, "integrationresponse:put": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/{status_code}", "templated": true } }, "cacheKeyParameters": [], "cacheNamespace": "0cjtch", "credentials": "arn:aws:iam::123456789012:role/apigAwsProxyRole", "httpMethod": "POST", "passthroughBehavior": "WHEN_NO_MATCH", "requestTemplates": { "application/json": "{\n \"a\": \"$input.params('operand1')\",\n \"b\": \"$input.params('operand2')\", \n \"op\": \"$input.params('operator')\" \n}" }, "type": "AWS", "uri": "arn:aws:apigateway:us-west-2:lambda:path//2015-03-31/functions/arn:aws:lambda:us-west-2:123456789012:function:Calc/invocations", "_embedded": { "integration:responses": { "_links": { "self": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200", "name": "200", "title": "200" }, "integrationresponse:delete": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200" }, "integrationresponse:update": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200" } }, "responseParameters": { "method.response.header.operator": "integration.response.body.op", "method.response.header.operand_2": "integration.response.body.b", "method.response.header.operand_1": "integration.response.body.a" }, "responseTemplates": { "application/json": "#set($res = $input.path('$'))\n{\n \"result\": \"$res.a, $res.b, $res.op => $res.c\",\n \"a\" : \"$res.a\",\n \"b\" : \"$res.b\",\n \"op\" : \"$res.op\",\n \"c\" : \"$res.c\"\n}" }, "selectionPattern": "", "statusCode": "200" } } }
         * 
*

*

* This is a convenience that creates an instance of the {@link Integration.Builder} avoiding the need to create * one manually via {@link Integration#builder()}. * * When the {@link Consumer} completes, {@link Integration.Builder#build()} is called immediately and its result * is passed to {@link #methodIntegration(Integration)}. * * @param methodIntegration * a consumer that will call methods on {@link Integration.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #methodIntegration(Integration) */ default Builder methodIntegration(Consumer methodIntegration) { return methodIntegration(Integration.builder().apply(methodIntegration).build()); } } static final class BuilderImpl implements Builder { private String httpMethod; private String authorizationType; private String authorizerId; private Boolean apiKeyRequired; private String requestValidatorId; private String operationName; private Map requestParameters; private Map requestModels; private Map methodResponses; private Integration methodIntegration; private BuilderImpl() { } private BuilderImpl(Method model) { httpMethod(model.httpMethod); authorizationType(model.authorizationType); authorizerId(model.authorizerId); apiKeyRequired(model.apiKeyRequired); requestValidatorId(model.requestValidatorId); operationName(model.operationName); requestParameters(model.requestParameters); requestModels(model.requestModels); methodResponses(model.methodResponses); methodIntegration(model.methodIntegration); } public final String getHttpMethod() { return httpMethod; } @Override public final Builder httpMethod(String httpMethod) { this.httpMethod = httpMethod; return this; } public final void setHttpMethod(String httpMethod) { this.httpMethod = httpMethod; } public final String getAuthorizationType() { return authorizationType; } @Override public final Builder authorizationType(String authorizationType) { this.authorizationType = authorizationType; return this; } public final void setAuthorizationType(String authorizationType) { this.authorizationType = authorizationType; } public final String getAuthorizerId() { return authorizerId; } @Override public final Builder authorizerId(String authorizerId) { this.authorizerId = authorizerId; return this; } public final void setAuthorizerId(String authorizerId) { this.authorizerId = authorizerId; } public final Boolean getApiKeyRequired() { return apiKeyRequired; } @Override public final Builder apiKeyRequired(Boolean apiKeyRequired) { this.apiKeyRequired = apiKeyRequired; return this; } public final void setApiKeyRequired(Boolean apiKeyRequired) { this.apiKeyRequired = apiKeyRequired; } public final String getRequestValidatorId() { return requestValidatorId; } @Override public final Builder requestValidatorId(String requestValidatorId) { this.requestValidatorId = requestValidatorId; return this; } public final void setRequestValidatorId(String requestValidatorId) { this.requestValidatorId = requestValidatorId; } public final String getOperationName() { return operationName; } @Override public final Builder operationName(String operationName) { this.operationName = operationName; return this; } public final void setOperationName(String operationName) { this.operationName = operationName; } public final Map getRequestParameters() { return requestParameters; } @Override public final Builder requestParameters(Map requestParameters) { this.requestParameters = MapOfStringToBooleanCopier.copy(requestParameters); return this; } public final void setRequestParameters(Map requestParameters) { this.requestParameters = MapOfStringToBooleanCopier.copy(requestParameters); } public final Map getRequestModels() { return requestModels; } @Override public final Builder requestModels(Map requestModels) { this.requestModels = MapOfStringToStringCopier.copy(requestModels); return this; } public final void setRequestModels(Map requestModels) { this.requestModels = MapOfStringToStringCopier.copy(requestModels); } public final Map getMethodResponses() { return methodResponses != null ? CollectionUtils.mapValues(methodResponses, MethodResponse::toBuilder) : null; } @Override public final Builder methodResponses(Map methodResponses) { this.methodResponses = MapOfMethodResponseCopier.copy(methodResponses); return this; } public final void setMethodResponses(Map methodResponses) { this.methodResponses = MapOfMethodResponseCopier.copyFromBuilder(methodResponses); } public final Integration.Builder getMethodIntegration() { return methodIntegration != null ? methodIntegration.toBuilder() : null; } @Override public final Builder methodIntegration(Integration methodIntegration) { this.methodIntegration = methodIntegration; return this; } public final void setMethodIntegration(Integration.BuilderImpl methodIntegration) { this.methodIntegration = methodIntegration != null ? methodIntegration.build() : null; } @Override public Method build() { return new Method(this); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy