77
88import warnings
99from typing import Any , List
10+ from urllib .parse import quote
1011
1112from ..common ._base_service import BaseService
1213from ..common ._bindings import resource_override
@@ -150,20 +151,23 @@ async def main():
150151 data = response .json ()
151152 return [RemoteA2aAgent .model_validate (agent ) for agent in data .get ("value" , [])]
152153
154+ @resource_override (resource_type = "remoteA2aAgent" , resource_identifier = "name" )
153155 @resource_override (resource_type = "remoteA2aAgent" , resource_identifier = "slug" )
154156 def retrieve (
155157 self ,
156- slug : str ,
158+ slug : str | None = None ,
157159 * ,
160+ name : str | None = None ,
158161 folder_path : str | None = None ,
159162 ) -> RemoteA2aAgent :
160- """Retrieve a specific Remote A2A agent by slug.
163+ """Retrieve a Remote A2A agent by its display name or legacy slug.
161164
162165 .. warning::
163166 This method is experimental and subject to change.
164167
165168 Args:
166- slug: The unique slug identifier for the agent.
169+ slug: The legacy slug identifier of the agent.
170+ name: The display name of the agent.
167171 folder_path: The folder path where the agent is located.
168172
169173 Returns:
@@ -183,7 +187,8 @@ def retrieve(
183187 "remote_a2a.retrieve is experimental and subject to change." ,
184188 stacklevel = 2 ,
185189 )
186- spec = self ._retrieve_spec (slug = slug , folder_path = folder_path )
190+ identifier = self ._resolve_retrieve_identifier (name = name , slug = slug )
191+ spec = self ._retrieve_spec (name = identifier , folder_path = folder_path )
187192 response = self .request (
188193 spec .method ,
189194 url = spec .endpoint ,
@@ -192,20 +197,23 @@ def retrieve(
192197 )
193198 return RemoteA2aAgent .model_validate (response .json ())
194199
200+ @resource_override (resource_type = "remoteA2aAgent" , resource_identifier = "name" )
195201 @resource_override (resource_type = "remoteA2aAgent" , resource_identifier = "slug" )
196202 async def retrieve_async (
197203 self ,
198- slug : str ,
204+ slug : str | None = None ,
199205 * ,
206+ name : str | None = None ,
200207 folder_path : str | None = None ,
201208 ) -> RemoteA2aAgent :
202- """Asynchronously retrieve a specific Remote A2A agent by slug.
209+ """Asynchronously retrieve a Remote A2A agent by display name or legacy slug.
203210
204211 .. warning::
205212 This method is experimental and subject to change.
206213
207214 Args:
208- slug: The unique slug identifier for the agent.
215+ slug: The legacy slug identifier of the agent.
216+ name: The display name of the agent.
209217 folder_path: The folder path where the agent is located.
210218
211219 Returns:
@@ -229,7 +237,8 @@ async def main():
229237 "remote_a2a.retrieve_async is experimental and subject to change." ,
230238 stacklevel = 2 ,
231239 )
232- spec = self ._retrieve_spec (slug = slug , folder_path = folder_path )
240+ identifier = self ._resolve_retrieve_identifier (name = name , slug = slug )
241+ spec = self ._retrieve_spec (name = identifier , folder_path = folder_path )
233242 response = await self .request_async (
234243 spec .method ,
235244 url = spec .endpoint ,
@@ -249,6 +258,19 @@ def _resolve_folder_key(self, folder_path: str | None) -> str | None:
249258
250259 return self ._folder_key
251260
261+ @staticmethod
262+ def _resolve_retrieve_identifier (
263+ name : str | None ,
264+ slug : str | None ,
265+ ) -> str :
266+ if name is not None and slug is not None :
267+ raise ValueError ("Specify either 'name' or 'slug', not both." )
268+ if name is not None :
269+ return name
270+ if slug is not None :
271+ return slug
272+ raise TypeError ("Either 'name' or 'slug' must be provided." )
273+
252274 def _list_spec (
253275 self ,
254276 * ,
@@ -279,14 +301,16 @@ def _list_spec(
279301
280302 def _retrieve_spec (
281303 self ,
282- slug : str ,
304+ name : str ,
283305 * ,
284306 folder_path : str | None ,
285307 ) -> RequestSpec :
286308 folder_key = self ._resolve_folder_key (folder_path )
287309 return RequestSpec (
288310 method = "GET" ,
289- endpoint = Endpoint (f"/agenthub_/api/remote-a2a-agents/{ slug } " ),
311+ endpoint = Endpoint (
312+ f"/agenthub_/api/remote-a2a-agents/{ quote (name , safe = '' )} "
313+ ),
290314 headers = {
291315 ** header_folder (folder_key , None ),
292316 },
0 commit comments