io.cloudshiftdev.awscdk.services.apigateway.RestApi.kt Maven / Gradle / Ivy
The newest version!
@file:Suppress("RedundantVisibilityModifier","RedundantUnitReturnType","RemoveRedundantQualifierName","unused","UnusedImport","ClassName","REDUNDANT_PROJECTION","DEPRECATION")
package io.cloudshiftdev.awscdk.services.apigateway
import io.cloudshiftdev.awscdk.RemovalPolicy
import io.cloudshiftdev.awscdk.Size
import io.cloudshiftdev.awscdk.common.CdkDslMarker
import io.cloudshiftdev.awscdk.services.iam.PolicyDocument
import kotlin.Any
import kotlin.Boolean
import kotlin.Deprecated
import kotlin.Number
import kotlin.String
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import kotlin.jvm.JvmName
import io.cloudshiftdev.constructs.Construct as CloudshiftdevConstructsConstruct
import software.constructs.Construct as SoftwareConstructsConstruct
/**
* Represents a REST API in Amazon API Gateway.
*
* Use `addResource` and `addMethod` to configure the API model.
*
* By default, the API will automatically be deployed and accessible from a
* public endpoint.
*
* Example:
*
* ```
* StateMachine stateMachine = StateMachine.Builder.create(this, "MyStateMachine")
* .stateMachineType(StateMachineType.EXPRESS)
* .definition(Chain.start(new Pass(this, "Pass")))
* .build();
* RestApi api = RestApi.Builder.create(this, "Api")
* .restApiName("MyApi")
* .build();
* api.root.addMethod("GET", StepFunctionsIntegration.startExecution(stateMachine));
* ```
*/
public open class RestApi(
cdkObject: software.amazon.awscdk.services.apigateway.RestApi,
) : RestApiBase(cdkObject) {
public constructor(scope: CloudshiftdevConstructsConstruct, id: String) :
this(software.amazon.awscdk.services.apigateway.RestApi(scope.let(CloudshiftdevConstructsConstruct.Companion::unwrap),
id)
)
public constructor(
scope: CloudshiftdevConstructsConstruct,
id: String,
props: RestApiProps,
) :
this(software.amazon.awscdk.services.apigateway.RestApi(scope.let(CloudshiftdevConstructsConstruct.Companion::unwrap),
id, props.let(RestApiProps.Companion::unwrap))
)
public constructor(
scope: CloudshiftdevConstructsConstruct,
id: String,
props: RestApiProps.Builder.() -> Unit,
) : this(scope, id, RestApiProps(props)
)
/**
* Adds a new model.
*
* @param id
* @param props
*/
public open fun addModel(id: String, props: ModelOptions): Model = unwrap(this).addModel(id,
props.let(ModelOptions.Companion::unwrap)).let(Model::wrap)
/**
* Adds a new model.
*
* @param id
* @param props
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("eff4d051b66631acf1d61cfb56e21ad785398ccd3b2641b9427d5d0cbbc04191")
public open fun addModel(id: String, props: ModelOptions.Builder.() -> Unit): Model = addModel(id,
ModelOptions(props))
/**
* Adds a new request validator.
*
* @param id
* @param props
*/
public open fun addRequestValidator(id: String, props: RequestValidatorOptions): RequestValidator
= unwrap(this).addRequestValidator(id,
props.let(RequestValidatorOptions.Companion::unwrap)).let(RequestValidator::wrap)
/**
* Adds a new request validator.
*
* @param id
* @param props
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("ce2f1e4eb3e8e7f12db38bbe3bac25ebcb4e89eedd643abc90f0a23f6687b0f0")
public open fun addRequestValidator(id: String,
props: RequestValidatorOptions.Builder.() -> Unit): RequestValidator = addRequestValidator(id,
RequestValidatorOptions(props))
/**
* The list of methods bound to this RestApi.
*/
public open fun methods(): List = unwrap(this).getMethods().map(Method::wrap)
/**
* The ID of this API Gateway RestApi.
*/
public override fun restApiId(): String = unwrap(this).getRestApiId()
/**
* The resource ID of the root resource.
*/
public override fun restApiRootResourceId(): String = unwrap(this).getRestApiRootResourceId()
/**
* Represents the root resource of this API endpoint ('/').
*
* Resources and Methods are added to this resource.
*/
public override fun root(): IResource = unwrap(this).getRoot().let(IResource::wrap)
/**
* A fluent builder for [io.cloudshiftdev.awscdk.services.apigateway.RestApi].
*/
@CdkDslMarker
public interface Builder {
/**
* The source of the API key for metering requests according to a usage plan.
*
* Default: - Metering is disabled.
*
* @param apiKeySourceType The source of the API key for metering requests according to a usage
* plan.
*/
public fun apiKeySourceType(apiKeySourceType: ApiKeySourceType)
/**
* The list of binary media mime-types that are supported by the RestApi resource, such as
* "image/png" or "application/octet-stream".
*
* Default: - RestApi supports only UTF-8-encoded text payloads.
*
* @param binaryMediaTypes The list of binary media mime-types that are supported by the RestApi
* resource, such as "image/png" or "application/octet-stream".
*/
public fun binaryMediaTypes(binaryMediaTypes: List)
/**
* The list of binary media mime-types that are supported by the RestApi resource, such as
* "image/png" or "application/octet-stream".
*
* Default: - RestApi supports only UTF-8-encoded text payloads.
*
* @param binaryMediaTypes The list of binary media mime-types that are supported by the RestApi
* resource, such as "image/png" or "application/octet-stream".
*/
public fun binaryMediaTypes(vararg binaryMediaTypes: String)
/**
* The ID of the API Gateway RestApi resource that you want to clone.
*
* Default: - None.
*
* @param cloneFrom The ID of the API Gateway RestApi resource that you want to clone.
*/
public fun cloneFrom(cloneFrom: IRestApi)
/**
* Automatically configure an AWS CloudWatch role for API Gateway.
*
* Default: - false if `@aws-cdk/aws-apigateway:disableCloudWatchRole` is enabled, true
* otherwise
*
* @param cloudWatchRole Automatically configure an AWS CloudWatch role for API Gateway.
*/
public fun cloudWatchRole(cloudWatchRole: Boolean)
/**
* The removal policy applied to the AWS CloudWatch role when this resource is removed from the
* application.
*
* Requires `cloudWatchRole` to be enabled.
*
* Default: - RemovalPolicy.RETAIN
*
* @param cloudWatchRoleRemovalPolicy The removal policy applied to the AWS CloudWatch role when
* this resource is removed from the application.
*/
public fun cloudWatchRoleRemovalPolicy(cloudWatchRoleRemovalPolicy: RemovalPolicy)
/**
* Adds a CORS preflight OPTIONS method to this resource and all child resources.
*
* You can add CORS at the resource-level using `addCorsPreflight`.
*
* Default: - CORS is disabled
*
* @param defaultCorsPreflightOptions Adds a CORS preflight OPTIONS method to this resource and
* all child resources.
*/
public fun defaultCorsPreflightOptions(defaultCorsPreflightOptions: CorsOptions)
/**
* Adds a CORS preflight OPTIONS method to this resource and all child resources.
*
* You can add CORS at the resource-level using `addCorsPreflight`.
*
* Default: - CORS is disabled
*
* @param defaultCorsPreflightOptions Adds a CORS preflight OPTIONS method to this resource and
* all child resources.
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("6e88b4f120655ddc2a5db201b9b3ca62817a48ac82a3a90e30b782e20b041366")
public
fun defaultCorsPreflightOptions(defaultCorsPreflightOptions: CorsOptions.Builder.() -> Unit)
/**
* An integration to use as a default for all methods created within this API unless an
* integration is specified.
*
* Default: - Inherited from parent.
*
* @param defaultIntegration An integration to use as a default for all methods created within
* this API unless an integration is specified.
*/
public fun defaultIntegration(defaultIntegration: Integration)
/**
* An integration to use as a default for all methods created within this API unless an
* integration is specified.
*
* Default: - Inherited from parent.
*
* @param defaultIntegration An integration to use as a default for all methods created within
* this API unless an integration is specified.
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("d5c997ad14fd0c71129b652ab14a5ab82822fb6857fc0f69eb973f2d50106a4d")
public fun defaultIntegration(defaultIntegration: Integration.Builder.() -> Unit)
/**
* Method options to use as a default for all methods created within this API unless custom
* options are specified.
*
* Default: - Inherited from parent.
*
* @param defaultMethodOptions Method options to use as a default for all methods created within
* this API unless custom options are specified.
*/
public fun defaultMethodOptions(defaultMethodOptions: MethodOptions)
/**
* Method options to use as a default for all methods created within this API unless custom
* options are specified.
*
* Default: - Inherited from parent.
*
* @param defaultMethodOptions Method options to use as a default for all methods created within
* this API unless custom options are specified.
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("4cf482e5d6011a553d707114dbdf2daf508ad8ee4b371a21fb3ea70600b0755e")
public fun defaultMethodOptions(defaultMethodOptions: MethodOptions.Builder.() -> Unit)
/**
* Indicates if a Deployment should be automatically created for this API, and recreated when
* the API model (resources, methods) changes.
*
* Since API Gateway deployments are immutable, When this option is enabled
* (by default), an AWS::ApiGateway::Deployment resource will automatically
* created with a logical ID that hashes the API model (methods, resources
* and options). This means that when the model changes, the logical ID of
* this CloudFormation resource will change, and a new deployment will be
* created.
*
* If this is set, `latestDeployment` will refer to the `Deployment` object
* and `deploymentStage` will refer to a `Stage` that points to this
* deployment. To customize the stage options, use the `deployOptions`
* property.
*
* A CloudFormation Output will also be defined with the root URL endpoint
* of this REST API.
*
* Default: true
*
* @param deploy Indicates if a Deployment should be automatically created for this API, and
* recreated when the API model (resources, methods) changes.
*/
public fun deploy(deploy: Boolean)
/**
* Options for the API Gateway stage that will always point to the latest deployment when
* `deploy` is enabled.
*
* If `deploy` is disabled,
* this value cannot be set.
*
* Default: - Based on defaults of `StageOptions`.
*
* @param deployOptions Options for the API Gateway stage that will always point to the latest
* deployment when `deploy` is enabled.
*/
public fun deployOptions(deployOptions: StageOptions)
/**
* Options for the API Gateway stage that will always point to the latest deployment when
* `deploy` is enabled.
*
* If `deploy` is disabled,
* this value cannot be set.
*
* Default: - Based on defaults of `StageOptions`.
*
* @param deployOptions Options for the API Gateway stage that will always point to the latest
* deployment when `deploy` is enabled.
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("2e5a9374ecff524b5f253cf8988619066f0b619a7b913fd15eaa9b87de990f00")
public fun deployOptions(deployOptions: StageOptions.Builder.() -> Unit)
/**
* A description of the RestApi construct.
*
* Default: - 'Automatically created by the RestApi construct'
*
* @param description A description of the RestApi construct.
*/
public fun description(description: String)
/**
* Specifies whether clients can invoke the API using the default execute-api endpoint.
*
* To require that clients use a custom domain name to invoke the
* API, disable the default endpoint.
*
* Default: false
*
* [Documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html)
* @param disableExecuteApiEndpoint Specifies whether clients can invoke the API using the
* default execute-api endpoint.
*/
public fun disableExecuteApiEndpoint(disableExecuteApiEndpoint: Boolean)
/**
* Configure a custom domain name and map it to this API.
*
* Default: - no domain name is defined, use `addDomainName` or directly define a `DomainName`.
*
* @param domainName Configure a custom domain name and map it to this API.
*/
public fun domainName(domainName: DomainNameOptions)
/**
* Configure a custom domain name and map it to this API.
*
* Default: - no domain name is defined, use `addDomainName` or directly define a `DomainName`.
*
* @param domainName Configure a custom domain name and map it to this API.
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("22fddb3d13e3a75c1d122c19e64996063c633bbca1dd33c870303677c927f2c5")
public fun domainName(domainName: DomainNameOptions.Builder.() -> Unit)
/**
* The EndpointConfiguration property type specifies the endpoint types of a REST API.
*
* Default: EndpointType.EDGE
*
* [Documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-restapi-endpointconfiguration.html)
* @param endpointConfiguration The EndpointConfiguration property type specifies the endpoint
* types of a REST API.
*/
public fun endpointConfiguration(endpointConfiguration: EndpointConfiguration)
/**
* The EndpointConfiguration property type specifies the endpoint types of a REST API.
*
* Default: EndpointType.EDGE
*
* [Documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-restapi-endpointconfiguration.html)
* @param endpointConfiguration The EndpointConfiguration property type specifies the endpoint
* types of a REST API.
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("ff917eb8a2a3075cea4a993c83e151b41734e83f19db3c953ca04ff8b247e9d9")
public
fun endpointConfiguration(endpointConfiguration: EndpointConfiguration.Builder.() -> Unit)
/**
* Export name for the CfnOutput containing the API endpoint.
*
* Default: - when no export name is given, output will be created without export
*
* @param endpointExportName Export name for the CfnOutput containing the API endpoint.
*/
public fun endpointExportName(endpointExportName: String)
/**
* A list of the endpoint types of the API.
*
* Use this property when creating
* an API.
*
* Default: EndpointType.EDGE
*
* @param endpointTypes A list of the endpoint types of the API.
*/
public fun endpointTypes(endpointTypes: List)
/**
* A list of the endpoint types of the API.
*
* Use this property when creating
* an API.
*
* Default: EndpointType.EDGE
*
* @param endpointTypes A list of the endpoint types of the API.
*/
public fun endpointTypes(vararg endpointTypes: EndpointType)
/**
* Indicates whether to roll back the resource if a warning occurs while API Gateway is creating
* the RestApi resource.
*
* Default: false
*
* @param failOnWarnings Indicates whether to roll back the resource if a warning occurs while
* API Gateway is creating the RestApi resource.
*/
public fun failOnWarnings(failOnWarnings: Boolean)
/**
* A Size(in bytes, kibibytes, mebibytes etc) that is used to enable compression (with
* non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable compression (when
* undefined) on an API.
*
* When compression is enabled, compression or
* decompression is not applied on the payload if the payload size is
* smaller than this value. Setting it to zero allows compression for any
* payload size.
*
* Default: - Compression is disabled.
*
* @param minCompressionSize A Size(in bytes, kibibytes, mebibytes etc) that is used to enable
* compression (with non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable
* compression (when undefined) on an API.
*/
public fun minCompressionSize(minCompressionSize: Size)
/**
* (deprecated) A nullable integer that is used to enable compression (with non-negative between
* 0 and 10485760 (10M) bytes, inclusive) or disable compression (when undefined) on an API.
*
* When compression is enabled, compression or
* decompression is not applied on the payload if the payload size is
* smaller than this value. Setting it to zero allows compression for any
* payload size.
*
* Default: - Compression is disabled.
*
* * superseded by `minCompressionSize`
* @param minimumCompressionSize A nullable integer that is used to enable compression (with
* non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable compression (when
* undefined) on an API.
*/
@Deprecated(message = "deprecated in CDK")
public fun minimumCompressionSize(minimumCompressionSize: Number)
/**
* Custom header parameters for the request.
*
* Default: - No parameters.
*
* [Documentation](https://docs.aws.amazon.com/cli/latest/reference/apigateway/import-rest-api.html)
* @param parameters Custom header parameters for the request.
*/
public fun parameters(parameters: Map)
/**
* A policy document that contains the permissions for this RestApi.
*
* Default: - No policy.
*
* @param policy A policy document that contains the permissions for this RestApi.
*/
public fun policy(policy: PolicyDocument)
/**
* A policy document that contains the permissions for this RestApi.
*
* Default: - No policy.
*
* @param policy A policy document that contains the permissions for this RestApi.
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("a98800dfb2d1c8d802ecb04e1a3fd4dde3cd10da4d43d0e7f2e95dd97a07d13b")
public fun policy(policy: PolicyDocument.Builder.() -> Unit)
/**
* A name for the API Gateway RestApi resource.
*
* Default: - ID of the RestApi construct.
*
* @param restApiName A name for the API Gateway RestApi resource.
*/
public fun restApiName(restApiName: String)
/**
* Retains old deployment resources when the API changes.
*
* This allows
* manually reverting stages to point to old deployments via the AWS
* Console.
*
* Default: false
*
* @param retainDeployments Retains old deployment resources when the API changes.
*/
public fun retainDeployments(retainDeployments: Boolean)
}
private class BuilderImpl(
scope: SoftwareConstructsConstruct,
id: String,
) : Builder {
private val cdkBuilder: software.amazon.awscdk.services.apigateway.RestApi.Builder =
software.amazon.awscdk.services.apigateway.RestApi.Builder.create(scope, id)
/**
* The source of the API key for metering requests according to a usage plan.
*
* Default: - Metering is disabled.
*
* @param apiKeySourceType The source of the API key for metering requests according to a usage
* plan.
*/
override fun apiKeySourceType(apiKeySourceType: ApiKeySourceType) {
cdkBuilder.apiKeySourceType(apiKeySourceType.let(ApiKeySourceType.Companion::unwrap))
}
/**
* The list of binary media mime-types that are supported by the RestApi resource, such as
* "image/png" or "application/octet-stream".
*
* Default: - RestApi supports only UTF-8-encoded text payloads.
*
* @param binaryMediaTypes The list of binary media mime-types that are supported by the RestApi
* resource, such as "image/png" or "application/octet-stream".
*/
override fun binaryMediaTypes(binaryMediaTypes: List) {
cdkBuilder.binaryMediaTypes(binaryMediaTypes)
}
/**
* The list of binary media mime-types that are supported by the RestApi resource, such as
* "image/png" or "application/octet-stream".
*
* Default: - RestApi supports only UTF-8-encoded text payloads.
*
* @param binaryMediaTypes The list of binary media mime-types that are supported by the RestApi
* resource, such as "image/png" or "application/octet-stream".
*/
override fun binaryMediaTypes(vararg binaryMediaTypes: String): Unit =
binaryMediaTypes(binaryMediaTypes.toList())
/**
* The ID of the API Gateway RestApi resource that you want to clone.
*
* Default: - None.
*
* @param cloneFrom The ID of the API Gateway RestApi resource that you want to clone.
*/
override fun cloneFrom(cloneFrom: IRestApi) {
cdkBuilder.cloneFrom(cloneFrom.let(IRestApi.Companion::unwrap))
}
/**
* Automatically configure an AWS CloudWatch role for API Gateway.
*
* Default: - false if `@aws-cdk/aws-apigateway:disableCloudWatchRole` is enabled, true
* otherwise
*
* @param cloudWatchRole Automatically configure an AWS CloudWatch role for API Gateway.
*/
override fun cloudWatchRole(cloudWatchRole: Boolean) {
cdkBuilder.cloudWatchRole(cloudWatchRole)
}
/**
* The removal policy applied to the AWS CloudWatch role when this resource is removed from the
* application.
*
* Requires `cloudWatchRole` to be enabled.
*
* Default: - RemovalPolicy.RETAIN
*
* @param cloudWatchRoleRemovalPolicy The removal policy applied to the AWS CloudWatch role when
* this resource is removed from the application.
*/
override fun cloudWatchRoleRemovalPolicy(cloudWatchRoleRemovalPolicy: RemovalPolicy) {
cdkBuilder.cloudWatchRoleRemovalPolicy(cloudWatchRoleRemovalPolicy.let(RemovalPolicy.Companion::unwrap))
}
/**
* Adds a CORS preflight OPTIONS method to this resource and all child resources.
*
* You can add CORS at the resource-level using `addCorsPreflight`.
*
* Default: - CORS is disabled
*
* @param defaultCorsPreflightOptions Adds a CORS preflight OPTIONS method to this resource and
* all child resources.
*/
override fun defaultCorsPreflightOptions(defaultCorsPreflightOptions: CorsOptions) {
cdkBuilder.defaultCorsPreflightOptions(defaultCorsPreflightOptions.let(CorsOptions.Companion::unwrap))
}
/**
* Adds a CORS preflight OPTIONS method to this resource and all child resources.
*
* You can add CORS at the resource-level using `addCorsPreflight`.
*
* Default: - CORS is disabled
*
* @param defaultCorsPreflightOptions Adds a CORS preflight OPTIONS method to this resource and
* all child resources.
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("6e88b4f120655ddc2a5db201b9b3ca62817a48ac82a3a90e30b782e20b041366")
override
fun defaultCorsPreflightOptions(defaultCorsPreflightOptions: CorsOptions.Builder.() -> Unit):
Unit = defaultCorsPreflightOptions(CorsOptions(defaultCorsPreflightOptions))
/**
* An integration to use as a default for all methods created within this API unless an
* integration is specified.
*
* Default: - Inherited from parent.
*
* @param defaultIntegration An integration to use as a default for all methods created within
* this API unless an integration is specified.
*/
override fun defaultIntegration(defaultIntegration: Integration) {
cdkBuilder.defaultIntegration(defaultIntegration.let(Integration.Companion::unwrap))
}
/**
* An integration to use as a default for all methods created within this API unless an
* integration is specified.
*
* Default: - Inherited from parent.
*
* @param defaultIntegration An integration to use as a default for all methods created within
* this API unless an integration is specified.
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("d5c997ad14fd0c71129b652ab14a5ab82822fb6857fc0f69eb973f2d50106a4d")
override fun defaultIntegration(defaultIntegration: Integration.Builder.() -> Unit): Unit =
defaultIntegration(Integration(defaultIntegration))
/**
* Method options to use as a default for all methods created within this API unless custom
* options are specified.
*
* Default: - Inherited from parent.
*
* @param defaultMethodOptions Method options to use as a default for all methods created within
* this API unless custom options are specified.
*/
override fun defaultMethodOptions(defaultMethodOptions: MethodOptions) {
cdkBuilder.defaultMethodOptions(defaultMethodOptions.let(MethodOptions.Companion::unwrap))
}
/**
* Method options to use as a default for all methods created within this API unless custom
* options are specified.
*
* Default: - Inherited from parent.
*
* @param defaultMethodOptions Method options to use as a default for all methods created within
* this API unless custom options are specified.
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("4cf482e5d6011a553d707114dbdf2daf508ad8ee4b371a21fb3ea70600b0755e")
override fun defaultMethodOptions(defaultMethodOptions: MethodOptions.Builder.() -> Unit): Unit
= defaultMethodOptions(MethodOptions(defaultMethodOptions))
/**
* Indicates if a Deployment should be automatically created for this API, and recreated when
* the API model (resources, methods) changes.
*
* Since API Gateway deployments are immutable, When this option is enabled
* (by default), an AWS::ApiGateway::Deployment resource will automatically
* created with a logical ID that hashes the API model (methods, resources
* and options). This means that when the model changes, the logical ID of
* this CloudFormation resource will change, and a new deployment will be
* created.
*
* If this is set, `latestDeployment` will refer to the `Deployment` object
* and `deploymentStage` will refer to a `Stage` that points to this
* deployment. To customize the stage options, use the `deployOptions`
* property.
*
* A CloudFormation Output will also be defined with the root URL endpoint
* of this REST API.
*
* Default: true
*
* @param deploy Indicates if a Deployment should be automatically created for this API, and
* recreated when the API model (resources, methods) changes.
*/
override fun deploy(deploy: Boolean) {
cdkBuilder.deploy(deploy)
}
/**
* Options for the API Gateway stage that will always point to the latest deployment when
* `deploy` is enabled.
*
* If `deploy` is disabled,
* this value cannot be set.
*
* Default: - Based on defaults of `StageOptions`.
*
* @param deployOptions Options for the API Gateway stage that will always point to the latest
* deployment when `deploy` is enabled.
*/
override fun deployOptions(deployOptions: StageOptions) {
cdkBuilder.deployOptions(deployOptions.let(StageOptions.Companion::unwrap))
}
/**
* Options for the API Gateway stage that will always point to the latest deployment when
* `deploy` is enabled.
*
* If `deploy` is disabled,
* this value cannot be set.
*
* Default: - Based on defaults of `StageOptions`.
*
* @param deployOptions Options for the API Gateway stage that will always point to the latest
* deployment when `deploy` is enabled.
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("2e5a9374ecff524b5f253cf8988619066f0b619a7b913fd15eaa9b87de990f00")
override fun deployOptions(deployOptions: StageOptions.Builder.() -> Unit): Unit =
deployOptions(StageOptions(deployOptions))
/**
* A description of the RestApi construct.
*
* Default: - 'Automatically created by the RestApi construct'
*
* @param description A description of the RestApi construct.
*/
override fun description(description: String) {
cdkBuilder.description(description)
}
/**
* Specifies whether clients can invoke the API using the default execute-api endpoint.
*
* To require that clients use a custom domain name to invoke the
* API, disable the default endpoint.
*
* Default: false
*
* [Documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html)
* @param disableExecuteApiEndpoint Specifies whether clients can invoke the API using the
* default execute-api endpoint.
*/
override fun disableExecuteApiEndpoint(disableExecuteApiEndpoint: Boolean) {
cdkBuilder.disableExecuteApiEndpoint(disableExecuteApiEndpoint)
}
/**
* Configure a custom domain name and map it to this API.
*
* Default: - no domain name is defined, use `addDomainName` or directly define a `DomainName`.
*
* @param domainName Configure a custom domain name and map it to this API.
*/
override fun domainName(domainName: DomainNameOptions) {
cdkBuilder.domainName(domainName.let(DomainNameOptions.Companion::unwrap))
}
/**
* Configure a custom domain name and map it to this API.
*
* Default: - no domain name is defined, use `addDomainName` or directly define a `DomainName`.
*
* @param domainName Configure a custom domain name and map it to this API.
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("22fddb3d13e3a75c1d122c19e64996063c633bbca1dd33c870303677c927f2c5")
override fun domainName(domainName: DomainNameOptions.Builder.() -> Unit): Unit =
domainName(DomainNameOptions(domainName))
/**
* The EndpointConfiguration property type specifies the endpoint types of a REST API.
*
* Default: EndpointType.EDGE
*
* [Documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-restapi-endpointconfiguration.html)
* @param endpointConfiguration The EndpointConfiguration property type specifies the endpoint
* types of a REST API.
*/
override fun endpointConfiguration(endpointConfiguration: EndpointConfiguration) {
cdkBuilder.endpointConfiguration(endpointConfiguration.let(EndpointConfiguration.Companion::unwrap))
}
/**
* The EndpointConfiguration property type specifies the endpoint types of a REST API.
*
* Default: EndpointType.EDGE
*
* [Documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-restapi-endpointconfiguration.html)
* @param endpointConfiguration The EndpointConfiguration property type specifies the endpoint
* types of a REST API.
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("ff917eb8a2a3075cea4a993c83e151b41734e83f19db3c953ca04ff8b247e9d9")
override
fun endpointConfiguration(endpointConfiguration: EndpointConfiguration.Builder.() -> Unit):
Unit = endpointConfiguration(EndpointConfiguration(endpointConfiguration))
/**
* Export name for the CfnOutput containing the API endpoint.
*
* Default: - when no export name is given, output will be created without export
*
* @param endpointExportName Export name for the CfnOutput containing the API endpoint.
*/
override fun endpointExportName(endpointExportName: String) {
cdkBuilder.endpointExportName(endpointExportName)
}
/**
* A list of the endpoint types of the API.
*
* Use this property when creating
* an API.
*
* Default: EndpointType.EDGE
*
* @param endpointTypes A list of the endpoint types of the API.
*/
override fun endpointTypes(endpointTypes: List) {
cdkBuilder.endpointTypes(endpointTypes.map(EndpointType.Companion::unwrap))
}
/**
* A list of the endpoint types of the API.
*
* Use this property when creating
* an API.
*
* Default: EndpointType.EDGE
*
* @param endpointTypes A list of the endpoint types of the API.
*/
override fun endpointTypes(vararg endpointTypes: EndpointType): Unit =
endpointTypes(endpointTypes.toList())
/**
* Indicates whether to roll back the resource if a warning occurs while API Gateway is creating
* the RestApi resource.
*
* Default: false
*
* @param failOnWarnings Indicates whether to roll back the resource if a warning occurs while
* API Gateway is creating the RestApi resource.
*/
override fun failOnWarnings(failOnWarnings: Boolean) {
cdkBuilder.failOnWarnings(failOnWarnings)
}
/**
* A Size(in bytes, kibibytes, mebibytes etc) that is used to enable compression (with
* non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable compression (when
* undefined) on an API.
*
* When compression is enabled, compression or
* decompression is not applied on the payload if the payload size is
* smaller than this value. Setting it to zero allows compression for any
* payload size.
*
* Default: - Compression is disabled.
*
* @param minCompressionSize A Size(in bytes, kibibytes, mebibytes etc) that is used to enable
* compression (with non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable
* compression (when undefined) on an API.
*/
override fun minCompressionSize(minCompressionSize: Size) {
cdkBuilder.minCompressionSize(minCompressionSize.let(Size.Companion::unwrap))
}
/**
* (deprecated) A nullable integer that is used to enable compression (with non-negative between
* 0 and 10485760 (10M) bytes, inclusive) or disable compression (when undefined) on an API.
*
* When compression is enabled, compression or
* decompression is not applied on the payload if the payload size is
* smaller than this value. Setting it to zero allows compression for any
* payload size.
*
* Default: - Compression is disabled.
*
* * superseded by `minCompressionSize`
* @param minimumCompressionSize A nullable integer that is used to enable compression (with
* non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable compression (when
* undefined) on an API.
*/
@Deprecated(message = "deprecated in CDK")
override fun minimumCompressionSize(minimumCompressionSize: Number) {
cdkBuilder.minimumCompressionSize(minimumCompressionSize)
}
/**
* Custom header parameters for the request.
*
* Default: - No parameters.
*
* [Documentation](https://docs.aws.amazon.com/cli/latest/reference/apigateway/import-rest-api.html)
* @param parameters Custom header parameters for the request.
*/
override fun parameters(parameters: Map) {
cdkBuilder.parameters(parameters)
}
/**
* A policy document that contains the permissions for this RestApi.
*
* Default: - No policy.
*
* @param policy A policy document that contains the permissions for this RestApi.
*/
override fun policy(policy: PolicyDocument) {
cdkBuilder.policy(policy.let(PolicyDocument.Companion::unwrap))
}
/**
* A policy document that contains the permissions for this RestApi.
*
* Default: - No policy.
*
* @param policy A policy document that contains the permissions for this RestApi.
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("a98800dfb2d1c8d802ecb04e1a3fd4dde3cd10da4d43d0e7f2e95dd97a07d13b")
override fun policy(policy: PolicyDocument.Builder.() -> Unit): Unit =
policy(PolicyDocument(policy))
/**
* A name for the API Gateway RestApi resource.
*
* Default: - ID of the RestApi construct.
*
* @param restApiName A name for the API Gateway RestApi resource.
*/
override fun restApiName(restApiName: String) {
cdkBuilder.restApiName(restApiName)
}
/**
* Retains old deployment resources when the API changes.
*
* This allows
* manually reverting stages to point to old deployments via the AWS
* Console.
*
* Default: false
*
* @param retainDeployments Retains old deployment resources when the API changes.
*/
override fun retainDeployments(retainDeployments: Boolean) {
cdkBuilder.retainDeployments(retainDeployments)
}
public fun build(): software.amazon.awscdk.services.apigateway.RestApi = cdkBuilder.build()
}
public companion object {
public fun fromRestApiAttributes(
scope: CloudshiftdevConstructsConstruct,
id: String,
attrs: RestApiAttributes,
): IRestApi =
software.amazon.awscdk.services.apigateway.RestApi.fromRestApiAttributes(scope.let(CloudshiftdevConstructsConstruct.Companion::unwrap),
id, attrs.let(RestApiAttributes.Companion::unwrap)).let(IRestApi::wrap)
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("cb89db0f35408d8d66d6358e7a387ed7dc683f1c1676bfb2e8655d4fbc01224f")
public fun fromRestApiAttributes(
scope: CloudshiftdevConstructsConstruct,
id: String,
attrs: RestApiAttributes.Builder.() -> Unit,
): IRestApi = fromRestApiAttributes(scope, id, RestApiAttributes(attrs))
public fun fromRestApiId(
scope: CloudshiftdevConstructsConstruct,
id: String,
restApiId: String,
): IRestApi =
software.amazon.awscdk.services.apigateway.RestApi.fromRestApiId(scope.let(CloudshiftdevConstructsConstruct.Companion::unwrap),
id, restApiId).let(IRestApi::wrap)
public fun isRestApi(x: Any): Boolean =
software.amazon.awscdk.services.apigateway.RestApi.isRestApi(x)
public operator fun invoke(
scope: CloudshiftdevConstructsConstruct,
id: String,
block: Builder.() -> Unit = {},
): RestApi {
val builderImpl = BuilderImpl(CloudshiftdevConstructsConstruct.unwrap(scope), id)
return RestApi(builderImpl.apply(block).build())
}
internal fun wrap(cdkObject: software.amazon.awscdk.services.apigateway.RestApi): RestApi =
RestApi(cdkObject)
internal fun unwrap(wrapped: RestApi): software.amazon.awscdk.services.apigateway.RestApi =
wrapped.cdkObject as software.amazon.awscdk.services.apigateway.RestApi
}
}