Skip to content

Conversation

@inesmcm26
Copy link
Contributor

@inesmcm26 inesmcm26 commented Jul 4, 2025

When using A2AFastAPIApplication, the A2A request endpoint showed no space to fill in a request body in Swagger UI.
This made it impossible to use Swagger UI to test the endpoint directly, since you couldn't input the necessary data.

Changes

  • Added proper request body documentation using A2ARequest model
  • Now shows a text box to enter JSON requests and an example of the expected request format

Before
image

After
image

Fixes #274

@inesmcm26 inesmcm26 requested a review from a team as a code owner July 4, 2025 20:00
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @inesmcm26, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request resolves a critical usability issue within the Swagger UI for the A2AFastAPIApplication. Previously, the A2A request endpoint lacked a visible request body input, hindering direct testing. My changes explicitly define the request body schema using the A2ARequest model within the OpenAPI specification and ensure this schema is properly loaded into the FastAPI application's lifecycle, thereby enabling full interactive testing via Swagger UI.

Highlights

  • Swagger UI Enhancement: I've updated the /rpc endpoint's Swagger UI documentation to properly display the A2A request body. This allows users to easily input JSON data and view the expected request format directly within the UI, addressing the previous inability to test the endpoint via Swagger.
  • OpenAPI Schema Integration: I've implemented a FastAPI lifespan event handler that runs on application startup. This handler dynamically generates the JSON schema for the A2ARequest model and integrates it into the application's OpenAPI components. This ensures the A2ARequest model is correctly defined and referenced within the Swagger UI.
  • Dependency Updates: I've added necessary imports for AsyncIterator, asynccontextmanager, and A2ARequest to support the new lifespan functionality and the explicit OpenAPI schema definition.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request effectively resolves an issue where the A2A request body was not documented in the Swagger UI, making it difficult to test the endpoint. The approach of using a lifespan event to modify the OpenAPI schema and openapi_extra to apply it is a valid solution.

I've provided a couple of suggestions to refine this implementation. The core idea is to centralize all schema modifications within the lifespan function and use a simple schema reference ($ref) in the endpoint decorator. This makes the code cleaner, avoids redundant operations, and improves overall maintainability. The proposed changes are designed to be applied together.

@inesmcm26 inesmcm26 force-pushed the fix/fastapi-route-annotation branch from 2103096 to cbb3a44 Compare July 6, 2025 16:52
@holtskinner
Copy link
Member

Can you resolve the merge conflicts after #280 was added? It should improve some of what you were looking for.

@inesmcm26 inesmcm26 force-pushed the fix/fastapi-route-annotation branch from cbb3a44 to 5de13e2 Compare July 8, 2025 12:44
@holtskinner holtskinner merged commit 4343be9 into a2aproject:main Jul 8, 2025
5 checks passed
holtskinner pushed a commit that referenced this pull request Jul 14, 2025
🤖 I have created a release *beep* *boop*
---


##
[0.2.12](v0.2.11...v0.2.12)
(2025-07-14)


### Features

* add `metadata` property to `RequestContext`
([#302](#302))
([e781ced](e781ced))
* add A2ABaseModel
([#292](#292))
([24f2eb0](24f2eb0))
* add support for notification tokens in PushNotificationSender
([#266](#266))
([75aa4ed](75aa4ed))
* Update A2A types from specification 🤖
([#289](#289))
([ecb321a](ecb321a))


### Bug Fixes

* add proper a2a request body documentation to Swagger UI
([#276](#276))
([4343be9](4343be9)),
closes [#274](#274)
* Handle asyncio.cancellederror and raise to propagate back
([#293](#293))
([9d6cb68](9d6cb68))
* Improve error handling in task creation
([#294](#294))
([6412c75](6412c75))
* Resolve dependency issue with sql stores
([#303](#303))
([2126828](2126828))
* Send push notifications for message/send
([#298](#298))
([0274112](0274112))
* **server:** Improve event consumer error handling
([#282](#282))
([a5786a1](a5786a1))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: No proper documentation for A2A request in Swagger UI for A2AFastAPIApplication

2 participants