Home / Function/ get_openapi_path() — fastapi Function Reference

get_openapi_path() — fastapi Function Reference

Architecture documentation for the get_openapi_path() function in utils.py from the fastapi codebase.

Function python FastAPI Routing calls 9 called by 1

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

Called By

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