diff --git a/lib/tool_shed/test/functional/test_shed_tools.py b/lib/tool_shed/test/functional/test_shed_tools.py index ffdb13ecf17..eb2d4ebcbe4 100644 --- a/lib/tool_shed/test/functional/test_shed_tools.py +++ b/lib/tool_shed/test/functional/test_shed_tools.py @@ -70,6 +70,20 @@ class TestShedToolsApi(ShedApiTestCase): tool_response = self.api_interactor.get(url) tool_response.raise_for_status() + def test_tool_interop(self): + populator = self.populator + repository = populator.setup_column_maker_repo(prefix="toolinterop") + tool_id = populator.tool_guid(self, repository, "Add_a_column1") + tool_shed_base, encoded_tool_id = encode_identifier(tool_id) + url = f"tools/{encoded_tool_id}/versions/1.1.0/interop" + tool_response = self.api_interactor.get(url) + tool_response.raise_for_status() + parsed = tool_response.json() + assert parsed["id"] == "Add_a_column1" + assert parsed["version"] == "1.1.0" + assert "inputs" in parsed + assert "outputs" in parsed + def test_tool_source(self): populator = self.populator repository = populator.setup_column_maker_repo(prefix="toolsource") diff --git a/lib/tool_shed/webapp/api2/tools.py b/lib/tool_shed/webapp/api2/tools.py index 6c099b1253e..614718f7ff4 100644 --- a/lib/tool_shed/webapp/api2/tools.py +++ b/lib/tool_shed/webapp/api2/tools.py @@ -155,6 +155,19 @@ class FastAPITools: ) -> ShedParsedTool: return parsed_tool_model_cached_for(trans, tool_id, tool_version) + @router.get( + "/api/tools/{tool_id}/versions/{tool_version}/interop", + operation_id="tools__interop", + summary="Return Galaxy's meta model description of the tool's metadata, inputs, and outputs.", + ) + def interop( + self, + trans: SessionRequestContext = DependsOnTrans, + tool_id: str = TOOL_ID_PATH_PARAM, + tool_version: str = TOOL_VERSION_PATH_PARAM, + ) -> ShedParsedTool: + return parsed_tool_model_cached_for(trans, tool_id, tool_version) + @router.get( "/api/tools/{tool_id}/versions/{tool_version}/parameter_request_schema", operation_id="tools__parameter_request_schema",