85
85
)
86
86
from aws_lambda_powertools .event_handler .openapi .models import (
87
87
Contact ,
88
+ ExternalDocumentation ,
88
89
License ,
89
90
OpenAPI ,
90
91
SecurityScheme ,
@@ -1714,6 +1715,7 @@ def get_openapi_schema(
1714
1715
license_info : License | None = None ,
1715
1716
security_schemes : dict [str , SecurityScheme ] | None = None ,
1716
1717
security : list [dict [str , list [str ]]] | None = None ,
1718
+ external_documentation : ExternalDocumentation | None = None ,
1717
1719
openapi_extensions : dict [str , Any ] | None = None ,
1718
1720
) -> OpenAPI :
1719
1721
"""
@@ -1745,6 +1747,8 @@ def get_openapi_schema(
1745
1747
A declaration of the security schemes available to be used in the specification.
1746
1748
security: list[dict[str, list[str]]], optional
1747
1749
A declaration of which security mechanisms are applied globally across the API.
1750
+ external_documentation: ExternalDocumentation, optional
1751
+ Additional external documentation for the API.
1748
1752
openapi_extensions: Dict[str, Any], optional
1749
1753
Additional OpenAPI extensions as a dictionary.
1750
1754
@@ -1775,6 +1779,7 @@ def get_openapi_schema(
1775
1779
license_info = license_info or self .openapi_config .license_info
1776
1780
security_schemes = security_schemes or self .openapi_config .security_schemes
1777
1781
security = security or self .openapi_config .security
1782
+ external_documentation = external_documentation or self .openapi_config .external_documentation
1778
1783
openapi_extensions = openapi_extensions or self .openapi_config .openapi_extensions
1779
1784
1780
1785
from pydantic .json_schema import GenerateJsonSchema
@@ -1814,6 +1819,9 @@ def get_openapi_schema(
1814
1819
** openapi_extensions ,
1815
1820
}
1816
1821
1822
+ if external_documentation :
1823
+ output ["externalDocs" ] = external_documentation
1824
+
1817
1825
components : dict [str , dict [str , Any ]] = {}
1818
1826
paths : dict [str , dict [str , Any ]] = {}
1819
1827
operation_ids : set [str ] = set ()
@@ -1921,6 +1929,7 @@ def get_openapi_json_schema(
1921
1929
license_info : License | None = None ,
1922
1930
security_schemes : dict [str , SecurityScheme ] | None = None ,
1923
1931
security : list [dict [str , list [str ]]] | None = None ,
1932
+ external_documentation : ExternalDocumentation | None = None ,
1924
1933
openapi_extensions : dict [str , Any ] | None = None ,
1925
1934
) -> str :
1926
1935
"""
@@ -1952,6 +1961,8 @@ def get_openapi_json_schema(
1952
1961
A declaration of the security schemes available to be used in the specification.
1953
1962
security: list[dict[str, list[str]]], optional
1954
1963
A declaration of which security mechanisms are applied globally across the API.
1964
+ external_documentation: ExternalDocumentation, optional
1965
+ Additional external documentation for the API.
1955
1966
openapi_extensions: Dict[str, Any], optional
1956
1967
Additional OpenAPI extensions as a dictionary.
1957
1968
@@ -1977,6 +1988,7 @@ def get_openapi_json_schema(
1977
1988
license_info = license_info ,
1978
1989
security_schemes = security_schemes ,
1979
1990
security = security ,
1991
+ external_documentation = external_documentation ,
1980
1992
openapi_extensions = openapi_extensions ,
1981
1993
),
1982
1994
by_alias = True ,
@@ -1998,6 +2010,7 @@ def configure_openapi(
1998
2010
license_info : License | None = None ,
1999
2011
security_schemes : dict [str , SecurityScheme ] | None = None ,
2000
2012
security : list [dict [str , list [str ]]] | None = None ,
2013
+ external_documentation : ExternalDocumentation | None = None ,
2001
2014
openapi_extensions : dict [str , Any ] | None = None ,
2002
2015
):
2003
2016
"""Configure OpenAPI specification settings for the API.
@@ -2031,6 +2044,8 @@ def configure_openapi(
2031
2044
A declaration of the security schemes available to be used in the specification.
2032
2045
security: list[dict[str, list[str]]], optional
2033
2046
A declaration of which security mechanisms are applied globally across the API.
2047
+ external_documentation: ExternalDocumentation, optional
2048
+ A link to external documentation for the API.
2034
2049
openapi_extensions: Dict[str, Any], optional
2035
2050
Additional OpenAPI extensions as a dictionary.
2036
2051
@@ -2064,6 +2079,7 @@ def configure_openapi(
2064
2079
license_info = license_info ,
2065
2080
security_schemes = security_schemes ,
2066
2081
security = security ,
2082
+ external_documentation = external_documentation ,
2067
2083
openapi_extensions = openapi_extensions ,
2068
2084
)
2069
2085
@@ -2088,6 +2104,7 @@ def enable_swagger(
2088
2104
security : list [dict [str , list [str ]]] | None = None ,
2089
2105
oauth2_config : OAuth2Config | None = None ,
2090
2106
persist_authorization : bool = False ,
2107
+ external_documentation : ExternalDocumentation | None = None ,
2091
2108
openapi_extensions : dict [str , Any ] | None = None ,
2092
2109
):
2093
2110
"""
@@ -2131,6 +2148,8 @@ def enable_swagger(
2131
2148
The OAuth2 configuration for the Swagger UI.
2132
2149
persist_authorization: bool, optional
2133
2150
Whether to persist authorization data on browser close/refresh.
2151
+ external_documentation: ExternalDocumentation, optional
2152
+ A link to external documentation for the API.
2134
2153
openapi_extensions: dict[str, Any], optional
2135
2154
Additional OpenAPI extensions as a dictionary.
2136
2155
"""
@@ -2183,6 +2202,7 @@ def swagger_handler():
2183
2202
license_info = license_info ,
2184
2203
security_schemes = security_schemes ,
2185
2204
security = security ,
2205
+ external_documentation = external_documentation ,
2186
2206
openapi_extensions = openapi_extensions ,
2187
2207
)
2188
2208
0 commit comments