# API Reference
**Classes**
Name|Description
----|-----------
[DatabaseCluster](#cdk-serverless-lamp-databasecluster)|*No description*
[ServerlessApi](#cdk-serverless-lamp-serverlessapi)|Use `ServerlessApi` to create the serverless API resource.
[ServerlessLaravel](#cdk-serverless-lamp-serverlesslaravel)|Use `ServerlessLaravel` to create the serverless Laravel resource.
**Structs**
Name|Description
----|-----------
[DatabaseConfig](#cdk-serverless-lamp-databaseconfig)|*No description*
[DatabaseProps](#cdk-serverless-lamp-databaseprops)|*No description*
[ServerlessApiProps](#cdk-serverless-lamp-serverlessapiprops)|Construct properties for `ServerlessApi`.
[ServerlessLaravelProps](#cdk-serverless-lamp-serverlesslaravelprops)|Construct properties for `ServerlessLaravel`.
## class DatabaseCluster
__Implements__: [IConstruct](#constructs-iconstruct), [IDependable](#constructs-idependable)
__Extends__: [Construct](#constructs-construct)
### Initializer
```ts
new DatabaseCluster(scope: Construct, id: string, props: DatabaseProps)
```
* **scope** ([Construct](#constructs-construct)
) *No description*
* **id** (string
) *No description*
* **props** ([DatabaseProps](#cdk-serverless-lamp-databaseprops)
) *No description*
* **vpc** ([aws_ec2.IVpc](#aws-cdk-lib-aws-ec2-ivpc)
) The VPC for the DatabaseCluster.
* **engine** ([aws_rds.IClusterEngine](#aws-cdk-lib-aws-rds-iclusterengine)
) database cluster engine. __*Default*__: AURORA_MYSQL
* **instanceCapacity** (number
) How many replicas/instances to create. __*Default*__: 1
* **instanceType** ([aws_ec2.InstanceType](#aws-cdk-lib-aws-ec2-instancetype)
) instance type of the cluster. __*Default*__: t3.medium (or, more precisely, db.t3.medium)
* **masterUserName** (string
) master username. __*Default*__: admin
* **rdsProxy** (boolean
) enable the Amazon RDS proxy. __*Default*__: true
* **rdsProxyOptions** ([aws_rds.DatabaseProxyOptions](#aws-cdk-lib-aws-rds-databaseproxyoptions)
) RDS Proxy Options. __*Optional*__
### Properties
Name | Type | Description
-----|------|-------------
**masterPassword** | [aws_secretsmanager.ISecret](#aws-cdk-lib-aws-secretsmanager-isecret)
|
**masterUser** | string
|
**rdsProxy**? | [aws_rds.DatabaseProxy](#aws-cdk-lib-aws-rds-databaseproxy)
| __*Optional*__
## class ServerlessApi
Use `ServerlessApi` to create the serverless API resource.
__Implements__: [IConstruct](#constructs-iconstruct), [IDependable](#constructs-idependable)
__Extends__: [Construct](#constructs-construct)
### Initializer
```ts
new ServerlessApi(scope: Construct, id: string, props: ServerlessApiProps)
```
* **scope** ([Construct](#constructs-construct)
) *No description*
* **id** (string
) *No description*
* **props** ([ServerlessApiProps](#cdk-serverless-lamp-serverlessapiprops)
) *No description*
* **brefLayerVersion** (string
) AWS Lambda layer version from the Bref runtime.
* **databaseConfig** ([DatabaseConfig](#cdk-serverless-lamp-databaseconfig)
) Database configurations. __*Optional*__
* **handler** ([aws_lambda.IFunction](#aws-cdk-lib-aws-lambda-ifunction)
) custom lambda function for the API. __*Default*__: A Lambda function with Lavavel and Bref support will be created
* **lambdaCodePath** (string
) custom lambda code asset path. __*Default*__: DEFAULT_LAMBDA_ASSET_PATH
* **rdsProxy** ([aws_rds.IDatabaseProxy](#aws-cdk-lib-aws-rds-idatabaseproxy)
) RDS Proxy for the Lambda function. __*Default*__: no db proxy
* **vpc** ([aws_ec2.IVpc](#aws-cdk-lib-aws-ec2-ivpc)
) The VPC for this stack. __*Optional*__
### Properties
Name | Type | Description
-----|------|-------------
**handler** | [aws_lambda.IFunction](#aws-cdk-lib-aws-lambda-ifunction)
|
**vpc**? | [aws_ec2.IVpc](#aws-cdk-lib-aws-ec2-ivpc)
| __*Optional*__
## class ServerlessLaravel
Use `ServerlessLaravel` to create the serverless Laravel resource.
__Implements__: [IConstruct](#constructs-iconstruct), [IDependable](#constructs-idependable)
__Extends__: [Construct](#constructs-construct)
### Initializer
```ts
new ServerlessLaravel(scope: Construct, id: string, props: ServerlessLaravelProps)
```
* **scope** ([Construct](#constructs-construct)
) *No description*
* **id** (string
) *No description*
* **props** ([ServerlessLaravelProps](#cdk-serverless-lamp-serverlesslaravelprops)
) *No description*
* **brefLayerVersion** (string
) AWS Lambda layer version from the Bref runtime.
* **databaseConfig** ([DatabaseConfig](#cdk-serverless-lamp-databaseconfig)
) Database configurations. __*Optional*__
* **handler** ([aws_lambda.IFunction](#aws-cdk-lib-aws-lambda-ifunction)
) custom lambda function for the API. __*Default*__: A Lambda function with Lavavel and Bref support will be created
* **lambdaCodePath** (string
) custom lambda code asset path. __*Default*__: DEFAULT_LAMBDA_ASSET_PATH
* **rdsProxy** ([aws_rds.IDatabaseProxy](#aws-cdk-lib-aws-rds-idatabaseproxy)
) RDS Proxy for the Lambda function. __*Default*__: no db proxy
* **vpc** ([aws_ec2.IVpc](#aws-cdk-lib-aws-ec2-ivpc)
) The VPC for this stack. __*Optional*__
* **laravelPath** (string
) path to your local laravel directory with bref.
## struct DatabaseConfig
Name | Type | Description
-----|------|-------------
**writerEndpoint** | string
| The DB writer endpoint.
**masterUserName**? | string
| The DB master username.
__*Optional*__
**masterUserPasswordSecret**? | [aws_secretsmanager.ISecret](#aws-cdk-lib-aws-secretsmanager-isecret)
| The DB master password secret.
__*Optional*__
**readerEndpoint**? | string
| The DB reader endpoint.
__*Optional*__
## struct DatabaseProps
Name | Type | Description
-----|------|-------------
**vpc** | [aws_ec2.IVpc](#aws-cdk-lib-aws-ec2-ivpc)
| The VPC for the DatabaseCluster.
**engine**? | [aws_rds.IClusterEngine](#aws-cdk-lib-aws-rds-iclusterengine)
| database cluster engine.
__*Default*__: AURORA_MYSQL
**instanceCapacity**? | number
| How many replicas/instances to create.
__*Default*__: 1
**instanceType**? | [aws_ec2.InstanceType](#aws-cdk-lib-aws-ec2-instancetype)
| instance type of the cluster.
__*Default*__: t3.medium (or, more precisely, db.t3.medium)
**masterUserName**? | string
| master username.
__*Default*__: admin
**rdsProxy**? | boolean
| enable the Amazon RDS proxy.
__*Default*__: true
**rdsProxyOptions**? | [aws_rds.DatabaseProxyOptions](#aws-cdk-lib-aws-rds-databaseproxyoptions)
| RDS Proxy Options.
__*Optional*__
## struct ServerlessApiProps
Construct properties for `ServerlessApi`.
Name | Type | Description
-----|------|-------------
**brefLayerVersion** | string
| AWS Lambda layer version from the Bref runtime.
**databaseConfig**? | [DatabaseConfig](#cdk-serverless-lamp-databaseconfig)
| Database configurations.
__*Optional*__
**handler**? | [aws_lambda.IFunction](#aws-cdk-lib-aws-lambda-ifunction)
| custom lambda function for the API.
__*Default*__: A Lambda function with Lavavel and Bref support will be created
**lambdaCodePath**? | string
| custom lambda code asset path.
__*Default*__: DEFAULT_LAMBDA_ASSET_PATH
**rdsProxy**? | [aws_rds.IDatabaseProxy](#aws-cdk-lib-aws-rds-idatabaseproxy)
| RDS Proxy for the Lambda function.
__*Default*__: no db proxy
**vpc**? | [aws_ec2.IVpc](#aws-cdk-lib-aws-ec2-ivpc)
| The VPC for this stack.
__*Optional*__
## struct ServerlessLaravelProps
Construct properties for `ServerlessLaravel`.
Name | Type | Description
-----|------|-------------
**brefLayerVersion** | string
| AWS Lambda layer version from the Bref runtime.
**laravelPath** | string
| path to your local laravel directory with bref.
**databaseConfig**? | [DatabaseConfig](#cdk-serverless-lamp-databaseconfig)
| Database configurations.
__*Optional*__
**handler**? | [aws_lambda.IFunction](#aws-cdk-lib-aws-lambda-ifunction)
| custom lambda function for the API.
__*Default*__: A Lambda function with Lavavel and Bref support will be created
**lambdaCodePath**? | string
| custom lambda code asset path.
__*Default*__: DEFAULT_LAMBDA_ASSET_PATH
**rdsProxy**? | [aws_rds.IDatabaseProxy](#aws-cdk-lib-aws-rds-idatabaseproxy)
| RDS Proxy for the Lambda function.
__*Default*__: no db proxy
**vpc**? | [aws_ec2.IVpc](#aws-cdk-lib-aws-ec2-ivpc)
| The VPC for this stack.
__*Optional*__