diff --git a/aws_lambda_powertools/event_handler/openapi/models.py b/aws_lambda_powertools/event_handler/openapi/models.py index 9420cd4afbc..223d30ece48 100644 --- a/aws_lambda_powertools/event_handler/openapi/models.py +++ b/aws_lambda_powertools/event_handler/openapi/models.py @@ -201,7 +201,7 @@ class Schema(BaseModel): deprecated: Optional[bool] = None readOnly: Optional[bool] = None writeOnly: Optional[bool] = None - examples: Optional[List["Example"]] = None + examples: Optional[Union[List["Example"], List[str]]] = None # Ref: OpenAPI 3.0.0: https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.0.md#schema-object # Schema Object discriminator: Optional[Discriminator] = None diff --git a/tests/functional/event_handler/_pydantic/test_openapi_params.py b/tests/functional/event_handler/_pydantic/test_openapi_params.py index 3d8bb73e4bf..d838a0843e4 100644 --- a/tests/functional/event_handler/_pydantic/test_openapi_params.py +++ b/tests/functional/event_handler/_pydantic/test_openapi_params.py @@ -460,3 +460,38 @@ def test_create_model_field_convert_underscore(): result = _create_model_field(field_info, int, "user_id", False) assert result.alias == "user-id" + + +def test_openapi_with_example_as_list(): + app = APIGatewayRestResolver() + + @app.get("/users", summary="Get Users", operation_id="GetUsers", description="Get paginated users", tags=["Users"]) + def handler( + count: Annotated[ + int, + Query(gt=0, lt=100, examples=["Example 1"]), + ] = 1, + ): + print(count) + raise NotImplementedError() + + schema = app.get_openapi_schema() + + get = schema.paths["/users"].get + assert len(get.parameters) == 1 + assert get.summary == "Get Users" + assert get.operationId == "GetUsers" + assert get.description == "Get paginated users" + assert get.tags == ["Users"] + + parameter = get.parameters[0] + assert parameter.required is False + assert parameter.name == "count" + assert parameter.in_ == ParameterInType.query + assert parameter.schema_.type == "integer" + assert parameter.schema_.default == 1 + assert parameter.schema_.title == "Count" + assert parameter.schema_.exclusiveMinimum == 0 + assert parameter.schema_.exclusiveMaximum == 100 + assert len(parameter.schema_.examples) == 1 + assert parameter.schema_.examples[0] == "Example 1"