Find meeting time with room - microsoft-graph-api

I'm facing a problem with https://learn.microsoft.com/en-us/graph/api/user-findmeetingtimes?view=graph-rest-1.0&tabs=http
I'm trying to find an available time slot between my attendees, me and the meeting room.
{
"attendees": [
{
"emailAddress": {
"address": "madreww#mycompany.com"
},
"type": "Required"
}
],
"timeConstraint": {
"timeslots": [
{
"start": {
"dateTime": "2023-01-11T12:00:00.000Z",
"timeZone": "Pacific Standard Time"
},
"end": {
"dateTime": "2023-01-11T15:00:00.000Z",
"timeZone": "Pacific Standard Time"
}
}
]
},
"locationConstraint": {
"isRequired": "true",
"suggestLocation": "false",
"locations": [
{
"locationEmailAddress": "room-accueil#mycompany.com"
}
]
},
"meetingDuration": "PT1H"
}
But the problem if the room "room-accueil#mycompany.com" is booked from 12AM TO 1PM and the response display this available time slot without taking in account the booked room.
Do you have a idea why? And how I can check with this method, if attendees, organizer and the meeting room are all available in a meeting slot time?
Response:
{
"#odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.meetingTimeSuggestionsResult",
"emptySuggestionsReason": "",
"meetingTimeSuggestions": [
{
"confidence": 100,
"organizerAvailability": "free",
"attendeeAvailability": [
{
"availability": "free",
"attendee": {
"emailAddress": {
"address": "madreww#mycompany.com"
}
}
}
],
"locations": [
{
"locationEmailAddress": "room-accueil#mycompany.com",
"locationType": "conferenceRoom"
}
],
"meetingTimeSlot": {
"start": {
"dateTime": "2023-01-11T12:00:00.0000000",
"timeZone": "UTC"
},
"end": {
"dateTime": "2023-01-11T13:00:00.0000000",
"timeZone": "UTC"
}
}
},
{
"confidence": 100,
"organizerAvailability": "free",
"attendeeAvailability": [
{
"availability": "tentative",
"attendee": {
"emailAddress": {
"address": "madreww#mycompany.com"
}
}
}
],
"locations": [
{
"locationEmailAddress": "room-accueil#mycompany.com",
"locationType": "conferenceRoom"
}
],
"meetingTimeSlot": {
"start": {
"dateTime": "2023-01-11T13:00:00.0000000",
"timeZone": "UTC"
},
"end": {
"dateTime": "2023-01-11T14:00:00.0000000",
"timeZone": "UTC"
}
}
},
{
"confidence": 100,
"organizerAvailability": "free",
"attendeeAvailability": [
{
"availability": "free",
"attendee": {
"emailAddress": {
"address": "madreww#mycompany.com"
}
}
}
],
"locations": [
{
"locationEmailAddress": "room-accueil#mycompany.com",
"locationType": "conferenceRoom"
}
],
"meetingTimeSlot": {
"start": {
"dateTime": "2023-01-11T14:00:00.0000000",
"timeZone": "UTC"
},
"end": {
"dateTime": "2023-01-11T15:00:00.0000000",
"timeZone": "UTC"
}
}
}
]
}
But If I use the room in attendees, the room seems to be always booked and always busy

Related

Microsoft Graph API Find meeting times the 1st attendee availability status showing free but for second attendee status showing unknown? how to fix?

