2
votes

Solution Below ! ! !

This my friends, is a beautiful msft graph api call that filters, the top 50 calendar results by a not null SeriesMasterId! Also keep in mind, if this top 50 filter is not defined, the json returned only shows the FIRST 10 RESULTS from your calendar that match your query.

https://graph.microsoft.com/v1.0/me/calendarView?startDateTime=2015-10-20T10:13:32-07:00&endDateTime=2016-10-20T10:13:32-07:00&$select=subject,type,seriesMasterId&$top=50&$filter=seriesMasterId ne null

Original Post Below

I am having issues with retrieving a SeriesMasterId for recurring calendar events using the Microsoft Graph API. I am using the Microsoft Graph Explorer logged in with my @{alias}.microsoft.com account to test, as I am a currently a Microsoft employee. The SeriesMasterId is always returned as null for my recurring events :/ when I make my REST call.

Here's the call:

https://graph.microsoft.com/v1.0/me/events

Thanks for your time and any feedback on why I am getting this null SeriesMasterId or what is returned in your use cases for this call is much appreciated!

Get ISO 8601 timestamps from here.

I also get the following result when using a call to filter a series like the following.

https://graph.microsoft.com/v1.0/me/calendarView?startDateTime=2016-09-30T15:57:28-07:00&endDateTime=2016-10-20T10:13:32-07:00

Result

