Skip to main content

apis

Creates, updates, deletes or gets an api resource or lists apis in a region

Overview

Nameapis
TypeResource
DescriptionThe AWS::ApiGatewayV2::Api resource creates an API. WebSocket APIs and HTTP APIs are supported. For more information about WebSocket APIs, see About WebSocket APIs in API Gateway in the API Gateway Developer Guide. For more information about HTTP APIs, see HTTP APIs in the API Gateway Developer Guide.
Idawscc.apigatewayv2.apis

Fields

NameDatatypeDescription
route_selection_expressionstringThe route selection expression for the API. For HTTP APIs, the routeSelectionExpression must be ${request.method} ${request.path}. If not provided, this will be the default for HTTP APIs. This property is required for WebSocket APIs.
bodyobjectThe OpenAPI definition. Supported only for HTTP APIs. To import an HTTP API, you must specify a Body or BodyS3Location. If you specify a Body or BodyS3Location, don't specify CloudFormation resources such as AWS::ApiGatewayV2::Authorizer or AWS::ApiGatewayV2::Route. API Gateway doesn't support the combination of OpenAPI and CloudFormation resources.
body_s3_locationobjectThe S3 location of an OpenAPI definition. Supported only for HTTP APIs. To import an HTTP API, you must specify a Body or BodyS3Location. If you specify a Body or BodyS3Location, don't specify CloudFormation resources such as AWS::ApiGatewayV2::Authorizer or AWS::ApiGatewayV2::Route. API Gateway doesn't support the combination of OpenAPI and CloudFormation resources.
base_pathstringSpecifies how to interpret the base path of the API during import. Valid values are ignore, prepend, and split. The default value is ignore. To learn more, see Set the OpenAPI basePath Property. Supported only for HTTP APIs.
credentials_arnstringThis property is part of quick create. It specifies the credentials required for the integration, if any. For a Lambda integration, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify arn:aws:iam:::user/. To use resource-based permissions on supported AWS services, specify null. Currently, this property is not used for HTTP integrations. Supported only for HTTP APIs.
cors_configurationobjectA CORS configuration. Supported only for HTTP APIs. See Configuring CORS for more information.
route_keystringThis property is part of quick create. If you don't specify a routeKey, a default route of $default is created. The $default route acts as a catch-all for any request made to your API, for a particular stage. The $default route key can't be modified. You can add routes after creating the API, and you can update the route keys of additional routes. Supported only for HTTP APIs.
targetstringThis property is part of quick create. Quick create produces an API with an integration, a default catch-all route, and a default stage which is configured to automatically deploy changes. For HTTP integrations, specify a fully qualified URL. For Lambda integrations, specify a function ARN. The type of the integration will be HTTP_PROXY or AWS_PROXY, respectively. Supported only for HTTP APIs.
fail_on_warningsbooleanSpecifies whether to rollback the API creation when a warning is encountered. By default, API creation continues if a warning is encountered.
api_endpointstring
descriptionstringThe description of the API.
disable_execute_api_endpointbooleanSpecifies whether clients can invoke your API by using the default execute-api endpoint. By default, clients can invoke your API with the default https://{api_id}.execute-api.{region}.amazonaws.com endpoint. To require that clients use a custom domain name to invoke your API, disable the default endpoint.
disable_schema_validationbooleanAvoid validating models when creating a deployment. Supported only for WebSocket APIs.
namestringThe name of the API. Required unless you specify an OpenAPI definition for Body or S3BodyLocation.
versionstringA version identifier for the API.
protocol_typestringThe API protocol. Valid values are WEBSOCKET or HTTP. Required unless you specify an OpenAPI definition for Body or S3BodyLocation.
api_idstring
tagsobjectThe collection of tags. Each tag element is associated with a given resource.
api_key_selection_expressionstringAn API key selection expression. Supported only for WebSocket APIs. See API Key Selection Expressions.
ip_address_typestring
regionstringAWS region.

For more information, see AWS::ApiGatewayV2::Api.

Methods

NameResourceAccessible byRequired Params
create_resourceapisINSERTregion
delete_resourceapisDELETEIdentifier, region
update_resourceapisUPDATEIdentifier, PatchDocument, region
list_resourcesapis_list_onlySELECTregion
get_resourceapisSELECTIdentifier, region

