from typing import Annotated from arcade.sdk import ToolContext, tool from arcade.sdk.auth import Microsoft from arcade_microsoft.client import get_client from arcade_microsoft.outlook_calendar._utils import ( create_timezone_request_config, get_default_calendar_timezone, ) from arcade_microsoft.outlook_calendar.models import Event @tool(requires_auth=Microsoft(scopes=["MailboxSettings.Read", "Calendars.ReadBasic"])) async def get_event( context: ToolContext, event_id: Annotated[str, "The ID of the event to get"], ) -> Annotated[dict, "A dictionary containing the event details"]: """Get an event by its ID from the user's calendar.""" client = get_client(context.get_auth_token_or_empty()) time_zone = await get_default_calendar_timezone(client) request_config = create_timezone_request_config(time_zone) response = await client.me.events.by_event_id(event_id).get( request_configuration=request_config ) return Event.from_sdk(response).to_dict() # type: ignore[arg-type]