get_openapi_path() — fastapi Function Reference
Architecture documentation for the get_openapi_path() function in utils.py from the fastapi codebase.
Entity Profile
Dependency Diagram
graph TD 200f313e_38b9_296f_f9aa_afdeacb6b8ad["get_openapi_path()"] 0dcb823f_ea0d_bd04_752b_a3a3f875bba1["utils.py"] 200f313e_38b9_296f_f9aa_afdeacb6b8ad -->|defined in| 0dcb823f_ea0d_bd04_752b_a3a3f875bba1 d8a9ec8b_6a53_c575_f568_9201405b8883["get_openapi()"] d8a9ec8b_6a53_c575_f568_9201405b8883 -->|calls| 200f313e_38b9_296f_f9aa_afdeacb6b8ad ff95ab0c_7f10_f29e_f615_ea529a87d199["get_openapi_operation_metadata()"] 200f313e_38b9_296f_f9aa_afdeacb6b8ad -->|calls| ff95ab0c_7f10_f29e_f615_ea529a87d199 df2bd000_d29c_ac4b_5eca_426e3122a385["get_flat_dependant()"] 200f313e_38b9_296f_f9aa_afdeacb6b8ad -->|calls| df2bd000_d29c_ac4b_5eca_426e3122a385 6c126127_cb4d_c433_3a3a_b84c50ec62e9["get_openapi_security_definitions()"] 200f313e_38b9_296f_f9aa_afdeacb6b8ad -->|calls| 6c126127_cb4d_c433_3a3a_b84c50ec62e9 affeac09_7707_a8d9_d9a7_6ca9b7066460["_get_openapi_operation_parameters()"] 200f313e_38b9_296f_f9aa_afdeacb6b8ad -->|calls| affeac09_7707_a8d9_d9a7_6ca9b7066460 1b892f95_174f_a6fa_5ff9_9cd8b88e8ee0["get()"] 200f313e_38b9_296f_f9aa_afdeacb6b8ad -->|calls| 1b892f95_174f_a6fa_5ff9_9cd8b88e8ee0 ff359e77_eeca_c04b_bc15_0c63fc7a4e03["get_openapi_operation_request_body()"] 200f313e_38b9_296f_f9aa_afdeacb6b8ad -->|calls| ff359e77_eeca_c04b_bc15_0c63fc7a4e03 dba5a7c0_1fab_8f88_2c80_2b79c3b3dc47["is_body_allowed_for_status_code()"] 200f313e_38b9_296f_f9aa_afdeacb6b8ad -->|calls| dba5a7c0_1fab_8f88_2c80_2b79c3b3dc47 8250eca3_9d70_6988_b118_334004d360bb["deep_dict_update()"] 200f313e_38b9_296f_f9aa_afdeacb6b8ad -->|calls| 8250eca3_9d70_6988_b118_334004d360bb ae5e875d_4a7a_fe4f_43bc_0f9490438b9f["get_flat_params()"] 200f313e_38b9_296f_f9aa_afdeacb6b8ad -->|calls| ae5e875d_4a7a_fe4f_43bc_0f9490438b9f style 200f313e_38b9_296f_f9aa_afdeacb6b8ad fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
fastapi/openapi/utils.py lines 263–446
def get_openapi_path(
*,
route: routing.APIRoute,
operation_ids: set[str],
model_name_map: ModelNameMap,
field_mapping: dict[
tuple[ModelField, Literal["validation", "serialization"]], dict[str, Any]
],
separate_input_output_schemas: bool = True,
) -> tuple[dict[str, Any], dict[str, Any], dict[str, Any]]:
path = {}
security_schemes: dict[str, Any] = {}
definitions: dict[str, Any] = {}
assert route.methods is not None, "Methods must be a list"
if isinstance(route.response_class, DefaultPlaceholder):
current_response_class: type[Response] = route.response_class.value
else:
current_response_class = route.response_class
assert current_response_class, "A response class is needed to generate OpenAPI"
route_response_media_type: Optional[str] = current_response_class.media_type
if route.include_in_schema:
for method in route.methods:
operation = get_openapi_operation_metadata(
route=route, method=method, operation_ids=operation_ids
)
parameters: list[dict[str, Any]] = []
flat_dependant = get_flat_dependant(route.dependant, skip_repeats=True)
security_definitions, operation_security = get_openapi_security_definitions(
flat_dependant=flat_dependant
)
if operation_security:
operation.setdefault("security", []).extend(operation_security)
if security_definitions:
security_schemes.update(security_definitions)
operation_parameters = _get_openapi_operation_parameters(
dependant=route.dependant,
model_name_map=model_name_map,
field_mapping=field_mapping,
separate_input_output_schemas=separate_input_output_schemas,
)
parameters.extend(operation_parameters)
if parameters:
all_parameters = {
(param["in"], param["name"]): param for param in parameters
}
required_parameters = {
(param["in"], param["name"]): param
for param in parameters
if param.get("required")
}
# Make sure required definitions of the same parameter take precedence
# over non-required definitions
all_parameters.update(required_parameters)
operation["parameters"] = list(all_parameters.values())
if method in METHODS_WITH_BODY:
request_body_oai = get_openapi_operation_request_body(
body_field=route.body_field,
model_name_map=model_name_map,
field_mapping=field_mapping,
separate_input_output_schemas=separate_input_output_schemas,
)
if request_body_oai:
operation["requestBody"] = request_body_oai
if route.callbacks:
callbacks = {}
for callback in route.callbacks:
if isinstance(callback, routing.APIRoute):
(
cb_path,
cb_security_schemes,
cb_definitions,
) = get_openapi_path(
route=callback,
operation_ids=operation_ids,
model_name_map=model_name_map,
field_mapping=field_mapping,
separate_input_output_schemas=separate_input_output_schemas,
)
callbacks[callback.name] = {callback.path: cb_path}
operation["callbacks"] = callbacks
if route.status_code is not None:
Domain
Subdomains
Defined In
Calls
Called By
Source
Frequently Asked Questions
What does get_openapi_path() do?
get_openapi_path() is a function in the fastapi codebase, defined in fastapi/openapi/utils.py.
Where is get_openapi_path() defined?
get_openapi_path() is defined in fastapi/openapi/utils.py at line 263.
What does get_openapi_path() call?
get_openapi_path() calls 9 function(s): _get_openapi_operation_parameters, deep_dict_update, get, get_flat_dependant, get_flat_params, get_openapi_operation_metadata, get_openapi_operation_request_body, get_openapi_security_definitions, and 1 more.
What calls get_openapi_path()?
get_openapi_path() is called by 1 function(s): get_openapi.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free