user: findMeetingTimes
本文内容
命名空间:microsoft.graph
根据组织者和与会者的空闲状况以及指定为参数的时间或位置,推荐会议时间和位置。
如果 findMeetingTimes 无法返回任何会议时间建议,响应会在 emptySuggestionsReason 属性中指明原因。
根据此值,可以更好地调整参数,并重新调用 findMeetingTimes 。
用于推荐会议时间和位置的算法将时不时地进行优化。 在输入参数和日历数据保持静止的测试环境等场景中,所推荐的结果可能随着时间的变化而有所不同。
此 API 可用于以下国家级云部署 。
全局服务
美国政府 L4
美国政府 L5 (DOD)
由世纪互联运营的中国
✅
✅
✅
❌
权限
为此 API 选择标记为最低特权的权限。 只有在应用需要它时 ,才使用更高的特权权限。 有关委派权限和应用程序权限的详细信息,请参阅权限类型 。 要了解有关这些权限的详细信息,请参阅 权限参考 。
权限类型
最低特权权限
更高特权权限
委派(工作或学校帐户)
Calendars.Read.Shared
Calendars.ReadWrite.Shared
委派(个人 Microsoft 帐户)
不支持。
不支持。
应用程序
不支持。
不支持。
HTTP 请求
POST /me/findMeetingTimes
POST /users/{id|userPrincipalName}/findMeetingTimes
名称
值
Authorization
持有者 {token}。 必填。 详细了解 身份验证和授权 。
Prefer: outlook.timezone
表示响应的具体时区的字符串,例如,“Pacific Standard Time”。 可选。 如果未指定此标头,则使用 UTC。
请求正文
下面列出了支持的所有参数。 根据你自己的方案,在请求正文中为各个必需参数指定 JSON 对象。
参数
类型
说明
attendees
attendeeBase 集合
一组会议与会者或资源。 由于 findMeetingTimes 假定始终需要属于人员的任何与会者,required
因此请在相应的类型 属性中指定人员和资源resource
。 若集合为空,findMeetingTimes 只会查找组织者的空闲时间段。 可选。
isOrganizerOptional
Edm.Boolean
指定 True
组织者是否不必参加。 默认值为 false
。 可选。
locationConstraint
locationConstraint
组织者对会议地点的要求,如是否必须返回会议地点建议,或是否只能在特定地点举行会议。 可选。
maxCandidates
Edm.Int32
要返回的会议时间建议数量上限。 可选。
meetingDuration
Edm.Duration
会议时长,以 ISO8601 格式表示。 例如,1 小时表示为“PT1H”,其中“P”是持续时间指示符,“T”是时间指示符,“H”是小时指示符。 使用 M 指示持续时间的分钟数;例如,2 小时 30 分钟是“PT2H30M”。 如果未指定会议持续时间,findMeetingTimes 使用默认值 30 分钟。 可选。
minimumAttendeePercentage
Edm.Double
在响应中返回时间段所需的最低 confidence 。 这是一个介于 0 到 100 之间的百分比值。 可选。
returnSuggestionReasons
Edm.Boolean
指定 True
以在 suggestionReason 属性中返回每个会议建议的原因。 默认为 false
,即不返回此属性。 可选。
timeConstraint
timeConstraint
会议的任何时间限制,可能包括会议的性质 (activityDomain 属性) 和可能的会议时间段 (timeSlots 属性) 。 findMeetingTimes 假定 activityDomain ,就像未指定此参数一样 work
。 可选。
下表介绍了可在 timeConstraint 参数中进一步指定的 activityDomain 约束。
activityDomain 值
会议时间建议
工时
建议在用户的日历配置中定义的用户工作时间内,可由用户或管理员自定义。 默认工作时间为星期一到星期五,上午 8 点到下午 5 点,时区为邮箱设置。 如果未指定 activityDomain ,则为默认值。
personal
建议在用户的工作时间以及星期六和星期日内提供。 默认值为星期一到星期日,上午 8 点到下午 5 点,在邮箱的时区设置中。
unrestricted
建议可以是全年任意一天的任意时间段。
unknown
请勿使用此值,因为将来将弃用此值。 当前的行为与 相同 work
。 根据需要更改任何现有代码以使用 work
或 unrestricted
personal
。
根据指定的参数,findMeetingTimes 会检查组织者和与会者的主日历中的忙/闲状态。 此操作会计算出最可行的会议时间,并返回所有会议时间建议。
响应
如果成功,此方法在响应正文中返回 200 OK
响应代码和 meetingTimeSuggestionsResult 。
meetingTimeSuggestionsResult 包含一组会议时间建议和 emptySuggestionsReason 属性。 每条建议都被定义为 meetingTimeSuggestion ,同时与会者出席置信度平均值为 50%,或为你在 minimumAttendeePercentage 参数中指定的特定百分比值。
默认情况下,返回的每条会议时间建议的时区均为 UTC。
如果 findMeetingTimes 无法返回任何会议时间建议,响应会在 emptySuggestionsReason 属性中指明原因。
根据此值,可以更好地调整参数,并重新调用 findMeetingTimes 。
会议时间建议的置信度
meetingTimeSuggestion 的 confidence 属性值介于 0% 到 100% 之间,表示所有与会者出席会议的可能性(以每个人的忙/闲状态为依据):
对于每个与会者,在指定的会议时间段内,空闲、未知和忙碌状态对应的与会者出席可能性分别为 100%、49% 和 0%。
会议时间建议的置信度是通过计算相应会议的所有指定与会者的出席可能性平均值而得出。
可以使用 findMeetingTimes 的可选参数 minimumAttendeePercentage ,指定仅返回置信度不低于特定值的会议时间建议。 例如,如果只想返回所有与会者的出席可能性不低于 80% 的会议时间建议,可以将 minimumAttendeePercentage 指定为 80%。 如果未指定 minimumAttendeePercentage ,findMeetingTimes 假定值为 50%。
如果有多条会议时间建议,findMeetingTimes 操作首先会按计算得出的置信度值由高到低对建议进行排序。 如果会议时间建议的置信度相同,此操作会按时间顺序对建议进行排序。
例如,如果会议时间建议涉及 3 位与会者,他们的忙/闲状态如下:
与会者
忙/闲状态
出席可能性 (%)
Dana
空闲
100%
John
未知
49%
Samantha
忙碌
0%
会议时间建议的置信度为与会者出席可能性的平均值,即 (100% + 49% + 0%)/3 = 49.66%。
如果在 findMeetingTimes 操作中将 minimumAttendeePercentage 指定为 80%,因为 49.66% < 为 80%,该操作不会在响应中建议这次。
示例
以下示例展示了如何查找预定地点会议的时间,并请求获得各条建议的理由,具体是通过在请求正文中指定以下参数:
attendees
locationConstraint
timeConstraint
isOrganizerOptional
meetingDuration
returnSuggestionReasons
minimumAttendeePercentage
设置 returnSuggestionReasons 参数后,suggestionReason 属性中还会返回各条建议的理由(如果 findMeetingTimes 返回建议的话)。
请注意,该请求按 PST 时区指定时间。 默认情况下,答复将按 UTC 的形式返回会议时间建议。 还可使用 Prefer: outlook.timezone
请求头指定将 PST 用于答复中的时间值。
请求
下面展示了示例请求。
POST https://graph.microsoft.com/v1.0/me/findMeetingTimes
Prefer: outlook.timezone="Pacific Standard Time"
Content-Type: application/json
{
"attendees": [
{
"type": "required",
"emailAddress": {
"name": "Alex Wilbur",
"address": "alexw@contoso.com"
}
}
],
"locationConstraint": {
"isRequired": false,
"suggestLocation": false,
"locations": [
{
"resolveAvailability": false,
"displayName": "Conf room Hood"
}
]
},
"timeConstraint": {
"activityDomain":"work",
"timeSlots": [
{
"start": {
"dateTime": "2019-04-16T09:00:00",
"timeZone": "Pacific Standard Time"
},
"end": {
"dateTime": "2019-04-18T17:00:00",
"timeZone": "Pacific Standard Time"
}
}
]
},
"isOrganizerOptional": "false",
"meetingDuration": "PT1H",
"returnSuggestionReasons": "true",
"minimumAttendeePercentage": 100
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Me.FindMeetingTimes;
using Microsoft.Graph.Models;
var requestBody = new FindMeetingTimesPostRequestBody
{
Attendees = new List<AttendeeBase>
{
new AttendeeBase
{
Type = AttendeeType.Required,
EmailAddress = new EmailAddress
{
Name = "Alex Wilbur",
Address = "alexw@contoso.com",
},
},
},
LocationConstraint = new LocationConstraint
{
IsRequired = false,
SuggestLocation = false,
Locations = new List<LocationConstraintItem>
{
new LocationConstraintItem
{
ResolveAvailability = false,
DisplayName = "Conf room Hood",
},
},
},
TimeConstraint = new TimeConstraint
{
ActivityDomain = ActivityDomain.Work,
TimeSlots = new List<TimeSlot>
{
new TimeSlot
{
Start = new DateTimeTimeZone
{
DateTime = "2019-04-16T09:00:00",
TimeZone = "Pacific Standard Time",
},
End = new DateTimeTimeZone
{
DateTime = "2019-04-18T17:00:00",
TimeZone = "Pacific Standard Time",
},
},
},
},
IsOrganizerOptional = false,
MeetingDuration = TimeSpan.Parse("PT1H"),
ReturnSuggestionReasons = true,
MinimumAttendeePercentage = 100d,
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Me.FindMeetingTimes.PostAsync(requestBody, (requestConfiguration) =>
{
requestConfiguration.Headers.Add("Prefer", "outlook.timezone=\"Pacific Standard Time\"");
});
有关如何将 SDK 添加 到项目并创建 authProvider 实例的详细信息,请参阅 SDK 文档 。
// THE CLI IS IN PREVIEW. NON-PRODUCTION USE ONLY
mgc users find-meeting-times post --user-id {user-id} --body '{\
"attendees": [\
{\
"type": "required",\
"emailAddress": {\
"name": "Alex Wilbur",\
"address": "alexw@contoso.com"\
}\
}\
],\
"locationConstraint": {\
"isRequired": false,\
"suggestLocation": false,\
"locations": [\
{\
"resolveAvailability": false,\
"displayName": "Conf room Hood"\
}\
]\
},\
"timeConstraint": {\
"activityDomain":"work",\
"timeSlots": [\
{\
"start": {\
"dateTime": "2019-04-16T09:00:00",\
"timeZone": "Pacific Standard Time"\
},\
"end": {\
"dateTime": "2019-04-18T17:00:00",\
"timeZone": "Pacific Standard Time"\
}\
}\
]\
},\
"isOrganizerOptional": "false",\
"meetingDuration": "PT1H",\
"returnSuggestionReasons": "true",\
"minimumAttendeePercentage": 100\
}\
'
有关如何将 SDK 添加 到项目并创建 authProvider 实例的详细信息,请参阅 SDK 文档 。
import (
"context"
abstractions "github.com/microsoft/kiota-abstractions-go"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphusers "github.com/microsoftgraph/msgraph-sdk-go/users"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
graphClient := msgraphsdk.NewGraphServiceClientWithCredentials(cred, scopes)
headers := abstractions.NewRequestHeaders()
headers.Add("Prefer", "outlook.timezone=\"Pacific Standard Time\"")
configuration := &graphusers.ItemFindMeetingTimesRequestBuilderPostRequestConfiguration{
Headers: headers,
}
requestBody := graphusers.NewItemFindMeetingTimesPostRequestBody()
attendeeBase := graphmodels.NewAttendeeBase()
type := graphmodels.REQUIRED_ATTENDEETYPE
attendeeBase.SetType(&type)
emailAddress := graphmodels.NewEmailAddress()
name := "Alex Wilbur"
emailAddress.SetName(&name)
address := "alexw@contoso.com"
emailAddress.SetAddress(&address)
attendeeBase.SetEmailAddress(emailAddress)
attendees := []graphmodels.AttendeeBaseable {
attendeeBase,
}
requestBody.SetAttendees(attendees)
locationConstraint := graphmodels.NewLocationConstraint()
isRequired := false
locationConstraint.SetIsRequired(&isRequired)
suggestLocation := false
locationConstraint.SetSuggestLocation(&suggestLocation)
locationConstraintItem := graphmodels.NewLocationConstraintItem()
resolveAvailability := false
locationConstraintItem.SetResolveAvailability(&resolveAvailability)
displayName := "Conf room Hood"
locationConstraintItem.SetDisplayName(&displayName)
locations := []graphmodels.LocationConstraintItemable {
locationConstraintItem,
}
locationConstraint.SetLocations(locations)
requestBody.SetLocationConstraint(locationConstraint)
timeConstraint := graphmodels.NewTimeConstraint()
activityDomain := graphmodels.WORK_ACTIVITYDOMAIN
timeConstraint.SetActivityDomain(&activityDomain)
timeSlot := graphmodels.NewTimeSlot()
start := graphmodels.NewDateTimeTimeZone()
dateTime := "2019-04-16T09:00:00"
start.SetDateTime(&dateTime)
timeZone := "Pacific Standard Time"
start.SetTimeZone(&timeZone)
timeSlot.SetStart(start)
end := graphmodels.NewDateTimeTimeZone()
dateTime := "2019-04-18T17:00:00"
end.SetDateTime(&dateTime)
timeZone := "Pacific Standard Time"
end.SetTimeZone(&timeZone)
timeSlot.SetEnd(end)
timeSlots := []graphmodels.TimeSlotable {
timeSlot,
}
timeConstraint.SetTimeSlots(timeSlots)
requestBody.SetTimeConstraint(timeConstraint)
isOrganizerOptional := false
requestBody.SetIsOrganizerOptional(&isOrganizerOptional)
meetingDuration , err := abstractions.ParseISODuration("PT1H")
requestBody.SetMeetingDuration(&meetingDuration)
returnSuggestionReasons := true
requestBody.SetReturnSuggestionReasons(&returnSuggestionReasons)
minimumAttendeePercentage := float64(100)
requestBody.SetMinimumAttendeePercentage(&minimumAttendeePercentage)
findMeetingTimes, err := graphClient.Me().FindMeetingTimes().Post(context.Background(), requestBody, configuration)
有关如何将 SDK 添加 到项目并创建 authProvider 实例的详细信息,请参阅 SDK 文档 。
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.users.item.findmeetingtimes.FindMeetingTimesPostRequestBody findMeetingTimesPostRequestBody = new com.microsoft.graph.users.item.findmeetingtimes.FindMeetingTimesPostRequestBody();
LinkedList<AttendeeBase> attendees = new LinkedList<AttendeeBase>();
AttendeeBase attendeeBase = new AttendeeBase();
attendeeBase.setType(AttendeeType.Required);
EmailAddress emailAddress = new EmailAddress();
emailAddress.setName("Alex Wilbur");
emailAddress.setAddress("alexw@contoso.com");
attendeeBase.setEmailAddress(emailAddress);
attendees.add(attendeeBase);
findMeetingTimesPostRequestBody.setAttendees(attendees);
LocationConstraint locationConstraint = new LocationConstraint();
locationConstraint.setIsRequired(false);
locationConstraint.setSuggestLocation(false);
LinkedList<LocationConstraintItem> locations = new LinkedList<LocationConstraintItem>();
LocationConstraintItem locationConstraintItem = new LocationConstraintItem();
locationConstraintItem.setResolveAvailability(false);
locationConstraintItem.setDisplayName("Conf room Hood");
locations.add(locationConstraintItem);
locationConstraint.setLocations(locations);
findMeetingTimesPostRequestBody.setLocationConstraint(locationConstraint);
TimeConstraint timeConstraint = new TimeConstraint();
timeConstraint.setActivityDomain(ActivityDomain.Work);
LinkedList<TimeSlot> timeSlots = new LinkedList<TimeSlot>();
TimeSlot timeSlot = new TimeSlot();
DateTimeTimeZone start = new DateTimeTimeZone();
start.setDateTime("2019-04-16T09:00:00");
start.setTimeZone("Pacific Standard Time");
timeSlot.setStart(start);
DateTimeTimeZone end = new DateTimeTimeZone();
end.setDateTime("2019-04-18T17:00:00");
end.setTimeZone("Pacific Standard Time");
timeSlot.setEnd(end);
timeSlots.add(timeSlot);
timeConstraint.setTimeSlots(timeSlots);
findMeetingTimesPostRequestBody.setTimeConstraint(timeConstraint);
findMeetingTimesPostRequestBody.setIsOrganizerOptional(false);
PeriodAndDuration meetingDuration = PeriodAndDuration.ofDuration(Duration.parse("PT1H"));
findMeetingTimesPostRequestBody.setMeetingDuration(meetingDuration);
findMeetingTimesPostRequestBody.setReturnSuggestionReasons(true);
findMeetingTimesPostRequestBody.setMinimumAttendeePercentage(100d);
var result = graphClient.me().findMeetingTimes().post(findMeetingTimesPostRequestBody, requestConfiguration -> {
requestConfiguration.headers.add("Prefer", "outlook.timezone=\"Pacific Standard Time\"");
});
有关如何将 SDK 添加 到项目并创建 authProvider 实例的详细信息,请参阅 SDK 文档 。
const options = {
authProvider,
};
const client = Client.init(options);
const meetingTimeSuggestionsResult = {
attendees: [
{
type: 'required',
emailAddress: {
name: 'Alex Wilbur',
address: 'alexw@contoso.com'
}
}
],
locationConstraint: {
isRequired: false,
suggestLocation: false,
locations: [
{
resolveAvailability: false,
displayName: 'Conf room Hood'
}
]
},
timeConstraint: {
activityDomain: 'work',
timeSlots: [
{
start: {
dateTime: '2019-04-16T09:00:00',
timeZone: 'Pacific Standard Time'
},
end: {
dateTime: '2019-04-18T17:00:00',
timeZone: 'Pacific Standard Time'
}
}
]
},
isOrganizerOptional: 'false',
meetingDuration: 'PT1H',
returnSuggestionReasons: 'true',
minimumAttendeePercentage: 100
};
await client.api('/me/findMeetingTimes')
.post(meetingTimeSuggestionsResult);
有关如何将 SDK 添加 到项目并创建 authProvider 实例的详细信息,请参阅 SDK 文档 。
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Users\Item\FindMeetingTimes\FindMeetingTimesRequestBuilderPostRequestConfiguration;
use Microsoft\Graph\Generated\Models\FindMeetingTimesPostRequestBody;
use Microsoft\Graph\Generated\Models\AttendeeBase;
use Microsoft\Graph\Generated\Models\EmailAddress;
use Microsoft\Graph\Generated\Models\LocationConstraint;
use Microsoft\Graph\Generated\Models\LocationConstraintItem;
use Microsoft\Graph\Generated\Models\TimeConstraint;
use Microsoft\Graph\Generated\Models\TimeSlot;
use Microsoft\Graph\Generated\Models\DateTimeTimeZone;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new FindMeetingTimesPostRequestBody();
$attendeesAttendeeBase1 = new AttendeeBase();
$attendeesAttendeeBase1->setType(new AttendeeType('required'));
$attendeesAttendeeBase1EmailAddress = new EmailAddress();
$attendeesAttendeeBase1EmailAddress->setName('Alex Wilbur');
$attendeesAttendeeBase1EmailAddress->setAddress('alexw@contoso.com');
$attendeesAttendeeBase1->setEmailAddress($attendeesAttendeeBase1EmailAddress);
$attendeesArray []= $attendeesAttendeeBase1;
$requestBody->setAttendees($attendeesArray);
$locationConstraint = new LocationConstraint();
$locationConstraint->setIsRequired(false);
$locationConstraint->setSuggestLocation(false);
$locationsLocationConstraintItem1 = new LocationConstraintItem();
$locationsLocationConstraintItem1->setResolveAvailability(false);
$locationsLocationConstraintItem1->setDisplayName('Conf room Hood');
$locationsArray []= $locationsLocationConstraintItem1;
$locationConstraint->setLocations($locationsArray);
$requestBody->setLocationConstraint($locationConstraint);
$timeConstraint = new TimeConstraint();
$timeConstraint->setActivityDomain(new ActivityDomain('work'));
$timeSlotsTimeSlot1 = new TimeSlot();
$timeSlotsTimeSlot1Start = new DateTimeTimeZone();
$timeSlotsTimeSlot1Start->setDateTime('2019-04-16T09:00:00');
$timeSlotsTimeSlot1Start->setTimeZone('Pacific Standard Time');
$timeSlotsTimeSlot1->setStart($timeSlotsTimeSlot1Start);
$timeSlotsTimeSlot1End = new DateTimeTimeZone();
$timeSlotsTimeSlot1End->setDateTime('2019-04-18T17:00:00');
$timeSlotsTimeSlot1End->setTimeZone('Pacific Standard Time');
$timeSlotsTimeSlot1->setEnd($timeSlotsTimeSlot1End);
$timeSlotsArray []= $timeSlotsTimeSlot1;
$timeConstraint->setTimeSlots($timeSlotsArray);
$requestBody->setTimeConstraint($timeConstraint);
$requestBody->setIsOrganizerOptional(false);
$requestBody->setMeetingDuration(new \DateInterval('PT1H'));
$requestBody->setReturnSuggestionReasons(true);
$requestBody->setMinimumAttendeePercentage(100);
$requestConfiguration = new FindMeetingTimesRequestBuilderPostRequestConfiguration();
$headers = [
'Prefer' => 'outlook.timezone="Pacific Standard Time"',
];
$requestConfiguration->headers = $headers;
$result = $graphServiceClient->me()->findMeetingTimes()->post($requestBody, $requestConfiguration)->wait();
有关如何将 SDK 添加 到项目并创建 authProvider 实例的详细信息,请参阅 SDK 文档 。
from msgraph import GraphServiceClient
from msgraph.generated.users.item.findMeetingTimes.find_meeting_times_request_builder import FindMeetingTimesRequestBuilder
from msgraph.generated.models.find_meeting_times_post_request_body import FindMeetingTimesPostRequestBody
from msgraph.generated.models.attendee_base import AttendeeBase
from msgraph.generated.models.email_address import EmailAddress
from msgraph.generated.models.location_constraint import LocationConstraint
from msgraph.generated.models.location_constraint_item import LocationConstraintItem
from msgraph.generated.models.time_constraint import TimeConstraint
from msgraph.generated.models.time_slot import TimeSlot
from msgraph.generated.models.date_time_time_zone import DateTimeTimeZone
graph_client = GraphServiceClient(credentials, scopes)
request_body = FindMeetingTimesPostRequestBody(
attendees = [
AttendeeBase(
type = AttendeeType.Required,
email_address = EmailAddress(
name = "Alex Wilbur",
address = "alexw@contoso.com",
),
),
],
location_constraint = LocationConstraint(
is_required = False,
suggest_location = False,
locations = [
LocationConstraintItem(
resolve_availability = False,
display_name = "Conf room Hood",
),
],
),
time_constraint = TimeConstraint(
activity_domain = ActivityDomain.Work,
time_slots = [
TimeSlot(
start = DateTimeTimeZone(
date_time = "2019-04-16T09:00:00",
time_zone = "Pacific Standard Time",
),
end = DateTimeTimeZone(
date_time = "2019-04-18T17:00:00",
time_zone = "Pacific Standard Time",
),
),
],
),
is_organizer_optional = False,
meeting_duration = "PT1H",
return_suggestion_reasons = True,
minimum_attendee_percentage = 100,
)
request_configuration = FindMeetingTimesRequestBuilder.FindMeetingTimesRequestBuilderPostRequestConfiguration()
request_configuration.headers.add("Prefer", "outlook.timezone=\"Pacific Standard Time\"")
result = await graph_client.me.find_meeting_times.post(request_body, request_configuration = request_configuration)
有关如何将 SDK 添加 到项目并创建 authProvider 实例的详细信息,请参阅 SDK 文档 。
响应
下面展示了示例响应。 注意:为了提高可读性,可能缩短了此处显示的响应对象。
HTTP/1.1 200 OK
Content-type: application/json
Preference-Applied: outlook.timezone="Pacific Standard Time"
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.meetingTimeSuggestionsResult",
"emptySuggestionsReason": "",
"meetingTimeSuggestions": [
{
"confidence": 100,
"order": 1,
"organizerAvailability": "free",
"suggestionReason": "Suggested because it is one of the nearest times when all attendees are available.",
"attendeeAvailability": [
{
"availability": "free",
"attendee": {
"emailAddress": {
"address": "alexw@contoso.com"
}
}
}
],
"locations": [
{
"displayName": "Conf room Hood"
}
],
"meetingTimeSlot": {
"start": {
"dateTime": "2019-04-18T16:00:00.0000000",
"timeZone": "Pacific Standard Time"
},
"end": {
"dateTime": "2019-04-18T17:00:00.0000000",
"timeZone": "Pacific Standard Time"
}
}
},
{
"confidence": 100,
"order": 2,
"organizerAvailability": "free",
"suggestionReason": "Suggested because it is one of the nearest times when all attendees are available.",
"attendeeAvailability": [
{
"availability": "free",
"attendee": {
"emailAddress": {
"address": "alexw@contoso.com"
}
}
}
],
"locations": [
{
"displayName": "Conf room Hood"
}
],
"meetingTimeSlot": {
"start": {
"dateTime": "2019-04-18T08:00:00.0000000",
"timeZone": "Pacific Standard Time"
},
"end": {
"dateTime": "2019-04-18T09:00:00.0000000",
"timeZone": "Pacific Standard Time"
}
}
},
{
"confidence": 100,
"order": 3,
"organizerAvailability": "tentative",
"suggestionReason": "Suggested because it is one of the nearest times when all attendees are available.",
"attendeeAvailability": [
{
"availability": "free",
"attendee": {
"emailAddress": {
"address": "alexw@contoso.com"
}
}
}
],
"locations": [
{
"displayName": "Conf room Hood"
}
],
"meetingTimeSlot": {
"start": {
"dateTime": "2019-04-18T15:00:00.0000000",
"timeZone": "Pacific Standard Time"
},
"end": {
"dateTime": "2019-04-18T16:00:00.0000000",
"timeZone": "Pacific Standard Time"
}
}
},
{
"confidence": 100,
"order": 4,
"organizerAvailability": "tentative",
"suggestionReason": "Suggested because it is one of the nearest times when all attendees are available.",
"attendeeAvailability": [
{
"availability": "free",
"attendee": {
"emailAddress": {
"address": "alexw@contoso.com"
}
}
}
],
"locations": [
{
"displayName": "Conf room Hood"
}
],
"meetingTimeSlot": {
"start": {
"dateTime": "2019-04-18T09:00:00.0000000",
"timeZone": "Pacific Standard Time"
},
"end": {
"dateTime": "2019-04-18T10:00:00.0000000",
"timeZone": "Pacific Standard Time"
}
}
},
{
"confidence": 100,
"order": 5,
"organizerAvailability": "tentative",
"suggestionReason": "Suggested because it is one of the nearest times when all attendees are available.",
"attendeeAvailability": [
{
"availability": "free",
"attendee": {
"emailAddress": {
"address": "alexw@contoso.com"
}
}
}
],
"locations": [
{
"displayName": "Conf room Hood"
}
],
"meetingTimeSlot": {
"start": {
"dateTime": "2019-04-18T12:00:00.0000000",
"timeZone": "Pacific Standard Time"
},
"end": {
"dateTime": "2019-04-18T13:00:00.0000000",
"timeZone": "Pacific Standard Time"
}
}
}
]
}