8585 )
8686 from aws_lambda_powertools .event_handler .openapi .models import (
8787 Contact ,
88+ ExternalDocumentation ,
8889 License ,
8990 OpenAPI ,
9091 SecurityScheme ,
@@ -1714,6 +1715,7 @@ def get_openapi_schema(
17141715 license_info : License | None = None ,
17151716 security_schemes : dict [str , SecurityScheme ] | None = None ,
17161717 security : list [dict [str , list [str ]]] | None = None ,
1718+ external_documentation : ExternalDocumentation | None = None ,
17171719 openapi_extensions : dict [str , Any ] | None = None ,
17181720 ) -> OpenAPI :
17191721 """
@@ -1745,6 +1747,8 @@ def get_openapi_schema(
17451747 A declaration of the security schemes available to be used in the specification.
17461748 security: list[dict[str, list[str]]], optional
17471749 A declaration of which security mechanisms are applied globally across the API.
1750+ external_documentation: ExternalDocumentation, optional
1751+ Additional external documentation for the API.
17481752 openapi_extensions: Dict[str, Any], optional
17491753 Additional OpenAPI extensions as a dictionary.
17501754
@@ -1775,6 +1779,7 @@ def get_openapi_schema(
17751779 license_info = license_info or self .openapi_config .license_info
17761780 security_schemes = security_schemes or self .openapi_config .security_schemes
17771781 security = security or self .openapi_config .security
1782+ external_documentation = external_documentation or self .openapi_config .external_documentation
17781783 openapi_extensions = openapi_extensions or self .openapi_config .openapi_extensions
17791784
17801785 from pydantic .json_schema import GenerateJsonSchema
@@ -1814,6 +1819,9 @@ def get_openapi_schema(
18141819 ** openapi_extensions ,
18151820 }
18161821
1822+ if external_documentation :
1823+ output ["externalDocs" ] = external_documentation
1824+
18171825 components : dict [str , dict [str , Any ]] = {}
18181826 paths : dict [str , dict [str , Any ]] = {}
18191827 operation_ids : set [str ] = set ()
@@ -1921,6 +1929,7 @@ def get_openapi_json_schema(
19211929 license_info : License | None = None ,
19221930 security_schemes : dict [str , SecurityScheme ] | None = None ,
19231931 security : list [dict [str , list [str ]]] | None = None ,
1932+ external_documentation : ExternalDocumentation | None = None ,
19241933 openapi_extensions : dict [str , Any ] | None = None ,
19251934 ) -> str :
19261935 """
@@ -1952,6 +1961,8 @@ def get_openapi_json_schema(
19521961 A declaration of the security schemes available to be used in the specification.
19531962 security: list[dict[str, list[str]]], optional
19541963 A declaration of which security mechanisms are applied globally across the API.
1964+ external_documentation: ExternalDocumentation, optional
1965+ Additional external documentation for the API.
19551966 openapi_extensions: Dict[str, Any], optional
19561967 Additional OpenAPI extensions as a dictionary.
19571968
@@ -1977,6 +1988,7 @@ def get_openapi_json_schema(
19771988 license_info = license_info ,
19781989 security_schemes = security_schemes ,
19791990 security = security ,
1991+ external_documentation = external_documentation ,
19801992 openapi_extensions = openapi_extensions ,
19811993 ),
19821994 by_alias = True ,
@@ -1998,6 +2010,7 @@ def configure_openapi(
19982010 license_info : License | None = None ,
19992011 security_schemes : dict [str , SecurityScheme ] | None = None ,
20002012 security : list [dict [str , list [str ]]] | None = None ,
2013+ external_documentation : ExternalDocumentation | None = None ,
20012014 openapi_extensions : dict [str , Any ] | None = None ,
20022015 ):
20032016 """Configure OpenAPI specification settings for the API.
@@ -2031,6 +2044,8 @@ def configure_openapi(
20312044 A declaration of the security schemes available to be used in the specification.
20322045 security: list[dict[str, list[str]]], optional
20332046 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.
20342049 openapi_extensions: Dict[str, Any], optional
20352050 Additional OpenAPI extensions as a dictionary.
20362051
@@ -2064,6 +2079,7 @@ def configure_openapi(
20642079 license_info = license_info ,
20652080 security_schemes = security_schemes ,
20662081 security = security ,
2082+ external_documentation = external_documentation ,
20672083 openapi_extensions = openapi_extensions ,
20682084 )
20692085
@@ -2088,6 +2104,7 @@ def enable_swagger(
20882104 security : list [dict [str , list [str ]]] | None = None ,
20892105 oauth2_config : OAuth2Config | None = None ,
20902106 persist_authorization : bool = False ,
2107+ external_documentation : ExternalDocumentation | None = None ,
20912108 openapi_extensions : dict [str , Any ] | None = None ,
20922109 ):
20932110 """
@@ -2131,6 +2148,8 @@ def enable_swagger(
21312148 The OAuth2 configuration for the Swagger UI.
21322149 persist_authorization: bool, optional
21332150 Whether to persist authorization data on browser close/refresh.
2151+ external_documentation: ExternalDocumentation, optional
2152+ A link to external documentation for the API.
21342153 openapi_extensions: dict[str, Any], optional
21352154 Additional OpenAPI extensions as a dictionary.
21362155 """
@@ -2183,6 +2202,7 @@ def swagger_handler():
21832202 license_info = license_info ,
21842203 security_schemes = security_schemes ,
21852204 security = security ,
2205+ external_documentation = external_documentation ,
21862206 openapi_extensions = openapi_extensions ,
21872207 )
21882208
0 commit comments