tests/test_include_router_defaults_overrides.py PYTHON 7,305 lines View on github.com → Search inside
File is large — showing lines 1–2,000 of 7,305.
1import warnings23import pytest4from fastapi import APIRouter, Depends, FastAPI, Response5from fastapi.responses import JSONResponse6from fastapi.testclient import TestClient7from inline_snapshot import snapshot8910class ResponseLevel0(JSONResponse):11    media_type = "application/x-level-0"121314class ResponseLevel1(JSONResponse):15    media_type = "application/x-level-1"161718class ResponseLevel2(JSONResponse):19    media_type = "application/x-level-2"202122class ResponseLevel3(JSONResponse):23    media_type = "application/x-level-3"242526class ResponseLevel4(JSONResponse):27    media_type = "application/x-level-4"282930class ResponseLevel5(JSONResponse):31    media_type = "application/x-level-5"323334async def dep0(response: Response):35    response.headers["x-level0"] = "True"363738async def dep1(response: Response):39    response.headers["x-level1"] = "True"404142async def dep2(response: Response):43    response.headers["x-level2"] = "True"444546async def dep3(response: Response):47    response.headers["x-level3"] = "True"484950async def dep4(response: Response):51    response.headers["x-level4"] = "True"525354async def dep5(response: Response):55    response.headers["x-level5"] = "True"565758callback_router0 = APIRouter()596061@callback_router0.get("/")62async def callback0(level0: str):63    pass  # pragma: nocover646566callback_router1 = APIRouter()676869@callback_router1.get("/")70async def callback1(level1: str):71    pass  # pragma: nocover727374callback_router2 = APIRouter()757677@callback_router2.get("/")78async def callback2(level2: str):79    pass  # pragma: nocover808182callback_router3 = APIRouter()838485@callback_router3.get("/")86async def callback3(level3: str):87    pass  # pragma: nocover888990callback_router4 = APIRouter()919293@callback_router4.get("/")94async def callback4(level4: str):95    pass  # pragma: nocover969798callback_router5 = APIRouter()99100101@callback_router5.get("/")102async def callback5(level5: str):103    pass  # pragma: nocover104105106app = FastAPI(107    dependencies=[Depends(dep0)],108    responses={109        400: {"description": "Client error level 0"},110        500: {"description": "Server error level 0"},111    },112    default_response_class=ResponseLevel0,113    callbacks=callback_router0.routes,114)115116router2_override = APIRouter(117    prefix="/level2",118    tags=["level2a", "level2b"],119    dependencies=[Depends(dep2)],120    responses={121        402: {"description": "Client error level 2"},122        502: {"description": "Server error level 2"},123    },124    default_response_class=ResponseLevel2,125    callbacks=callback_router2.routes,126    deprecated=True,127)128router2_default = APIRouter()129router4_override = APIRouter(130    prefix="/level4",131    tags=["level4a", "level4b"],132    dependencies=[Depends(dep4)],133    responses={134        404: {"description": "Client error level 4"},135        504: {"description": "Server error level 4"},136    },137    default_response_class=ResponseLevel4,138    callbacks=callback_router4.routes,139    deprecated=True,140)141router4_default = APIRouter()142143144@app.get(145    "/override1",146    tags=["path1a", "path1b"],147    responses={148        401: {"description": "Client error level 1"},149        501: {"description": "Server error level 1"},150    },151    deprecated=True,152    callbacks=callback_router1.routes,153    dependencies=[Depends(dep1)],154    response_class=ResponseLevel1,155)156async def path1_override(level1: str):157    return level1158159160@app.get("/default1")161async def path1_default(level1: str):162    return level1163164165@router2_override.get(166    "/override3",167    tags=["path3a", "path3b"],168    responses={169        403: {"description": "Client error level 3"},170        503: {"description": "Server error level 3"},171    },172    deprecated=True,173    callbacks=callback_router3.routes,174    dependencies=[Depends(dep3)],175    response_class=ResponseLevel3,176)177async def path3_override_router2_override(level3: str):178    return level3179180181@router2_override.get("/default3")182async def path3_default_router2_override(level3: str):183    return level3184185186@router2_default.get(187    "/override3",188    tags=["path3a", "path3b"],189    responses={190        403: {"description": "Client error level 3"},191        503: {"description": "Server error level 3"},192    },193    deprecated=True,194    callbacks=callback_router3.routes,195    dependencies=[Depends(dep3)],196    response_class=ResponseLevel3,197)198async def path3_override_router2_default(level3: str):199    return level3200201202@router2_default.get("/default3")203async def path3_default_router2_default(level3: str):204    return level3205206207@router4_override.get(208    "/override5",209    tags=["path5a", "path5b"],210    responses={211        405: {"description": "Client error level 5"},212        505: {"description": "Server error level 5"},213    },214    deprecated=True,215    callbacks=callback_router5.routes,216    dependencies=[Depends(dep5)],217    response_class=ResponseLevel5,218)219async def path5_override_router4_override(level5: str):220    return level5221222223@router4_override.get(224    "/default5",225)226async def path5_default_router4_override(level5: str):227    return level5228229230@router4_default.get(231    "/override5",232    tags=["path5a", "path5b"],233    responses={234        405: {"description": "Client error level 5"},235        505: {"description": "Server error level 5"},236    },237    deprecated=True,238    callbacks=callback_router5.routes,239    dependencies=[Depends(dep5)],240    response_class=ResponseLevel5,241)242async def path5_override_router4_default(level5: str):243    return level5244245246@router4_default.get(247    "/default5",248)249async def path5_default_router4_default(level5: str):250    return level5251252253router2_override.include_router(254    router4_override,255    prefix="/level3",256    tags=["level3a", "level3b"],257    dependencies=[Depends(dep3)],258    responses={259        403: {"description": "Client error level 3"},260        503: {"description": "Server error level 3"},261    },262    default_response_class=ResponseLevel3,263    callbacks=callback_router3.routes,264)265266router2_override.include_router(267    router4_default,268    prefix="/level3",269    tags=["level3a", "level3b"],270    dependencies=[Depends(dep3)],271    responses={272        403: {"description": "Client error level 3"},273        503: {"description": "Server error level 3"},274    },275    default_response_class=ResponseLevel3,276    callbacks=callback_router3.routes,277)278279router2_override.include_router(router4_override)280281router2_override.include_router(router4_default)282283router2_default.include_router(284    router4_override,285    prefix="/level3",286    tags=["level3a", "level3b"],287    dependencies=[Depends(dep3)],288    responses={289        403: {"description": "Client error level 3"},290        503: {"description": "Server error level 3"},291    },292    default_response_class=ResponseLevel3,293    callbacks=callback_router3.routes,294)295296router2_default.include_router(297    router4_default,298    prefix="/level3",299    tags=["level3a", "level3b"],300    dependencies=[Depends(dep3)],301    responses={302        403: {"description": "Client error level 3"},303        503: {"description": "Server error level 3"},304    },305    default_response_class=ResponseLevel3,306    callbacks=callback_router3.routes,307)308309router2_default.include_router(router4_override)310311router2_default.include_router(router4_default)312313314app.include_router(315    router2_override,316    prefix="/level1",317    tags=["level1a", "level1b"],318    dependencies=[Depends(dep1)],319    responses={320        401: {"description": "Client error level 1"},321        501: {"description": "Server error level 1"},322    },323    default_response_class=ResponseLevel1,324    callbacks=callback_router1.routes,325)326327app.include_router(328    router2_default,329    prefix="/level1",330    tags=["level1a", "level1b"],331    dependencies=[Depends(dep1)],332    responses={333        401: {"description": "Client error level 1"},334        501: {"description": "Server error level 1"},335    },336    default_response_class=ResponseLevel1,337    callbacks=callback_router1.routes,338)339340app.include_router(router2_override)341342app.include_router(router2_default)343344client = TestClient(app)345346347def test_level1_override():348    response = client.get("/override1?level1=foo")349    assert response.json() == "foo"350    assert response.headers["content-type"] == "application/x-level-1"351    assert "x-level0" in response.headers352    assert "x-level1" in response.headers353    assert "x-level2" not in response.headers354    assert "x-level3" not in response.headers355    assert "x-level4" not in response.headers356    assert "x-level5" not in response.headers357358359def test_level1_default():360    response = client.get("/default1?level1=foo")361    assert response.json() == "foo"362    assert response.headers["content-type"] == "application/x-level-0"363    assert "x-level0" in response.headers364    assert "x-level1" not in response.headers365    assert "x-level2" not in response.headers366    assert "x-level3" not in response.headers367    assert "x-level4" not in response.headers368    assert "x-level5" not in response.headers369370371@pytest.mark.parametrize("override1", [True, False])372@pytest.mark.parametrize("override2", [True, False])373@pytest.mark.parametrize("override3", [True, False])374def test_paths_level3(override1, override2, override3):375    url = ""376    content_type_level = "0"377    if override1:378        url += "/level1"379        content_type_level = "1"380    if override2:381        url += "/level2"382        content_type_level = "2"383    if override3:384        url += "/override3"385        content_type_level = "3"386    else:387        url += "/default3"388    url += "?level3=foo"389    response = client.get(url)390    assert response.json() == "foo"391    assert (392        response.headers["content-type"] == f"application/x-level-{content_type_level}"393    )394    assert "x-level0" in response.headers395    assert not override1 or "x-level1" in response.headers396    assert not override2 or "x-level2" in response.headers397    assert not override3 or "x-level3" in response.headers398399400@pytest.mark.parametrize("override1", [True, False])401@pytest.mark.parametrize("override2", [True, False])402@pytest.mark.parametrize("override3", [True, False])403@pytest.mark.parametrize("override4", [True, False])404@pytest.mark.parametrize("override5", [True, False])405def test_paths_level5(override1, override2, override3, override4, override5):406    url = ""407    content_type_level = "0"408    if override1:409        url += "/level1"410        content_type_level = "1"411    if override2:412        url += "/level2"413        content_type_level = "2"414    if override3:415        url += "/level3"416        content_type_level = "3"417    if override4:418        url += "/level4"419        content_type_level = "4"420    if override5:421        url += "/override5"422        content_type_level = "5"423    else:424        url += "/default5"425    url += "?level5=foo"426    response = client.get(url)427    assert response.json() == "foo"428    assert (429        response.headers["content-type"] == f"application/x-level-{content_type_level}"430    )431    assert "x-level0" in response.headers432    assert not override1 or "x-level1" in response.headers433    assert not override2 or "x-level2" in response.headers434    assert not override3 or "x-level3" in response.headers435    assert not override4 or "x-level4" in response.headers436    assert not override5 or "x-level5" in response.headers437438439def test_openapi():440    client = TestClient(app)441    with warnings.catch_warnings(record=True) as w:442        warnings.simplefilter("always")443        response = client.get("/openapi.json")444        assert issubclass(w[-1].category, UserWarning)445        assert "Duplicate Operation ID" in str(w[-1].message)446    assert response.json() == snapshot(447        {448            "openapi": "3.1.0",449            "info": {"title": "FastAPI", "version": "0.1.0"},450            "paths": {451                "/override1": {452                    "get": {453                        "tags": ["path1a", "path1b"],454                        "summary": "Path1 Override",455                        "operationId": "path1_override_override1_get",456                        "parameters": [457                            {458                                "required": True,459                                "schema": {"title": "Level1", "type": "string"},460                                "name": "level1",461                                "in": "query",462                            }463                        ],464                        "responses": {465                            "200": {466                                "description": "Successful Response",467                                "content": {"application/x-level-1": {"schema": {}}},468                            },469                            "400": {"description": "Client error level 0"},470                            "401": {"description": "Client error level 1"},471                            "422": {472                                "description": "Validation Error",473                                "content": {474                                    "application/json": {475                                        "schema": {476                                            "$ref": "#/components/schemas/HTTPValidationError"477                                        }478                                    }479                                },480                            },481                            "500": {"description": "Server error level 0"},482                            "501": {"description": "Server error level 1"},483                        },484                        "callbacks": {485                            "callback0": {486                                "/": {487                                    "get": {488                                        "summary": "Callback0",489                                        "operationId": "callback0__get",490                                        "parameters": [491                                            {492                                                "name": "level0",493                                                "in": "query",494                                                "required": True,495                                                "schema": {496                                                    "title": "Level0",497                                                    "type": "string",498                                                },499                                            }500                                        ],501                                        "responses": {502                                            "200": {503                                                "description": "Successful Response",504                                                "content": {505                                                    "application/json": {"schema": {}}506                                                },507                                            },508                                            "422": {509                                                "description": "Validation Error",510                                                "content": {511                                                    "application/json": {512                                                        "schema": {513                                                            "$ref": "#/components/schemas/HTTPValidationError"514                                                        }515                                                    }516                                                },517                                            },518                                        },519                                    }520                                }521                            },522                            "callback1": {523                                "/": {524                                    "get": {525                                        "summary": "Callback1",526                                        "operationId": "callback1__get",527                                        "parameters": [528                                            {529                                                "name": "level1",530                                                "in": "query",531                                                "required": True,532                                                "schema": {533                                                    "title": "Level1",534                                                    "type": "string",535                                                },536                                            }537                                        ],538                                        "responses": {539                                            "200": {540                                                "description": "Successful Response",541                                                "content": {542                                                    "application/json": {"schema": {}}543                                                },544                                            },545                                            "422": {546                                                "description": "Validation Error",547                                                "content": {548                                                    "application/json": {549                                                        "schema": {550                                                            "$ref": "#/components/schemas/HTTPValidationError"551                                                        }552                                                    }553                                                },554                                            },555                                        },556                                    }557                                }558                            },559                        },560                        "deprecated": True,561                    }562                },563                "/default1": {564                    "get": {565                        "summary": "Path1 Default",566                        "operationId": "path1_default_default1_get",567                        "parameters": [568                            {569                                "required": True,570                                "schema": {"title": "Level1", "type": "string"},571                                "name": "level1",572                                "in": "query",573                            }574                        ],575                        "responses": {576                            "200": {577                                "description": "Successful Response",578                                "content": {"application/x-level-0": {"schema": {}}},579                            },580                            "400": {"description": "Client error level 0"},581                            "422": {582                                "description": "Validation Error",583                                "content": {584                                    "application/json": {585                                        "schema": {586                                            "$ref": "#/components/schemas/HTTPValidationError"587                                        }588                                    }589                                },590                            },591                            "500": {"description": "Server error level 0"},592                        },593                        "callbacks": {594                            "callback0": {595                                "/": {596                                    "get": {597                                        "summary": "Callback0",598                                        "operationId": "callback0__get",599                                        "parameters": [600                                            {601                                                "name": "level0",602                                                "in": "query",603                                                "required": True,604                                                "schema": {605                                                    "title": "Level0",606                                                    "type": "string",607                                                },608                                            }609                                        ],610                                        "responses": {611                                            "200": {612                                                "description": "Successful Response",613                                                "content": {614                                                    "application/json": {"schema": {}}615                                                },616                                            },617                                            "422": {618                                                "description": "Validation Error",619                                                "content": {620                                                    "application/json": {621                                                        "schema": {622                                                            "$ref": "#/components/schemas/HTTPValidationError"623                                                        }624                                                    }625                                                },626                                            },627                                        },628                                    }629                                }630                            }631                        },632                    }633                },634                "/level1/level2/override3": {635                    "get": {636                        "tags": [637                            "level1a",638                            "level1b",639                            "level2a",640                            "level2b",641                            "path3a",642                            "path3b",643                        ],644                        "summary": "Path3 Override Router2 Override",645                        "operationId": "path3_override_router2_override_level1_level2_override3_get",646                        "parameters": [647                            {648                                "required": True,649                                "schema": {"title": "Level3", "type": "string"},650                                "name": "level3",651                                "in": "query",652                            }653                        ],654                        "responses": {655                            "200": {656                                "description": "Successful Response",657                                "content": {"application/x-level-3": {"schema": {}}},658                            },659                            "400": {"description": "Client error level 0"},660                            "401": {"description": "Client error level 1"},661                            "402": {"description": "Client error level 2"},662                            "403": {"description": "Client error level 3"},663                            "422": {664                                "description": "Validation Error",665                                "content": {666                                    "application/json": {667                                        "schema": {668                                            "$ref": "#/components/schemas/HTTPValidationError"669                                        }670                                    }671                                },672                            },673                            "500": {"description": "Server error level 0"},674                            "501": {"description": "Server error level 1"},675                            "502": {"description": "Server error level 2"},676                            "503": {"description": "Server error level 3"},677                        },678                        "callbacks": {679                            "callback0": {680                                "/": {681                                    "get": {682                                        "summary": "Callback0",683                                        "operationId": "callback0__get",684                                        "parameters": [685                                            {686                                                "name": "level0",687                                                "in": "query",688                                                "required": True,689                                                "schema": {690                                                    "title": "Level0",691                                                    "type": "string",692                                                },693                                            }694                                        ],695                                        "responses": {696                                            "200": {697                                                "description": "Successful Response",698                                                "content": {699                                                    "application/json": {"schema": {}}700                                                },701                                            },702                                            "422": {703                                                "description": "Validation Error",704                                                "content": {705                                                    "application/json": {706                                                        "schema": {707                                                            "$ref": "#/components/schemas/HTTPValidationError"708                                                        }709                                                    }710                                                },711                                            },712                                        },713                                    }714                                }715                            },716                            "callback1": {717                                "/": {718                                    "get": {719                                        "summary": "Callback1",720                                        "operationId": "callback1__get",721                                        "parameters": [722                                            {723                                                "name": "level1",724                                                "in": "query",725                                                "required": True,726                                                "schema": {727                                                    "title": "Level1",728                                                    "type": "string",729                                                },730                                            }731                                        ],732                                        "responses": {733                                            "200": {734                                                "description": "Successful Response",735                                                "content": {736                                                    "application/json": {"schema": {}}737                                                },738                                            },739                                            "422": {740                                                "description": "Validation Error",741                                                "content": {742                                                    "application/json": {743                                                        "schema": {744                                                            "$ref": "#/components/schemas/HTTPValidationError"745                                                        }746                                                    }747                                                },748                                            },749                                        },750                                    }751                                }752                            },753                            "callback2": {754                                "/": {755                                    "get": {756                                        "summary": "Callback2",757                                        "operationId": "callback2__get",758                                        "parameters": [759                                            {760                                                "name": "level2",761                                                "in": "query",762                                                "required": True,763                                                "schema": {764                                                    "title": "Level2",765                                                    "type": "string",766                                                },767                                            }768                                        ],769                                        "responses": {770                                            "200": {771                                                "description": "Successful Response",772                                                "content": {773                                                    "application/json": {"schema": {}}774                                                },775                                            },776                                            "422": {777                                                "description": "Validation Error",778                                                "content": {779                                                    "application/json": {780                                                        "schema": {781                                                            "$ref": "#/components/schemas/HTTPValidationError"782                                                        }783                                                    }784                                                },785                                            },786                                        },787                                    }788                                }789                            },790                            "callback3": {791                                "/": {792                                    "get": {793                                        "summary": "Callback3",794                                        "operationId": "callback3__get",795                                        "parameters": [796                                            {797                                                "name": "level3",798                                                "in": "query",799                                                "required": True,800                                                "schema": {801                                                    "title": "Level3",802                                                    "type": "string",803                                                },804                                            }805                                        ],806                                        "responses": {807                                            "200": {808                                                "description": "Successful Response",809                                                "content": {810                                                    "application/json": {"schema": {}}811                                                },812                                            },813                                            "422": {814                                                "description": "Validation Error",815                                                "content": {816                                                    "application/json": {817                                                        "schema": {818                                                            "$ref": "#/components/schemas/HTTPValidationError"819                                                        }820                                                    }821                                                },822                                            },823                                        },824                                    }825                                }826                            },827                        },828                        "deprecated": True,829                    }830                },831                "/level1/level2/default3": {832                    "get": {833                        "tags": ["level1a", "level1b", "level2a", "level2b"],834                        "summary": "Path3 Default Router2 Override",835                        "operationId": "path3_default_router2_override_level1_level2_default3_get",836                        "parameters": [837                            {838                                "required": True,839                                "schema": {"title": "Level3", "type": "string"},840                                "name": "level3",841                                "in": "query",842                            }843                        ],844                        "responses": {845                            "200": {846                                "description": "Successful Response",847                                "content": {"application/x-level-2": {"schema": {}}},848                            },849                            "400": {"description": "Client error level 0"},850                            "401": {"description": "Client error level 1"},851                            "402": {"description": "Client error level 2"},852                            "422": {853                                "description": "Validation Error",854                                "content": {855                                    "application/json": {856                                        "schema": {857                                            "$ref": "#/components/schemas/HTTPValidationError"858                                        }859                                    }860                                },861                            },862                            "500": {"description": "Server error level 0"},863                            "501": {"description": "Server error level 1"},864                            "502": {"description": "Server error level 2"},865                        },866                        "callbacks": {867                            "callback0": {868                                "/": {869                                    "get": {870                                        "summary": "Callback0",871                                        "operationId": "callback0__get",872                                        "parameters": [873                                            {874                                                "name": "level0",875                                                "in": "query",876                                                "required": True,877                                                "schema": {878                                                    "title": "Level0",879                                                    "type": "string",880                                                },881                                            }882                                        ],883                                        "responses": {884                                            "200": {885                                                "description": "Successful Response",886                                                "content": {887                                                    "application/json": {"schema": {}}888                                                },889                                            },890                                            "422": {891                                                "description": "Validation Error",892                                                "content": {893                                                    "application/json": {894                                                        "schema": {895                                                            "$ref": "#/components/schemas/HTTPValidationError"896                                                        }897                                                    }898                                                },899                                            },900                                        },901                                    }902                                }903                            },904                            "callback1": {905                                "/": {906                                    "get": {907                                        "summary": "Callback1",908                                        "operationId": "callback1__get",909                                        "parameters": [910                                            {911                                                "name": "level1",912                                                "in": "query",913                                                "required": True,914                                                "schema": {915                                                    "title": "Level1",916                                                    "type": "string",917                                                },918                                            }919                                        ],920                                        "responses": {921                                            "200": {922                                                "description": "Successful Response",923                                                "content": {924                                                    "application/json": {"schema": {}}925                                                },926                                            },927                                            "422": {928                                                "description": "Validation Error",929                                                "content": {930                                                    "application/json": {931                                                        "schema": {932                                                            "$ref": "#/components/schemas/HTTPValidationError"933                                                        }934                                                    }935                                                },936                                            },937                                        },938                                    }939                                }940                            },941                            "callback2": {942                                "/": {943                                    "get": {944                                        "summary": "Callback2",945                                        "operationId": "callback2__get",946                                        "parameters": [947                                            {948                                                "name": "level2",949                                                "in": "query",950                                                "required": True,951                                                "schema": {952                                                    "title": "Level2",953                                                    "type": "string",954                                                },955                                            }956                                        ],957                                        "responses": {958                                            "200": {959                                                "description": "Successful Response",960                                                "content": {961                                                    "application/json": {"schema": {}}962                                                },963                                            },964                                            "422": {965                                                "description": "Validation Error",966                                                "content": {967                                                    "application/json": {968                                                        "schema": {969                                                            "$ref": "#/components/schemas/HTTPValidationError"970                                                        }971                                                    }972                                                },973                                            },974                                        },975                                    }976                                }977                            },978                        },979                        "deprecated": True,980                    }981                },982                "/level1/level2/level3/level4/override5": {983                    "get": {984                        "tags": [985                            "level1a",986                            "level1b",987                            "level2a",988                            "level2b",989                            "level3a",990                            "level3b",991                            "level4a",992                            "level4b",993                            "path5a",994                            "path5b",995                        ],996                        "summary": "Path5 Override Router4 Override",997                        "operationId": "path5_override_router4_override_level1_level2_level3_level4_override5_get",998                        "parameters": [999                            {1000                                "required": True,1001                                "schema": {"title": "Level5", "type": "string"},1002                                "name": "level5",1003                                "in": "query",1004                            }1005                        ],1006                        "responses": {1007                            "200": {1008                                "description": "Successful Response",1009                                "content": {"application/x-level-5": {"schema": {}}},1010                            },1011                            "400": {"description": "Client error level 0"},1012                            "401": {"description": "Client error level 1"},1013                            "402": {"description": "Client error level 2"},1014                            "403": {"description": "Client error level 3"},1015                            "404": {"description": "Client error level 4"},1016                            "405": {"description": "Client error level 5"},1017                            "422": {1018                                "description": "Validation Error",1019                                "content": {1020                                    "application/json": {1021                                        "schema": {1022                                            "$ref": "#/components/schemas/HTTPValidationError"1023                                        }1024                                    }1025                                },1026                            },1027                            "500": {"description": "Server error level 0"},1028                            "501": {"description": "Server error level 1"},1029                            "502": {"description": "Server error level 2"},1030                            "503": {"description": "Server error level 3"},1031                            "504": {"description": "Server error level 4"},1032                            "505": {"description": "Server error level 5"},1033                        },1034                        "callbacks": {1035                            "callback0": {1036                                "/": {1037                                    "get": {1038                                        "summary": "Callback0",1039                                        "operationId": "callback0__get",1040                                        "parameters": [1041                                            {1042                                                "name": "level0",1043                                                "in": "query",1044                                                "required": True,1045                                                "schema": {1046                                                    "title": "Level0",1047                                                    "type": "string",1048                                                },1049                                            }1050                                        ],1051                                        "responses": {1052                                            "200": {1053                                                "description": "Successful Response",1054                                                "content": {1055                                                    "application/json": {"schema": {}}1056                                                },1057                                            },1058                                            "422": {1059                                                "description": "Validation Error",1060                                                "content": {1061                                                    "application/json": {1062                                                        "schema": {1063                                                            "$ref": "#/components/schemas/HTTPValidationError"1064                                                        }1065                                                    }1066                                                },1067                                            },1068                                        },1069                                    }1070                                }1071                            },1072                            "callback1": {1073                                "/": {1074                                    "get": {1075                                        "summary": "Callback1",1076                                        "operationId": "callback1__get",1077                                        "parameters": [1078                                            {1079                                                "name": "level1",1080                                                "in": "query",1081                                                "required": True,1082                                                "schema": {1083                                                    "title": "Level1",1084                                                    "type": "string",1085                                                },1086                                            }1087                                        ],1088                                        "responses": {1089                                            "200": {1090                                                "description": "Successful Response",1091                                                "content": {1092                                                    "application/json": {"schema": {}}1093                                                },1094                                            },1095                                            "422": {1096                                                "description": "Validation Error",1097                                                "content": {1098                                                    "application/json": {1099                                                        "schema": {1100                                                            "$ref": "#/components/schemas/HTTPValidationError"1101                                                        }1102                                                    }1103                                                },1104                                            },1105                                        },1106                                    }1107                                }1108                            },1109                            "callback2": {1110                                "/": {1111                                    "get": {1112                                        "summary": "Callback2",1113                                        "operationId": "callback2__get",1114                                        "parameters": [1115                                            {1116                                                "name": "level2",1117                                                "in": "query",1118                                                "required": True,1119                                                "schema": {1120                                                    "title": "Level2",1121                                                    "type": "string",1122                                                },1123                                            }1124                                        ],1125                                        "responses": {1126                                            "200": {1127                                                "description": "Successful Response",1128                                                "content": {1129                                                    "application/json": {"schema": {}}1130                                                },1131                                            },1132                                            "422": {1133                                                "description": "Validation Error",1134                                                "content": {1135                                                    "application/json": {1136                                                        "schema": {1137                                                            "$ref": "#/components/schemas/HTTPValidationError"1138                                                        }1139                                                    }1140                                                },1141                                            },1142                                        },1143                                    }1144                                }1145                            },1146                            "callback3": {1147                                "/": {1148                                    "get": {1149                                        "summary": "Callback3",1150                                        "operationId": "callback3__get",1151                                        "parameters": [1152                                            {1153                                                "name": "level3",1154                                                "in": "query",1155                                                "required": True,1156                                                "schema": {1157                                                    "title": "Level3",1158                                                    "type": "string",1159                                                },1160                                            }1161                                        ],1162                                        "responses": {1163                                            "200": {1164                                                "description": "Successful Response",1165                                                "content": {1166                                                    "application/json": {"schema": {}}1167                                                },1168                                            },1169                                            "422": {1170                                                "description": "Validation Error",1171                                                "content": {1172                                                    "application/json": {1173                                                        "schema": {1174                                                            "$ref": "#/components/schemas/HTTPValidationError"1175                                                        }1176                                                    }1177                                                },1178                                            },1179                                        },1180                                    }1181                                }1182                            },1183                            "callback4": {1184                                "/": {1185                                    "get": {1186                                        "summary": "Callback4",1187                                        "operationId": "callback4__get",1188                                        "parameters": [1189                                            {1190                                                "name": "level4",1191                                                "in": "query",1192                                                "required": True,1193                                                "schema": {1194                                                    "title": "Level4",1195                                                    "type": "string",1196                                                },1197                                            }1198                                        ],1199                                        "responses": {1200                                            "200": {1201                                                "description": "Successful Response",1202                                                "content": {1203                                                    "application/json": {"schema": {}}1204                                                },1205                                            },1206                                            "422": {1207                                                "description": "Validation Error",1208                                                "content": {1209                                                    "application/json": {1210                                                        "schema": {1211                                                            "$ref": "#/components/schemas/HTTPValidationError"1212                                                        }1213                                                    }1214                                                },1215                                            },1216                                        },1217                                    }1218                                }1219                            },1220                            "callback5": {1221                                "/": {1222                                    "get": {1223                                        "summary": "Callback5",1224                                        "operationId": "callback5__get",1225                                        "parameters": [1226                                            {1227                                                "name": "level5",1228                                                "in": "query",1229                                                "required": True,1230                                                "schema": {1231                                                    "title": "Level5",1232                                                    "type": "string",1233                                                },1234                                            }1235                                        ],1236                                        "responses": {1237                                            "200": {1238                                                "description": "Successful Response",1239                                                "content": {1240                                                    "application/json": {"schema": {}}1241                                                },1242                                            },1243                                            "422": {1244                                                "description": "Validation Error",1245                                                "content": {1246                                                    "application/json": {1247                                                        "schema": {1248                                                            "$ref": "#/components/schemas/HTTPValidationError"1249                                                        }1250                                                    }1251                                                },1252                                            },1253                                        },1254                                    }1255                                }1256                            },1257                        },1258                        "deprecated": True,1259                    }1260                },1261                "/level1/level2/level3/level4/default5": {1262                    "get": {1263                        "tags": [1264                            "level1a",1265                            "level1b",1266                            "level2a",1267                            "level2b",1268                            "level3a",1269                            "level3b",1270                            "level4a",1271                            "level4b",1272                        ],1273                        "summary": "Path5 Default Router4 Override",1274                        "operationId": "path5_default_router4_override_level1_level2_level3_level4_default5_get",1275                        "parameters": [1276                            {1277                                "required": True,1278                                "schema": {"title": "Level5", "type": "string"},1279                                "name": "level5",1280                                "in": "query",1281                            }1282                        ],1283                        "responses": {1284                            "200": {1285                                "description": "Successful Response",1286                                "content": {"application/x-level-4": {"schema": {}}},1287                            },1288                            "400": {"description": "Client error level 0"},1289                            "401": {"description": "Client error level 1"},1290                            "402": {"description": "Client error level 2"},1291                            "403": {"description": "Client error level 3"},1292                            "404": {"description": "Client error level 4"},1293                            "422": {1294                                "description": "Validation Error",1295                                "content": {1296                                    "application/json": {1297                                        "schema": {1298                                            "$ref": "#/components/schemas/HTTPValidationError"1299                                        }1300                                    }1301                                },1302                            },1303                            "500": {"description": "Server error level 0"},1304                            "501": {"description": "Server error level 1"},1305                            "502": {"description": "Server error level 2"},1306                            "503": {"description": "Server error level 3"},1307                            "504": {"description": "Server error level 4"},1308                        },1309                        "callbacks": {1310                            "callback0": {1311                                "/": {1312                                    "get": {1313                                        "summary": "Callback0",1314                                        "operationId": "callback0__get",1315                                        "parameters": [1316                                            {1317                                                "name": "level0",1318                                                "in": "query",1319                                                "required": True,1320                                                "schema": {1321                                                    "title": "Level0",1322                                                    "type": "string",1323                                                },1324                                            }1325                                        ],1326                                        "responses": {1327                                            "200": {1328                                                "description": "Successful Response",1329                                                "content": {1330                                                    "application/json": {"schema": {}}1331                                                },1332                                            },1333                                            "422": {1334                                                "description": "Validation Error",1335                                                "content": {1336                                                    "application/json": {1337                                                        "schema": {1338                                                            "$ref": "#/components/schemas/HTTPValidationError"1339                                                        }1340                                                    }1341                                                },1342                                            },1343                                        },1344                                    }1345                                }1346                            },1347                            "callback1": {1348                                "/": {1349                                    "get": {1350                                        "summary": "Callback1",1351                                        "operationId": "callback1__get",1352                                        "parameters": [1353                                            {1354                                                "name": "level1",1355                                                "in": "query",1356                                                "required": True,1357                                                "schema": {1358                                                    "title": "Level1",1359                                                    "type": "string",1360                                                },1361                                            }1362                                        ],1363                                        "responses": {1364                                            "200": {1365                                                "description": "Successful Response",1366                                                "content": {1367                                                    "application/json": {"schema": {}}1368                                                },1369                                            },1370                                            "422": {1371                                                "description": "Validation Error",1372                                                "content": {1373                                                    "application/json": {1374                                                        "schema": {1375                                                            "$ref": "#/components/schemas/HTTPValidationError"1376                                                        }1377                                                    }1378                                                },1379                                            },1380                                        },1381                                    }1382                                }1383                            },1384                            "callback2": {1385                                "/": {1386                                    "get": {1387                                        "summary": "Callback2",1388                                        "operationId": "callback2__get",1389                                        "parameters": [1390                                            {1391                                                "name": "level2",1392                                                "in": "query",1393                                                "required": True,1394                                                "schema": {1395                                                    "title": "Level2",1396                                                    "type": "string",1397                                                },1398                                            }1399                                        ],1400                                        "responses": {1401                                            "200": {1402                                                "description": "Successful Response",1403                                                "content": {1404                                                    "application/json": {"schema": {}}1405                                                },1406                                            },1407                                            "422": {1408                                                "description": "Validation Error",1409                                                "content": {1410                                                    "application/json": {1411                                                        "schema": {1412                                                            "$ref": "#/components/schemas/HTTPValidationError"1413                                                        }1414                                                    }1415                                                },1416                                            },1417                                        },1418                                    }1419                                }1420                            },1421                            "callback3": {1422                                "/": {1423                                    "get": {1424                                        "summary": "Callback3",1425                                        "operationId": "callback3__get",1426                                        "parameters": [1427                                            {1428                                                "name": "level3",1429                                                "in": "query",1430                                                "required": True,1431                                                "schema": {1432                                                    "title": "Level3",1433                                                    "type": "string",1434                                                },1435                                            }1436                                        ],1437                                        "responses": {1438                                            "200": {1439                                                "description": "Successful Response",1440                                                "content": {1441                                                    "application/json": {"schema": {}}1442                                                },1443                                            },1444                                            "422": {1445                                                "description": "Validation Error",1446                                                "content": {1447                                                    "application/json": {1448                                                        "schema": {1449                                                            "$ref": "#/components/schemas/HTTPValidationError"1450                                                        }1451                                                    }1452                                                },1453                                            },1454                                        },1455                                    }1456                                }1457                            },1458                            "callback4": {1459                                "/": {1460                                    "get": {1461                                        "summary": "Callback4",1462                                        "operationId": "callback4__get",1463                                        "parameters": [1464                                            {1465                                                "name": "level4",1466                                                "in": "query",1467                                                "required": True,1468                                                "schema": {1469                                                    "title": "Level4",1470                                                    "type": "string",1471                                                },1472                                            }1473                                        ],1474                                        "responses": {1475                                            "200": {1476                                                "description": "Successful Response",1477                                                "content": {1478                                                    "application/json": {"schema": {}}1479                                                },1480                                            },1481                                            "422": {1482                                                "description": "Validation Error",1483                                                "content": {1484                                                    "application/json": {1485                                                        "schema": {1486                                                            "$ref": "#/components/schemas/HTTPValidationError"1487                                                        }1488                                                    }1489                                                },1490                                            },1491                                        },1492                                    }1493                                }1494                            },1495                        },1496                        "deprecated": True,1497                    }1498                },1499                "/level1/level2/level3/override5": {1500                    "get": {1501                        "tags": [1502                            "level1a",1503                            "level1b",1504                            "level2a",1505                            "level2b",1506                            "level3a",1507                            "level3b",1508                            "path5a",1509                            "path5b",1510                        ],1511                        "summary": "Path5 Override Router4 Default",1512                        "operationId": "path5_override_router4_default_level1_level2_level3_override5_get",1513                        "parameters": [1514                            {1515                                "required": True,1516                                "schema": {"title": "Level5", "type": "string"},1517                                "name": "level5",1518                                "in": "query",1519                            }1520                        ],1521                        "responses": {1522                            "200": {1523                                "description": "Successful Response",1524                                "content": {"application/x-level-5": {"schema": {}}},1525                            },1526                            "400": {"description": "Client error level 0"},1527                            "401": {"description": "Client error level 1"},1528                            "402": {"description": "Client error level 2"},1529                            "403": {"description": "Client error level 3"},1530                            "405": {"description": "Client error level 5"},1531                            "422": {1532                                "description": "Validation Error",1533                                "content": {1534                                    "application/json": {1535                                        "schema": {1536                                            "$ref": "#/components/schemas/HTTPValidationError"1537                                        }1538                                    }1539                                },1540                            },1541                            "500": {"description": "Server error level 0"},1542                            "501": {"description": "Server error level 1"},1543                            "502": {"description": "Server error level 2"},1544                            "503": {"description": "Server error level 3"},1545                            "505": {"description": "Server error level 5"},1546                        },1547                        "callbacks": {1548                            "callback0": {1549                                "/": {1550                                    "get": {1551                                        "summary": "Callback0",1552                                        "operationId": "callback0__get",1553                                        "parameters": [1554                                            {1555                                                "name": "level0",1556                                                "in": "query",1557                                                "required": True,1558                                                "schema": {1559                                                    "title": "Level0",1560                                                    "type": "string",1561                                                },1562                                            }1563                                        ],1564                                        "responses": {1565                                            "200": {1566                                                "description": "Successful Response",1567                                                "content": {1568                                                    "application/json": {"schema": {}}1569                                                },1570                                            },1571                                            "422": {1572                                                "description": "Validation Error",1573                                                "content": {1574                                                    "application/json": {1575                                                        "schema": {1576                                                            "$ref": "#/components/schemas/HTTPValidationError"1577                                                        }1578                                                    }1579                                                },1580                                            },1581                                        },1582                                    }1583                                }1584                            },1585                            "callback1": {1586                                "/": {1587                                    "get": {1588                                        "summary": "Callback1",1589                                        "operationId": "callback1__get",1590                                        "parameters": [1591                                            {1592                                                "name": "level1",1593                                                "in": "query",1594                                                "required": True,1595                                                "schema": {1596                                                    "title": "Level1",1597                                                    "type": "string",1598                                                },1599                                            }1600                                        ],1601                                        "responses": {1602                                            "200": {1603                                                "description": "Successful Response",1604                                                "content": {1605                                                    "application/json": {"schema": {}}1606                                                },1607                                            },1608                                            "422": {1609                                                "description": "Validation Error",1610                                                "content": {1611                                                    "application/json": {1612                                                        "schema": {1613                                                            "$ref": "#/components/schemas/HTTPValidationError"1614                                                        }1615                                                    }1616                                                },1617                                            },1618                                        },1619                                    }1620                                }1621                            },1622                            "callback2": {1623                                "/": {1624                                    "get": {1625                                        "summary": "Callback2",1626                                        "operationId": "callback2__get",1627                                        "parameters": [1628                                            {1629                                                "name": "level2",1630                                                "in": "query",1631                                                "required": True,1632                                                "schema": {1633                                                    "title": "Level2",1634                                                    "type": "string",1635                                                },1636                                            }1637                                        ],1638                                        "responses": {1639                                            "200": {1640                                                "description": "Successful Response",1641                                                "content": {1642                                                    "application/json": {"schema": {}}1643                                                },1644                                            },1645                                            "422": {1646                                                "description": "Validation Error",1647                                                "content": {1648                                                    "application/json": {1649                                                        "schema": {1650                                                            "$ref": "#/components/schemas/HTTPValidationError"1651                                                        }1652                                                    }1653                                                },1654                                            },1655                                        },1656                                    }1657                                }1658                            },1659                            "callback3": {1660                                "/": {1661                                    "get": {1662                                        "summary": "Callback3",1663                                        "operationId": "callback3__get",1664                                        "parameters": [1665                                            {1666                                                "name": "level3",1667                                                "in": "query",1668                                                "required": True,1669                                                "schema": {1670                                                    "title": "Level3",1671                                                    "type": "string",1672                                                },1673                                            }1674                                        ],1675                                        "responses": {1676                                            "200": {1677                                                "description": "Successful Response",1678                                                "content": {1679                                                    "application/json": {"schema": {}}1680                                                },1681                                            },1682                                            "422": {1683                                                "description": "Validation Error",1684                                                "content": {1685                                                    "application/json": {1686                                                        "schema": {1687                                                            "$ref": "#/components/schemas/HTTPValidationError"1688                                                        }1689                                                    }1690                                                },1691                                            },1692                                        },1693                                    }1694                                }1695                            },1696                            "callback5": {1697                                "/": {1698                                    "get": {1699                                        "summary": "Callback5",1700                                        "operationId": "callback5__get",1701                                        "parameters": [1702                                            {1703                                                "name": "level5",1704                                                "in": "query",1705                                                "required": True,1706                                                "schema": {1707                                                    "title": "Level5",1708                                                    "type": "string",1709                                                },1710                                            }1711                                        ],1712                                        "responses": {1713                                            "200": {1714                                                "description": "Successful Response",1715                                                "content": {1716                                                    "application/json": {"schema": {}}1717                                                },1718                                            },1719                                            "422": {1720                                                "description": "Validation Error",1721                                                "content": {1722                                                    "application/json": {1723                                                        "schema": {1724                                                            "$ref": "#/components/schemas/HTTPValidationError"1725                                                        }1726                                                    }1727                                                },1728                                            },1729                                        },1730                                    }1731                                }1732                            },1733                        },1734                        "deprecated": True,1735                    }1736                },1737                "/level1/level2/level3/default5": {1738                    "get": {1739                        "tags": [1740                            "level1a",1741                            "level1b",1742                            "level2a",1743                            "level2b",1744                            "level3a",1745                            "level3b",1746                        ],1747                        "summary": "Path5 Default Router4 Default",1748                        "operationId": "path5_default_router4_default_level1_level2_level3_default5_get",1749                        "parameters": [1750                            {1751                                "required": True,1752                                "schema": {"title": "Level5", "type": "string"},1753                                "name": "level5",1754                                "in": "query",1755                            }1756                        ],1757                        "responses": {1758                            "200": {1759                                "description": "Successful Response",1760                                "content": {"application/x-level-3": {"schema": {}}},1761                            },1762                            "400": {"description": "Client error level 0"},1763                            "401": {"description": "Client error level 1"},1764                            "402": {"description": "Client error level 2"},1765                            "403": {"description": "Client error level 3"},1766                            "422": {1767                                "description": "Validation Error",1768                                "content": {1769                                    "application/json": {1770                                        "schema": {1771                                            "$ref": "#/components/schemas/HTTPValidationError"1772                                        }1773                                    }1774                                },1775                            },1776                            "500": {"description": "Server error level 0"},1777                            "501": {"description": "Server error level 1"},1778                            "502": {"description": "Server error level 2"},1779                            "503": {"description": "Server error level 3"},1780                        },1781                        "callbacks": {1782                            "callback0": {1783                                "/": {1784                                    "get": {1785                                        "summary": "Callback0",1786                                        "operationId": "callback0__get",1787                                        "parameters": [1788                                            {1789                                                "name": "level0",1790                                                "in": "query",1791                                                "required": True,1792                                                "schema": {1793                                                    "title": "Level0",1794                                                    "type": "string",1795                                                },1796                                            }1797                                        ],1798                                        "responses": {1799                                            "200": {1800                                                "description": "Successful Response",1801                                                "content": {1802                                                    "application/json": {"schema": {}}1803                                                },1804                                            },1805                                            "422": {1806                                                "description": "Validation Error",1807                                                "content": {1808                                                    "application/json": {1809                                                        "schema": {1810                                                            "$ref": "#/components/schemas/HTTPValidationError"1811                                                        }1812                                                    }1813                                                },1814                                            },1815                                        },1816                                    }1817                                }1818                            },1819                            "callback1": {1820                                "/": {1821                                    "get": {1822                                        "summary": "Callback1",1823                                        "operationId": "callback1__get",1824                                        "parameters": [1825                                            {1826                                                "name": "level1",1827                                                "in": "query",1828                                                "required": True,1829                                                "schema": {1830                                                    "title": "Level1",1831                                                    "type": "string",1832                                                },1833                                            }1834                                        ],1835                                        "responses": {1836                                            "200": {1837                                                "description": "Successful Response",1838                                                "content": {1839                                                    "application/json": {"schema": {}}1840                                                },1841                                            },1842                                            "422": {1843                                                "description": "Validation Error",1844                                                "content": {1845                                                    "application/json": {1846                                                        "schema": {1847                                                            "$ref": "#/components/schemas/HTTPValidationError"1848                                                        }1849                                                    }1850                                                },1851                                            },1852                                        },1853                                    }1854                                }1855                            },1856                            "callback2": {1857                                "/": {1858                                    "get": {1859                                        "summary": "Callback2",1860                                        "operationId": "callback2__get",1861                                        "parameters": [1862                                            {1863                                                "name": "level2",1864                                                "in": "query",1865                                                "required": True,1866                                                "schema": {1867                                                    "title": "Level2",1868                                                    "type": "string",1869                                                },1870                                            }1871                                        ],1872                                        "responses": {1873                                            "200": {1874                                                "description": "Successful Response",1875                                                "content": {1876                                                    "application/json": {"schema": {}}1877                                                },1878                                            },1879                                            "422": {1880                                                "description": "Validation Error",1881                                                "content": {1882                                                    "application/json": {1883                                                        "schema": {1884                                                            "$ref": "#/components/schemas/HTTPValidationError"1885                                                        }1886                                                    }1887                                                },1888                                            },1889                                        },1890                                    }1891                                }1892                            },1893                            "callback3": {1894                                "/": {1895                                    "get": {1896                                        "summary": "Callback3",1897                                        "operationId": "callback3__get",1898                                        "parameters": [1899                                            {1900                                                "name": "level3",1901                                                "in": "query",1902                                                "required": True,1903                                                "schema": {1904                                                    "title": "Level3",1905                                                    "type": "string",1906                                                },1907                                            }1908                                        ],1909                                        "responses": {1910                                            "200": {1911                                                "description": "Successful Response",1912                                                "content": {1913                                                    "application/json": {"schema": {}}1914                                                },1915                                            },1916                                            "422": {1917                                                "description": "Validation Error",1918                                                "content": {1919                                                    "application/json": {1920                                                        "schema": {1921                                                            "$ref": "#/components/schemas/HTTPValidationError"1922                                                        }1923                                                    }1924                                                },1925                                            },1926                                        },1927                                    }1928                                }1929                            },1930                        },1931                        "deprecated": True,1932                    }1933                },1934                "/level1/level2/level4/override5": {1935                    "get": {1936                        "tags": [1937                            "level1a",1938                            "level1b",1939                            "level2a",1940                            "level2b",1941                            "level4a",1942                            "level4b",1943                            "path5a",1944                            "path5b",1945                        ],1946                        "summary": "Path5 Override Router4 Override",1947                        "operationId": "path5_override_router4_override_level1_level2_level4_override5_get",1948                        "parameters": [1949                            {1950                                "required": True,1951                                "schema": {"title": "Level5", "type": "string"},1952                                "name": "level5",1953                                "in": "query",1954                            }1955                        ],1956                        "responses": {1957                            "200": {1958                                "description": "Successful Response",1959                                "content": {"application/x-level-5": {"schema": {}}},1960                            },1961                            "400": {"description": "Client error level 0"},1962                            "401": {"description": "Client error level 1"},1963                            "402": {"description": "Client error level 2"},1964                            "404": {"description": "Client error level 4"},1965                            "405": {"description": "Client error level 5"},1966                            "422": {1967                                "description": "Validation Error",1968                                "content": {1969                                    "application/json": {1970                                        "schema": {1971                                            "$ref": "#/components/schemas/HTTPValidationError"1972                                        }1973                                    }1974                                },1975                            },1976                            "500": {"description": "Server error level 0"},1977                            "501": {"description": "Server error level 1"},1978                            "502": {"description": "Server error level 2"},1979                            "504": {"description": "Server error level 4"},1980                            "505": {"description": "Server error level 5"},1981                        },1982                        "callbacks": {1983                            "callback0": {1984                                "/": {1985                                    "get": {1986                                        "summary": "Callback0",1987                                        "operationId": "callback0__get",1988                                        "parameters": [1989                                            {1990                                                "name": "level0",1991                                                "in": "query",1992                                                "required": True,1993                                                "schema": {1994                                                    "title": "Level0",1995                                                    "type": "string",1996                                                },1997                                            }1998                                        ],1999                                        "responses": {2000                                            "200": {

Findings

✓ No findings reported for this file.

Get this view in your editor

Same data, no extra tab — call code_get_file + code_get_findings over MCP from Claude/Cursor/Copilot.