Skip to content

Commit ece20f8

Browse files
feat(openapi): enable direct list input in Examples model (#5318)
Adding possibility to generate examples from a direct list
1 parent 174f26f commit ece20f8

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

aws_lambda_powertools/event_handler/openapi/models.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ class Schema(BaseModel):
201201
deprecated: Optional[bool] = None
202202
readOnly: Optional[bool] = None
203203
writeOnly: Optional[bool] = None
204-
examples: Optional[List["Example"]] = None
204+
examples: Optional[Union[List["Example"], List[str]]] = None
205205
# Ref: OpenAPI 3.0.0: https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.0.md#schema-object
206206
# Schema Object
207207
discriminator: Optional[Discriminator] = None

tests/functional/event_handler/_pydantic/test_openapi_params.py

+35
Original file line numberDiff line numberDiff line change
@@ -460,3 +460,38 @@ def test_create_model_field_convert_underscore():
460460

461461
result = _create_model_field(field_info, int, "user_id", False)
462462
assert result.alias == "user-id"
463+
464+
465+
def test_openapi_with_example_as_list():
466+
app = APIGatewayRestResolver()
467+
468+
@app.get("/users", summary="Get Users", operation_id="GetUsers", description="Get paginated users", tags=["Users"])
469+
def handler(
470+
count: Annotated[
471+
int,
472+
Query(gt=0, lt=100, examples=["Example 1"]),
473+
] = 1,
474+
):
475+
print(count)
476+
raise NotImplementedError()
477+
478+
schema = app.get_openapi_schema()
479+
480+
get = schema.paths["/users"].get
481+
assert len(get.parameters) == 1
482+
assert get.summary == "Get Users"
483+
assert get.operationId == "GetUsers"
484+
assert get.description == "Get paginated users"
485+
assert get.tags == ["Users"]
486+
487+
parameter = get.parameters[0]
488+
assert parameter.required is False
489+
assert parameter.name == "count"
490+
assert parameter.in_ == ParameterInType.query
491+
assert parameter.schema_.type == "integer"
492+
assert parameter.schema_.default == 1
493+
assert parameter.schema_.title == "Count"
494+
assert parameter.schema_.exclusiveMinimum == 0
495+
assert parameter.schema_.exclusiveMaximum == 100
496+
assert len(parameter.schema_.examples) == 1
497+
assert parameter.schema_.examples[0] == "Example 1"

0 commit comments

Comments
 (0)