-
Notifications
You must be signed in to change notification settings - Fork 313
fix: add proper a2a request body documentation to Swagger UI #276
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: add proper a2a request body documentation to Swagger UI #276
Conversation
There was a problem hiding this 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
/rpcendpoint'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
lifespanevent handler that runs on application startup. This handler dynamically generates the JSON schema for theA2ARequestmodel and integrates it into the application's OpenAPI components. This ensures theA2ARequestmodel is correctly defined and referenced within the Swagger UI. - Dependency Updates: I've added necessary imports for
AsyncIterator,asynccontextmanager, andA2ARequestto support the newlifespanfunctionality 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
-
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. ↩
There was a problem hiding this 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.
2103096 to
cbb3a44
Compare
|
Can you resolve the merge conflicts after #280 was added? It should improve some of what you were looking for. |
cbb3a44 to
5de13e2
Compare
🤖 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>
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
A2ARequestmodelBefore

After

Fixes #274