RestApiTool raises uncaught KeyError when a required path param is omitted
Mantenedores costumam responder em até 5 dias
@llalitkumarrr já está trabalhando nisso.
Desde 28/9/2026.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 78/100
Direção de pesquisa
Comece em google/adk/tools/openapi_tool/openapi_spec_parser/rest_api_tool.py, concentrando-se em _prepare_request_params e RestApiTool.call. Reproduza o caso de user_id ausente com a configuração de testes unitários offline e rastreie a falha na formatação do caminho. Está concluído quando parâmetros de caminho obrigatórios omitidos produzem um erro de ferramenta estruturado e que permita nova tentativa, em vez de um KeyError não tratado ou de uma invocação do agente abortada.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Description
FunctionTool returns {"error": ...} when mandatory args are missing so the model can retry.
RestApiTool maps filled args into path_params, then does self.endpoint.path.format(**path_params) in _prepare_request_params. An omitted required path parameter leaves a template key unset → KeyError (original OpenAPI name, e.g. 'userId').
RestApiTool.call only catches TimeoutException / HTTPStatusError, so the agent invocation aborts instead of returning a retryable tool error.
Location: google/adk/tools/openapi_tool/openapi_spec_parser/rest_api_tool.py
Environment
google-adk==2.9.2- Offline unit repro (no live HTTP)
Repro
# RestApiTool for path /users/{userId} with required path param userId / py_name user_id
# Call with args {} (or missing user_id)
# → KeyError: 'userId'
Observed (google-adk==2.9.2)
- path
/users/{userId}, args{}→KeyError: 'userId' py_namesfor the param includeuser_id(declaration expects snake_case), but missing value still crashes viaformat
Expected
Missing required path params should return a structured tool error (mirror FunctionTool._get_mandatory_args) so the model can retry, not abort the agent run.
Suggested fix
Before format, verify every {placeholder} in the path is present; on miss return {"error": "missing path parameter …"}. Optionally catch KeyError/ValueError from _prepare_request_params in call.
Notes
Nearby RestApiTool crashes #7164 (header type) and #7206 (non-UTF-8 body) are different sites. Happy to open a PR.
- Linguagem predominante
- Python
- Estrelas
- 21.6k
- Forks
- 4k
- Merge médio
- 12h 6min
- PRs com merge (30d)
- 4
Preparar o ambiente
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de google/adk-python
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
google/adk-python#7334 · 1 comentário ·
Mantenedores costumam responder em até 5 dias
-
Redis append_event stamps last_update_time with the wall clock, not the event timestampTalvez já em andamento @sanketpatil06 assumiu há 1 dia. Abertaservices
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
google/adk-python#7292 · 2 comentários · 1 responsável ·
Mantenedores costumam responder em até 5 dias
-
GoogleOidcVerifier treats string "false" as a verified email claimTalvez já em andamento @surajksharma07 assumiu há 1 dia. Abertacore
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
google/adk-python#7289 · 5 comentários · 1 responsável ·
Mantenedores costumam responder em até 5 dias
-
CredentialsManager should also extract scopes when populating auth schemesTalvez já em andamento @sanketpatil06 assumiu há 4 dias. Abertacore needs review
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
google/adk-python#7266 · 2 comentários · 1 responsável ·
Mantenedores costumam responder em até 5 dias
-
OAuth2 Discovery method fails because FastMCP with GoogleProvider (OAuth) returns issuerUrl with trailing slashTalvez já em andamento @sanketpatil06 assumiu há 4 dias. Abertamcp
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
google/adk-python#7265 · 3 comentários · 1 responsável ·
Mantenedores costumam responder em até 5 dias
Todas as issues de google/adk-python
Issues semelhantes
-
[Bug] @deck.gl/arcgis dist import resolves to unpublished @deck.gl/core source path (9.3.11, 9.4.0)Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
workflow: a tick's dispatch counts as 'only this step', and no review self-grants a round unattendedAbertaworkflow
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
kristofdegrave/homeassistant-smart-charging#1505 ·
Mantenedores costumam responder em até 1 dia
-
New Submission: TropWATERAbertametadata submission
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
canonical/content-cache-operator#163 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
[submission]Abertasubmission
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 65/100
leanprover/lean-eval-submissions#1852 ·
Mantenedores costumam responder em até 1 dia