0
votes

I have a problem with my Microsoft Graph webhook subscriptions to /me/events. What I want to do is to subscribe to all user calendars.

First I have created the new app in https://apps.dev.microsoft.com using my personal Microsoft account. Then in my app I subscribe to /me/events notifications using access token:

POST https://graph.microsoft.com/beta/subscriptions

{
    "changeType": "created,updated",
    "notificationUrl": "https://xxxxx.ngrok.io/notification-url",
    "resource": "/me/events",
    "expirationDateTime": "2018-11-14T09:40:10.933Z",
    "clientState": "xxxx-xxxx-xxxx-xxxx"
}

My notificationUrl receives validation request to which my app responds with 200 OK and validation token. After that the POST request returns me my subscription:

{
  "@odata.context" : "https://graph.microsoft.com/beta/$metadata#subscriptions/$entity",
  "id" : "2773aa4c-e983-4d15-9236-xxxxxxxx",
  "resource" : "/me/events",
  "applicationId" : "d551ec34-8d44-4cc6-9b88-xxxxxxxx",
  "changeType" : "created,updated",
  "clientState" : "xxxx-xxxx-xxxx-xxxx",
  "notificationUrl" : "https://xxxxx.ngrok.io/notification-url",
  "expirationDateTime" : "2018-11-14T09:40:10.933Z",
  "creatorId" : "00000000000"
}

This subscription works fine but only for one, default calendar in Outlook. I don't receive any notifications if I create, update events in any other calendars that exists in my account.

What could be the problem here, am I using wrong resource name (/me/events) or this is some limitation for personal accounts in Microsoft Graph?

1

1 Answers

1
votes

When you use /me/events you are going to the default Calendar for the user (per the docs). In your case, you would want to enumerate the user's calendars (GET /me/calendars) then subscribe to each one's events collection, using the resource /me/calendars/{calendar-id}/events.