Skip to content

Adk Swagger Docs not working #1005

@amal-sajeev

Description

@amal-sajeev

Describe the bug

The /docs endpoint, which according to the documentation here, should bring up a Swagger documentation of google ADK's API, now just generates a Pydantic error.

Here is the full error traceback:

INFO:     127.0.0.1:50666 - "GET /openapi.json HTTP/1.1" 500 Internal Server Error
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\type_adapter.py", line 287, in _init_core_attrs
    self.core_schema = _getattr_no_parents(self._type, '__pydantic_core_schema__')
                       ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\type_adapter.py", line 56, in _getattr_no_parents
    raise AttributeError(attribute)
AttributeError: __pydantic_core_schema__

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        self.scope, self.receive, self.send
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in __call__
    return await self.app(scope, receive, send)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\applications.py", line 1134, in __call__
    await super().__call__(scope, receive, send)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\middleware\errors.py", line 186, in __call__
    raise exc
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in __call__
    await self.app(scope, receive, _send)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__
    await self.app(scope, receive, send)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\routing.py", line 716, in __call__
    await self.middleware_stack(scope, receive, send)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\routing.py", line 736, in app
    await route.handle(scope, receive, send)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\routing.py", line 290, in handle
    await self.app(scope, receive, send)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\routing.py", line 78, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\routing.py", line 75, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\applications.py", line 1089, in openapi
    return JSONResponse(self.openapi())
                        ~~~~~~~~~~~~^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\applications.py", line 1060, in openapi
    self.openapi_schema = get_openapi(
                          ~~~~~~~~~~~^
        title=self.title,
        ^^^^^^^^^^^^^^^^^
    ...<12 lines>...
        external_docs=self.openapi_external_docs,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\openapi\utils.py", line 503, in get_openapi
    model_name_map = get_compat_model_name_map(all_fields)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\main.py", line 254, in get_compat_model_name_map
    v2_flat_models = v2.get_flat_models_from_fields(
        v2_model_fields, known_models=set()
    )
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 474, in get_flat_models_from_fields
    get_flat_models_from_field(field, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 462, in get_flat_models_from_field
    get_flat_models_from_model(field_type, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 435, in get_flat_models_from_model
    get_flat_models_from_fields(fields, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 474, in get_flat_models_from_fields
    get_flat_models_from_field(field, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 462, in get_flat_models_from_field
    get_flat_models_from_model(field_type, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 435, in get_flat_models_from_model
    get_flat_models_from_fields(fields, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 474, in get_flat_models_from_fields
    get_flat_models_from_field(field, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 466, in get_flat_models_from_field
    get_flat_models_from_annotation(field_type, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 448, in get_flat_models_from_annotation
    get_flat_models_from_model(arg, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 435, in get_flat_models_from_model
    get_flat_models_from_fields(fields, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 474, in get_flat_models_from_fields
    get_flat_models_from_field(field, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 466, in get_flat_models_from_field
    get_flat_models_from_annotation(field_type, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 450, in get_flat_models_from_annotation
    get_flat_models_from_annotation(arg, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 448, in get_flat_models_from_annotation
    get_flat_models_from_model(arg, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 435, in get_flat_models_from_model
    get_flat_models_from_fields(fields, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 474, in get_flat_models_from_fields
    get_flat_models_from_field(field, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 466, in get_flat_models_from_field
    get_flat_models_from_annotation(field_type, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 448, in get_flat_models_from_annotation
    get_flat_models_from_model(arg, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 435, in get_flat_models_from_model
    get_flat_models_from_fields(fields, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 474, in get_flat_models_from_fields
    get_flat_models_from_field(field, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 466, in get_flat_models_from_field
    get_flat_models_from_annotation(field_type, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 448, in get_flat_models_from_annotation
    get_flat_models_from_model(arg, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 434, in get_flat_models_from_model
    fields = get_model_fields(model)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 396, in get_model_fields
    ModelField(field_info=field_info, name=name)
    ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 6, in __init__
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 97, in __post_init__
    self._type_adapter: TypeAdapter[Any] = TypeAdapter(
                                           ~~~~~~~~~~~^
        Annotated[self.field_info.annotation, self.field_info]
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\type_adapter.py", line 244, in __init__
    self._init_core_attrs(
    ~~~~~~~~~~~~~~~~~~~~~^
        ns_resolver=_namespace_utils.NsResolver(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<3 lines>...
        force=False,
        ^^^^^^^^^^^^
    )
    ^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\type_adapter.py", line 306, in _init_core_attrs
    core_schema = schema_generator.generate_schema(self._type)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 729, in generate_schema
    schema = self._generate_schema_inner(obj)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1007, in _generate_schema_inner
    return self._annotated_schema(obj)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 2177, in _annotated_schema
    schema = self._apply_annotations(source_type, annotations)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 2227, in _apply_annotations
    schema = get_inner_schema(source_type)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_schema_generation_shared.py", line 83, in __call__
    schema = self._handler(source_type)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 2358, in new_handler
    schema = get_inner_schema(source)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_schema_generation_shared.py", line 83, in __call__
    schema = self._handler(source_type)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 2206, in inner_handler
    schema = self._generate_schema_inner(obj)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1028, in _generate_schema_inner
    return self.match_type(obj)
           ~~~~~~~~~~~~~~~^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1144, in match_type
    return self._match_generic_type(obj, origin)
           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1171, in _match_generic_type
    return self._list_schema(self._get_first_arg_or_any(obj))
           ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 384, in _list_schema
    return core_schema.list_schema(self.generate_schema(items_type))
                                   ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 729, in generate_schema
    schema = self._generate_schema_inner(obj)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1028, in _generate_schema_inner
    return self.match_type(obj)
           ~~~~~~~~~~~~~~~^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1144, in match_type
    return self._match_generic_type(obj, origin)
           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1167, in _match_generic_type
    return self._union_schema(obj)
           ~~~~~~~~~~~~~~~~~~^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1327, in _union_schema
    choices.append(self.generate_schema(arg))
                   ~~~~~~~~~~~~~~~~~~~~^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 729, in generate_schema
    schema = self._generate_schema_inner(obj)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1028, in _generate_schema_inner
    return self.match_type(obj)
           ~~~~~~~~~~~~~~~^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1148, in match_type
    return self._unknown_type_schema(obj)
           ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 659, in _unknown_type_schema
    raise PydanticSchemaGenerationError(
    ...<7 lines>...
    )
pydantic.errors.PydanticSchemaGenerationError: Unable to generate pydantic-core schema for <class 'mcp.client.session.ClientSession'>. Set `arbitrary_types_allowed=True` in the model_config to ignore this error or implement `__get_pydantic_core_schema__` on your type to fully support it.

If you got this error by calling handler(<some type>) within `__get_pydantic_core_schema__` then you likely need to call `handler.generate_schema(<some type>)` since we do not call `__get_pydantic_core_schema__` on `<some type>` otherwise to avoid infinite recursion.

For further information visit https://errors.pydantic.dev/2.12/u/schema-for-unknown-type

The docs page is extremely useful as a quick reference when ADK projects need to be integrated with UI elements and similar, and I hope this issue either has a quick fix that I've overlooked, or will be fixed soon.

To Reproduce

Steps to reproduce the behavior:

  1. Create a fresh ADK project with adk create
  2. Run with adk web or adk api_server
  3. Open http://127.0.0.1:8000/docs
  4. Error is generated in console.

Expected behavior

I expected the Swagger API docs to be shown.

Screenshots

Image

Versions

  • OS: Windows 11
  • ADK version: 1.19.0
  • Python version: Python 3.13

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions