- Changes to allow Microsoft365R to be usable without being on the search list (#72). Among other things, `make_basic_list()` is now a private method, rather than being exported. Thanks to @rob for the PR.
- Add support for shared mailboxes to `get_business_outlook()` (#39). To access a shared mailbox, supply one of the arguments `shared_mbox_id`, `shared_mbox_name` or `shared_mbox_email` specifying the ID, displayname or email address of the mailbox respectively.
- Add support for Teams chats (including one-on-one, group and meeting chats).
- Use the `list_chats()` function to list the chats you're participating in, and the `get_chat()` function to retrieve a specific chat.
- A chat object has class `ms_chat`, which has similar methods to a channel: you can send, list and retrieve messages, and list and retrieve members/attendees. One difference is that chats don't have an associated file folder, unlike channels.
- Allow getting drives for groups, sites and teams by name. The first argument to the `get_drive()` method for these classes is now `drive_name`; to get a drive by ID, specify the argument name explicitly: `get_drive(drive_id=*)`
- Add a `by_item` argument to the `delete_item()` method for drives and the `delete()` method for drive items (#21). This is to allow deletion of non-empty folders on SharePoint sites with data protection policies in place. Use with caution.
## Outlook
- Add a `search` argument to the `ms_outlook_folder$list_emails()` method. The default is to search in the from, subject and body of the emails.
- All `list_*` class methods now have `filter` and `n` arguments to filter the result set and cap the number of results, following the pattern in AzureGraph 1.3.0. The default values are `filter=NULL` and `n=Inf`. If `n=NULL`, an `ms_graph_pager` iterator object is returned instead to allow manual iteration over the results. Note that support for filtering in the underlying Graph API is somewhat uneven at the moment.
- Experimental **read-only** support for plans, contributed by Roman Zenka.
- Add `get_plan()` and `list_plans()` methods to the `az_group` class. Note that only Microsoft 365 groups can have plans, not any other type of group.
- To get the plan(s) for a site or team, call its `get_group()` method to retrieve the associated group, and then get the plan from the group.
- A plan has methods to retrieve tasks and buckets, as well as plan details.
- Add support for sending and managing emails in Outlook. Use the `get_personal_outlook()` and `get_business_outlook()` client functions to access the emails in your personal account and work or school account, respectively. Functionality supported includes:
- Send and reply to emails, optionally composed with either the blastula or emayili packages
- Add `list_teams()` and `get_team()` client functions for working with Microsoft Teams. You can get a team by name or ID. The following Teams functionality is supported:
- This facilitates managing files for Teams channels, which have associated folders in a shared document library (drive)
- The existing methods for the `ms_drive` class now call down to the `ms_drive_item` methods, with appropriate arguments; their behaviour should be unchanged
- Rename the client functions to allow for listing teams and sites. The original clients are still available, but are deprecated and simply redirect to the new functions. They will be removed in a future version of the package.
- The first argument to `get_sharepoint_site()` is `site_name` to get a site by name, for consistency with `get_team()`. To get a site by URL, specify the `site_url` argument explicitly: `get_sharepoint_site(site_url="https://my-site-url")`.