{
            "@odata.etag": "W/\"KD/rRxyX+ESoOfWCZfnfFwAANhX0Bw==\"",
            "id": "AAMkADc5NzQyYWI2LWMxOTctNDRmZi05ZTA3LWE3NmRmYmY1MDQ0MgBGAAAAAADXlwbV2STsRLeDUWHghS8MBwDHXzszvWCLTrbQs5TTKyesAAAAtujXAAAoP_tHHJf4RKg59YJl_d8XAAAEs3bpAAA=",
            "createdDateTime": "2015-09-21T16:45:22.8816871Z",
            "lastModifiedDateTime": "2015-10-02T15:47:15.0711136Z",
            "changeKey": "KD/rRxyX+ESoOfWCZfnfFwAANhX0Bw==",
            "categories": [],
            "originalStartTimeZone": "Pacific Standard Time",
            "originalEndTimeZone": "Pacific Standard Time",
            "responseStatus": {
                "response": "none",
                "time": "0001-01-01T00:00:00Z"
            },
            "iCalUId": "040000008200E00074C5B7101A82E00800000000F07EA63A52F4D001000000000000000010000000FF2DCB149338304FB698D41CCC6A4BF7",
            "reminderMinutesBeforeStart": 15,
            "isReminderOn": false,
            "hasAttachments": false,
            "subject": "Azure 532",
            "body": {
                "contentType": "html",
                "content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n<meta content=\"text/html; charset=us-ascii\">\r\n<meta name=\"ProgId\" content=\"Word.Document\">\r\n<meta name=\"Generator\" content=\"Microsoft Word 15\">\r\n<meta name=\"Originator\" content=\"Microsoft Word 15\">\r\n<link rel=\"File-List\" href=\"cid:filelist.xml@01D0F452.3AA54670\"><style>\r\n<!--\r\n@font-face\r\n\t{font-family:\"Cambria Math\"}\r\n@font-face\r\n\t{font-family:Calibri}\r\np.MsoNormal, li.MsoNormal, div.MsoNormal\r\n\t{margin:0in;\r\n\tmargin-bottom:.0001pt;\r\n\tfont-size:11.0pt;\r\n\tfont-family:\"Calibri\",sans-serif}\r\na:link, span.MsoHyperlink\r\n\t{color:#0563C1;\r\n\ttext-decoration:underline}\r\na:visited, span.MsoHyperlinkFollowed\r\n\t{color:#954F72;\r\n\ttext-decoration:underline}\r\nspan.EmailStyle17\r\n\t{font-family:\"Calibri\",sans-serif;\r\n\tcolor:windowtext}\r\n.MsoChpDefault\r\n\t{font-family:\"Calibri\",sans-serif}\r\n@page WordSection1\r\n\t{margin:1.0in 1.0in 1.0in 1.0in}\r\ndiv.WordSection1\r\n\t{}\r\n-->\r\n</style>\r\n</head>\r\n<body lang=\"EN-US\" link=\"#0563C1\" vlink=\"#954F72\" style=\"\">\r\n<div class=\"WordSection1\">\r\n<p class=\"MsoNormal\">&nbsp;</p>\r\n</div>\r\n</body>\r\n</html>\r\n"
            },
            "bodyPreview": "",
            "importance": "normal",
            "sensitivity": "normal",
            "start": {
                "dateTime": "2015-10-02T15:00:00.0000000",
                "timeZone": "UTC"
            },
            "end": {
                "dateTime": "2015-10-03T00:00:00.0000000",
                "timeZone": "UTC"
            },
            "location": {
                "displayName": "",
                "address": {}
            },
            "isAllDay": false,
            "isCancelled": false,
            "isOrganizer": true,
            "recurrence": null,
            "responseRequested": true,
            "seriesMasterId": null,
            "showAs": "busy",
            "type": "singleInstance",
            "attendees": [
                {
                    "status": {
                        "response": "none",
                        "time": "0001-01-01T00:00:00Z"
                    },
                    "type": "required",
                    "emailAddress": {
                        "name": "Gregory Degruy",
                        "address": "grdegr@microsoft.com"
                    }
                }
            ],
            "organizer": {
                "emailAddress": {
                    "name": "Greg Degruy",
                    "address": "Gregory.Degruy@microsoft.com"
                }
            },
            "webLink": "https://outlook.office365.com/owa/?ItemID=AAMkADc5NzQyYWI2LWMxOTctNDRmZi05ZTA3LWE3NmRmYmY1MDQ0MgBGAAAAAADXlwbV2STsRLeDUWHghS8MBwDHXzszvWCLTrbQs5TTKyesAAAAtujXAAAoP%2BtHHJf4RKg59YJl%2Bd8XAAAEs3bpAAA%3D&exvsurl=1&viewModel=ICalendarItemDetailsViewModelFactory",
            "onlineMeetingUrl": null
        },
        {
            "@odata.etag": "W/\"KD/rRxyX+ESoOfWCZfnfFwAAPP4w8g==\"",
            "id": "AAMkADc5NzQyYWI2LWMxOTctNDRmZi05ZTA3LWE3NmRmYmY1MDQ0MgBGAAAAAADXlwbV2STsRLeDUWHghS8MBwDHXzszvWCLTrbQs5TTKyesAAAAtujXAAAoP_tHHJf4RKg59YJl_d8XAAAEs3cBAAA=",
            "createdDateTime": "2015-09-28T19:17:52.276469Z",
            "lastModifiedDateTime": "2015-10-05T19:27:50.3175476Z",
            "changeKey": "KD/rRxyX+ESoOfWCZfnfFwAAPP4w8g==",
            "categories": [],
            "originalStartTimeZone": "tzone://Microsoft/Custom",
            "originalEndTimeZone": "tzone://Microsoft/Custom",
            "responseStatus": {
                "response": "none",
                "time": "0001-01-01T00:00:00Z"
            },
            "iCalUId": "040000008200E00074C5B7101A82E00800000000C00F90AFE7F9D001000000000000000010000000161F82080B826D4CBCB580B6CA119A08",
            "reminderMinutesBeforeStart": 15,
            "isReminderOn": false,
            "hasAttachments": false,
            "subject": "Azure Exam 532",
            "body": {
                "contentType": "text",
                "content": "\r\n"
            },
            "bodyPreview": "",
            "importance": "normal",
            "sensitivity": "normal",
            "start": {
                "dateTime": "2015-10-05T15:00:00.0000000",
                "timeZone": "UTC"
            },
            "end": {
                "dateTime": "2015-10-05T19:30:00.0000000",
                "timeZone": "UTC"
            },
            "location": {
                "displayName": "Testing Center"
            },
            "isAllDay": false,
            "isCancelled": false,
            "isOrganizer": true,
            "recurrence": null,
            "responseRequested": true,
            "seriesMasterId": null,
            "showAs": "busy",
            "type": "singleInstance",
            "attendees": [],
            "organizer": {
                "emailAddress": {
                    "name": "Greg Degruy",
                    "address": "Gregory.Degruy@microsoft.com"
                }
            },
            "webLink": "https://outlook.office365.com/owa/?ItemID=AAMkADc5NzQyYWI2LWMxOTctNDRmZi05ZTA3LWE3NmRmYmY1MDQ0MgBGAAAAAADXlwbV2STsRLeDUWHghS8MBwDHXzszvWCLTrbQs5TTKyesAAAAtujXAAAoP%2BtHHJf4RKg59YJl%2Bd8XAAAEs3cBAAA%3D&exvsurl=1&viewModel=ICalendarItemDetailsViewModelFactory",
            "onlineMeetingUrl": null
        }
2

2 Answers

1
votes

I believe SeriesMasterId would only apply to single occurrences of a recurring event, which you won't see with /me/events. Getting events that way returns only the master event. Try listing a calendar view, which will expand recurring events.

0
votes

You dont need SeriesMasterId to download the instances of a series. You can check recurrence object in respones and send those meeting ids (id) in below sample API

GET https://graph.microsoft.com/v1.0/me/events/{meeting_id}/instances?startDateTime=2019-04-08T09:00:00.0000000&endDateTime=2019-04-30T09:00:00.0000000&$select=subject,bodyPreview,seriesMasterId,type,recurrence,start,end