diff --git a/docs/features/event-handler/rest.md b/docs/features/event-handler/http.md
similarity index 90%
rename from docs/features/event-handler/rest.md
rename to docs/features/event-handler/http.md
index 76e508409c..d4301d928e 100644
--- a/docs/features/event-handler/rest.md
+++ b/docs/features/event-handler/http.md
@@ -4,9 +4,6 @@ description: Event handler for building HTTP APIs in AWS Lambda
status: new
---
-!!! warning "Feature status"
- This feature is under active development and may undergo significant changes. We recommend using it in non-critical workloads and [providing feedback](https://github.com/aws-powertools/powertools-lambda-typescript/issues/new/choose){target="_blank"} to help us improve it.
-
Event handler for Amazon API Gateway REST and HTTP APIs, Application Loader Balancer (ALB), and Lambda Function URLs.
## Key Features
@@ -46,19 +43,19 @@ This is the sample infrastructure for the different integrations we are using fo
=== "API Gateway REST API SAM Template"
```yaml title="AWS Serverless Application Model (SAM) example"
- --8<-- "examples/snippets/event-handler/rest/templates/api_gateway_rest_api.yml"
+ --8<-- "examples/snippets/event-handler/http/templates/api_gateway_rest_api.yml"
```
=== "API Gateway HTTP API SAM Template"
```yaml title="AWS Serverless Application Model (SAM) example"
- --8<-- "examples/snippets/event-handler/rest/templates/api_gateway_http_api.yml"
+ --8<-- "examples/snippets/event-handler/http/templates/api_gateway_http_api.yml"
```
=== "Lambda Function URL SAM Template"
```yaml title="AWS Serverless Application Model (SAM) example"
- --8<-- "examples/snippets/event-handler/rest/templates/lambda_furl.yml"
+ --8<-- "examples/snippets/event-handler/http/templates/lambda_furl.yml"
```
### Route events
@@ -81,7 +78,7 @@ For your convenience, when you return a JavaScript object from your route handle
=== "index.ts"
```ts hl_lines="6"
- --8<-- "examples/snippets/event-handler/rest/gettingStarted_serialization.ts"
+ --8<-- "examples/snippets/event-handler/http/gettingStarted_serialization.ts"
```
1. This object will be serialized and included under the `body` key
@@ -89,7 +86,7 @@ For your convenience, when you return a JavaScript object from your route handle
=== "JSON response"
```json hl_lines="6"
- --8<-- "examples/snippets/event-handler/rest/samples/gettingStarted_serialization.json"
+ --8<-- "examples/snippets/event-handler/http/samples/gettingStarted_serialization.json"
```
!!! tip "Automatic response format transformation"
@@ -104,13 +101,13 @@ All dynamic route parameters will be available as typed object properties in the
=== "index.ts"
```ts hl_lines="14"
- --8<-- "examples/snippets/event-handler/rest/gettingStarted_dynamic_routes.ts:3"
+ --8<-- "examples/snippets/event-handler/http/gettingStarted_dynamic_routes.ts:3"
```
=== "Request"
```json
- --8<-- "examples/snippets/event-handler/rest/samples/gettingStarted_dynamic_routes.json"
+ --8<-- "examples/snippets/event-handler/http/samples/gettingStarted_dynamic_routes.json"
```
You can also nest dynamic paths, for example `/todos/:todoId/comments/:commentId`, where both `:todoId` and `:commentId` will be resolved at runtime.
@@ -132,10 +129,10 @@ You can use standard [regular expressions](https://developer.mozilla.org/en-US/d
| `/[^/]+/` | Matches one or more non-slash characters | `/\/api\/[^\/]+/` matches `/api/v1` but not `/api/v1/users` |
| `/\w+/` | Matches one or more word characters | `/\/users\/\w+/` matches `/users/john123` |
-=== "gettingStarted_dynamic_routes_catch_all.ts"
+=== "index.ts"
```python hl_lines="7 10 13 20"
- --8<-- "examples/snippets/event-handler/rest/gettingStarted_dynamic_routes_catch_all.ts"
+ --8<-- "examples/snippets/event-handler/http/gettingStarted_dynamic_routes_catch_all.ts"
```
???+ warning "Route Matching Priority"
@@ -150,13 +147,13 @@ You can use dedicated methods to specify the HTTP method that should be handled
=== "index.ts"
```ts hl_lines="14 16"
- --8<-- "examples/snippets/event-handler/rest/gettingStarted_methods.ts:3"
+ --8<-- "examples/snippets/event-handler/http/gettingStarted_methods.ts:3"
```
=== "Request"
```json
- --8<-- "examples/snippets/event-handler/rest/samples/gettingStarted_methods.json"
+ --8<-- "examples/snippets/event-handler/http/samples/gettingStarted_methods.json"
```
If you need to accept multiple HTTP methods in a single function, or support an HTTP method for which no dedicated method exists (i.e. [`TRACE`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods/TRACE){target="_blank"}), you can use the `route()` method and pass a list of HTTP methods.
@@ -164,7 +161,7 @@ If you need to accept multiple HTTP methods in a single function, or support an
=== "index.ts"
```ts hl_lines="21-24"
- --8<-- "examples/snippets/event-handler/rest/gettingStarted_multi_methods.ts:3"
+ --8<-- "examples/snippets/event-handler/http/gettingStarted_multi_methods.ts:3"
```
!!! tip
@@ -195,7 +192,7 @@ Error handlers receive the error object and the request context as arguments, an
=== "index.ts"
```ts hl_lines="11"
- --8<-- "examples/snippets/event-handler/rest/gettingStarted_error_handling.ts:4"
+ --8<-- "examples/snippets/event-handler/http/gettingStarted_error_handling.ts:4"
```
### Built-in Error Handlers
@@ -209,7 +206,7 @@ By default, we return a `404 Not Found` response for unmatched routes.
=== "index.ts"
```ts hl_lines="11 23"
- --8<-- "examples/snippets/event-handler/rest/gettingStarted_built_in_error_handler.ts"
+ --8<-- "examples/snippets/event-handler/http/gettingStarted_built_in_error_handler.ts"
```
### Throwing HTTP errors
@@ -225,7 +222,7 @@ If you need to send custom headers or a different response structure/code, you c
=== "index.ts"
```ts hl_lines="3 11"
- --8<-- "examples/snippets/event-handler/rest/gettingStarted_throwing_http_errors.ts:3"
+ --8<-- "examples/snippets/event-handler/http/gettingStarted_throwing_http_errors.ts:3"
```
#### Available HTTP error classes
@@ -261,7 +258,7 @@ To avoid repeating the prefix in each route definition, you can use the `prefix`
=== "index.ts"
```ts hl_lines="4 7"
- --8<-- "examples/snippets/event-handler/rest/gettingStarted_route_prefix.ts:3"
+ --8<-- "examples/snippets/event-handler/http/gettingStarted_route_prefix.ts:3"
```
This is also useful when splitting routes into separate files (see [Split routers](#split-routers) section) or when using [API mappings](https://docs.aws.amazon.com/apigateway/latest/developerguide/rest-api-mappings.html){target="_blank"} to map custom domains to specific base paths.
@@ -290,7 +287,7 @@ for post-processing. When middleware modify the same response properties, the mi
executes last in post-processing wins.
```mermaid
---8<-- "examples/snippets/event-handler/rest/diagrams/middleware_execution_order.mermaid"
+--8<-- "examples/snippets/event-handler/http/diagrams/middleware_execution_order.mermaid"
```
@@ -303,13 +300,13 @@ handler.
=== "index.ts"
```ts hl_lines="9-14 16-21 31"
- --8<-- "examples/snippets/event-handler/rest/advanced_mw_middleware_order.ts:3"
+ --8<-- "examples/snippets/event-handler/http/advanced_mw_middleware_order.ts:3"
```
=== "Response"
```json hl_lines="6-7"
- --8<-- "examples/snippets/event-handler/rest/samples/advanced_mw_middleware_order.json"
+ --8<-- "examples/snippets/event-handler/http/samples/advanced_mw_middleware_order.json"
```
#### Returning early
@@ -322,19 +319,19 @@ Neither the handler nor any subsequent middleware will run
but the post-processing of already executed middleware will.
```mermaid
---8<-- "examples/snippets/event-handler/rest/diagrams/middleware_early_return.mermaid"
+--8<-- "examples/snippets/event-handler/http/diagrams/middleware_early_return.mermaid"
```
=== "index.ts"
```ts hl_lines="13-18"
- --8<-- "examples/snippets/event-handler/rest/advanced_mw_early_return.ts:3"
+ --8<-- "examples/snippets/event-handler/http/advanced_mw_early_return.ts:3"
```
=== "Response"
```json hl_lines="2"
- --8<-- "examples/snippets/event-handler/rest/samples/advanced_mw_early_return.json"
+ --8<-- "examples/snippets/event-handler/http/samples/advanced_mw_early_return.json"
```
#### Error Handling
@@ -344,7 +341,7 @@ By default, any unhandled error in the middleware chain will be propagated as a
chain entirely and no post-processing steps for any previously executed middleware will occur.
```mermaid
---8<-- "examples/snippets/event-handler/rest/diagrams/middleware_error_handling.mermaid"
+--8<-- "examples/snippets/event-handler/http/diagrams/middleware_error_handling.mermaid"
```
*Unhandled errors*
@@ -353,7 +350,7 @@ You can handle errors in middleware as you would anywhere else, simply surround
a `try`/`catch` block and processing will occur as usual.
```mermaid
---8<-- "examples/snippets/event-handler/rest/diagrams/middleware_handled_error.mermaid"
+--8<-- "examples/snippets/event-handler/http/diagrams/middleware_handled_error.mermaid"
```
*Handled errors*
@@ -364,7 +361,7 @@ you can use or you can throw a custom error of your own. As noted above, this me
that no post-processing of your request will occur.
```mermaid
---8<-- "examples/snippets/event-handler/rest/diagrams/middleware_throwing_error.mermaid"
+--8<-- "examples/snippets/event-handler/http/diagrams/middleware_throwing_error.mermaid"
```
@@ -383,7 +380,7 @@ accepts configuration options and returns a middleware function.
=== "index.ts"
```ts hl_lines="20-21 36 41"
- --8<-- "examples/snippets/event-handler/rest/advanced_mw_custom_middleware.ts:8"
+ --8<-- "examples/snippets/event-handler/http/advanced_mw_custom_middleware.ts:8"
```
In this example we have a middleware that acts only in the post-processing stage as all
@@ -398,7 +395,7 @@ the handler has run and we have access to request body.
=== "index.ts"
```ts hl_lines="6 14-15"
- --8<-- "examples/snippets/event-handler/rest/advanced_mw_destructuring_problem.ts:3"
+ --8<-- "examples/snippets/event-handler/http/advanced_mw_destructuring_problem.ts:3"
```
During the middleware execution chain, the response object (`reqCtx.res`) can be replaced by
@@ -414,13 +411,13 @@ middleware combinations that can be shared across different routes or applicatio
=== "middleware.ts"
```ts hl_lines="1 21"
- --8<-- "examples/snippets/event-handler/rest/advanced_mw_compose_middleware_shared.ts"
+ --8<-- "examples/snippets/event-handler/http/advanced_mw_compose_middleware_shared.ts"
```
=== "index.ts"
```ts hl_lines="3 7"
- --8<-- "examples/snippets/event-handler/rest/advanced_mw_compose_middleware_index.ts:3"
+ --8<-- "examples/snippets/event-handler/http/advanced_mw_compose_middleware_index.ts:3"
```
The `composeMiddleware` function maintains the same execution order as if you had applied the
@@ -450,13 +447,13 @@ example, you might want to add additional headers, cookies, or set a custom cont
=== "index.ts"
```ts hl_lines="11-18 25-31"
- --8<-- "examples/snippets/event-handler/rest/advanced_fine_grained_responses.ts:6"
+ --8<-- "examples/snippets/event-handler/http/advanced_fine_grained_responses.ts:6"
```
=== "Response"
```json hl_lines="4-6"
- --8<-- "examples/snippets/event-handler/rest/samples/advanced_fine_grained_responses.json"
+ --8<-- "examples/snippets/event-handler/http/samples/advanced_fine_grained_responses.json"
```
### CORS
@@ -468,13 +465,13 @@ This will ensure that CORS headers are returned as part of the response when you
=== "index.ts"
```ts hl_lines="2 8-11"
- --8<-- "examples/snippets/event-handler/rest/advanced_cors_simple.ts:3"
+ --8<-- "examples/snippets/event-handler/http/advanced_cors_simple.ts:3"
```
=== "Response"
```json
- --8<-- "examples/snippets/event-handler/rest/samples/advanced_cors_simple.json"
+ --8<-- "examples/snippets/event-handler/http/samples/advanced_cors_simple.json"
```
#### Pre-flight
@@ -505,13 +502,13 @@ You can override the global CORS settings on a per-route basis by passing option
=== "index.ts"
```ts hl_lines="2 19"
- --8<-- "examples/snippets/event-handler/rest/advanced_cors_per_route.ts:3"
+ --8<-- "examples/snippets/event-handler/http/advanced_cors_per_route.ts:3"
```
=== "Response"
```json
- --8<-- "examples/snippets/event-handler/rest/samples/advanced_cors_per_route.json"
+ --8<-- "examples/snippets/event-handler/http/samples/advanced_cors_per_route.json"
```
### Compress
@@ -521,19 +518,19 @@ You can enable response compression by using the `compress` middleware. This wil
=== "index.ts"
```ts hl_lines="2 7"
- --8<-- "examples/snippets/event-handler/rest/advanced_compress.ts:3"
+ --8<-- "examples/snippets/event-handler/http/advanced_compress.ts:3"
```
=== "Request"
```json hl_lines="3"
- --8<-- "examples/snippets/event-handler/rest/samples/advanced_compress_req.json"
+ --8<-- "examples/snippets/event-handler/http/samples/advanced_compress_req.json"
```
=== "Response"
```json hl_lines="4-5 7-8"
- --8<-- "examples/snippets/event-handler/rest/samples/advanced_compress_res.json"
+ --8<-- "examples/snippets/event-handler/http/samples/advanced_compress_res.json"
```
### Binary responses
@@ -556,19 +553,19 @@ directly from your handler. We will automatically serialize the response by sett
=== "index.ts"
```ts hl_lines="8-9"
- --8<-- "examples/snippets/event-handler/rest/advanced_binary_response_auto.ts"
+ --8<-- "examples/snippets/event-handler/http/advanced_binary_response_auto.ts"
```
=== "Request"
```json
- --8<-- "examples/snippets/event-handler/rest/samples/advanced_binary_req_logo_image.json"
+ --8<-- "examples/snippets/event-handler/http/samples/advanced_binary_req_logo_image.json"
```
=== "Response"
```json
- --8<-- "examples/snippets/event-handler/rest/samples/advanced_binary_res_logo_image.json"
+ --8<-- "examples/snippets/event-handler/http/samples/advanced_binary_res_logo_image.json"
```
#### Set `isBase64Encoded` parameter
@@ -578,19 +575,19 @@ You can indicate that you wish to `base64` encode any response, regardless of ty
=== "index.ts"
```ts hl_lines="7"
- --8<-- "examples/snippets/event-handler/rest/advanced_binary_response_reqCtx.ts"
+ --8<-- "examples/snippets/event-handler/http/advanced_binary_response_reqCtx.ts"
```
=== "Request"
```json
- --8<-- "examples/snippets/event-handler/rest/samples/advanced_binary_req_json64.json"
+ --8<-- "examples/snippets/event-handler/http/samples/advanced_binary_req_json64.json"
```
=== "Response"
```json
- --8<-- "examples/snippets/event-handler/rest/samples/advanced_binary_res_json64.json"
+ --8<-- "examples/snippets/event-handler/http/samples/advanced_binary_res_json64.json"
```
#### Manual serialization
@@ -600,19 +597,19 @@ For complete control you can return an `APIGatewayProxyEvent` (`v1` or `v2`) and
=== "index.ts"
```ts hl_lines="8-16"
- --8<-- "examples/snippets/event-handler/rest/advanced_binary_response_manual.ts"
+ --8<-- "examples/snippets/event-handler/http/advanced_binary_response_manual.ts"
```
=== "Request"
```json
- --8<-- "examples/snippets/event-handler/rest/samples/advanced_binary_req_logo_image.json"
+ --8<-- "examples/snippets/event-handler/http/samples/advanced_binary_req_logo_image.json"
```
=== "Response"
```json
- --8<-- "examples/snippets/event-handler/rest/samples/advanced_binary_res_logo_image.json"
+ --8<-- "examples/snippets/event-handler/http/samples/advanced_binary_res_logo_image.json"
```
!!! note "Compression"
If you wish to use binary responses together with the [`compress`](#compress) feature, the client must send the `Accept` header with the correct media type.
@@ -633,7 +630,7 @@ other types and these will also be delivered via HTTP streaming.
=== "index.ts"
```ts hl_lines="3 17"
- --8<-- "examples/snippets/event-handler/rest/advanced_response_streaming.ts:4"
+ --8<-- "examples/snippets/event-handler/http/advanced_response_streaming.ts:4"
```
!!! tip "When to use streaming"
@@ -663,13 +660,13 @@ When an unhandled error occurs in your route handler or middleware, Event Handle
=== "Production mode (default)"
```json
- --8<-- "examples/snippets/event-handler/rest/samples/advanced_error_prod.json"
+ --8<-- "examples/snippets/event-handler/http/samples/advanced_error_prod.json"
```
=== "Debug mode"
```json
- --8<-- "examples/snippets/event-handler/rest/samples/advanced_error_debug.json"
+ --8<-- "examples/snippets/event-handler/http/samples/advanced_error_debug.json"
```
#### Logging requests and responses
@@ -701,13 +698,13 @@ Let's assume you have `index.ts` as your Lambda function entrypoint and routes i
=== "split_route.ts"
```typescript
- --8<-- "examples/snippets/event-handler/rest/split_route.ts"
+ --8<-- "examples/snippets/event-handler/http/split_route.ts"
```
=== "index.ts"
```typescript hl_lines="8"
- --8<-- "examples/snippets/event-handler/rest/split_route_index.ts"
+ --8<-- "examples/snippets/event-handler/http/split_route_index.ts"
```
#### Route Prefix
@@ -719,12 +716,12 @@ When necessary, you can set a prefix when including a `Router` instance. This me
=== "split_route_prefix.ts"
```typescript
- --8<-- "examples/snippets/event-handler/rest/split_route_prefix.ts"
+ --8<-- "examples/snippets/event-handler/http/split_route_prefix.ts"
```
=== "index.ts"
```typescript hl_lines="8"
- --8<-- "examples/snippets/event-handler/rest/split_route_prefix_index.ts"
+ --8<-- "examples/snippets/event-handler/http/split_route_prefix_index.ts"
```
### Considerations
@@ -787,17 +784,17 @@ Below is an example using [Vitest](https://vitest.dev){target="_blank"}, includi
=== "index.test.ts"
```ts
- --8<-- "examples/snippets/event-handler/rest/advanced_testing_main.ts"
+ --8<-- "examples/snippets/event-handler/http/advanced_testing_main.ts"
```
=== "event_helper.ts"
```ts
- --8<-- "examples/snippets/event-handler/rest/advanced_testing_helper.ts"
+ --8<-- "examples/snippets/event-handler/http/advanced_testing_helper.ts"
```
=== "index.ts"
```ts
- --8<-- "examples/snippets/event-handler/rest/advanced_cors_simple.ts:3"
+ --8<-- "examples/snippets/event-handler/http/advanced_cors_simple.ts:3"
```
diff --git a/docs/features/event-handler/index.md b/docs/features/event-handler/index.md
index 817fed779b..5eb7151afe 100644
--- a/docs/features/event-handler/index.md
+++ b/docs/features/event-handler/index.md
@@ -13,7 +13,7 @@ description: Simplify routing and processing of events in AWS Lambda functions
Event handler for Amazon API Gateway REST and HTTP APIs, Application Loader Balancer (ALB), Lambda Function URLs, and VPC Lattice.
- [:octicons-arrow-right-24: Read more](./rest.md)
+ [:octicons-arrow-right-24: Read more](./http.md)
- __AppSync Events API__
diff --git a/examples/snippets/event-handler/rest/advanced_binary_response_auto.ts b/examples/snippets/event-handler/http/advanced_binary_response_auto.ts
similarity index 82%
rename from examples/snippets/event-handler/rest/advanced_binary_response_auto.ts
rename to examples/snippets/event-handler/http/advanced_binary_response_auto.ts
index 85298caa62..8cc7582f0d 100644
--- a/examples/snippets/event-handler/rest/advanced_binary_response_auto.ts
+++ b/examples/snippets/event-handler/http/advanced_binary_response_auto.ts
@@ -1,5 +1,5 @@
import { createReadStream } from 'node:fs';
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
import type { Context } from 'aws-lambda';
const app = new Router();
diff --git a/examples/snippets/event-handler/rest/advanced_binary_response_manual.ts b/examples/snippets/event-handler/http/advanced_binary_response_manual.ts
similarity index 85%
rename from examples/snippets/event-handler/rest/advanced_binary_response_manual.ts
rename to examples/snippets/event-handler/http/advanced_binary_response_manual.ts
index 3c6465864b..a74893e54f 100644
--- a/examples/snippets/event-handler/rest/advanced_binary_response_manual.ts
+++ b/examples/snippets/event-handler/http/advanced_binary_response_manual.ts
@@ -1,5 +1,5 @@
import { readFile } from 'node:fs/promises';
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
import type { Context } from 'aws-lambda';
const app = new Router();
diff --git a/examples/snippets/event-handler/rest/advanced_binary_response_reqCtx.ts b/examples/snippets/event-handler/http/advanced_binary_response_reqCtx.ts
similarity index 77%
rename from examples/snippets/event-handler/rest/advanced_binary_response_reqCtx.ts
rename to examples/snippets/event-handler/http/advanced_binary_response_reqCtx.ts
index eaae6703ca..eb3fac6329 100644
--- a/examples/snippets/event-handler/rest/advanced_binary_response_reqCtx.ts
+++ b/examples/snippets/event-handler/http/advanced_binary_response_reqCtx.ts
@@ -1,4 +1,4 @@
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
import type { Context } from 'aws-lambda';
const app = new Router();
diff --git a/examples/snippets/event-handler/rest/advanced_compress.ts b/examples/snippets/event-handler/http/advanced_compress.ts
similarity index 69%
rename from examples/snippets/event-handler/rest/advanced_compress.ts
rename to examples/snippets/event-handler/http/advanced_compress.ts
index 0a251a332f..d574360332 100644
--- a/examples/snippets/event-handler/rest/advanced_compress.ts
+++ b/examples/snippets/event-handler/http/advanced_compress.ts
@@ -1,7 +1,7 @@
declare function getTodoById(todoId: unknown): Promise<{ id: string } & T>;
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
-import { compress } from '@aws-lambda-powertools/event-handler/experimental-rest/middleware';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
+import { compress } from '@aws-lambda-powertools/event-handler/http/middleware';
import type { Context } from 'aws-lambda';
const app = new Router();
diff --git a/examples/snippets/event-handler/rest/advanced_cors_per_route.ts b/examples/snippets/event-handler/http/advanced_cors_per_route.ts
similarity index 76%
rename from examples/snippets/event-handler/rest/advanced_cors_per_route.ts
rename to examples/snippets/event-handler/http/advanced_cors_per_route.ts
index feb080a381..10c572e3bb 100644
--- a/examples/snippets/event-handler/rest/advanced_cors_per_route.ts
+++ b/examples/snippets/event-handler/http/advanced_cors_per_route.ts
@@ -1,7 +1,7 @@
declare function getTodoById(todoId: unknown): Promise<{ id: string } & T>;
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
-import { cors } from '@aws-lambda-powertools/event-handler/experimental-rest/middleware';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
+import { cors } from '@aws-lambda-powertools/event-handler/http/middleware';
import type { Context } from 'aws-lambda';
const app = new Router();
diff --git a/examples/snippets/event-handler/rest/advanced_cors_simple.ts b/examples/snippets/event-handler/http/advanced_cors_simple.ts
similarity index 72%
rename from examples/snippets/event-handler/rest/advanced_cors_simple.ts
rename to examples/snippets/event-handler/http/advanced_cors_simple.ts
index d86bef4356..f30f44c5c0 100644
--- a/examples/snippets/event-handler/rest/advanced_cors_simple.ts
+++ b/examples/snippets/event-handler/http/advanced_cors_simple.ts
@@ -1,7 +1,7 @@
declare function getTodoById(todoId: unknown): Promise<{ id: string } & T>;
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
-import { cors } from '@aws-lambda-powertools/event-handler/experimental-rest/middleware';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
+import { cors } from '@aws-lambda-powertools/event-handler/http/middleware';
import type { Context } from 'aws-lambda';
const app = new Router();
diff --git a/examples/snippets/event-handler/rest/advanced_fine_grained_responses.ts b/examples/snippets/event-handler/http/advanced_fine_grained_responses.ts
similarity index 92%
rename from examples/snippets/event-handler/rest/advanced_fine_grained_responses.ts
rename to examples/snippets/event-handler/http/advanced_fine_grained_responses.ts
index eb918c8587..009907c59e 100644
--- a/examples/snippets/event-handler/rest/advanced_fine_grained_responses.ts
+++ b/examples/snippets/event-handler/http/advanced_fine_grained_responses.ts
@@ -3,7 +3,7 @@ declare function createTodo(
title: string
): Promise<{ id: string; title: string }>;
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
import { Logger } from '@aws-lambda-powertools/logger';
import type { Context } from 'aws-lambda';
diff --git a/examples/snippets/event-handler/rest/advanced_mw_compose_middleware_index.ts b/examples/snippets/event-handler/http/advanced_mw_compose_middleware_index.ts
similarity index 88%
rename from examples/snippets/event-handler/rest/advanced_mw_compose_middleware_index.ts
rename to examples/snippets/event-handler/http/advanced_mw_compose_middleware_index.ts
index 5b6e9c2499..fb852528ab 100644
--- a/examples/snippets/event-handler/rest/advanced_mw_compose_middleware_index.ts
+++ b/examples/snippets/event-handler/http/advanced_mw_compose_middleware_index.ts
@@ -1,7 +1,7 @@
declare const getAllTodos: () => Promise[]>;
declare const putTodo: (body: unknown) => Promise>;
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
import type { Context } from 'aws-lambda';
import { apiMiddleware } from './advanced_mw_compose_middleware_shared.js';
diff --git a/examples/snippets/event-handler/rest/advanced_mw_compose_middleware_shared.ts b/examples/snippets/event-handler/http/advanced_mw_compose_middleware_shared.ts
similarity index 86%
rename from examples/snippets/event-handler/rest/advanced_mw_compose_middleware_shared.ts
rename to examples/snippets/event-handler/http/advanced_mw_compose_middleware_shared.ts
index 190d5365f0..c9f3cebb29 100644
--- a/examples/snippets/event-handler/rest/advanced_mw_compose_middleware_shared.ts
+++ b/examples/snippets/event-handler/http/advanced_mw_compose_middleware_shared.ts
@@ -1,5 +1,5 @@
-import { composeMiddleware } from '@aws-lambda-powertools/event-handler/experimental-rest';
-import { cors } from '@aws-lambda-powertools/event-handler/experimental-rest/middleware';
+import { composeMiddleware } from '@aws-lambda-powertools/event-handler/http';
+import { cors } from '@aws-lambda-powertools/event-handler/http/middleware';
import type { Middleware } from '@aws-lambda-powertools/event-handler/types';
import { Logger } from '@aws-lambda-powertools/logger';
diff --git a/examples/snippets/event-handler/rest/advanced_mw_custom_middleware.ts b/examples/snippets/event-handler/http/advanced_mw_custom_middleware.ts
similarity index 96%
rename from examples/snippets/event-handler/rest/advanced_mw_custom_middleware.ts
rename to examples/snippets/event-handler/http/advanced_mw_custom_middleware.ts
index 8e852dd523..2a924e47f9 100644
--- a/examples/snippets/event-handler/rest/advanced_mw_custom_middleware.ts
+++ b/examples/snippets/event-handler/http/advanced_mw_custom_middleware.ts
@@ -9,7 +9,7 @@ import { getStringFromEnv } from '@aws-lambda-powertools/commons/utils/env';
import {
Router,
UnauthorizedError,
-} from '@aws-lambda-powertools/event-handler/experimental-rest';
+} from '@aws-lambda-powertools/event-handler/http';
import type { Middleware } from '@aws-lambda-powertools/event-handler/types';
import { Logger } from '@aws-lambda-powertools/logger';
import type { Context } from 'aws-lambda';
diff --git a/examples/snippets/event-handler/rest/advanced_mw_destructuring_problem.ts b/examples/snippets/event-handler/http/advanced_mw_destructuring_problem.ts
similarity index 92%
rename from examples/snippets/event-handler/rest/advanced_mw_destructuring_problem.ts
rename to examples/snippets/event-handler/http/advanced_mw_destructuring_problem.ts
index b1fd622248..920ba29427 100644
--- a/examples/snippets/event-handler/rest/advanced_mw_destructuring_problem.ts
+++ b/examples/snippets/event-handler/http/advanced_mw_destructuring_problem.ts
@@ -1,4 +1,4 @@
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
import type { Middleware } from '@aws-lambda-powertools/event-handler/types';
import type { Context } from 'aws-lambda';
diff --git a/examples/snippets/event-handler/rest/advanced_mw_early_return.ts b/examples/snippets/event-handler/http/advanced_mw_early_return.ts
similarity index 93%
rename from examples/snippets/event-handler/rest/advanced_mw_early_return.ts
rename to examples/snippets/event-handler/http/advanced_mw_early_return.ts
index e973269e67..eae02da1f0 100644
--- a/examples/snippets/event-handler/rest/advanced_mw_early_return.ts
+++ b/examples/snippets/event-handler/http/advanced_mw_early_return.ts
@@ -1,6 +1,6 @@
declare function getAllTodos(): Promise<{ id: string; title: string }[]>;
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
import type { Middleware } from '@aws-lambda-powertools/event-handler/types';
import { Logger } from '@aws-lambda-powertools/logger';
import type { Context } from 'aws-lambda';
diff --git a/examples/snippets/event-handler/rest/advanced_mw_middleware_order.ts b/examples/snippets/event-handler/http/advanced_mw_middleware_order.ts
similarity index 94%
rename from examples/snippets/event-handler/rest/advanced_mw_middleware_order.ts
rename to examples/snippets/event-handler/http/advanced_mw_middleware_order.ts
index 418e3f4142..e30e481c70 100644
--- a/examples/snippets/event-handler/rest/advanced_mw_middleware_order.ts
+++ b/examples/snippets/event-handler/http/advanced_mw_middleware_order.ts
@@ -1,7 +1,7 @@
declare function getAllTodos(): Promise<{ id: string; title: string }[]>;
declare function putTodo(todo: unknown): Promise<{ id: string } & T>;
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
import type { Middleware } from '@aws-lambda-powertools/event-handler/types';
import { Logger } from '@aws-lambda-powertools/logger';
import type { Context } from 'aws-lambda';
diff --git a/examples/snippets/event-handler/rest/advanced_response_streaming.ts b/examples/snippets/event-handler/http/advanced_response_streaming.ts
similarity index 78%
rename from examples/snippets/event-handler/rest/advanced_response_streaming.ts
rename to examples/snippets/event-handler/http/advanced_response_streaming.ts
index 51c1741e89..1148afe90a 100644
--- a/examples/snippets/event-handler/rest/advanced_response_streaming.ts
+++ b/examples/snippets/event-handler/http/advanced_response_streaming.ts
@@ -1,10 +1,7 @@
declare function createVideoStream(): Readable;
import type { Readable } from 'node:stream';
-import {
- Router,
- streamify,
-} from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router, streamify } from '@aws-lambda-powertools/event-handler/http';
const app = new Router();
diff --git a/examples/snippets/event-handler/rest/advanced_testing_helper.ts b/examples/snippets/event-handler/http/advanced_testing_helper.ts
similarity index 100%
rename from examples/snippets/event-handler/rest/advanced_testing_helper.ts
rename to examples/snippets/event-handler/http/advanced_testing_helper.ts
diff --git a/examples/snippets/event-handler/rest/advanced_testing_main.ts b/examples/snippets/event-handler/http/advanced_testing_main.ts
similarity index 100%
rename from examples/snippets/event-handler/rest/advanced_testing_main.ts
rename to examples/snippets/event-handler/http/advanced_testing_main.ts
diff --git a/examples/snippets/event-handler/rest/diagrams/middleware_early_return.mermaid b/examples/snippets/event-handler/http/diagrams/middleware_early_return.mermaid
similarity index 100%
rename from examples/snippets/event-handler/rest/diagrams/middleware_early_return.mermaid
rename to examples/snippets/event-handler/http/diagrams/middleware_early_return.mermaid
diff --git a/examples/snippets/event-handler/rest/diagrams/middleware_error_handling.mermaid b/examples/snippets/event-handler/http/diagrams/middleware_error_handling.mermaid
similarity index 100%
rename from examples/snippets/event-handler/rest/diagrams/middleware_error_handling.mermaid
rename to examples/snippets/event-handler/http/diagrams/middleware_error_handling.mermaid
diff --git a/examples/snippets/event-handler/rest/diagrams/middleware_execution_order.mermaid b/examples/snippets/event-handler/http/diagrams/middleware_execution_order.mermaid
similarity index 100%
rename from examples/snippets/event-handler/rest/diagrams/middleware_execution_order.mermaid
rename to examples/snippets/event-handler/http/diagrams/middleware_execution_order.mermaid
diff --git a/examples/snippets/event-handler/rest/diagrams/middleware_handled_error.mermaid b/examples/snippets/event-handler/http/diagrams/middleware_handled_error.mermaid
similarity index 100%
rename from examples/snippets/event-handler/rest/diagrams/middleware_handled_error.mermaid
rename to examples/snippets/event-handler/http/diagrams/middleware_handled_error.mermaid
diff --git a/examples/snippets/event-handler/rest/diagrams/middleware_throwing_error.mermaid b/examples/snippets/event-handler/http/diagrams/middleware_throwing_error.mermaid
similarity index 100%
rename from examples/snippets/event-handler/rest/diagrams/middleware_throwing_error.mermaid
rename to examples/snippets/event-handler/http/diagrams/middleware_throwing_error.mermaid
diff --git a/examples/snippets/event-handler/rest/gettingStarted_built_in_error_handler.ts b/examples/snippets/event-handler/http/gettingStarted_built_in_error_handler.ts
similarity index 91%
rename from examples/snippets/event-handler/rest/gettingStarted_built_in_error_handler.ts
rename to examples/snippets/event-handler/http/gettingStarted_built_in_error_handler.ts
index 8f59af2398..0fea520b62 100644
--- a/examples/snippets/event-handler/rest/gettingStarted_built_in_error_handler.ts
+++ b/examples/snippets/event-handler/http/gettingStarted_built_in_error_handler.ts
@@ -1,7 +1,7 @@
import {
HttpStatusCodes,
Router,
-} from '@aws-lambda-powertools/event-handler/experimental-rest';
+} from '@aws-lambda-powertools/event-handler/http';
import { Logger } from '@aws-lambda-powertools/logger';
import type { Context } from 'aws-lambda/handler';
diff --git a/examples/snippets/event-handler/rest/gettingStarted_dynamic_routes.ts b/examples/snippets/event-handler/http/gettingStarted_dynamic_routes.ts
similarity index 90%
rename from examples/snippets/event-handler/rest/gettingStarted_dynamic_routes.ts
rename to examples/snippets/event-handler/http/gettingStarted_dynamic_routes.ts
index 4f9f0fd0fb..2f836cc6aa 100644
--- a/examples/snippets/event-handler/rest/gettingStarted_dynamic_routes.ts
+++ b/examples/snippets/event-handler/http/gettingStarted_dynamic_routes.ts
@@ -1,6 +1,6 @@
declare function getTodoById(todoId: unknown): Promise<{ id: string } & T>;
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
import { Logger } from '@aws-lambda-powertools/logger';
import {
correlationPaths,
diff --git a/examples/snippets/event-handler/rest/gettingStarted_dynamic_routes_catch_all.ts b/examples/snippets/event-handler/http/gettingStarted_dynamic_routes_catch_all.ts
similarity index 88%
rename from examples/snippets/event-handler/rest/gettingStarted_dynamic_routes_catch_all.ts
rename to examples/snippets/event-handler/http/gettingStarted_dynamic_routes_catch_all.ts
index 388b0e0f38..3dc09e6aac 100644
--- a/examples/snippets/event-handler/rest/gettingStarted_dynamic_routes_catch_all.ts
+++ b/examples/snippets/event-handler/http/gettingStarted_dynamic_routes_catch_all.ts
@@ -1,4 +1,4 @@
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
import type { APIGatewayProxyEvent, Context } from 'aws-lambda';
const app = new Router();
diff --git a/examples/snippets/event-handler/rest/gettingStarted_error_handling.ts b/examples/snippets/event-handler/http/gettingStarted_error_handling.ts
similarity index 92%
rename from examples/snippets/event-handler/rest/gettingStarted_error_handling.ts
rename to examples/snippets/event-handler/http/gettingStarted_error_handling.ts
index 677fc69fc6..a5901e72ac 100644
--- a/examples/snippets/event-handler/rest/gettingStarted_error_handling.ts
+++ b/examples/snippets/event-handler/http/gettingStarted_error_handling.ts
@@ -4,7 +4,7 @@ declare class GetTodoError extends Error {}
import {
HttpStatusCodes,
Router,
-} from '@aws-lambda-powertools/event-handler/experimental-rest';
+} from '@aws-lambda-powertools/event-handler/http';
import { Logger } from '@aws-lambda-powertools/logger';
import type { Context } from 'aws-lambda/handler';
diff --git a/examples/snippets/event-handler/rest/gettingStarted_methods.ts b/examples/snippets/event-handler/http/gettingStarted_methods.ts
similarity index 90%
rename from examples/snippets/event-handler/rest/gettingStarted_methods.ts
rename to examples/snippets/event-handler/http/gettingStarted_methods.ts
index 0a345dbb3a..c40b7954e0 100644
--- a/examples/snippets/event-handler/rest/gettingStarted_methods.ts
+++ b/examples/snippets/event-handler/http/gettingStarted_methods.ts
@@ -1,6 +1,6 @@
declare function putTodo(todo: unknown): Promise<{ id: string } & T>;
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
import { Logger } from '@aws-lambda-powertools/logger';
import {
correlationPaths,
diff --git a/examples/snippets/event-handler/rest/gettingStarted_multi_methods.ts b/examples/snippets/event-handler/http/gettingStarted_multi_methods.ts
similarity index 91%
rename from examples/snippets/event-handler/rest/gettingStarted_multi_methods.ts
rename to examples/snippets/event-handler/http/gettingStarted_multi_methods.ts
index 3d1e9109ec..981eef0998 100644
--- a/examples/snippets/event-handler/rest/gettingStarted_multi_methods.ts
+++ b/examples/snippets/event-handler/http/gettingStarted_multi_methods.ts
@@ -1,6 +1,6 @@
declare function putTodo(todo: unknown): Promise<{ id: string } & T>;
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
import { Logger } from '@aws-lambda-powertools/logger';
import {
correlationPaths,
diff --git a/examples/snippets/event-handler/rest/gettingStarted_route_prefix.ts b/examples/snippets/event-handler/http/gettingStarted_route_prefix.ts
similarity index 84%
rename from examples/snippets/event-handler/rest/gettingStarted_route_prefix.ts
rename to examples/snippets/event-handler/http/gettingStarted_route_prefix.ts
index 3a0ca18f6d..f4d3a1f2bc 100644
--- a/examples/snippets/event-handler/rest/gettingStarted_route_prefix.ts
+++ b/examples/snippets/event-handler/http/gettingStarted_route_prefix.ts
@@ -1,6 +1,6 @@
declare function getUserTodos(auth: string | null): Promise<{ id: string }>;
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
import type { Context } from 'aws-lambda';
const app = new Router({ prefix: '/todos' });
diff --git a/examples/snippets/event-handler/rest/gettingStarted_serialization.ts b/examples/snippets/event-handler/http/gettingStarted_serialization.ts
similarity index 75%
rename from examples/snippets/event-handler/rest/gettingStarted_serialization.ts
rename to examples/snippets/event-handler/http/gettingStarted_serialization.ts
index 7bbc22f305..1c04910391 100644
--- a/examples/snippets/event-handler/rest/gettingStarted_serialization.ts
+++ b/examples/snippets/event-handler/http/gettingStarted_serialization.ts
@@ -1,4 +1,4 @@
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
import type { Context } from 'aws-lambda';
const app = new Router();
diff --git a/examples/snippets/event-handler/rest/gettingStarted_throwing_http_errors.ts b/examples/snippets/event-handler/http/gettingStarted_throwing_http_errors.ts
similarity index 89%
rename from examples/snippets/event-handler/rest/gettingStarted_throwing_http_errors.ts
rename to examples/snippets/event-handler/http/gettingStarted_throwing_http_errors.ts
index 5950720d77..efb1cd8f38 100644
--- a/examples/snippets/event-handler/rest/gettingStarted_throwing_http_errors.ts
+++ b/examples/snippets/event-handler/http/gettingStarted_throwing_http_errors.ts
@@ -3,7 +3,7 @@ declare function isAuthenticated(token: string): boolean;
import {
Router,
UnauthorizedError,
-} from '@aws-lambda-powertools/event-handler/experimental-rest';
+} from '@aws-lambda-powertools/event-handler/http';
import type { Context } from 'aws-lambda';
const app = new Router();
diff --git a/examples/snippets/event-handler/rest/samples/advanced_binary_req_json64.json b/examples/snippets/event-handler/http/samples/advanced_binary_req_json64.json
similarity index 100%
rename from examples/snippets/event-handler/rest/samples/advanced_binary_req_json64.json
rename to examples/snippets/event-handler/http/samples/advanced_binary_req_json64.json
diff --git a/examples/snippets/event-handler/rest/samples/advanced_binary_req_logo_image.json b/examples/snippets/event-handler/http/samples/advanced_binary_req_logo_image.json
similarity index 100%
rename from examples/snippets/event-handler/rest/samples/advanced_binary_req_logo_image.json
rename to examples/snippets/event-handler/http/samples/advanced_binary_req_logo_image.json
diff --git a/examples/snippets/event-handler/rest/samples/advanced_binary_res_json64.json b/examples/snippets/event-handler/http/samples/advanced_binary_res_json64.json
similarity index 100%
rename from examples/snippets/event-handler/rest/samples/advanced_binary_res_json64.json
rename to examples/snippets/event-handler/http/samples/advanced_binary_res_json64.json
diff --git a/examples/snippets/event-handler/rest/samples/advanced_binary_res_logo_image.json b/examples/snippets/event-handler/http/samples/advanced_binary_res_logo_image.json
similarity index 100%
rename from examples/snippets/event-handler/rest/samples/advanced_binary_res_logo_image.json
rename to examples/snippets/event-handler/http/samples/advanced_binary_res_logo_image.json
diff --git a/examples/snippets/event-handler/rest/samples/advanced_compress_req.json b/examples/snippets/event-handler/http/samples/advanced_compress_req.json
similarity index 100%
rename from examples/snippets/event-handler/rest/samples/advanced_compress_req.json
rename to examples/snippets/event-handler/http/samples/advanced_compress_req.json
diff --git a/examples/snippets/event-handler/rest/samples/advanced_compress_res.json b/examples/snippets/event-handler/http/samples/advanced_compress_res.json
similarity index 100%
rename from examples/snippets/event-handler/rest/samples/advanced_compress_res.json
rename to examples/snippets/event-handler/http/samples/advanced_compress_res.json
diff --git a/examples/snippets/event-handler/rest/samples/advanced_cors_per_route.json b/examples/snippets/event-handler/http/samples/advanced_cors_per_route.json
similarity index 100%
rename from examples/snippets/event-handler/rest/samples/advanced_cors_per_route.json
rename to examples/snippets/event-handler/http/samples/advanced_cors_per_route.json
diff --git a/examples/snippets/event-handler/rest/samples/advanced_cors_simple.json b/examples/snippets/event-handler/http/samples/advanced_cors_simple.json
similarity index 100%
rename from examples/snippets/event-handler/rest/samples/advanced_cors_simple.json
rename to examples/snippets/event-handler/http/samples/advanced_cors_simple.json
diff --git a/examples/snippets/event-handler/rest/samples/advanced_error_debug.json b/examples/snippets/event-handler/http/samples/advanced_error_debug.json
similarity index 100%
rename from examples/snippets/event-handler/rest/samples/advanced_error_debug.json
rename to examples/snippets/event-handler/http/samples/advanced_error_debug.json
diff --git a/examples/snippets/event-handler/rest/samples/advanced_error_prod.json b/examples/snippets/event-handler/http/samples/advanced_error_prod.json
similarity index 100%
rename from examples/snippets/event-handler/rest/samples/advanced_error_prod.json
rename to examples/snippets/event-handler/http/samples/advanced_error_prod.json
diff --git a/examples/snippets/event-handler/rest/samples/advanced_fine_grained_responses.json b/examples/snippets/event-handler/http/samples/advanced_fine_grained_responses.json
similarity index 100%
rename from examples/snippets/event-handler/rest/samples/advanced_fine_grained_responses.json
rename to examples/snippets/event-handler/http/samples/advanced_fine_grained_responses.json
diff --git a/examples/snippets/event-handler/rest/samples/advanced_mw_early_return.json b/examples/snippets/event-handler/http/samples/advanced_mw_early_return.json
similarity index 100%
rename from examples/snippets/event-handler/rest/samples/advanced_mw_early_return.json
rename to examples/snippets/event-handler/http/samples/advanced_mw_early_return.json
diff --git a/examples/snippets/event-handler/rest/samples/advanced_mw_middleware_order.json b/examples/snippets/event-handler/http/samples/advanced_mw_middleware_order.json
similarity index 100%
rename from examples/snippets/event-handler/rest/samples/advanced_mw_middleware_order.json
rename to examples/snippets/event-handler/http/samples/advanced_mw_middleware_order.json
diff --git a/examples/snippets/event-handler/rest/samples/gettingStarted_dynamic_routes.json b/examples/snippets/event-handler/http/samples/gettingStarted_dynamic_routes.json
similarity index 100%
rename from examples/snippets/event-handler/rest/samples/gettingStarted_dynamic_routes.json
rename to examples/snippets/event-handler/http/samples/gettingStarted_dynamic_routes.json
diff --git a/examples/snippets/event-handler/rest/samples/gettingStarted_methods.json b/examples/snippets/event-handler/http/samples/gettingStarted_methods.json
similarity index 100%
rename from examples/snippets/event-handler/rest/samples/gettingStarted_methods.json
rename to examples/snippets/event-handler/http/samples/gettingStarted_methods.json
diff --git a/examples/snippets/event-handler/rest/samples/gettingStarted_serialization.json b/examples/snippets/event-handler/http/samples/gettingStarted_serialization.json
similarity index 100%
rename from examples/snippets/event-handler/rest/samples/gettingStarted_serialization.json
rename to examples/snippets/event-handler/http/samples/gettingStarted_serialization.json
diff --git a/examples/snippets/event-handler/rest/split_route.ts b/examples/snippets/event-handler/http/split_route.ts
similarity index 65%
rename from examples/snippets/event-handler/rest/split_route.ts
rename to examples/snippets/event-handler/http/split_route.ts
index d6ea8bcc41..5c49aa092b 100644
--- a/examples/snippets/event-handler/rest/split_route.ts
+++ b/examples/snippets/event-handler/http/split_route.ts
@@ -1,4 +1,4 @@
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
const router = new Router();
router.get('/todos', () => 'Get all todos');
diff --git a/examples/snippets/event-handler/rest/split_route_index.ts b/examples/snippets/event-handler/http/split_route_index.ts
similarity index 78%
rename from examples/snippets/event-handler/rest/split_route_index.ts
rename to examples/snippets/event-handler/http/split_route_index.ts
index 5ba49cf24b..3b722f6f2b 100644
--- a/examples/snippets/event-handler/rest/split_route_index.ts
+++ b/examples/snippets/event-handler/http/split_route_index.ts
@@ -1,4 +1,4 @@
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
import type { APIGatewayProxyEvent, Context } from 'aws-lambda';
import { router } from './split_route';
diff --git a/examples/snippets/event-handler/rest/split_route_prefix.ts b/examples/snippets/event-handler/http/split_route_prefix.ts
similarity index 63%
rename from examples/snippets/event-handler/rest/split_route_prefix.ts
rename to examples/snippets/event-handler/http/split_route_prefix.ts
index 1a51ae4530..7c5dbfa317 100644
--- a/examples/snippets/event-handler/rest/split_route_prefix.ts
+++ b/examples/snippets/event-handler/http/split_route_prefix.ts
@@ -1,4 +1,4 @@
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
const router = new Router();
router.get('/', () => 'Get all todos');
diff --git a/examples/snippets/event-handler/rest/split_route_prefix_index.ts b/examples/snippets/event-handler/http/split_route_prefix_index.ts
similarity index 79%
rename from examples/snippets/event-handler/rest/split_route_prefix_index.ts
rename to examples/snippets/event-handler/http/split_route_prefix_index.ts
index d42f8d04f8..df30e4fbe0 100644
--- a/examples/snippets/event-handler/rest/split_route_prefix_index.ts
+++ b/examples/snippets/event-handler/http/split_route_prefix_index.ts
@@ -1,4 +1,4 @@
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
import type { APIGatewayProxyEvent, Context } from 'aws-lambda';
import { router } from './split_route';
diff --git a/examples/snippets/event-handler/rest/templates/api_gateway_http_api.yml b/examples/snippets/event-handler/http/templates/api_gateway_http_api.yml
similarity index 100%
rename from examples/snippets/event-handler/rest/templates/api_gateway_http_api.yml
rename to examples/snippets/event-handler/http/templates/api_gateway_http_api.yml
diff --git a/examples/snippets/event-handler/rest/templates/api_gateway_rest_api.yml b/examples/snippets/event-handler/http/templates/api_gateway_rest_api.yml
similarity index 100%
rename from examples/snippets/event-handler/rest/templates/api_gateway_rest_api.yml
rename to examples/snippets/event-handler/http/templates/api_gateway_rest_api.yml
diff --git a/examples/snippets/event-handler/rest/templates/lambda_furl.yml b/examples/snippets/event-handler/http/templates/lambda_furl.yml
similarity index 100%
rename from examples/snippets/event-handler/rest/templates/lambda_furl.yml
rename to examples/snippets/event-handler/http/templates/lambda_furl.yml
diff --git a/mkdocs.yml b/mkdocs.yml
index 0eacd1d117..f44d8de14b 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -47,7 +47,7 @@ nav:
- features/metrics.md
- Event Handler:
- features/event-handler/index.md
- - features/event-handler/rest.md
+ - features/event-handler/http.md
- features/event-handler/appsync-events.md
- features/event-handler/appsync-graphql.md
- features/event-handler/bedrock-agents.md
@@ -182,7 +182,7 @@ plugins:
- features/tracer.md
- features/logger.md
- features/metrics.md
- - features/event-handler/rest.md
+ - features/event-handler/http.md
- features/event-handler/appsync-events.md
- features/event-handler/appsync-graphql.md
- features/event-handler/bedrock-agents.md
diff --git a/packages/event-handler/package.json b/packages/event-handler/package.json
index 599d25ffc4..9662d1035e 100644
--- a/packages/event-handler/package.json
+++ b/packages/event-handler/package.json
@@ -70,24 +70,24 @@
"default": "./lib/esm/types/index.js"
}
},
- "./experimental-rest": {
+ "./http": {
"require": {
- "types": "./lib/cjs/rest/index.d.ts",
- "default": "./lib/cjs/rest/index.js"
+ "types": "./lib/cjs/http/index.d.ts",
+ "default": "./lib/cjs/http/index.js"
},
"import": {
- "types": "./lib/esm/rest/index.d.ts",
- "default": "./lib/esm/rest/index.js"
+ "types": "./lib/esm/http/index.d.ts",
+ "default": "./lib/esm/http/index.js"
}
},
- "./experimental-rest/middleware": {
+ "./http/middleware": {
"require": {
- "types": "./lib/cjs/rest/middleware/index.d.ts",
- "default": "./lib/cjs/rest/middleware/index.js"
+ "types": "./lib/cjs/http/middleware/index.d.ts",
+ "default": "./lib/cjs/http/middleware/index.js"
},
"import": {
- "types": "./lib/esm/rest/middleware/index.d.ts",
- "default": "./lib/esm/rest/middleware/index.js"
+ "types": "./lib/esm/http/middleware/index.d.ts",
+ "default": "./lib/esm/http/middleware/index.js"
}
}
},
@@ -109,9 +109,9 @@
"./lib/cjs/types/index.d.ts",
"./lib/esm/types/index.d.ts"
],
- "experimental-rest": [
- "./lib/cjs/rest/index.d.ts",
- "./lib/esm/rest/index.d.ts"
+ "http": [
+ "./lib/cjs/http/index.d.ts",
+ "./lib/esm/http/index.d.ts"
]
}
},
diff --git a/packages/event-handler/src/rest/ErrorHandlerRegistry.ts b/packages/event-handler/src/http/ErrorHandlerRegistry.ts
similarity index 99%
rename from packages/event-handler/src/rest/ErrorHandlerRegistry.ts
rename to packages/event-handler/src/http/ErrorHandlerRegistry.ts
index 3dd3bbc479..eca29e5756 100644
--- a/packages/event-handler/src/rest/ErrorHandlerRegistry.ts
+++ b/packages/event-handler/src/http/ErrorHandlerRegistry.ts
@@ -3,7 +3,7 @@ import type {
ErrorConstructor,
ErrorHandler,
ErrorHandlerRegistryOptions,
-} from '../types/rest.js';
+} from '../types/http.js';
export class ErrorHandlerRegistry {
readonly #handlers: Map = new Map();
diff --git a/packages/event-handler/src/rest/Route.ts b/packages/event-handler/src/http/Route.ts
similarity index 95%
rename from packages/event-handler/src/rest/Route.ts
rename to packages/event-handler/src/http/Route.ts
index a65c4ab50f..57fca99a65 100644
--- a/packages/event-handler/src/rest/Route.ts
+++ b/packages/event-handler/src/http/Route.ts
@@ -3,7 +3,7 @@ import type {
Middleware,
Path,
RouteHandler,
-} from '../types/rest.js';
+} from '../types/http.js';
class Route {
readonly id: string;
diff --git a/packages/event-handler/src/rest/RouteHandlerRegistry.ts b/packages/event-handler/src/http/RouteHandlerRegistry.ts
similarity index 98%
rename from packages/event-handler/src/rest/RouteHandlerRegistry.ts
rename to packages/event-handler/src/http/RouteHandlerRegistry.ts
index c191d08398..ca5b9f3247 100644
--- a/packages/event-handler/src/rest/RouteHandlerRegistry.ts
+++ b/packages/event-handler/src/http/RouteHandlerRegistry.ts
@@ -3,11 +3,11 @@ import { isRegExp } from '@aws-lambda-powertools/commons/typeutils';
import type {
DynamicRoute,
HttpMethod,
+ HttpRouteHandlerOptions,
Path,
- RestRouteHandlerOptions,
RouteRegistryOptions,
ValidationResult,
-} from '../types/rest.js';
+} from '../types/http.js';
import { ParameterValidationError } from './errors.js';
import { Route } from './Route.js';
import {
@@ -169,7 +169,7 @@ class RouteHandlerRegistry {
public resolve(
method: HttpMethod,
path: Path
- ): RestRouteHandlerOptions | null {
+ ): HttpRouteHandlerOptions | null {
if (this.#shouldSort) {
this.#dynamicRoutes.sort(this.#compareRouteSpecificity);
this.#shouldSort = false;
diff --git a/packages/event-handler/src/rest/Router.ts b/packages/event-handler/src/http/Router.ts
similarity index 99%
rename from packages/event-handler/src/rest/Router.ts
rename to packages/event-handler/src/http/Router.ts
index 96d383ec20..46a2851009 100644
--- a/packages/event-handler/src/rest/Router.ts
+++ b/packages/event-handler/src/http/Router.ts
@@ -19,22 +19,22 @@ import type {
APIGatewayProxyStructuredResultV2,
Context,
} from 'aws-lambda';
-import type { HandlerResponse, ResolveOptions } from '../types/index.js';
import type {
ErrorConstructor,
ErrorHandler,
ErrorResolveOptions,
HttpMethod,
+ HttpRouteOptions,
+ HttpRouterOptions,
Middleware,
Path,
RequestContext,
ResolveStreamOptions,
ResponseStream,
- RestRouteOptions,
- RestRouterOptions,
RouteHandler,
RouterResponse,
-} from '../types/rest.js';
+} from '../types/http.js';
+import type { HandlerResponse, ResolveOptions } from '../types/index.js';
import { HttpStatusCodes, HttpVerbs } from './constants.js';
import {
handlerResultToWebResponse,
@@ -89,7 +89,7 @@ class Router {
*/
protected readonly prefix?: Path;
- public constructor(options?: RestRouterOptions) {
+ public constructor(options?: HttpRouterOptions) {
this.context = {};
const alcLogLevel = getStringFromEnv({
key: 'AWS_LAMBDA_LOG_LEVEL',
@@ -428,7 +428,7 @@ class Router {
}
}
- public route(handler: RouteHandler, options: RestRouteOptions): void {
+ public route(handler: RouteHandler, options: HttpRouteOptions): void {
const { method, path, middleware = [] } = options;
const methods = Array.isArray(method) ? method : [method];
const resolvedPath = resolvePrefixedPath(path, this.prefix);
@@ -732,7 +732,7 @@ class Router {
*
* @example
* ```typescript
- * import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+ * import { Router } from '@aws-lambda-powertools/event-handler/http';
*
* const todosRouter = new Router();
*
diff --git a/packages/event-handler/src/rest/constants.ts b/packages/event-handler/src/http/constants.ts
similarity index 98%
rename from packages/event-handler/src/rest/constants.ts
rename to packages/event-handler/src/http/constants.ts
index 87f5cf7da6..34293b4de0 100644
--- a/packages/event-handler/src/rest/constants.ts
+++ b/packages/event-handler/src/http/constants.ts
@@ -86,7 +86,7 @@ const PARAM_PATTERN = /:([a-zA-Z_]\w*)(?=\/|$)/g;
const SAFE_CHARS = "-._~()'!*:@,;=+&$";
-const UNSAFE_CHARS = '%<> \\[\\]{}|^';
+const UNSAFE_CHARS = String.raw`%<> \[\]{}|^`;
/**
* Default CORS configuration
diff --git a/packages/event-handler/src/rest/converters.ts b/packages/event-handler/src/http/converters.ts
similarity index 99%
rename from packages/event-handler/src/rest/converters.ts
rename to packages/event-handler/src/http/converters.ts
index 6cf4d7f210..35e0575f5b 100644
--- a/packages/event-handler/src/rest/converters.ts
+++ b/packages/event-handler/src/http/converters.ts
@@ -17,7 +17,7 @@ import type {
ResponseTypeMap,
V1Headers,
WebResponseToProxyResultOptions,
-} from '../types/rest.js';
+} from '../types/http.js';
import { HttpStatusCodes, HttpStatusText, HttpVerbs } from './constants.js';
import { InvalidHttpMethodError } from './errors.js';
import {
diff --git a/packages/event-handler/src/rest/errors.ts b/packages/event-handler/src/http/errors.ts
similarity index 98%
rename from packages/event-handler/src/rest/errors.ts
rename to packages/event-handler/src/http/errors.ts
index 66cc410d28..56a3085917 100644
--- a/packages/event-handler/src/rest/errors.ts
+++ b/packages/event-handler/src/http/errors.ts
@@ -1,5 +1,5 @@
import type { JSONValue } from '@aws-lambda-powertools/commons/types';
-import type { HandlerResponse, HttpStatusCode } from '../types/rest.js';
+import type { HandlerResponse, HttpStatusCode } from '../types/http.js';
import { HttpStatusCodes } from './constants.js';
class RouteMatchingError extends Error {
diff --git a/packages/event-handler/src/rest/index.ts b/packages/event-handler/src/http/index.ts
similarity index 100%
rename from packages/event-handler/src/rest/index.ts
rename to packages/event-handler/src/http/index.ts
diff --git a/packages/event-handler/src/rest/middleware/compress.ts b/packages/event-handler/src/http/middleware/compress.ts
similarity index 95%
rename from packages/event-handler/src/rest/middleware/compress.ts
rename to packages/event-handler/src/http/middleware/compress.ts
index bb11c02685..6fce79bb09 100644
--- a/packages/event-handler/src/rest/middleware/compress.ts
+++ b/packages/event-handler/src/http/middleware/compress.ts
@@ -1,5 +1,5 @@
+import type { CompressionOptions } from '../../types/http.js';
import type { Middleware } from '../../types/index.js';
-import type { CompressionOptions } from '../../types/rest.js';
import {
CACHE_CONTROL_NO_TRANSFORM_REGEX,
COMPRESSION_ENCODING_TYPES,
@@ -25,8 +25,8 @@ import {
*
* @example
* ```typescript
- * import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
- * import { compress } from '@aws-lambda-powertools/event-handler/experimental-rest/middleware';
+ * import { Router } from '@aws-lambda-powertools/event-handler/http';
+ * import { compress } from '@aws-lambda-powertools/event-handler/http/middleware';
*
* const app = new Router();
*
@@ -41,8 +41,8 @@ import {
*
* @example
* ```typescript
- * import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
- * import { compress } from '@aws-lambda-powertools/event-handler/experimental-rest/middleware';
+ * import { Router } from '@aws-lambda-powertools/event-handler/http';
+ * import { compress } from '@aws-lambda-powertools/event-handler/http/middleware';
*
* const app = new Router();
*
diff --git a/packages/event-handler/src/rest/middleware/cors.ts b/packages/event-handler/src/http/middleware/cors.ts
similarity index 95%
rename from packages/event-handler/src/rest/middleware/cors.ts
rename to packages/event-handler/src/http/middleware/cors.ts
index 87794a2a3a..24383ec875 100644
--- a/packages/event-handler/src/rest/middleware/cors.ts
+++ b/packages/event-handler/src/http/middleware/cors.ts
@@ -1,4 +1,4 @@
-import type { CorsOptions, Middleware } from '../../types/rest.js';
+import type { CorsOptions, Middleware } from '../../types/http.js';
import {
DEFAULT_CORS_OPTIONS,
HttpStatusCodes,
@@ -11,8 +11,8 @@ import {
*
* @example
* ```typescript
- * import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
- * import { cors } from '@aws-lambda-powertools/event-handler/experimental-rest/middleware';
+ * import { Router } from '@aws-lambda-powertools/event-handler/http';
+ * import { cors } from '@aws-lambda-powertools/event-handler/http/middleware';
*
* const app = new Router();
*
diff --git a/packages/event-handler/src/rest/middleware/index.ts b/packages/event-handler/src/http/middleware/index.ts
similarity index 100%
rename from packages/event-handler/src/rest/middleware/index.ts
rename to packages/event-handler/src/http/middleware/index.ts
diff --git a/packages/event-handler/src/rest/utils.ts b/packages/event-handler/src/http/utils.ts
similarity index 98%
rename from packages/event-handler/src/rest/utils.ts
rename to packages/event-handler/src/http/utils.ts
index 18a8787221..fd6f9b2512 100644
--- a/packages/event-handler/src/rest/utils.ts
+++ b/packages/event-handler/src/http/utils.ts
@@ -10,8 +10,6 @@ import type {
APIGatewayProxyEventV2,
StreamifyHandler,
} from 'aws-lambda';
-import type { Router } from '../rest/Router.js';
-import type { ResolveOptions } from '../types/index.js';
import type {
CompiledRoute,
CompressionOptions,
@@ -24,7 +22,8 @@ import type {
ResponseStream,
ResponseType,
ValidationResult,
-} from '../types/rest.js';
+} from '../types/http.js';
+import type { ResolveOptions } from '../types/index.js';
import {
COMPRESSION_ENCODING_TYPES,
HttpStatusCodes,
@@ -34,9 +33,10 @@ import {
UNSAFE_CHARS,
} from './constants.js';
import { handlerResultToWebResponse } from './converters.js';
+import type { Router } from './Router.js';
export function getPathString(path: Path): string {
- return isString(path) ? path : path.source.replaceAll(/\\\//g, '/');
+ return isString(path) ? path : path.source.replaceAll(String.raw`\/`, '/');
}
export function compilePath(path: Path): CompiledRoute {
@@ -458,7 +458,7 @@ const streamifyResponse =
*
* @example
* ```typescript
- * import { Router, streamify } from '@aws-lambda-powertools/event-handler/experimental-rest';
+ * import { Router, streamify } from '@aws-lambda-powertools/event-handler/http';
*
* const app = new Router();
* app.get('/test', () => ({ message: 'Hello' }));
diff --git a/packages/event-handler/src/types/rest.ts b/packages/event-handler/src/types/http.ts
similarity index 96%
rename from packages/event-handler/src/types/rest.ts
rename to packages/event-handler/src/types/http.ts
index 125cedb01e..9f949a409d 100644
--- a/packages/event-handler/src/types/rest.ts
+++ b/packages/event-handler/src/types/http.ts
@@ -12,8 +12,8 @@ import type {
APIGatewayProxyStructuredResultV2,
Context,
} from 'aws-lambda';
-import type { HttpStatusCodes, HttpVerbs } from '../rest/constants.js';
-import type { Route } from '../rest/Route.js';
+import type { HttpStatusCodes, HttpVerbs } from '../http/constants.js';
+import type { Route } from '../http/Route.js';
import type { ResolveOptions } from './common.js';
type ResponseType = 'ApiGatewayV1' | 'ApiGatewayV2' | 'ALB';
@@ -50,7 +50,7 @@ interface ErrorConstructor {
/**
* Options for the {@link Router | `Router``} class
*/
-type RestRouterOptions = {
+type HttpRouterOptions = {
/**
* A logger instance to be used for logging debug, warning, and error messages.
*
@@ -98,14 +98,14 @@ type HttpStatusCode = (typeof HttpStatusCodes)[keyof typeof HttpStatusCodes];
type Path = `/${string}` | RegExp;
-type RestRouteHandlerOptions = {
+type HttpRouteHandlerOptions = {
handler: RouteHandler;
params: Record;
rawParams: Record;
middleware: Middleware[];
};
-type RestRouteOptions = {
+type HttpRouteOptions = {
method: HttpMethod | HttpMethod[];
path: Path;
middleware?: Middleware[];
@@ -167,7 +167,7 @@ type ResolveStreamOptions = {
*
* @example
* ```ts
- * import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+ * import { Router } from '@aws-lambda-powertools/event-handler/http';
*
* const app = new Router();
*
@@ -270,12 +270,12 @@ export type {
RequestContext,
ResponseType,
ResponseTypeMap,
- RestRouterOptions,
+ HttpRouterOptions,
RouteHandler,
ResolveStreamOptions,
ResponseStream,
- RestRouteOptions,
- RestRouteHandlerOptions,
+ HttpRouteOptions,
+ HttpRouteHandlerOptions,
RouteRegistryOptions,
RouterResponse,
ValidationResult,
diff --git a/packages/event-handler/src/types/index.ts b/packages/event-handler/src/types/index.ts
index b32b78c70f..0d47c34f0d 100644
--- a/packages/event-handler/src/types/index.ts
+++ b/packages/event-handler/src/types/index.ts
@@ -37,12 +37,12 @@ export type {
ErrorResolveOptions,
HandlerResponse,
HttpMethod,
+ HttpRouteHandlerOptions,
+ HttpRouteOptions,
+ HttpRouterOptions,
HttpStatusCode,
Middleware,
Path,
RequestContext,
- RestRouteHandlerOptions,
- RestRouteOptions,
- RestRouterOptions,
RouteHandler,
-} from './rest.js';
+} from './http.js';
diff --git a/packages/event-handler/tests/e2e/httpRouter.test.FunctionCode.ts b/packages/event-handler/tests/e2e/httpRouter.test.FunctionCode.ts
index 2612eb0502..59091db3b2 100644
--- a/packages/event-handler/tests/e2e/httpRouter.test.FunctionCode.ts
+++ b/packages/event-handler/tests/e2e/httpRouter.test.FunctionCode.ts
@@ -1,4 +1,4 @@
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
import type { Context } from 'aws-lambda';
import { binaryRouter } from './routers/binaryRouter.js';
import { compressRouter } from './routers/compressRouter.js';
diff --git a/packages/event-handler/tests/e2e/routers/binaryRouter.ts b/packages/event-handler/tests/e2e/routers/binaryRouter.ts
index 0100678931..9436e63bcd 100644
--- a/packages/event-handler/tests/e2e/routers/binaryRouter.ts
+++ b/packages/event-handler/tests/e2e/routers/binaryRouter.ts
@@ -1,4 +1,4 @@
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
const binaryRouter = new Router();
diff --git a/packages/event-handler/tests/e2e/routers/compressRouter.ts b/packages/event-handler/tests/e2e/routers/compressRouter.ts
index 46787e435d..7867d61f68 100644
--- a/packages/event-handler/tests/e2e/routers/compressRouter.ts
+++ b/packages/event-handler/tests/e2e/routers/compressRouter.ts
@@ -1,5 +1,5 @@
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
-import { compress } from '@aws-lambda-powertools/event-handler/experimental-rest/middleware';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
+import { compress } from '@aws-lambda-powertools/event-handler/http/middleware';
const compressRouter = new Router();
diff --git a/packages/event-handler/tests/e2e/routers/corsRouter.ts b/packages/event-handler/tests/e2e/routers/corsRouter.ts
index 318f8135d8..45f1ab0cb2 100644
--- a/packages/event-handler/tests/e2e/routers/corsRouter.ts
+++ b/packages/event-handler/tests/e2e/routers/corsRouter.ts
@@ -1,5 +1,5 @@
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
-import { cors } from '@aws-lambda-powertools/event-handler/experimental-rest/middleware';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
+import { cors } from '@aws-lambda-powertools/event-handler/http/middleware';
const corsRouter = new Router();
diff --git a/packages/event-handler/tests/e2e/routers/errorsRouter.ts b/packages/event-handler/tests/e2e/routers/errorsRouter.ts
index 137ae15151..62ab154814 100644
--- a/packages/event-handler/tests/e2e/routers/errorsRouter.ts
+++ b/packages/event-handler/tests/e2e/routers/errorsRouter.ts
@@ -6,7 +6,7 @@ import {
NotFoundError,
Router,
UnauthorizedError,
-} from '@aws-lambda-powertools/event-handler/experimental-rest';
+} from '@aws-lambda-powertools/event-handler/http';
const errorsRouter = new Router();
diff --git a/packages/event-handler/tests/e2e/routers/methodsRouter.ts b/packages/event-handler/tests/e2e/routers/methodsRouter.ts
index aaf93af6d6..9f1dd9b279 100644
--- a/packages/event-handler/tests/e2e/routers/methodsRouter.ts
+++ b/packages/event-handler/tests/e2e/routers/methodsRouter.ts
@@ -1,4 +1,4 @@
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
const methodsRouter = new Router();
diff --git a/packages/event-handler/tests/e2e/routers/middlewareRouter.ts b/packages/event-handler/tests/e2e/routers/middlewareRouter.ts
index f10254da42..aa9ec4f7b1 100644
--- a/packages/event-handler/tests/e2e/routers/middlewareRouter.ts
+++ b/packages/event-handler/tests/e2e/routers/middlewareRouter.ts
@@ -1,4 +1,4 @@
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
import type { Middleware } from '@aws-lambda-powertools/event-handler/types';
const middlewareRouter = new Router();
diff --git a/packages/event-handler/tests/e2e/routers/multiValueHeadersRouter.ts b/packages/event-handler/tests/e2e/routers/multiValueHeadersRouter.ts
index cd70feaf2b..f49ca628be 100644
--- a/packages/event-handler/tests/e2e/routers/multiValueHeadersRouter.ts
+++ b/packages/event-handler/tests/e2e/routers/multiValueHeadersRouter.ts
@@ -1,4 +1,4 @@
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
const multiValueHeadersRouter = new Router();
diff --git a/packages/event-handler/tests/e2e/routers/nestedRouter.ts b/packages/event-handler/tests/e2e/routers/nestedRouter.ts
index b3d4680c87..07f1fbb277 100644
--- a/packages/event-handler/tests/e2e/routers/nestedRouter.ts
+++ b/packages/event-handler/tests/e2e/routers/nestedRouter.ts
@@ -1,4 +1,4 @@
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
const nestedRouter = new Router();
diff --git a/packages/event-handler/tests/e2e/routers/paramsRouter.ts b/packages/event-handler/tests/e2e/routers/paramsRouter.ts
index ecb8b93b85..548ef42a8f 100644
--- a/packages/event-handler/tests/e2e/routers/paramsRouter.ts
+++ b/packages/event-handler/tests/e2e/routers/paramsRouter.ts
@@ -1,4 +1,4 @@
-import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest';
+import { Router } from '@aws-lambda-powertools/event-handler/http';
const paramsRouter = new Router();
diff --git a/packages/event-handler/tests/unit/rest/ErrorHandlerRegistry.test.ts b/packages/event-handler/tests/unit/http/ErrorHandlerRegistry.test.ts
similarity index 96%
rename from packages/event-handler/tests/unit/rest/ErrorHandlerRegistry.test.ts
rename to packages/event-handler/tests/unit/http/ErrorHandlerRegistry.test.ts
index 7b0fc9a857..ffe38c7027 100644
--- a/packages/event-handler/tests/unit/rest/ErrorHandlerRegistry.test.ts
+++ b/packages/event-handler/tests/unit/http/ErrorHandlerRegistry.test.ts
@@ -1,10 +1,10 @@
import { describe, expect, it } from 'vitest';
-import { ErrorHandlerRegistry } from '../../../src/rest/ErrorHandlerRegistry.js';
-import { HttpStatusCodes } from '../../../src/rest/index.js';
+import { ErrorHandlerRegistry } from '../../../src/http/ErrorHandlerRegistry.js';
+import { HttpStatusCodes } from '../../../src/http/index.js';
import type {
HttpStatusCode,
RequestContext,
-} from '../../../src/types/rest.js';
+} from '../../../src/types/http.js';
const createErrorHandler =
(statusCode: HttpStatusCode, message?: string) =>
diff --git a/packages/event-handler/tests/unit/rest/RouteHandlerRegistry.test.ts b/packages/event-handler/tests/unit/http/RouteHandlerRegistry.test.ts
similarity index 98%
rename from packages/event-handler/tests/unit/rest/RouteHandlerRegistry.test.ts
rename to packages/event-handler/tests/unit/http/RouteHandlerRegistry.test.ts
index f27671fd38..d96629d7c8 100644
--- a/packages/event-handler/tests/unit/rest/RouteHandlerRegistry.test.ts
+++ b/packages/event-handler/tests/unit/http/RouteHandlerRegistry.test.ts
@@ -2,10 +2,10 @@ import { describe, expect, it } from 'vitest';
import {
HttpVerbs,
ParameterValidationError,
-} from '../../../src/rest/index.js';
-import { Route } from '../../../src/rest/Route.js';
-import { RouteHandlerRegistry } from '../../../src/rest/RouteHandlerRegistry.js';
-import type { Path } from '../../../src/types/rest.js';
+} from '../../../src/http/index.js';
+import { Route } from '../../../src/http/Route.js';
+import { RouteHandlerRegistry } from '../../../src/http/RouteHandlerRegistry.js';
+import type { Path } from '../../../src/types/http.js';
describe('Class: RouteHandlerRegistry', () => {
it.each([
diff --git a/packages/event-handler/tests/unit/rest/Router/basic-routing.test.ts b/packages/event-handler/tests/unit/http/Router/basic-routing.test.ts
similarity index 98%
rename from packages/event-handler/tests/unit/rest/Router/basic-routing.test.ts
rename to packages/event-handler/tests/unit/http/Router/basic-routing.test.ts
index d27b77741a..e6e72f388d 100644
--- a/packages/event-handler/tests/unit/rest/Router/basic-routing.test.ts
+++ b/packages/event-handler/tests/unit/http/Router/basic-routing.test.ts
@@ -1,14 +1,14 @@
import { Readable } from 'node:stream';
import context from '@aws-lambda-powertools/testing-utils/context';
import { describe, expect, it, vi } from 'vitest';
-import { HttpStatusText } from '../../../../src/rest/constants.js';
-import { InvalidEventError } from '../../../../src/rest/errors.js';
+import { HttpStatusText } from '../../../../src/http/constants.js';
+import { InvalidEventError } from '../../../../src/http/errors.js';
import {
HttpStatusCodes,
HttpVerbs,
Router,
-} from '../../../../src/rest/index.js';
-import type { HttpMethod, RouteHandler } from '../../../../src/types/rest.js';
+} from '../../../../src/http/index.js';
+import type { HttpMethod, RouteHandler } from '../../../../src/types/http.js';
import {
createTestALBEvent,
createTestEvent,
diff --git a/packages/event-handler/tests/unit/rest/Router/decorators.test.ts b/packages/event-handler/tests/unit/http/Router/decorators.test.ts
similarity index 99%
rename from packages/event-handler/tests/unit/rest/Router/decorators.test.ts
rename to packages/event-handler/tests/unit/http/Router/decorators.test.ts
index 05362f9d80..612ded372d 100644
--- a/packages/event-handler/tests/unit/rest/Router/decorators.test.ts
+++ b/packages/event-handler/tests/unit/http/Router/decorators.test.ts
@@ -8,8 +8,8 @@ import {
Router,
streamify,
UnauthorizedError,
-} from '../../../../src/rest/index.js';
-import type { RequestContext } from '../../../../src/types/rest.js';
+} from '../../../../src/http/index.js';
+import type { RequestContext } from '../../../../src/types/http.js';
import {
createHandler,
createHandlerWithScope,
diff --git a/packages/event-handler/tests/unit/rest/Router/error-handling.test.ts b/packages/event-handler/tests/unit/http/Router/error-handling.test.ts
similarity index 98%
rename from packages/event-handler/tests/unit/rest/Router/error-handling.test.ts
rename to packages/event-handler/tests/unit/http/Router/error-handling.test.ts
index d760242b61..eaa5e87443 100644
--- a/packages/event-handler/tests/unit/rest/Router/error-handling.test.ts
+++ b/packages/event-handler/tests/unit/http/Router/error-handling.test.ts
@@ -7,7 +7,7 @@ import {
MethodNotAllowedError,
NotFoundError,
Router,
-} from '../../../../src/rest/index.js';
+} from '../../../../src/http/index.js';
import { createTestEvent, createTestEventV2 } from '../helpers.js';
describe.each([
@@ -657,10 +657,10 @@ describe('Class: Router - proxyEventToWebRequest Error Handling', () => {
it('re-throws non-InvalidHttpMethodError from proxyEventToWebRequest', async () => {
// Prepare
- vi.doMock('../../../../src/rest/converters.js', async () => {
+ vi.doMock('../../../../src/http/converters.js', async () => {
const actual = await vi.importActual<
- typeof import('../../../../src/rest/converters.js')
- >('../../../../src/rest/converters.js');
+ typeof import('../../../../src/http/converters.js')
+ >('../../../../src/http/converters.js');
return {
...actual,
proxyEventToWebRequest: vi.fn(() => {
@@ -669,7 +669,7 @@ describe('Class: Router - proxyEventToWebRequest Error Handling', () => {
};
});
- const { Router } = await import('../../../../src/rest/Router.js');
+ const { Router } = await import('../../../../src/http/Router.js');
const app = new Router();
app.get('/test', () => ({ message: 'success' }));
diff --git a/packages/event-handler/tests/unit/rest/Router/logging.test.ts b/packages/event-handler/tests/unit/http/Router/logging.test.ts
similarity index 91%
rename from packages/event-handler/tests/unit/rest/Router/logging.test.ts
rename to packages/event-handler/tests/unit/http/Router/logging.test.ts
index d964352c2b..08162e66d6 100644
--- a/packages/event-handler/tests/unit/rest/Router/logging.test.ts
+++ b/packages/event-handler/tests/unit/http/Router/logging.test.ts
@@ -1,10 +1,10 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
-import { HttpVerbs, Router } from '../../../../src/rest/index.js';
-import type { RestRouterOptions } from '../../../../src/types/rest.js';
+import { HttpVerbs, Router } from '../../../../src/http/index.js';
+import type { HttpRouterOptions } from '../../../../src/types/http.js';
describe('Class: Router - Logging', () => {
class TestResolver extends Router {
- constructor(options?: RestRouterOptions) {
+ constructor(options?: HttpRouterOptions) {
super(options);
this.logger.debug('test debug');
this.logger.warn('test warn');
diff --git a/packages/event-handler/tests/unit/rest/Router/middleware.test.ts b/packages/event-handler/tests/unit/http/Router/middleware.test.ts
similarity index 99%
rename from packages/event-handler/tests/unit/rest/Router/middleware.test.ts
rename to packages/event-handler/tests/unit/http/Router/middleware.test.ts
index fe37c7105e..c3cd8b92f1 100644
--- a/packages/event-handler/tests/unit/rest/Router/middleware.test.ts
+++ b/packages/event-handler/tests/unit/http/Router/middleware.test.ts
@@ -2,12 +2,12 @@ import { Readable } from 'node:stream';
import context from '@aws-lambda-powertools/testing-utils/context';
import type { Context } from 'aws-lambda';
import { describe, expect, it, vi } from 'vitest';
-import { HttpStatusCodes, Router } from '../../../../src/rest/index.js';
+import { HttpStatusCodes, Router } from '../../../../src/http/index.js';
import type {
Middleware,
Path,
RequestContext,
-} from '../../../../src/types/rest.js';
+} from '../../../../src/types/http.js';
import {
createNoNextMiddleware,
createReturningMiddleware,
diff --git a/packages/event-handler/tests/unit/rest/Router/streaming.test.ts b/packages/event-handler/tests/unit/http/Router/streaming.test.ts
similarity index 99%
rename from packages/event-handler/tests/unit/rest/Router/streaming.test.ts
rename to packages/event-handler/tests/unit/http/Router/streaming.test.ts
index 3c4ddc1a7c..ce0c9accb9 100644
--- a/packages/event-handler/tests/unit/rest/Router/streaming.test.ts
+++ b/packages/event-handler/tests/unit/http/Router/streaming.test.ts
@@ -5,7 +5,7 @@ import {
Router,
streamify,
UnauthorizedError,
-} from '../../../../src/rest/index.js';
+} from '../../../../src/http/index.js';
import {
createTestEvent,
createTestEventV2,
diff --git a/packages/event-handler/tests/unit/rest/converters.test.ts b/packages/event-handler/tests/unit/http/converters.test.ts
similarity index 99%
rename from packages/event-handler/tests/unit/rest/converters.test.ts
rename to packages/event-handler/tests/unit/http/converters.test.ts
index 1cca172953..558f94862c 100644
--- a/packages/event-handler/tests/unit/rest/converters.test.ts
+++ b/packages/event-handler/tests/unit/http/converters.test.ts
@@ -3,13 +3,13 @@ import { describe, expect, it } from 'vitest';
import {
bodyToNodeStream,
webHeadersToApiGatewayHeaders,
-} from '../../../src/rest/converters.js';
+} from '../../../src/http/converters.js';
import {
HttpStatusCodes,
handlerResultToWebResponse,
proxyEventToWebRequest,
webResponseToProxyResult,
-} from '../../../src/rest/index.js';
+} from '../../../src/http/index.js';
import {
createTestALBEvent,
createTestEvent,
diff --git a/packages/event-handler/tests/unit/rest/errors.test.ts b/packages/event-handler/tests/unit/http/errors.test.ts
similarity index 99%
rename from packages/event-handler/tests/unit/rest/errors.test.ts
rename to packages/event-handler/tests/unit/http/errors.test.ts
index 95db647802..c0269b552b 100644
--- a/packages/event-handler/tests/unit/rest/errors.test.ts
+++ b/packages/event-handler/tests/unit/http/errors.test.ts
@@ -10,7 +10,7 @@ import {
RequestTimeoutError,
ServiceUnavailableError,
UnauthorizedError,
-} from '../../../src/rest/index.js';
+} from '../../../src/http/index.js';
describe('HTTP Error Classes', () => {
it.each([
diff --git a/packages/event-handler/tests/unit/rest/helpers.ts b/packages/event-handler/tests/unit/http/helpers.ts
similarity index 97%
rename from packages/event-handler/tests/unit/rest/helpers.ts
rename to packages/event-handler/tests/unit/http/helpers.ts
index ec19eaad50..579a752c03 100644
--- a/packages/event-handler/tests/unit/rest/helpers.ts
+++ b/packages/event-handler/tests/unit/http/helpers.ts
@@ -9,14 +9,14 @@ import type {
APIGatewayProxyStructuredResultV2,
Context,
} from 'aws-lambda';
-import { HttpVerbs } from '../../../src/rest/constants.js';
-import type { Router } from '../../../src/rest/Router.js';
+import { HttpVerbs } from '../../../src/http/constants.js';
+import type { Router } from '../../../src/http/Router.js';
import type {
HandlerResponse,
ResponseStream as IResponseStream,
Middleware,
RouterResponse,
-} from '../../../src/types/rest.js';
+} from '../../../src/types/http.js';
export const createTestEvent = (
path: string,
diff --git a/packages/event-handler/tests/unit/rest/middleware/compress.test.ts b/packages/event-handler/tests/unit/http/middleware/compress.test.ts
similarity index 97%
rename from packages/event-handler/tests/unit/rest/middleware/compress.test.ts
rename to packages/event-handler/tests/unit/http/middleware/compress.test.ts
index 653bb62afd..3d72667b28 100644
--- a/packages/event-handler/tests/unit/rest/middleware/compress.test.ts
+++ b/packages/event-handler/tests/unit/http/middleware/compress.test.ts
@@ -1,8 +1,8 @@
import { gzipSync } from 'node:zlib';
import context from '@aws-lambda-powertools/testing-utils/context';
import { beforeEach, describe, expect, it } from 'vitest';
-import { compress } from '../../../../src/rest/middleware/index.js';
-import { Router } from '../../../../src/rest/Router.js';
+import { compress } from '../../../../src/http/middleware/index.js';
+import { Router } from '../../../../src/http/Router.js';
import { createSettingHeadersMiddleware, createTestEvent } from '../helpers.js';
describe('Compress Middleware', () => {
diff --git a/packages/event-handler/tests/unit/rest/middleware/cors.test.ts b/packages/event-handler/tests/unit/http/middleware/cors.test.ts
similarity index 96%
rename from packages/event-handler/tests/unit/rest/middleware/cors.test.ts
rename to packages/event-handler/tests/unit/http/middleware/cors.test.ts
index e907eef410..a1144750c8 100644
--- a/packages/event-handler/tests/unit/rest/middleware/cors.test.ts
+++ b/packages/event-handler/tests/unit/http/middleware/cors.test.ts
@@ -1,8 +1,8 @@
import context from '@aws-lambda-powertools/testing-utils/context';
import { beforeEach, describe, expect, it } from 'vitest';
-import { DEFAULT_CORS_OPTIONS } from '../../../../src/rest/constants.js';
-import { cors } from '../../../../src/rest/middleware/cors.js';
-import { Router } from '../../../../src/rest/Router.js';
+import { DEFAULT_CORS_OPTIONS } from '../../../../src/http/constants.js';
+import { cors } from '../../../../src/http/middleware/cors.js';
+import { Router } from '../../../../src/http/Router.js';
import { createHeaderCheckMiddleware, createTestEvent } from '../helpers.js';
describe('CORS Middleware', () => {
diff --git a/packages/event-handler/tests/unit/rest/utils.test.ts b/packages/event-handler/tests/unit/http/utils.test.ts
similarity index 99%
rename from packages/event-handler/tests/unit/rest/utils.test.ts
rename to packages/event-handler/tests/unit/http/utils.test.ts
index 717a92cf42..0ba1516d00 100644
--- a/packages/event-handler/tests/unit/rest/utils.test.ts
+++ b/packages/event-handler/tests/unit/http/utils.test.ts
@@ -10,17 +10,17 @@ import {
isAPIGatewayProxyEventV1,
isAPIGatewayProxyEventV2,
isExtendedAPIGatewayProxyResult,
-} from '../../../src/rest/index.js';
+} from '../../../src/http/index.js';
import {
compilePath,
resolvePrefixedPath,
validatePathPattern,
-} from '../../../src/rest/utils.js';
+} from '../../../src/http/utils.js';
import type {
Middleware,
Path,
RequestContext,
-} from '../../../src/types/rest.js';
+} from '../../../src/types/http.js';
describe('Path Utilities', () => {
beforeEach(() => {
@@ -849,7 +849,7 @@ describe('Path Utilities', () => {
// Clear module cache and dynamically import
vi.resetModules();
- const { HttpResponseStream } = await import('../../../src/rest/utils.js');
+ const { HttpResponseStream } = await import('../../../src/http/utils.js');
// Assert
expect(HttpResponseStream).toBe(mockHttpResponseStream);