putIntegration method
- required String httpMethod,
- required String resourceId,
- required String restApiId,
- required IntegrationType type,
- List<
String> ? cacheKeyParameters, - String? cacheNamespace,
- String? connectionId,
- ConnectionType? connectionType,
- ContentHandlingStrategy? contentHandling,
- String? credentials,
- String? integrationHttpMethod,
- String? integrationTarget,
- String? passthroughBehavior,
- Map<
String, String> ? requestParameters, - Map<
String, String> ? requestTemplates, - ResponseTransferMode? responseTransferMode,
- int? timeoutInMillis,
- TlsConfig? tlsConfig,
- String? uri,
Sets up a method's integration.
May throw BadRequestException.
May throw ConflictException.
May throw LimitExceededException.
May throw NotFoundException.
May throw TooManyRequestsException.
May throw UnauthorizedException.
Parameter httpMethod :
Specifies the HTTP method for the integration.
Parameter resourceId :
Specifies a put integration request's resource ID.
Parameter restApiId :
The string identifier of the associated RestApi.
Parameter type :
Specifies a put integration input's type.
Parameter cacheKeyParameters :
A list of request parameters whose values API Gateway caches. To be valid
values for cacheKeyParameters, these parameters must also be
specified for Method requestParameters.
Parameter cacheNamespace :
Specifies a group of related cached parameters. By default, API Gateway
uses the resource ID as the cacheNamespace. You can specify
the same cacheNamespace across resources to return the same
cached data for requests to different resources.
Parameter connectionId :
The ID of the VpcLink used for the integration. Specify this value only if
you specify VPC_LINK as the connection type.
Parameter connectionType :
The type of the network connection to the integration endpoint. The valid
value is INTERNET for connections through the public routable
internet or VPC_LINK for private connections between API
Gateway and a network load balancer in a VPC. The default value is
INTERNET.
Parameter contentHandling :
Specifies how to handle request payload content type conversions.
Supported values are CONVERT_TO_BINARY and
CONVERT_TO_TEXT, with the following behaviors:
If this property is not defined, the request payload will be passed
through from the method request to integration request without
modification, provided that the passthroughBehavior is
configured to support payload pass-through.
Parameter credentials :
Specifies whether credentials are required for a put integration.
Parameter integrationHttpMethod :
The HTTP method for the integration.
Parameter integrationTarget :
The ALB or NLB listener to send the request to.
Parameter 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.
Parameter 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.
Parameter 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.
Parameter responseTransferMode :
The response transfer mode of the integration.
Parameter timeoutInMillis :
Custom timeout between 50 and 29,000 milliseconds. The default value is
29,000 milliseconds or 29 seconds. You can increase the default value to
longer than 29 seconds for Regional or private APIs only.
Parameter uri :
Specifies Uniform Resource Identifier (URI) of the integration endpoint.
For HTTP or HTTP_PROXY integrations, the URI must be a fully
formed, encoded HTTP(S) URL according to the RFC-3986 specification, for
either standard integration, where connectionType is not
VPC_LINK, or private integration, where
connectionType is VPC_LINK. For a private HTTP
integration, the URI is not used for routing. For AWS or
AWS_PROXY integrations, the URI is of the form
arn:aws:apigateway:{region}:{subdomain.service|service}:path|action/{service_api}.
Here, {Region} is the API Gateway region (e.g., us-east-1); {service} is
the name of the integrated Amazon Web Services service (e.g., s3); and
{subdomain} is a designated subdomain supported by certain Amazon Web
Services service for fast host-name lookup. action can be used for an
Amazon Web Services service action-based API, using an
Action={name}&{p1}={v1}&p2={v2}... query string. The ensuing {service_api}
refers to a supported action {name} plus any required input parameters.
Alternatively, path can be used for an Amazon Web Services service
path-based API. The ensuing service_api refers to the path to an Amazon
Web Services service resource, including the region of the integrated
Amazon Web Services service, if applicable. For example, for integration
with the S3 API of GetObject, the uri can be
either
arn:aws:apigateway:us-west-2:s3:action/GetObject&Bucket={bucket}&Key={key}
or arn:aws:apigateway:us-west-2:s3:path/{bucket}/{key}.
Implementation
Future<Integration> putIntegration({
required String httpMethod,
required String resourceId,
required String restApiId,
required IntegrationType type,
List<String>? cacheKeyParameters,
String? cacheNamespace,
String? connectionId,
ConnectionType? connectionType,
ContentHandlingStrategy? contentHandling,
String? credentials,
String? integrationHttpMethod,
String? integrationTarget,
String? passthroughBehavior,
Map<String, String>? requestParameters,
Map<String, String>? requestTemplates,
ResponseTransferMode? responseTransferMode,
int? timeoutInMillis,
TlsConfig? tlsConfig,
String? uri,
}) async {
final $payload = <String, dynamic>{
'type': type.value,
if (cacheKeyParameters != null) 'cacheKeyParameters': cacheKeyParameters,
if (cacheNamespace != null) 'cacheNamespace': cacheNamespace,
if (connectionId != null) 'connectionId': connectionId,
if (connectionType != null) 'connectionType': connectionType.value,
if (contentHandling != null) 'contentHandling': contentHandling.value,
if (credentials != null) 'credentials': credentials,
if (integrationHttpMethod != null) 'httpMethod': integrationHttpMethod,
if (integrationTarget != null) 'integrationTarget': integrationTarget,
if (passthroughBehavior != null)
'passthroughBehavior': passthroughBehavior,
if (requestParameters != null) 'requestParameters': requestParameters,
if (requestTemplates != null) 'requestTemplates': requestTemplates,
if (responseTransferMode != null)
'responseTransferMode': responseTransferMode.value,
if (timeoutInMillis != null) 'timeoutInMillis': timeoutInMillis,
if (tlsConfig != null) 'tlsConfig': tlsConfig,
if (uri != null) 'uri': uri,
};
final response = await _protocol.send(
payload: $payload,
method: 'PUT',
requestUri:
'/restapis/${Uri.encodeComponent(restApiId)}/resources/${Uri.encodeComponent(resourceId)}/methods/${Uri.encodeComponent(httpMethod)}/integration',
exceptionFnMap: _exceptionFns,
);
return Integration.fromJson(response);
}