Skip to content

fix: return 422 for invalid historyLength in REST get_task#741

Open
azilbersteinSFDC wants to merge 3 commits intoa2aproject:mainfrom
azilbersteinSFDC:fix/invalid-history-length
Open

fix: return 422 for invalid historyLength in REST get_task#741
azilbersteinSFDC wants to merge 3 commits intoa2aproject:mainfrom
azilbersteinSFDC:fix/invalid-history-length

Conversation

@azilbersteinSFDC
Copy link

@azilbersteinSFDC azilbersteinSFDC commented Feb 26, 2026

Replace unhandled int() conversion with Pydantic validation so non-numeric historyLength query params (e.g. ?historyLength=abc) return 422 InvalidParamsError instead of 500.

Description

Thank you for opening a Pull Request!
Before submitting your PR, there are a few things you can do to make sure it goes smoothly:

  • Follow the CONTRIBUTING Guide.
  • Make your Pull Request title in the https://www.conventionalcommits.org/ specification.
    • Important Prefixes for release-please:
      • fix: which represents bug fixes, and correlates to a SemVer patch.
      • feat: represents a new feature, and correlates to a SemVer minor.
      • feat!:, or fix!:, refactor!:, etc., which represent a breaking change (indicated by the !) and will result in a SemVer major.
  • Ensure the tests and linter pass (Run bash scripts/format.sh from the repository root to format)
  • Appropriate docs were updated (if necessary)

Replace unhandled int() conversion with Pydantic validation so
non-numeric historyLength query params (e.g. ?historyLength=abc)
return 422 InvalidParamsError instead of 500.
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @azilbersteinSFDC, 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 enhances the robustness of the get_task REST API by implementing proper validation for the historyLength query parameter. By leveraging Pydantic, the system now gracefully handles malformed input, providing a clear 422 error response to the client rather than an unexpected server error, thereby improving API reliability and user experience.

Highlights

  • Improved Error Handling: The get_task REST endpoint now uses Pydantic validation for the historyLength query parameter, preventing unhandled int() conversion errors.
  • Standardized Error Response: Invalid non-numeric historyLength query parameters will now correctly return a 422 Unprocessable Entity (InvalidParamsError) instead of a 500 Internal Server Error.
  • New Test Coverage: A new test case was added to ensure the get_task endpoint properly returns a 422 status code for invalid historyLength inputs.
Changelog
  • src/a2a/server/request_handlers/rest_handler.py
    • Imported ValidationError from pydantic for robust data validation.
    • Imported InvalidParamsError to provide specific error responses for invalid parameters.
    • Modified the on_get_task function to wrap TaskQueryParams instantiation in a try-except ValidationError block.
    • Replaced direct int() conversion of history_length_str with Pydantic's validation mechanism.
    • Introduced raising a ServerError with InvalidParamsError when historyLength fails Pydantic validation.
  • tests/server/apps/rest/test_rest_fastapi_app.py
    • Added a new asynchronous test test_get_task_invalid_history_length_returns_422.
    • The new test verifies that a GET request to /v1/tasks/some-task-id with a non-numeric historyLength query parameter returns an HTTP 422 status code.
    • The test also asserts that the response body contains a message indicating an issue with 'historylength'.
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 by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

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 pull request 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 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. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

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 addresses the issue of unhandled int() conversion for the historyLength query parameter in the get_task REST endpoint. By integrating Pydantic validation, the system now correctly returns a 422 InvalidParamsError for non-numeric inputs, significantly improving error handling and API robustness. The addition of a dedicated test case ensures this new behavior is properly validated.

@azilbersteinSFDC azilbersteinSFDC marked this pull request as ready for review February 26, 2026 08:39
@azilbersteinSFDC azilbersteinSFDC requested a review from a team as a code owner February 26, 2026 08:39
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.

1 participant