Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jamesmcroft/msgraph-meeting-scheduler
https://github.com/jamesmcroft/msgraph-meeting-scheduler
Last synced: 28 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/jamesmcroft/msgraph-meeting-scheduler
- Owner: jamesmcroft
- License: mit
- Created: 2023-03-04T10:57:38.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-03-06T21:04:05.000Z (over 1 year ago)
- Last Synced: 2024-05-01T15:20:36.227Z (6 months ago)
- Language: C#
- Size: 46.9 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Microsoft Graph Meeting Scheduler
[![Hackathon][badge_hackathon]][link_hackathon]
[![GitHub Actions][badge_actions]][link_actions]
[![GitHub Issues][badge_issues]][link_issues]
[![GitHub Stars][badge_repo_stars]][link_repo]
[![Repo Language][badge_language]][link_repo]
[![Repo License][badge_license]][link_repo]
[![GitHub Sponsor][badge_sponsor]][link_sponsor]This is an experimentation project to understand the capabilities of the Microsoft Graph APIs including user mailboxes, calendars, and how Teams meetings could be scheduled.
The project contains an Azure Functions API that can check calendars of multiple users within a Microsoft 365 tenant based on a period of time, and find availability for the best time for a meeting. The request takes into consideration each participant's schedules, as well as including each individual's time zone to ensure that the times available are most convenient for everyone.
## Using the Scheduler API
You will need to create a new Azure AD application and grant it the following application permissions for the Microsoft Graph:
- Calendars.Read
- Mail.Read
- MailboxSettings.Read
- OnlineMeetings.ReadWrite.All
- User.Read.AllOnce created, you will need a client secret for the application. This can be generated from the Azure Portal.
Update the `local.settings.json` file with the following values:
- `TenantId`: The tenant ID of the Azure AD tenant
- `ClientId`: The client ID of the Azure AD application
- `ClientSecret`: The client secret of the Azure AD applicationYou can then run the project locally using the Azure Functions Core Tools.
### Get Availability
To get availability for a meeting, you can make a `GET` request to the `/api/scheduling/availability` endpoint with the following query string parameters:
- `start`: The UTC start date and time to get availability from in ISO 8601 format.
- `end`: The UTC end date and time to get availability to in ISO 8601 format.
- `email`: An email address per participant to include in the availability check.
- `duration`: The expected duration for a meeting in minutes.For example, to get availability between 1st March 2023 9am until 15th March 2023 5pm, you could make the following request:
```http
/api/scheduling/availability?start=2023-03-01T09:00:00Z&end=2023-03-15T17:00:00Z&[email protected]&[email protected]&duration=60
```The response will be a JSON object containing the availability for each participant.
```json
[
{
"startTimeUtc": "2023-03-01T16:00:00Z",
"endTimeUtc": "2023-03-01T17:00:00Z"
}
]
```## Supporting this project
As many developers know, projects like this are built in spare time! If you find this project useful, please **Star** the repo.
## Author
👤 James Croft
[![Website][badge_blog]][link_blog]
[![Twitter][badge_twitter]][link_twitter]
[![LinkedIn][badge_linkedin]][link_linkedin][badge_hackathon]: https://img.shields.io/badge/Microsoft%20-Hack--Together-orange?style=for-the-badge&logo=microsoft
[link_hackathon]: https://github.com/microsoft/hack-together
[badge_blog]: https://img.shields.io/badge/blog-jamesmcroft.co.uk-blue?style=for-the-badge
[badge_linkedin]: https://img.shields.io/badge/LinkedIn-jmcroft-blue?style=for-the-badge&logo=linkedin
[badge_twitter]: https://img.shields.io/badge/follow-%40jamesmcroft-1DA1F2?logo=twitter&style=for-the-badge&logoColor=white
[link_blog]: https://www.jamescroft.co.uk/
[link_linkedin]: https://www.linkedin.com/in/jmcroft
[link_twitter]: https://twitter.com/jamesmcroft
[badge_language]: https://img.shields.io/badge/language-C%23-blue?style=for-the-badge
[badge_license]: https://img.shields.io/github/license/jamesmcroft/msgraph-meeting-scheduler?style=for-the-badge
[badge_issues]: https://img.shields.io/github/issues/jamesmcroft/msgraph-meeting-scheduler?style=for-the-badge
[badge_repo_stars]: https://img.shields.io/github/stars/jamesmcroft/msgraph-meeting-scheduler?logo=github&style=for-the-badge
[badge_sponsor]: https://img.shields.io/github/sponsors/jamesmcroft?logo=github&style=for-the-badge
[link_issues]: https://github.com/jamesmcroft/msgraph-meeting-scheduler/issues
[link_repo]: https://github.com/jamesmcroft/msgraph-meeting-scheduler
[link_sponsor]: https://github.com/sponsors/jamesmcroft
[badge_actions]: https://img.shields.io/github/actions/workflow/status/jamesmcroft/msgraph-meeting-scheduler/ci.yml?style=for-the-badge
[link_actions]: https://github.com/jamesmcroft/msgraph-meeting-scheduler