Skip to content
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion aws_lambda_powertools/event_handler/api_gateway.py
Original file line number Diff line number Diff line change
Expand Up @@ -675,12 +675,17 @@ def _get_openapi_path( # noqa PLR0912
if not return_field:
raise AssertionError("Model declared in custom responses was not found")

new_payload = self._openapi_operation_return(
model_payload = self._openapi_operation_return(
param=return_field,
model_name_map=model_name_map,
field_mapping=field_mapping,
)

# Preserve existing fields like examples, encoding, etc.
new_payload = {**payload} # Copy all existing fields
new_payload.update(model_payload) # Add/override with model schema
new_payload.pop("model", None) # Remove the model field itself

# Case 2.2: the 'content' has a schema
else:
# Do nothing! We already have what we need!
Expand Down
24 changes: 21 additions & 3 deletions aws_lambda_powertools/event_handler/openapi/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,32 @@
}


class OpenAPIResponseHeader(TypedDict, total=False):
"""OpenAPI Response Header Object"""

description: NotRequired[str]
schema: NotRequired[dict[str, Any]]
examples: NotRequired[dict[str, Any]]
style: NotRequired[str]
explode: NotRequired[bool]
allowReserved: NotRequired[bool]
deprecated: NotRequired[bool]


class OpenAPIResponseContentSchema(TypedDict, total=False):
schema: dict
examples: NotRequired[dict[str, Any]]
encoding: NotRequired[dict[str, Any]]


class OpenAPIResponseContentModel(TypedDict):
class OpenAPIResponseContentModel(TypedDict, total=False):
model: Any
examples: NotRequired[dict[str, Any]]
encoding: NotRequired[dict[str, Any]]


class OpenAPIResponse(TypedDict):
description: str
class OpenAPIResponse(TypedDict, total=False):
description: str # Still required
headers: NotRequired[dict[str, OpenAPIResponseHeader]]
content: NotRequired[dict[str, OpenAPIResponseContentSchema | OpenAPIResponseContentModel]]
links: NotRequired[dict[str, Any]]
Loading
Loading