 Hi, I'm Sridevi, a Program Manager at Microsoft on the Office 365 Outlook Services team. In this video, I'm going to show you what exciting features we have lined up for you in v2 of the Outlook REST API. We introduced the Outlook Mail, Calendar and Contacts API for general availability a year ago. Today, we are announcing the v2 endpoint with some great features. We will look at some key updates we have added to this endpoint, like web hooks, photos API, reminders and time zone v2. As with v1.0, v2.0 also uses industry standards, JSON, OAuth and OData v4. The Outlook REST APIs are available for Office 365 accounts as well as Outlook.com accounts upgraded to Office 365 infrastructure. We are in the process of upgrading all Outlook.com accounts and once that is complete, all 400 million Outlook.com users will have REST APIs enabled. I am now going to walk you through some of the features I mentioned earlier. Web hooks. This notifications feature has been in preview since April of this year and we are now GA-ing this feature in v2.0. As you can see here, it uses existing permissions that the app has and is available for messages, events, contacts and groups. This feature eliminates the need for the app to keep polling for any changes to entities in the mailbox. Instead, the app will be notified when anything in the mailbox is updated or deleted or if new items are added. The app needs to first subscribe to notifications at the subscriptions end point by specifying which changes are of interest to the app. For example, incoming emails. Each subscription is valid for 72 hours after which the app would need to renew the subscription. Let's go ahead and look at a quick demo. So this is an app here that I am going to use to demonstrate subscriptions and notifications. As you can see here, this is the URL which I am going to use to subscribe to notifications and in the body, you can see the details of what kind of subscription I want. I am going to hit send here and once this request executes, I can show you that we have a subscription ID that is returned from the service, which we can use to keep track of the subscription and to renew the subscription to delete it and other stuff. Now I am going to show you how this notifications feature works. I am going to send a quick email to John Doe. Let's see if he received that email. There it is. This is an awesome app. So let's go to my app. Here you go. You can see that a new email has been created and you get a notification for that. The photo API supports setting and getting of photos. There are three types of photos you can access. First is the user photo, which is the photo in the directory or the photo uploaded by the user. The second is the contact photo. This is the photo that is associated with each of the user's contacts and has been uploaded by the user. The third is the group photo. This is the photo for a modern group. For each of them, the app can either get the metadata, which is the details about the photo, or download the actual photo itself by appending dollar value to the request. For user photo, the service is going to retrieve the best available photo for the particular request. It could be a low resolution picture or an HD picture uploaded by the user. If no photo is found, the API would return a 404 error. Let me show you how easy it is to use this API. So here you can see the URL where I need to go to get details about the photo. Let me hit execute and that return a 200 response. Let's look at what we got back in the response. Here you can see that I got an ID for the photo, the height of the photo and the width of the photo. Now I want to show you how to actually download the photo itself. I'm going to append a dollar value to the end of this request and hit execute. Now we have a 200 response. So let's go and see. There it is. You have actually downloaded the photo itself. Reminders. Reminders for events in v2 are basically two properties that are on the event entity. Reminder minutes before start and is reminder on. These properties can be set when an event is created or updated. As their name indicates, the reminder minutes before start is the time in minutes before the start of the meeting that the reminder should fire. And is reminder on is a Boolean which tells if the reminder is set to fire or not. In addition to these properties, the API offers a reminder view function. This function enables an app to easily retrieve all the reminders that need to be fired within a particular time frame. Each reminder that is returned from the function also contains details about the event so the app can use it to pop up a reminder. Once the reminder has been fired, the app can then call the snooze and dismiss actions on the reminder. This enables the app to recreate the reminder's user experience that is similar to Outlook. Time zone. We listened to all your feedback on our implementation of time zone in v1 of the API and have made some changes to the event entity which is going to make it much easier for you to work with time zones. The first change is that start and end properties for events are now a complex type of date time and time zone. Time zone is a string and the API will accept Windows time zones or a limited set of INR time zones. Date time is a custom-defined Outlook services type. For this field, when creating an event, the app needs to pass in a date time converted to a string. When retrieving an event, the service will return a string which is of date time format. Do note that any time the start and end properties are updated, time zone will be required. Because of these changes, filtering and sorting of events would be slightly different from v1 and the app needs to use start slash date time and end slash date time in the query. We have also introduced support for apps to request events in the time zone of choice. So if your app knows the user's time zone, specify it as a header in the get request and we will return the calendar start and end in the requested time zones. This is an optional header and if it is not specified in get calls, events will be returned in UTC time. At this time, only a subset of INR time zones otherwise known as Olsen time zones are supported by the API. We are working to add support for the rest of them as well in the near future. Let me quickly show you the reminder and time zone changes. So here I'm going to do a get events call and show you what we have in the properties of the events, specifically for reminder and time zone. We got a 200 okay. Let's go look at what's there in the properties. Here you can see that the start is of type date time and time zone and the same thing for end as well, date time and time zone. And if I scroll a little bit up, you can see the reminder minutes before start and is reminder on. These are the properties that are associated with reminders. Now I'm going to show you also how to get the time zone in the format that you like. So I'm going to request format of Pacific Standard Time. Before that, let me go back and show you the default time zone that we got right now is UTC. So I'll go to headers and then type in prefer and then the value that I want, which is outlook.timezone equal to Pacific Standard Time. Let's hit send. Okay, now the query executed and you can see that the event is returned in a Pacific Standard Time. Most of the outlook features are also available at the Microsoft Graph endpoint. Our dev.outlook.com site has a lot of interesting related video content. So definitely check those out. It also has more detailed information and quick start tutorials. If you have any questions about the API, you can post them on Stack Overflow with the tags you see here. Our team posts new features, updates and any breaking changes we might introduce in the beta endpoint to the outlook dev blog. Subscribe to blog updates to make sure you don't miss any of our announcements. Thank you for watching and happy coding.