SELECT examples

Gets all properties from an individual api.

SELECT
region,
route_selection_expression,
body,
body_s3_location,
base_path,
credentials_arn,
cors_configuration,
route_key,
target,
fail_on_warnings,
api_endpoint,
description,
disable_execute_api_endpoint,
disable_schema_validation,
name,
version,
protocol_type,
api_id,
tags,
api_key_selection_expression,
ip_address_type
FROM awscc.apigatewayv2.apis
WHERE
region = '{{ region }}' AND
Identifier = '{{ api_id }}';

INSERT example

Use the following StackQL query and manifest file to create a new api resource, using stack-deploy.

/*+ create */
INSERT INTO awscc.apigatewayv2.apis (
RouteSelectionExpression,
Body,
BodyS3Location,
BasePath,
CredentialsArn,
CorsConfiguration,
RouteKey,
Target,
FailOnWarnings,
Description,
DisableExecuteApiEndpoint,
DisableSchemaValidation,
Name,
Version,
ProtocolType,
Tags,
ApiKeySelectionExpression,
IpAddressType,
region
)
SELECT
'{{ route_selection_expression }}',
'{{ body }}',
'{{ body_s3_location }}',
'{{ base_path }}',
'{{ credentials_arn }}',
'{{ cors_configuration }}',
'{{ route_key }}',
'{{ target }}',
'{{ fail_on_warnings }}',
'{{ description }}',
'{{ disable_execute_api_endpoint }}',
'{{ disable_schema_validation }}',
'{{ name }}',
'{{ version }}',
'{{ protocol_type }}',
'{{ tags }}',
'{{ api_key_selection_expression }}',
'{{ ip_address_type }}',
'{{ region }}'
RETURNING
ErrorCode,
EventTime,
Identifier,
Operation,
OperationStatus,
RequestToken,
ResourceModel,
RetryAfter,
StatusMessage,
TypeName
;

UPDATE example

Use the following StackQL query and manifest file to update a api resource, using stack-deploy.

/*+ update */
UPDATE awscc.apigatewayv2.apis
SET PatchDocument = string('{{ {
"RouteSelectionExpression": route_selection_expression,
"Body": body,
"BodyS3Location": body_s3_location,
"BasePath": base_path,
"CredentialsArn": credentials_arn,
"CorsConfiguration": cors_configuration,
"RouteKey": route_key,
"Target": target,
"FailOnWarnings": fail_on_warnings,
"Description": description,
"DisableExecuteApiEndpoint": disable_execute_api_endpoint,
"DisableSchemaValidation": disable_schema_validation,
"Name": name,
"Version": version,
"Tags": tags,
"ApiKeySelectionExpression": api_key_selection_expression,
"IpAddressType": ip_address_type
} | generate_patch_document }}')
WHERE
region = '{{ region }}' AND
Identifier = '{{ api_id }}'
RETURNING
ErrorCode,
EventTime,
Identifier,
Operation,
OperationStatus,
RequestToken,
ResourceModel,
RetryAfter,
StatusMessage,
TypeName
;

DELETE example

/*+ delete */
DELETE FROM awscc.apigatewayv2.apis
WHERE
Identifier = '{{ api_id }}' AND
region = '{{ region }}'
RETURNING
ErrorCode,
EventTime,
Identifier,
Operation,
OperationStatus,
RequestToken,
ResourceModel,
RetryAfter,
StatusMessage,
TypeName
;

Additional Parameters

Mutable resources in the Cloud Control provider support additional optional parameters which can be supplied with INSERT, UPDATE, or DELETE operations. These include:

ParameterDescription
ClientToken
A unique identifier to ensure the idempotency of the resource request.This allows the provider to accurately distinguish between retries and new requests.
A client token is valid for 36 hours once used.
After that, a resource request with the same client token is treated as a new request.
If you do not specify a client token, one is generated for inclusion in the request.
RoleArn
The ARN of the IAM role used to perform this resource operation.The role specified must have the permissions required for this operation.
If you do not specify a role, a temporary session is created using your AWS user credentials.
TypeVersionId
For private resource types, the type version to use in this resource operation.If you do not specify a resource version, the default version is used.

Permissions

To operate on the apis resource, the following permissions are required:

apigateway:POST,
apigateway:PUT,
s3:getObject