@@ -373,6 +373,47 @@ async def manage_group(
373373 return f"Group { group_id } has been deleted."
374374
375375
376+ @server .tool ()
377+ @require_google_service ("cloudidentity" , "groups_read" )
378+ @handle_http_errors ("lookup_group" , service_type = "cloudidentity" )
379+ async def lookup_group (
380+ service : Resource ,
381+ user_google_email : str ,
382+ group_email : str ,
383+ ) -> str :
384+ """
385+ Look up the resource name of a group by its email address.
386+
387+ Args:
388+ user_google_email (str): The user's Google email address. Required.
389+ group_email (str): The group's email address to look up.
390+
391+ Returns:
392+ str: The group's resource name and key information.
393+ """
394+ logger .info (
395+ f"[lookup_group] Invoked. Email: '{ user_google_email } ', "
396+ f"Group email: '{ group_email } '"
397+ )
398+
399+ result = await asyncio .to_thread (
400+ service .groups ()
401+ .lookup (groupKey_id = group_email )
402+ .execute
403+ )
404+
405+ resource_name = result .get ("name" , "Unknown" )
406+ group_id = resource_name .replace ("groups/" , "" )
407+
408+ response = f"Group Lookup Result:\n \n "
409+ response += f"Email: { group_email } \n "
410+ response += f"Resource Name: { resource_name } \n "
411+ response += f"Group ID: { group_id } \n "
412+
413+ logger .info (f"Looked up group { group_email } -> { resource_name } " )
414+ return response
415+
416+
376417# =============================================================================
377418# Extended Tier Tools
378419# =============================================================================
@@ -563,44 +604,3 @@ async def list_groups(
563604
564605 logger .info (f"Found { len (groups )} groups under { parent } for { user_google_email } " )
565606 return response
566-
567-
568- @server .tool ()
569- @require_google_service ("cloudidentity" , "groups_read" )
570- @handle_http_errors ("lookup_group" , service_type = "cloudidentity" )
571- async def lookup_group (
572- service : Resource ,
573- user_google_email : str ,
574- group_email : str ,
575- ) -> str :
576- """
577- Look up the resource name of a group by its email address.
578-
579- Args:
580- user_google_email (str): The user's Google email address. Required.
581- group_email (str): The group's email address to look up.
582-
583- Returns:
584- str: The group's resource name and key information.
585- """
586- logger .info (
587- f"[lookup_group] Invoked. Email: '{ user_google_email } ', "
588- f"Group email: '{ group_email } '"
589- )
590-
591- result = await asyncio .to_thread (
592- service .groups ()
593- .lookup (groupKey_id = group_email )
594- .execute
595- )
596-
597- resource_name = result .get ("name" , "Unknown" )
598- group_id = resource_name .replace ("groups/" , "" )
599-
600- response = f"Group Lookup Result:\n \n "
601- response += f"Email: { group_email } \n "
602- response += f"Resource Name: { resource_name } \n "
603- response += f"Group ID: { group_id } \n "
604-
605- logger .info (f"Looked up group { group_email } -> { resource_name } " )
606- return response
0 commit comments