@@ -309,6 +309,7 @@ def __init__(
309309 include_in_schema : bool = True ,
310310 security : list [dict [str , list [str ]]] | None = None ,
311311 openapi_extensions : dict [str , Any ] | None = None ,
312+ deprecated : bool = False ,
312313 middlewares : list [Callable [..., Response ]] | None = None ,
313314 ):
314315 """
@@ -348,6 +349,8 @@ def __init__(
348349 The OpenAPI security for this route
349350 openapi_extensions: dict[str, Any], optional
350351 Additional OpenAPI extensions as a dictionary.
352+ deprecated: bool
353+ Whether or not to mark this route as deprecated in the OpenAPI schema
351354 middlewares: list[Callable[..., Response]] | None
352355 The list of route middlewares to be called in order.
353356 """
@@ -374,6 +377,7 @@ def __init__(
374377 self .openapi_extensions = openapi_extensions
375378 self .middlewares = middlewares or []
376379 self .operation_id = operation_id or self ._generate_operation_id ()
380+ self .deprecated = deprecated
377381
378382 # _middleware_stack_built is used to ensure the middleware stack is only built once.
379383 self ._middleware_stack_built = False
@@ -670,6 +674,9 @@ def _openapi_operation_metadata(self, operation_ids: set[str]) -> dict[str, Any]
670674 operation_ids .add (self .operation_id )
671675 operation ["operationId" ] = self .operation_id
672676
677+ # Mark as deprecated if necessary
678+ operation ["deprecated" ] = self .deprecated or None
679+
673680 return operation
674681
675682 @staticmethod
@@ -924,6 +931,7 @@ def route(
924931 include_in_schema : bool = True ,
925932 security : list [dict [str , list [str ]]] | None = None ,
926933 openapi_extensions : dict [str , Any ] | None = None ,
934+ deprecated : bool = False ,
927935 middlewares : list [Callable [..., Any ]] | None = None ,
928936 ) -> Callable [[AnyCallableT ], AnyCallableT ]:
929937 raise NotImplementedError ()
@@ -984,6 +992,7 @@ def get(
984992 include_in_schema : bool = True ,
985993 security : list [dict [str , list [str ]]] | None = None ,
986994 openapi_extensions : dict [str , Any ] | None = None ,
995+ deprecated : bool = False ,
987996 middlewares : list [Callable [..., Any ]] | None = None ,
988997 ) -> Callable [[AnyCallableT ], AnyCallableT ]:
989998 """Get route decorator with GET `method`
@@ -1023,6 +1032,7 @@ def lambda_handler(event, context):
10231032 include_in_schema ,
10241033 security ,
10251034 openapi_extensions ,
1035+ deprecated ,
10261036 middlewares ,
10271037 )
10281038
@@ -1041,6 +1051,7 @@ def post(
10411051 include_in_schema : bool = True ,
10421052 security : list [dict [str , list [str ]]] | None = None ,
10431053 openapi_extensions : dict [str , Any ] | None = None ,
1054+ deprecated : bool = False ,
10441055 middlewares : list [Callable [..., Any ]] | None = None ,
10451056 ) -> Callable [[AnyCallableT ], AnyCallableT ]:
10461057 """Post route decorator with POST `method`
@@ -1081,6 +1092,7 @@ def lambda_handler(event, context):
10811092 include_in_schema ,
10821093 security ,
10831094 openapi_extensions ,
1095+ deprecated ,
10841096 middlewares ,
10851097 )
10861098
@@ -1099,6 +1111,7 @@ def put(
10991111 include_in_schema : bool = True ,
11001112 security : list [dict [str , list [str ]]] | None = None ,
11011113 openapi_extensions : dict [str , Any ] | None = None ,
1114+ deprecated : bool = False ,
11021115 middlewares : list [Callable [..., Any ]] | None = None ,
11031116 ) -> Callable [[AnyCallableT ], AnyCallableT ]:
11041117 """Put route decorator with PUT `method`
@@ -1139,6 +1152,7 @@ def lambda_handler(event, context):
11391152 include_in_schema ,
11401153 security ,
11411154 openapi_extensions ,
1155+ deprecated ,
11421156 middlewares ,
11431157 )
11441158
@@ -1157,6 +1171,7 @@ def delete(
11571171 include_in_schema : bool = True ,
11581172 security : list [dict [str , list [str ]]] | None = None ,
11591173 openapi_extensions : dict [str , Any ] | None = None ,
1174+ deprecated : bool = False ,
11601175 middlewares : list [Callable [..., Any ]] | None = None ,
11611176 ) -> Callable [[AnyCallableT ], AnyCallableT ]:
11621177 """Delete route decorator with DELETE `method`
@@ -1196,6 +1211,7 @@ def lambda_handler(event, context):
11961211 include_in_schema ,
11971212 security ,
11981213 openapi_extensions ,
1214+ deprecated ,
11991215 middlewares ,
12001216 )
12011217
@@ -1214,6 +1230,7 @@ def patch(
12141230 include_in_schema : bool = True ,
12151231 security : list [dict [str , list [str ]]] | None = None ,
12161232 openapi_extensions : dict [str , Any ] | None = None ,
1233+ deprecated : bool = False ,
12171234 middlewares : list [Callable ] | None = None ,
12181235 ) -> Callable [[AnyCallableT ], AnyCallableT ]:
12191236 """Patch route decorator with PATCH `method`
@@ -1256,6 +1273,7 @@ def lambda_handler(event, context):
12561273 include_in_schema ,
12571274 security ,
12581275 openapi_extensions ,
1276+ deprecated ,
12591277 middlewares ,
12601278 )
12611279
@@ -1274,6 +1292,7 @@ def head(
12741292 include_in_schema : bool = True ,
12751293 security : list [dict [str , list [str ]]] | None = None ,
12761294 openapi_extensions : dict [str , Any ] | None = None ,
1295+ deprecated : bool = False ,
12771296 middlewares : list [Callable ] | None = None ,
12781297 ) -> Callable [[AnyCallableT ], AnyCallableT ]:
12791298 """Head route decorator with HEAD `method`
@@ -1315,6 +1334,7 @@ def lambda_handler(event, context):
13151334 include_in_schema ,
13161335 security ,
13171336 openapi_extensions ,
1337+ deprecated ,
13181338 middlewares ,
13191339 )
13201340
@@ -1629,7 +1649,6 @@ def get_openapi_schema(
16291649
16301650 # Add routes to the OpenAPI schema
16311651 for route in all_routes :
1632-
16331652 if route .security and not _validate_openapi_security_parameters (
16341653 security = route .security ,
16351654 security_schemes = security_schemes ,
@@ -1694,7 +1713,6 @@ def _get_openapi_security(
16941713
16951714 @staticmethod
16961715 def _determine_openapi_version (openapi_version : str ):
1697-
16981716 # Pydantic V2 has no support for OpenAPI schema 3.0
16991717 if not openapi_version .startswith ("3.1" ):
17001718 warnings .warn (
@@ -1950,6 +1968,7 @@ def route(
19501968 include_in_schema : bool = True ,
19511969 security : list [dict [str , list [str ]]] | None = None ,
19521970 openapi_extensions : dict [str , Any ] | None = None ,
1971+ deprecated : bool = False ,
19531972 middlewares : list [Callable [..., Any ]] | None = None ,
19541973 ) -> Callable [[AnyCallableT ], AnyCallableT ]:
19551974 """Route decorator includes parameter `method`"""
@@ -1978,6 +1997,7 @@ def register_resolver(func: AnyCallableT) -> AnyCallableT:
19781997 include_in_schema ,
19791998 security ,
19801999 openapi_extensions ,
2000+ deprecated ,
19812001 middlewares ,
19822002 )
19832003
@@ -2492,6 +2512,7 @@ def route(
24922512 include_in_schema : bool = True ,
24932513 security : list [dict [str , list [str ]]] | None = None ,
24942514 openapi_extensions : dict [str , Any ] | None = None ,
2515+ deprecated : bool = False ,
24952516 middlewares : list [Callable [..., Any ]] | None = None ,
24962517 ) -> Callable [[AnyCallableT ], AnyCallableT ]:
24972518 def register_route (func : AnyCallableT ) -> AnyCallableT :
@@ -2517,6 +2538,7 @@ def register_route(func: AnyCallableT) -> AnyCallableT:
25172538 include_in_schema ,
25182539 frozen_security ,
25192540 fronzen_openapi_extensions ,
2541+ deprecated ,
25202542 )
25212543
25222544 # Collate Middleware for routes
@@ -2598,6 +2620,7 @@ def route(
25982620 include_in_schema : bool = True ,
25992621 security : list [dict [str , list [str ]]] | None = None ,
26002622 openapi_extensions : dict [str , Any ] | None = None ,
2623+ deprecated : bool = False ,
26012624 middlewares : list [Callable [..., Any ]] | None = None ,
26022625 ) -> Callable [[AnyCallableT ], AnyCallableT ]:
26032626 # NOTE: see #1552 for more context.
@@ -2616,6 +2639,7 @@ def route(
26162639 include_in_schema ,
26172640 security ,
26182641 openapi_extensions ,
2642+ deprecated ,
26192643 middlewares ,
26202644 )
26212645
0 commit comments