Microsoft Graph API Find meeting times the 1st attendee availability status showing free but for second attendee status showing unknown how to show the availability status as free if both attendees are free?
note: while passing two attendees in the request then only 2nd attendee getting availability unknown.
Here Iam passing 2 attendees
Request Body:
"attendees": [
{
"type": "required",
"emailaddress": {
"name": "shanavaz",
"address": "shan#2vgl33.onmicrosoft.com"
}
},
{
"type": "required",
"emailaddress": {
"name": "Akhila",
"address": "ak#2vgl33.onmicrosoft.com"
}
}
],
"locationConstraint": {
"isRequired": false,
"suggestLocation": false,
"locations": []
},
"timeConstraint": {
"activityDomain": "work",
"timeSlots": [
{
"start": {
"dateTime": "2022-10-13T00:00:00.000Z",
"timeZone": "India Standard Time"
},
"end": {
"dateTime": "2022-10-13T23:59:00.000Z",
"timeZone": "India Standard Time"
}
}
]
},
"isOrganizerOptional": "true",
"meetingDuration": "PT30M",
"returnSuggestionReasons": "true",
"minimumAttendeePercentage": "50",
"maxCandidates": 36
}
**Response:**
{
"#odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.meetingTimeSuggestionsResult",
"emptySuggestionsReason": "",
"meetingTimeSuggestions": [
{
"confidence": 74.5,
"organizerAvailability": "busy",
"suggestionReason": "Suggested because even when you are busy most attendees are available.",
"attendeeAvailability": [
{
"availability": "free",
"attendee": {
"emailAddress": {
"address": "shan#2vgl33.onmicrosoft.com"
}
}
},
{
"availability": "unknown",
"attendee": {
"emailAddress": {
"address": "ak#2vgl33.onmicrosoft.com"
}
}
}
],
"locations": [],
"meetingTimeSlot": {
"start": {
"dateTime": "2022-10-13T05:30:00.0000000",
"timeZone": "India Standard Time"
},
"end": {
"dateTime": "2022-10-13T06:00:00.0000000",
"timeZone": "India Standard Time"
}
}
},
{
"confidence": 74.5,
"organizerAvailability": "busy",
"suggestionReason": "Suggested because even when you are busy most attendees are available.",
"attendeeAvailability": [
{
"availability": "free",
"attendee": {
"emailAddress": {
"address": "shan#2vgl33.onmicrosoft.com"
}
}
},
{
"availability": "unknown",
"attendee": {
"emailAddress": {
"address": "ak#2vgl33.onmicrosoft.com"
}
}
}
],
"locations": [],
"meetingTimeSlot": {
"start": {
"dateTime": "2022-10-13T06:30:00.0000000",
"timeZone": "India Standard Time"
},
"end": {
"dateTime": "2022-10-13T07:00:00.0000000",
"timeZone": "India Standard Time"
}
}
}
]
}```

Microsoft Graph delta: recurring calendar events returning incorrect start/end

I have an app that loads calendar items into a database, and needs to stay in sync with the given user's calendar. Unfortunately, when querying Microsoft Graph for a given date range using Delta tokens, the original event's data is being returned. However, if the Delta call is removed from the query, recurring events are returned as expected.
The call without Delta:
https://graph.microsoft.com/v1.0/me/calendarView?startDateTime=2018-06-26T00:00:00&endDateTime=2018-06-27T00:00:00&$select=id,subject,start,end
Returns:
{
"#odata.etag": "W/\"vDPrV1TQYUmam8nxPycXGwABJbtmSQ==\"",
"id": "AAMkADZhMjA2YTNmLTM0NDktNDYyNy05Njk2LTRjNThhMDZkZDBmOQFRAAgI1dr3wqKAAEYAAAAAY_l4isQ6OkOWdkEvK3rrDQcAvDPrV1TQYUmam8nxPycXGwAAAAABDQAAvDPrV1TQYUmam8nxPycXGwAAAtcOVAAAEA==",
"subject": "Daily recurring event",
"start": {
"dateTime": "2018-06-26T14:30:00.0000000",
"timeZone": "UTC"
},
"end": {
"dateTime": "2018-06-26T14:45:00.0000000",
"timeZone": "UTC"
}
}
However, when trying to add the "delta" call to the request using the same start/end dates, the event's ORIGINAL dates (and Id) are returned. Additionally, the SELECT columns are ignored, entirely.
The call with Delta:
https://graph.microsoft.com/v1.0/me/calendarView/delta?startDateTime=2018-06-26T00:00:00&endDateTime=2018-06-27T00:00:00&$select=id,subject,start,end
Returns:
{
"#odata.type": "#microsoft.graph.event",
"#odata.etag": "W/\"vDPrV1TQYUmam8nxPycXGwABJbtmSQ==\"",
"createdDateTime": "2017-04-19T15:02:38.8680605Z",
"lastModifiedDateTime": "2018-06-25T14:15:14.2194888Z",
"changeKey": "vDPrV1TQYUmam8nxPycXGwABJbtmSQ==",
"categories": [],
"originalStartTimeZone": "Eastern Standard Time",
"originalEndTimeZone": "Eastern Standard Time",
"iCalUId": "040000008200E00074C5B7101A82E0080000000050B9E76D2CF2D001000000000000000010000000831C6E0657580F44A0799E55EB5F2E49",
"reminderMinutesBeforeStart": 15,
"isReminderOn": true,
"hasAttachments": false,
"subject": "Daily recurring event",
"bodyPreview": "",
"importance": "normal",
"sensitivity": "normal",
"isAllDay": false,
"isCancelled": false,
"isOrganizer": false,
"responseRequested": true,
"seriesMasterId": null,
"showAs": "busy",
"type": "seriesMaster",
...
"id": "AAMkADZhMjA2YTNmLTM0NDktNDYyNy05Njk2LTRjNThhMDZkZDBmOQBGAAAAAABj6XiKxDo6Q5Z2QS8reusNBwC8M_tXVNBhSZqbyfE-JxcbAAAAAAENAAC8M_tXVNBhSZqbyfE-JxcbAAAC1w5UAAA=",
"responseStatus": {
"response": "accepted",
"time": "2017-04-19T15:02:00Z"
},
"body": {
"contentType": "html",
"content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n<meta name=\"Generator\" content=\"Microsoft Exchange Server\">\r\n<!-- converted from rtf -->\r\n<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>\r\n</head>\r\n<body>\r\n<font face=\"Calibri\" size=\"2\"><span style=\"font-size:11pt;\">\r\n<div> </div>\r\n<div> </div>\r\n</span></font>\r\n</body>\r\n</html>\r\n"
},
"start": {
"dateTime": "2015-09-22T14:30:00.0000000",
"timeZone": "UTC"
},
"end": {
"dateTime": "2015-09-22T14:45:00.0000000",
"timeZone": "UTC"
},
"location": {
"displayName": "on your feet",
"locationType": "default",
"uniqueId": "on your feet",
"uniqueIdType": "private"
},
"locations": [
{
"displayName": "on your feet",
"locationType": "default",
"uniqueId": "on your feet",
"uniqueIdType": "private"
}
],
"recurrence": {
"pattern": {
"type": "weekly",
"interval": 1,
"month": 0,
"dayOfMonth": 0,
"daysOfWeek": [
"monday",
"tuesday",
"wednesday",
"thursday",
"friday"
],
"firstDayOfWeek": "sunday",
"index": "first"
},
"range": {
"type": "noEnd",
"startDate": "2015-09-22",
"endDate": "0001-01-01",
"recurrenceTimeZone": "Eastern Standard Time",
"numberOfOccurrences": 0
}
},
"attendees": [
{
"type": "required",
"status": {
"response": "none",
"time": "0001-01-01T00:00:00Z"
},
"emailAddress": {
"name": "Nunya Biz",
"address": "biz#markie.com"
}
}
],
"organizer": {
"emailAddress": {
"name": "Nunya Biz",
"address": "biz#markie.com"
}
}
},
Can anyone tell me how can I get the Delta query to return the recurring event's instance, as opposed to the "seriesMaster"?
Ah, I figured it out! The delta returns the seriesMaster, but also returns the instance details (occurrence) at the end. My bad for leaving it out of the results in the original post.
The missing link:
{
"#odata.type": "#microsoft.graph.event",
"#odata.etag": "W/\"DwAAABYAAAC8M+tXVNBhSZqbyfE/JxcbAAElu2ZJ\"",
"seriesMasterId": "AAMkADZhMjA2YTNmLTM0NDktNDYyNy05Njk2LTRjNThhMDZkZDBmOQBGAAAAAABj6XiKxDo6Q5Z2QS8reusNBwC8M_tXVNBhSZqbyfE-JxcbAAAAAAENAAC8M_tXVNBhSZqbyfE-JxcbAAAC1w5UAAA=",
"type": "occurrence",
"id": "AAMkADZhMjA2YTNmLTM0NDktNDYyNy05Njk2LTRjNThhMDZkZDBmOQFRAAgI1dr3wqKAAEYAAAAAY_l4isQ6OkOWdkEvK3rrDQcAvDPrV1TQYUmam8nxPycXGwAAAAABDQAAvDPrV1TQYUmam8nxPycXGwAAAtcOVAAAEA==",
"start": {
"dateTime": "2018-06-26T14:30:00.0000000",
"timeZone": "UTC"
},
"end": {
"dateTime": "2018-06-26T14:45:00.0000000",
"timeZone": "UTC"
}
},
Note that the "type" = "occurrence", and the "seriesMasterId" points back to the seriesMaster's Id field. This contains the correct start/end information for the event.

meetingDuration in findmeeting times api

Microsoft Graph API
Findmeeting times api
what happens when meeting time is less than 30mins(like 10mins)?Because Findmeeting Times search only for every 30 mins. It does not search times in between. For example I want for 10 mins meeting with someone 8 to 10. It returns 8.00 t0 8.10 and 8.30 to 8.40.Why can't it return 8.10 t0 8.20 and 8.20 to 8.30 ?Here is the inputs and outputs
Input
{
"attendees": [
{
"type": "required",
"emailAddress": {
"address": "kumar.muthu#mic123.com",
"name": "kumar muthu"
},
}
],
"timeConstraint": {
"activityDomain": "unrestricted",
"timeslots": [
{
"start": {
"dateTime": "2018-03-27T18:00:00",
"timeZone": "India Standard Time"
},
"end": {
"dateTime": "2018-03-27T18:30:00",
"timeZone": "India Standard Time"
}
}
]
},
"meetingDuration": "PT0H10M"
}
Output
{
"#odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.meetingTimeSuggestionsResult",
"emptySuggestionsReason": "",
"meetingTimeSuggestions": [
{
"confidence": 100,
"organizerAvailability": "free",
"meetingTimeSlot": {
"start": {
"dateTime": "2018-03-27T18:00:00.0000000",
"timeZone": "India Standard Time"
},
"end": {
"dateTime": "2018-03-27T18:10:00.0000000",
"timeZone": "India Standard Time"
}
},
"attendeeAvailability": [
{
"availability": "free",
"attendee": {
"type": "required",
"emailAddress": {
"address": "kumar.muthu#mic123.com"
}
}
}
],
"locations": [
{
"displayName": "RM-CHN-Training-Room1",
"locationEmailAddress": "RM-Chennai.Trainning-Room1#mic123.com"
},
{
"displayName": "DEV BAY",
"locationEmailAddress": ""
},
{
"displayName": "Conference room near Security",
"locationEmailAddress": ""
},
{
"displayName": "Any Phone Booth or WebEx",
"locationEmailAddress": ""
},
{
"displayName": "Austin",
"locationEmailAddress": ""
}
]
}
]
}
why it doesn't send timings between 8.10 to 8.30
I can't tell you why the limitation is there. It's not documented in the Find meeting times API documentation. But Outlook, which presumably uses the same or a similar API, has the limitation in the UI as well:
I can see that your filter for 10minutes worked, now the results appear limited due to some default filters applied, try adding these params and play with the results.
"isOrganizerOptional": "true",
"returnSuggestionReasons": "true",
"minimumAttendeePercentage": "100"
Hope it helped.

Let FindMeetingTimes API search for avaialble rooms configured for the current Organization

I created a dummy Office 365 Organizational setup and created few rooms as well. As it was my organization , I wanted to use FindMeetingTimes API to get the availability of attendees, rooms and the organizer.
I sent the following request body to the GET url.
{
"attendees": [{
"emailAddress": {
"address": "sidbhosle#CIBCmeeting.onmicrosoft.com",
"name": "Sid bhosle"
},
"type": "Required"
},
{
"emailAddress": {
"address": "cibcconf#CIBCmeeting.onmicrosoft.com",
"name": "cibcconf"
},
"type": "Required"
},
{
"emailAddress": {
"address": "sidbhosle#CIBCmeeting.onmicrosoft.com",
"name": "Sid bhosle"
},
"type": "Required"
}
],
"timeConstraint": {
"timeslots": [{
"start": {
"dateTime": "2017-11-08T17:06:00",
"timeZone": "India Standard Time"
},
"end": {
"dateTime": "2017-11-09T17:35:59.0000000",
"timeZone": "India Standard Time"
}
}],
"activityDomain": "unrestricted"
},
"locationConstraint": {
"isRequired": true,
"suggestLocation": false,
"locations": [{
"displayName": "cibcconf",
"locationEmailAddress": "cibcconf#CIBCmeeting.onmicrosoft.com",
"resolveAvailability": "true"
},
{
"displayName": "cibcconference101",
"locationEmailAddress": "cibcconference101#CIBCmeeting.onmicrosoft.com",
"resolveAvailability": "true"
},
{
"displayName": "cibcconference104",
"locationEmailAddress": "cibcconference104#CIBCmeeting.onmicrosoft.com",
"resolveAvailability": "true"
},
{
"displayName": "D3secondflor",
"locationEmailAddress": "d3secondflor#CIBCmeeting.onmicrosoft.com",
"resolveAvailability": "true"
}
]
},
"meetingDuration": "PT1H",
"returnSuggestionReasons": "true",
"minimumAttendeePercentage": "100"
}
The API returns a valid response:
{
"#odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.meetingTimeSuggestionsResult",
"emptySuggestionsReason": "",
"meetingTimeSuggestions": [{
"confidence": 100,
"organizerAvailability": "free",
"suggestionReason": "Suggested because it is one of the nearest times when all attendees are available.",
"meetingTimeSlot": {
"start": {
"dateTime": "2017-11-09T11:00:00.0000000",
"timeZone": "UTC"
},
"end": {
"dateTime": "2017-11-09T12:00:00.0000000",
"timeZone": "UTC"
}
},
"attendeeAvailability": [{
"availability": "free",
"attendee": {
"type": "required",
"emailAddress": {
"address": "sidbhosle#CIBCmeeting.onmicrosoft.com"
}
}
},
{
"availability": "free",
"attendee": {
"type": "required",
"emailAddress": {
"address": "cibcconf#CIBCmeeting.onmicrosoft.com"
}
}
}
],
"locations": [{
"displayName": "cibcconf",
"locationEmailAddress": "cibcconf#CIBCmeeting.onmicrosoft.com"
},
{
"displayName": "cibcconference101",
"locationEmailAddress": "cibcconference101#CIBCmeeting.onmicrosoft.com"
},
{
"displayName": "cibcconference104",
"locationEmailAddress": "cibcconference104#CIBCmeeting.onmicrosoft.com"
},
{
"displayName": "D3secondflor",
"locationEmailAddress": "d3secondflor#CIBCmeeting.onmicrosoft.com"
}
]
},
{
"confidence": 100,
"organizerAvailability": "free",
"suggestionReason": "Suggested because it is one of the nearest times when all attendees are available.",
"meetingTimeSlot": {
"start": {
"dateTime": "2017-11-08T18:00:00.0000000",
"timeZone": "UTC"
},
"end": {
"dateTime": "2017-11-08T19:00:00.0000000",
"timeZone": "UTC"
}
},
"attendeeAvailability": [{
"availability": "free",
"attendee": {
"type": "required",
"emailAddress": {
"address": "sidbhosle#CIBCmeeting.onmicrosoft.com"
}
}
},
{
"availability": "free",
"attendee": {
"type": "required",
"emailAddress": {
"address": "cibcconf#CIBCmeeting.onmicrosoft.com"
}
}
}
],
"locations": [{
"displayName": "cibcconf",
"locationEmailAddress": "cibcconf#CIBCmeeting.onmicrosoft.com"
},
{
"displayName": "cibcconference101",
"locationEmailAddress": "cibcconference101#CIBCmeeting.onmicrosoft.com"
},
{
"displayName": "cibcconference104",
"locationEmailAddress": "cibcconference104#CIBCmeeting.onmicrosoft.com"
},
{
"displayName": "D3secondflor",
"locationEmailAddress": "d3secondflor#CIBCmeeting.onmicrosoft.com"
}
]
},
{
"confidence": 100,
"organizerAvailability": "free",
"suggestionReason": "Suggested because it is one of the nearest times when all attendees are available.",
"meetingTimeSlot": {
"start": {
"dateTime": "2017-11-08T19:00:00.0000000",
"timeZone": "UTC"
},
"end": {
"dateTime": "2017-11-08T20:00:00.0000000",
"timeZone": "UTC"
}
},
"attendeeAvailability": [{
"availability": "free",
"attendee": {
"type": "required",
"emailAddress": {
"address": "sidbhosle#CIBCmeeting.onmicrosoft.com"
}
}
},
{
"availability": "free",
"attendee": {
"type": "required",
"emailAddress": {
"address": "cibcconf#CIBCmeeting.onmicrosoft.com"
}
}
}
],
"locations": [{
"displayName": "cibcconf",
"locationEmailAddress": "cibcconf#CIBCmeeting.onmicrosoft.com"
},
{
"displayName": "cibcconference101",
"locationEmailAddress": "cibcconference101#CIBCmeeting.onmicrosoft.com"
},
{
"displayName": "cibcconference104",
"locationEmailAddress": "cibcconference104#CIBCmeeting.onmicrosoft.com"
},
{
"displayName": "D3secondflor",
"locationEmailAddress": "d3secondflor#CIBCmeeting.onmicrosoft.com"
}
]
},
{
"confidence": 100,
"organizerAvailability": "free",
"suggestionReason": "Suggested because it is one of the nearest times when all attendees are available.",
"meetingTimeSlot": {
"start": {
"dateTime": "2017-11-08T20:00:00.0000000",
"timeZone": "UTC"
},
"end": {
"dateTime": "2017-11-08T21:00:00.0000000",
"timeZone": "UTC"
}
},
"attendeeAvailability": [{
"availability": "free",
"attendee": {
"type": "required",
"emailAddress": {
"address": "sidbhosle#CIBCmeeting.onmicrosoft.com"
}
}
},
{
"availability": "free",
"attendee": {
"type": "required",
"emailAddress": {
"address": "cibcconf#CIBCmeeting.onmicrosoft.com"
}
}
}
],
"locations": [{
"displayName": "cibcconf",
"locationEmailAddress": "cibcconf#CIBCmeeting.onmicrosoft.com"
},
{
"displayName": "cibcconference101",
"locationEmailAddress": "cibcconference101#CIBCmeeting.onmicrosoft.com"
},
{
"displayName": "cibcconference104",
"locationEmailAddress": "cibcconference104#CIBCmeeting.onmicrosoft.com"
},
{
"displayName": "D3secondflor",
"locationEmailAddress": "d3secondflor#CIBCmeeting.onmicrosoft.com"
}
]
},
{
"confidence": 100,
"organizerAvailability": "free",
"suggestionReason": "Suggested because it is one of the nearest times when all attendees are available.",
"meetingTimeSlot": {
"start": {
"dateTime": "2017-11-08T21:00:00.0000000",
"timeZone": "UTC"
},
"end": {
"dateTime": "2017-11-08T22:00:00.0000000",
"timeZone": "UTC"
}
},
"attendeeAvailability": [{
"availability": "free",
"attendee": {
"type": "required",
"emailAddress": {
"address": "sidbhosle#CIBCmeeting.onmicrosoft.com"
}
}
},
{
"availability": "free",
"attendee": {
"type": "required",
"emailAddress": {
"address": "cibcconf#CIBCmeeting.onmicrosoft.com"
}
}
}
],
"locations": [{
"displayName": "cibcconf",
"locationEmailAddress": "cibcconf#CIBCmeeting.onmicrosoft.com"
},
{
"displayName": "cibcconference101",
"locationEmailAddress": "cibcconference101#CIBCmeeting.onmicrosoft.com"
},
{
"displayName": "cibcconference104",
"locationEmailAddress": "cibcconference104#CIBCmeeting.onmicrosoft.com"
},
{
"displayName": "D3secondflor",
"locationEmailAddress": "d3secondflor#CIBCmeeting.onmicrosoft.com"
}
]
}
]
}
I want to know how to configure the request so that it works for other organizations as well. I want to get the list of all the rooms in some other organisation if logged in using the respective ID.
Let's take an example: I have to ensure that if Company A logs in using their credentials to My APP that it lists all the room configured in their company.
How do I achieve this?
I even tried to remove the LocationConstraint parameter but the locations were not displayed.
Finding rooms isn't supported in production today but it is available from the /beta endpoint.
findRooms returns meeting rooms in the user's tenant or in a specific "room list".
findRoomLists returns all of the room lists defined within the user's tenant.

Microsoft graph findmeetingtimes with meetingTimeSlot

I pretty confuse about meetingTimeSlot attribute which returns from meetingTimeSuggestions
My activityDomain set to "work" but my response code after I post to the API is
{ start:
{ dateTime: '2017-08-17T23:00:00.0000000',
timeZone: 'SE Asia Standard Time' },
end:
{ dateTime: '2017-08-18T01:00:00.0000000',
timeZone: 'SE Asia Standard Time' } }
time length should around 8.00 am - 5.00 pm isn't it?
Here is my full code
{
"attendees": [{
"type": "required", // First Attendee
"emailAddress": {
"name": "Pathompong Chaisri",
"address": "T00400#g-able.com"
}
}, {
"type": "required", // Third Attendee
"emailAddress": {
"name": "Artima C",
"address": "Artima.C#g-able.com"
}
}],
"locationConstraint": {
"isRequired": "false",
"suggestLocation": "false",
"locations": [{
"resolveAvailability": "false",
"displayName": "KX Building Floor 13"
}]
},
"timeConstraint": {
"activityDomain": "work",
"timeslots": [{
"start": {
"dateTime": "2017-08-17T09:00:00",
"timeZone": "SE Asia Standard Time"
},
"end": {
"dateTime": "2017-08-19T17:00:00",
"timeZone": "SE Asia Standard Time"
}
}]
},
"meetingDuration": "PT2H",
"returnSuggestionReasons": "true",
"minimumAttendeePercentage": "100"
}
Isn't that because your timeslot starts 17-08-2017 and ends two days later? I think you should provide separate 9-5 slots for each day.

Resources