Справка по REST API Календаря Outlook (версия 2.0)

Область применения: Exchange Online | Office 365 | Hotmail.com | Live.com | MSN.com | Outlook.com | Passport.com

API календаря обеспечивает доступ к данным о событиях, календаре и группе календарей, защищенным с помощью Azure Active Directory в Office 365, а также к аналогичным данным в учетных записях Майкрософт, особенно в следующих доменах: Hotmail.com, Live.com, MSN.com, Outlook.com и Passport.com.

Примечание

  • Исключением является API поиска времени для собрания, который применяется только к почтовым ящикам Office 365 (на Azure AD), а не к учетным записям Майкрософт.
  • Для упрощения этой справки в остальной части этой статьи при упоминании Outlook.com также подразумеваются и эти домены учетной записи Майкрософт.

Не интересуетесь API версии 2.0? В оглавлении слева, перейдите к разделу Справка по API REST Office 365 и выберите нужную версию.

Все операции API календаря

Операции с событиями

Событие представляет собой встречу или собрание в календаре пользователя. Событие может быть образцом серии (для повторяющихся событий), вхождением, единственным экземпляром или исключением.

Операции календаря

Календарь служит контейнером для событий. Пользователь может иметь несколько календарей. В Office 365 каждый календарь можно назначить для группы календарей.

Операции с группами календарей

Группы календарей — это способ организации нескольких календарей. Пользователи могут добавлять несколько календарей в одну группу календарей в Outlook или Outlook Web App. Это облегчает пользователям быстрый просмотр всех календарей внутри группы.

Примечание

Outlook.com поддерживает только группу календарей по умолчанию, которая доступна с помощью ярлыка ../me/calendars. Вы не можете удалить эту группу календарей или создать другую группу календарей.

См. также

Использование API REST Календаря

Проверка подлинности

Как и для других API REST Outlook, для каждого запроса к API Outlook необходимо включать допустимый маркер доступа. Получение маркера доступа требует, чтобы вы зарегистрировались и идентифицировали свою программу и получили соответствующее разрешение.

Вы можете получить дополнительные сведения о некоторых оптимизированных параметрах регистрации и авторизации. Помните об этом, когда выполняете конкретные действия в API Календаря.

Области для доступа к общим календарям

Календари Office 365 и Outlook.com поддерживают возможность общего доступа. Пользователь, создавший календарь, может совместно использовать его с другими пользователями. Для доступа к календарю, который совместно используется с этим пользователем, требуются следующие области:

  • Доступ для чтения: https://outlook.office.com/calendars.read.shared
  • Доступ для чтения и записи: https://outlook.office.com/calendars.readwrite.shared

Версия API

API REST календаря поддерживается во всех версиях API REST Outlook. Функциональность зависит от конкретной версии.

Целевой пользователь

Запросы API календаря всегда выполняются от имени текущего пользователя.

Дополнительные сведения, общие для всех подразделов API REST Outlook, см. в разделе Использование API REST Outlook.

Получение событий

Получение коллекции событий или события.

Текст события может быть представлен как в текстовом формате, так и в формате HTML.

Вы можете использовать заголовок Prefer: outlook.body-content-type, чтобы указать требуемый формат, возвращаемый в свойстве Body в запросе GET:

  • Укажите Prefer: outlook.body-content-type="text", чтобы вернуть текст события в текстовом формате.
  • Укажите Prefer: outlook.body-content-type="html" или просто пропустите заголовок, чтобы вернуть текст события в формате HTML.

При указании любого заголовка ответ будет содержать соответствующий заголовок Preference-Applied в качестве подтверждения:

  • Для запросов в текстовом формате: Preference-Applied: outlook.body-content-type="text"
  • Для запросов в формате HTML: Preference-Applied: outlook.body-content-type="html"

Все операции, которые получают события календаря, могут использовать заголовок HTTP Prefer: outlook.timezone, чтобы указать часовой пояс для времени начала и окончания в ответе. Например, следующий заголовок Prefer: outlook.timezone задает в ответе время начала и завершения согласно восточному стандартному времени.

Prefer: outlook.timezone="Eastern Standard Time"

Если не указать заголовок Prefer: outlook.timezone, время начала и завершения в ответе будет отображаться в формате UTC. Для получения информации об именах поддерживаемых часовых поясов см. этот список.

Узнать, какой именно часовой пояс использовался при создании события, позволят свойства OriginalStartTimeZone и OriginalEndTimeZone ресурса Event.

Получение представления календаря

Минимальная требуемая область

Одно из следующих:

Получение вхождений, исключений и отдельных экземпляров событий в представлении календаря за определенный диапазон времени из основного календаря пользователя (../me/calendarview) или из другого календаря.

GET https://outlook.office.com/api/v2.0/me/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}
GET https://outlook.office.com/api/v2.0/me/calendars/{calendar_id}/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}
Обязательный параметр Тип Описание
Параметры заголовка
Prefer: outlook.timezone Часовой пояс по умолчанию для событий, указанных в ответе.
Параметры URL-адреса
calendar_id string Идентификатор календаря, если выполняется получение представления календаря из определенного календаря.
start_datetime datetimeoffset Дата и время начала события.
end_datetime datetimeoffset Дата и время завершения события.

Используйте заголовок Prefer: outlook.timezone для указания часового пояса, который будет использоваться для времени начала и завершения события в ответе. Если событие создано с применением другого часового пояса, время начала и завершения будет изменено в соответствии с указанным часовым поясом.

Для получения информации об именах поддерживаемых часовых поясов см. этот список. Если заголовок Prefer: outlook.timezone не указан, время начала и завершения будет отображаться в формате UTC.

Примечание

По умолчанию каждое событие в ответе включает все его свойства. Для лучшей производительности используйте $select, чтобы указать только те свойства, которые вам нужны. Свойство Id всегда возвращается. См. Параметры запроса OData для фильтрации, сортировки и разбиения на страницы.

Например, получите представление календаря для октября с отображением только свойства темы для каждого события. Если заголовок Prefer: outlook.timezone не включен в запрос, в качестве часового пояса будет выбран UTC.

GET https://outlook.office.com/api/v2.0/me/calendarview?startDateTime=2014-10-01T01:00:00&endDateTime=2014-10-31T23:00:00&$select=Subject

Тип ответа

Расширенные события в рамках указанного диапазона времени.

Получение событий образца серии и одиночных событий

Минимальная требуемая область

Одно из следующих:

Получите набор событий образца серии и одиночных событий экземпляра из основного календаря пользователя (../me/events) или из другого календаря. Для получения экземпляров расширенного события можно получить представление календаря или получить экземпляры события.

GET https://outlook.office.com/api/v2.0/me/events
GET https://outlook.office.com/api/v2.0/me/calendars/{calendar_id}/events
Обязательный параметр Тип Описание
Параметры заголовка
Prefer: outlook.timezone Часовой пояс по умолчанию для событий, указанных в ответе.
Параметры URL-адреса
calendar_id string Идентификатор календаря, если выполняется получение событий из определенного календаря.

Используйте заголовок Prefer: outlook.timezone для указания часового пояса, который будет использоваться для времени начала и завершения события в ответе. Если событие создано с применением другого часового пояса, время начала и завершения будет изменено в соответствии с указанным часовым поясом.

Для получения информации об именах поддерживаемых часовых поясов см. этот список. Если заголовок Prefer: outlook.timezone не указан, время начала и завершения будет отображаться в формате UTC.

Примечание

Каждое событие в ответе включает все его свойства. Для лучшей производительности используйте $select, чтобы указать только те свойства, которые вам нужны. Свойство Id всегда возвращается. См. следующий пример. См. Параметры запроса OData для фильтрации, сортировки и разбиения на страницы.

В следующем примере показано, как использовать $select для указания возврата только свойств Тема, Организатор, Начало и Завершение каждого события в ответе. Полный список свойств, которые будут отображаться для события, если не используется $select, см. в первом примере ответа в статье Получение события (REST).

Пример запроса

GET https://outlook.office.com/api/v2.0/me/events?$select=Subject,Organizer,Start,End

Пример ответа

{
    "@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Events(Subject,Organizer,Start,End)",
    "value": [
        {
            "@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI28tEyDAAA=')",
            "@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAA/LpDWw==\"",
            "Id": "AAMkAGI28tEyDAAA=",
            "Subject": "Scrum",
            "Start": {
                "DateTime": "2015-11-02T17:00:00",
                "TimeZone": "Pacific Standard Time"
            },
            "End": {
                "DateTime": "2015-11-02T17:30:00",
                "TimeZone": "Pacific Standard Time"
            },
            "Organizer": {
                "EmailAddress": {
                    "Name": "user0TestUser",
                    "Address": "user0@a830edad9050849NDA1.onmicrosoft.com"
                }
            }
        },
        {
            "@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI28tEyCAAA=')",
            "@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAA/LpDWg==\"",
            "Id": "AAMkAGI28tEyCAAA=",
            "Subject": "team lunch",
            "Start": {
                "DateTime": "2015-11-02T00:00:00",
                "TimeZone": "Pacific Standard Time"
            },
            "End": {
                "DateTime": "2015-11-03T00:00:00",
                "TimeZone": "Pacific Standard Time"
            },
            "Organizer": {
                "EmailAddress": {
                    "Name": "user0TestUser",
                    "Address": "user0@a830edad9050849NDA1.onmicrosoft.com"
                }
            }
        },
        {
            "@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2ADTG93AAA=')",
            "@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x49w==\"",
            "Id": "AAMkAGI2G93AAA=",
            "Subject": "Weekly Meeting on Contoso Project",
            "Start": {
                "DateTime": "2014-10-13T21:00:00",
                "TimeZone": "Pacific Standard Time"
            },
            "End": {
                "DateTime": "2014-10-13T22:00:00",
                "TimeZone": "Pacific Standard Time"
            },
            "Organizer": {
                "EmailAddress": {
                    "Name": "Alex D",
                    "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
                }
            }
        },
        {
            "@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG92AAA=')",
            "@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x49g==\"",
            "Id": "AAMkAGI2TG92AAA=",
            "Subject": "Daily Team Meeting",
            "Start": {
                "DateTime": "2014-10-13T18:00:00",
                "TimeZone": "Pacific Standard Time"
            },
            "End": {
                "DateTime": "2014-10-13T18:30:00",
                "TimeZone": "Pacific Standard Time"
            },
            "Organizer": {
                "EmailAddress": {
                    "Name": "Alex D",
                    "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
                }
            }
        },
        {
            "@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG91AAA=')",
            "@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x47Q==\"",
            "Id": "AAMkAGI2TG91AAA=",
            "Subject": "Rob:Alex 1:1",
            "Start": {
                "DateTime": "2014-10-15T16:30:00",
                "TimeZone": "Pacific Standard Time"
            },
            "End": "2014-10-15T17:30:00Z",
            "Organizer": {
                "EmailAddress": {
                    "Name": "Alex D",
                    "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
                }
            }
        },
        {
            "@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG90AAA=')",
            "@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x46g==\"",
            "Id": "AAMkAGI2TG90AAA=",
            "Subject": "Thanksgiving Holiday",
            "Start": {
                "DateTime": "2015-11-26T00:00:00",
                "TimeZone": "Pacific Standard Time"
            },
            "End": {
                "DateTime": "2015-11-27T00:00:00",
                "TimeZone": "Pacific Standard Time"
            },
            "Organizer": {
                "EmailAddress": {
                    "Name": "Alex D",
                    "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
                }
            }
        },
        {
            "@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9zAAA=')",
            "@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x46Q==\"",
            "Id": "AAMkAGI2TG9zAAA=",
            "Subject": "Thanksgiving Holiday",
            "Start": {
                "DateTime": "2014-11-27T00:00:00"
                "TimeZone": "Pacific Standard Time"
            },
            "End": {
                "DateTime": "2014-11-28T00:00:00",
                "TimeZone": "Pacific Standard Time"
            },
            "Organizer": {
                "EmailAddress": {
                    "Name": "Alex D",
                    "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
                }
            }
        },
        {
            "@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9yAAA=')",
            "@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x49Q==\"",
            "Id": "AAMkAGI2TG9yAAA=",
            "Subject": "New Year's Day Holiday",
            "Start": {
                "DateTime": "2015-01-01T00:00:00",
                "TimeZone": "Pacific Standard Time"
            },
            "End": {
                "DateTime": "2015-01-02T00:00:00",
                "TimeZone": "Pacific Standard Time"
            },
            "Organizer": {
                "EmailAddress": {
                    "Name": "Alex D",
                    "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
                }
            }
        },
        {
            "@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9xAAA=')",
            "@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x45w==\"",
            "Id": "AAMkAGI2TG9xAAA=",
            "Subject": "Christmas Holiday",
            "Start": {
                "DateTime": "2014-12-25T00:00:00",
                "TimeZone": "Pacific Standard Time"
            },
            "End": {
                "DateTime": "2014-12-26T00:00:00",
                "TimeZone": "Pacific Standard Time"
            },
            "Organizer": {
                "EmailAddress": {
                    "Name": "Alex D",
                    "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
                }
            }
        }
    ]
}

Получение экземпляров события

Минимальная требуемая область

Одно из следующих:

Можно получить экземпляры (вхождения) события за указанный диапазон времени. Если событие относится к типу SeriesMaster, возвращаются вхождения и исключения события за указанный диапазон времени.

GET https://outlook.office.com/api/v2.0/me/events/{event_id}/instances?startDateTime={start_datetime}&endDateTime={end_datetime}
Обязательный параметр Тип Описание
Параметры заголовка
Prefer: outlook.timezone Часовой пояс по умолчанию для событий, указанных в ответе.
Параметры URL-адреса
event_id string Идентификатор события.
start_datetime datetimeoffset Дата и время UTC начала события.
end_datetime datetimeoffset Дата и время UTC завершения события.

Используйте заголовок Prefer: outlook.timezone для указания часового пояса, который будет использоваться для времени начала и завершения события в ответе. Если событие создано с применением другого часового пояса, время начала и завершения будет изменено в соответствии с указанным часовым поясом.

Для получения информации об именах поддерживаемых часовых поясов см. этот список. Если заголовок Prefer: outlook.timezone не указан, время начала и завершения будет отображаться в формате UTC.

Тип ответа

Запрошенный набор событий.

Примечание

По умолчанию каждое событие в ответе включает все его свойства. Для лучшей производительности используйте $select, чтобы указать только те свойства, которые вам нужны. Свойство Id всегда возвращается. См. Параметры запроса OData для фильтрации, сортировки и разбиения на страницы.

Например, получите экземпляры определенного события за октябрь, включите только свойства Тема, Начало и Завершение каждого экземпляра:

GET https://outlook.office.com/api/v2.0/me/events/AAMkAGE0MGM1Y2M5LWEAAA=/instances?startDateTime=2014-10-01T01:00:00Z&endDateTime=2014-10-31T23:00:00Z&$select=Subject,Start,End

Получение события

Минимальная требуемая область

Одно из следующих:

Получение события по идентификатору.

GET https://outlook.office.com/api/v2.0/me/events/{event_id}
Обязательный параметр Тип Описание
Параметры заголовка
Prefer: outlook.timezone Часовой пояс по умолчанию для событий, указанных в ответе.
Параметры URL-адреса
event_id string Идентификатор события.

Используйте заголовок Prefer: outlook.timezone для указания часового пояса, который будет использоваться для времени начала и завершения события в ответе. Если событие создано с применением другого часового пояса, время начала и завершения будет изменено в соответствии с указанным часовым поясом.

Для получения информации об именах поддерживаемых часовых поясов см. этот список. Если заголовок Prefer: outlook.timezone не указан, время начала и завершения будет отображаться в формате UTC.

Пример запроса

GET https://outlook.office.com/api/v2.0/me/events/AAMkAGI2TG93AAA=

Пример ответа

    {
        "@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Events/$entity",
        "@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG93AAA=')",
        "@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x48w==\"",
        "Id": "AAMkAGI2TG93AAA=",
        "ChangeKey": "nfZyf7VcrEKLNoU37KWlkQAAA0x48w==",
        "Categories": [],
        "CreatedDateTime": "2014-10-19T23:13:47.3959685Z",
        "LastModifiedDateTime": "2014-10-19T23:13:47.6772234Z",
        "Subject": "Weekly Meeting on Contoso Project",
        "BodyPreview": "Setting up some time to review the budget and planning on the Contoso Project",
        "Body": {
            "ContentType": "HTML",
            "Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>\r\nSetting up some time to review the budget and planning on the Contoso Project\r\n</body>\r\n</html>\r\n"
        },
        "Importance": "Normal",
        "HasAttachments": false,
        "Start": {
            "DateTime": "2014-10-13T21:00:00",
            "TimeZone": "Pacific Standard Time"
        },
        "End": {
            "DateTime": "2014-10-13T22:00:00",
            "TimeZone": ""Pacific Standard Time"
        },        
        "Location": {
            "DisplayName": "Alex's Office",
            "Address": null
        },
        "ShowAs": "Busy",
        "IsAllDay": false,
        "IsCancelled": false,
        "IsOrganizer": true,
        "ResponseRequested": true,
        "Type": "SeriesMaster",
        "SeriesMasterId": null,
        "Attendees": [
            {
                "EmailAddress": {
                    "Address": "janets@a830edad9050849NDA1.onmicrosoft.com",
                    "Name": "Janet Schorr"
                },
                "Status": {
                    "Response": "None",
                    "Time": "0001-01-01T00:00:00Z"
                },
                "Type": "Required"
            },
            {
                "EmailAddress": {
                    "Address": "pavelb@a830edad9050849NDA1.onmicrosoft.com",
                    "Name": "Pavel Bansky"
                },
                "Status": {
                    "Response": "None",
                    "Time": "0001-01-01T00:00:00Z"
                },
                "Type": "Required"
            }
        ],
        "Recurrence": {
            "Pattern": {
                "Type": "Weekly",
                "Interval": 1,
                "Month": 0,
                "Index": "First",
                "FirstDayOfWeek": "Sunday",
                "DayOfMonth": 0,
                "DaysOfWeek": [
                    "Monday"
                ]
            },
            "RecurrenceTimeZone": "Pacific Standard Time",
            "Range": {
                "Type": "NoEnd",
                "StartDate": "2014-10-13",
                "EndDate": "2014-11-13",
                "NumberOfOccurrences": 0
            }
        },
        "OriginalEndTimeZone": "Pacific Standard Time",
        "OriginalStartTimeZone": "Pacific Standard Time",
        "Organizer": {
            "EmailAddress": {
                "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com",
                "Name": "Alex D"
            },
        "OnlineMeetingUrl": null
        }
    }

Тип ответа

Запрошенное событие.

Примечание

По умолчанию ответ включает все свойства события. Для лучшей производительности используйте $select, чтобы указать только те свойства, которые вам нужны. Свойство Id всегда возвращается. См. Параметры запроса OData для фильтрации, сортировки и разбиения на страницы.

В следующем примере показано, как использовать $select для указания возврата только свойств Тема, Организатор, Начало и Завершение события.

Пример запроса

GET https://outlook.office.com/api/v2.0/me/events/AAMkAGI2TG93AAA=?$select=Subject,Organizer,Start,End

Пример ответа

    {
        "@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Events/$entity",
        "@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG93AAA=')",
        "@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x48w==\"",
        "Id": "AAMkAGI2TG93AAA=",
        "Subject": "Weekly Meeting on Contoso Project",
        "Start": {
            "DateTime": "2014-10-13T21:00:00",
            "TimeZone": "Pacific Standard Time"
        },
        "End": {
            "DateTime": "2014-10-13T22:00:00",
            "TimeZone": ""Pacific Standard Time"
        }, 
        "Organizer": {
            "EmailAddress": {
                "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com",
                "Name": "Alex D"
            }
        }
    }

Синхронизация событий

Минимальная требуемая область

Одно из следующих:

Выполните синхронизацию и получите новые, обновленные или удаленные события за указанный диапазон времени из основного календаря пользователя (../me/calendarview) или из другого календаря. Такой набор событий за диапазон времени также называется представлением календаря. Возвращенные события могут включать вхождения и исключения повторяющихся серий и одиночные экземпляры.

Для синхронизации представления календаря обычно требуется серия двух или нескольких запросов синхронизации, каждый из которых является вызовом GET. Для синхронизации представления календаря используйте метод GET, как при использовании получения представления календаря, однако необходимо включить определенные заголовки запроса, deltaToken или skipToken, где необходимо.

Заголовки запросов

  • Необходимо указать заголовок "Prefer: odata.track-changes" во всех запросах синхронизации за исключением тех, которые включают skipToken при возврате от предыдущего запроса синхронизации. Перед продолжением в первом ответе найдите заголовок Preference-Applied: odata.track-changes для подтверждения того, что ресурс поддерживает синхронизацию. (Для получения дополнительной информации о skipToken см. данные примера второго ответа.)

  • Можно указать заголовок "Prefer: odata.maxpagesize={x}" для указания максимального числа событий возврата запроса синхронизации.

Далее представлена типичная серия событий синхронизации в представлении календаря:

  1. Выполните начальный запрос GET с обязательным заголовком Prefer: odata.track-changes. Начальный ответ на запрос синхронизации всегда возвращает deltaToken. (Второй и последующие запросы GET отличаются от первого запроса GET, так как включают deltaToken или skipToken, полученные в предыдущем ответе.)

  2. Если первый ответ возвращает заголовок Preference-Applied: odata.track-changes, можно продолжить синхронизацию.

    • Выполните второй запрос GET. Укажите заголовок Prefer: odata.track-changes и deltaToken из первого запроса GET для определения, имеются ли дополнительные события. Второй запрос вернет дополнительные события, а также skipToken, если имеются дополнительные события, или deltaToken, если была выполнена синхронизация последнего события, в этом случае можно прекратить действия.

    • Продолжите синхронизацию, отправив вызов GET и указав skipToken от предыдущего вызова. Прекратите действия, когда получите окончательный ответ, содержащий заголовок _@odata.deltaLink_ с deltaToken, что указывает на завершение синхронизации.

Проверьте синтаксис на наличие начального и последующих вызовов в ходе синхронизации.

Синхронизация в календаре по умолчанию

Первоначальный запрос:

GET https://outlook.office.com/api/v2.0/{user_context}/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}

Второй запрос или первый запрос последующей серии:

GET https://outlook.office.com/api/v2.0/{user_context}/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}&$deltatoken={delta_token}

Третий или последующий запрос в той же серии:

GET https://outlook.office.com/api/v2.0/{user_context}/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}&$skiptoken={skip_token}

Синхронизация в определенном календаре

Первоначальный запрос:

GET https://outlook.office.com/api/v2.0/{user_context}/calendars('{calendar_id}')/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}

Второй запрос или первый запрос последующей серии:

GET https://outlook.office.com/api/v2.0/{user_context}/calendars('{calendar_id}')/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}&$deltatoken={delta_token}

Третий или последующий запрос в той же серии:

GET https://outlook.office.com/api/v2.0/{user_context}/calendars('{calendar_id}')/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}&$skiptoken={skip_token}

Параметры

Параметр Тип Описание
Параметры URL-адреса
user_context string Контекст пользователя. Можно использовать значение 'me' для указания контекста текущего пользователя. Можно также использовать формат users/{upn}, где upn представляет собой имя участника-пользователя, обычно это адрес электронной почты пользователя.
calendar_id string Идентификатор календаря, если выполняется получение представления календаря из определенного календаря.
start_datetime datetimeoffset Дата и время начала события.
end_datetime datetimeoffset Дата и время завершения события.
delta_token string Строка deltaToken была возвращена в качестве части значения для @odata.deltaLink в предыдущем ответе синхронизации.
skip_token string Строка skipToken была возвращена в качестве части значения для @odata.nextLink в предыдущем ответе синхронизации.

Примечание

  • При указании "Prefer: odata.track-changes" в первоначальном запросе, если ответ поддерживает синхронизацию, ответ будет иметь "Preference-applied: odata.track-changes" в заголовке.
  • Если выполняется попытка синхронизации ресурса, который не поддерживается, или если это не первоначальный запрос синхронизации, в ответе не будет заголовка "Preference-applied".
  • Для изменения интервала укажите другие параметры запроса startdatetime и enddatetime.
  • Каждое событие в ответе включает все его свойства.
  • Для повторяющейся серии ответ синхронизации включает все событие для повторяющихся событий образца и исключения.
  • Экземпляры повторяющейся серии сокращены и содержат только свойства Начало и Завершение. Можно получить оставшуюся информацию события из повторяющегося события образца. Справочная информация приведена в статье Ресурс событий.
  • Нельзя использовать параметры запроса $filter, $count, $select, $skip, $top, и $search.

Тип ответа

Расширенные события и сокращенные события за указанный диапазон времени.

Пример

В следующем примере показаны первоначальный и второй запросы синхронизации для синхронизации календаря по умолчанию для пользователя. Каждый запрос позволяет одновременно вернуть только одно полное событие:

  • Первоначальный ответ возвращает одно событие, deltaLink и deltaToken.
  • Второй запрос использует deltatoken. Второй ответ возвращает одно событие, nextLink и skipToken.

Для выполнения синхронизации используйте skipToken от предыдущего запроса синхронизации, пока запрос синхронизации не вернет deltaLink и deltaToken, в этом случае синхронизация будет завершена. Сохраните deltaToken для следующей синхронизации.

Для получения дополнительной информации см. Синхронизация событий в представлении календаря Outlook.

Пример исходного запроса

    GET https://outlook.office.com/api/v2.0/me/calendarview?startdatetime=2015-01-01T00:00:00Z&enddatetime=2015-04-10T00:00:00Z HTTP/1.1
    Authorization: Bearer <token>
    Prefer: odata.track-changes
    Prefer: odata.maxpagesize=1

Пример данных первоначального ответа

Preference-Applied: odata.track-changes

    {
        "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/CalendarView",
        "value": [
            {
                "@odata.id": "https://outlook.office.com/api/v2.0/Users('user0@contoso.com')/Events('asdas==')",
                "@odata.etag": "W/\"L8Z+4Y4u7k+97uRKg==\"",
                "Id": "AQMkANJAAAAA==",
                "ChangeKey": "L8Z+AAAAARKg==",
                "Categories": [
                ],
                "DateTimeCreated": "2015-04-10T17:54:49.2725912Z",
                "DateTimeLastModified": "2015-04-10T17:54:49.3038538Z",
                "Subject": "Discuss the Calendar REST API",
                "BodyPreview": "I think it will meet our requirements!",
                "Body": {
                    "ContentType": "HTML",
                    "Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>\r\nI think it will meet our requirements!\r\n</body>\r\n</html>\r\n"
                },
                "Importance": "Normal",
                "HasAttachments": false,
                "Start": {
                    "DateTime": "2015-04-05T18:00:00",
                    "TimeZone": "Pacific Standard Time"
                }
                "End": {
                    "DateTime": "2015-04-05T19:00:00",
                    "TimeZone": "Pacific Standard Time"
                }
                "ReminderMinutesBeforeStart": "15",
                "IsReminderOn": "true",
                "Location": {
                    "DisplayName": "",
                    "Address": null
                },
                "ResponseStatus": {
                    "Response": "Organizer",
                    "Time": "0001-01-01T00:00:00Z"
                },
                "ShowAs": "Busy",
                "IsAllDay": false,
                "IsCancelled": false,
                "IsOrganizer": true,
                "ResponseRequested": true,
                "Type": "SingleInstance",
                "SeriesMasterId": null,
                "Attendees": [
                ],
                "Recurrence": null,
                "OriginalEndTimeZone": "Pacific Standard Time",
                "OriginalStartTimeZone": "Pacific Standard Time",
                "Organizer": {
                    "EmailAddress": {
                        "Address": "user0@contoso.com",
                        "Name": "user0"
                    }
                },
                "iCalUId": "040000008200E9888E07599CCFA23",
                "WebLink": "https://outlook.office.com/owa/?ItemID=AAAINJAAAAA%3D%3D&exvsurl=1&viewmodel=ICalendarItemDetailsViewModelFactory",
                "OnlineMeetingUrl": null
            }
        ],
        "@odata.deltaLink": "https://outlook.office.com/api/v2.0/me/calendarview/?startdatetime=2015-01-01T00%3a00%3a00Z&enddatetime=2015-04-10T00%3a00%3a00Z&%24deltatoken=v2%2cH4roCAAA%3d%2c1.0%2cFalse%2cA00%2c"
    }

Пример второго запроса

    GET https://outlook.office.com/api/v2.0/me/calendarview?startdatetime=2015-01-01T00:00:00Z&enddatetime=2015-04-10T00:00:00Z&$deltatoken=v2%2cH4roCAAA%3d%2c1.0%2cFalse%2cA00%2c
    Authorization: Bearer <token>
    Prefer: odata.track-changes
    Prefer: odata.maxpagesize=1

Пример данных второго ответа

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/CalendarView/$delta",
    "value": [
        {
            "@odata.id": "https://outlook.office.com/api/v2.0/Users('user0@contoso.com')/Events('AAMkAD0jAAA=')",
            "@odata.etag": "W/\"P2fd7QAAAAAVFA==\"",
            "Id": "AAMkADNkNmVlOTITVAAAAAA0jAAA=",
            "ChangeKey": "P2fdmIU1QAAAAAVFA==",
            "Categories": [
            ],
            "DateTimeCreated": "2015-04-15T18:59:11.0226221Z",
            "DateTimeLastModified": "2015-04-15T18:59:11.0694979Z",
            "Subject": "1 hour",
            "BodyPreview": "\u200b",
            "Body": {
                "ContentType": "HTML",
                "Content": "<html><body>content</body></html>"
            },
            "Importance": "Normal",
            "HasAttachments": false,
            "Start": {
                "DateTime": "2015-04-16T18:00:00",
                "TimeZone": "Pacific Standard Time"
            }
            "End": {
                "DateTime": "2015-04-16T19:00:00",
                "TimeZone": Pacific Standard Time"
            }
            "ReminderMinutesBeforeStart": "15",
            "IsReminderOn": "true",
            "Location": {
                "DisplayName": "",
                "Address": {
                    "Street": "",
                    "City": "",
                    "State": "",
                    "CountryOrRegion": "",
                    "PostalCode": ""
                }
             },
            "ResponseStatus": {
                "Response": "Organizer",
                "Time": "0001-01-01T00:00:00Z"
            },
            "ShowAs": "Busy",
            "IsAllDay": false,
            "IsCancelled": false,
            "IsOrganizer": true,
            "ResponseRequested": true,
            "Type": "SingleInstance",
            "SeriesMasterId": null,
            "Attendees": [
            ],
            "Recurrence": null,
            "OriginalEndTimeZone": "Pacific Standard Time",
            "OriginalStartTimeZone": "Pacific Standard Time",
            "Organizer": {
                "EmailAddress": {
                    "Address": "user0@contoso.com",
                    "Name": "user0"
                }
            },
            "iCalUId": "040000008200E09BB89A316862",
            "WebLink": "https://outlook.office.com/owa/?ItemID=AAMkADNkNmVlOAA%3D&exvsurl=1&viewmodel=ICalendarItemDetailsViewModelFactory",
            "OnlineMeetingUrl": null
        }
    ],
    "@odata.nextLink": "https://outlook.office.com/api/v2.0/me/calendarview/?startdatetime=2015-01-01T00%3a00%3a00Z&enddatetime=2015-08-10T00%3a00%3a00Z&%24skipToken=530c9d02ae1a4d96804538bd4d381546"
}

Поиск времени встречи

Минимальная требуемая область

Одно из следующих:

Предложение времени проведения собрания с учетом доступности организатора и участников, а также ограничений по местоположению или времени, указанных в качестве параметров.

Данная операция применима только к почтовым ящикам Office 365 (в Azure AD) и не применима к учетным записям Microsoft.

POST https://outlook.office.com/api/{version}/me/findmeetingtimes

Далее указаны все поддерживаемые параметры. В зависимости от сценария укажите необходимые параметры в тексте запроса действия FindMeetingTimes.

Параметр Тип Описание Обязательный?
Attendees Набор (AttendeeBase) Участники или ресурсы для собрания. Если указана пустая коллекция, действие FindMeetingTimes ищет интервалы свободного времени только для организатора. Необязательный
IsOrganizerOptional Edm.Boolean Укажите true, если присутствие организатора на собрании не обязательно. Значение по умолчанию: false. Необязательный
LocationConstraint LocationConstraint Требования организатора к месту проведения собрания (например, требуется ли предложение или собрание может пройти только в определенных местах). Необязательный
MaxCandidates Edm.Int32 Максимальное число предложений по собранию в ответе. Необязательный
MeetingDuration Edm.Duration Продолжительность собрания в формате ISO 8601, например PT1H обозначает 1 час. Если продолжительность собрания не указана, FindMeetingTimes использует значение по умолчанию, которое составляет 30 минут. Необязательный
MinimumAttendeePercentage Edm.Double Минимальная достоверность, необходимая, чтобы вернуть период времени в ответе. Это процентное значение от 0 до 100. Необязательный
ReturnSuggestionReasons Edm.Boolean Укажите true для возврата причины каждого предложения о собрании в свойстве SuggestionReason. Значением по умолчанию является false, при этом свойство не возвращается. Необязательный
TimeConstraint TimeConstraint Ограничения по времени для собрания, к которым могут относиться характер собрания (ActivityDomain) и возможное время проведения собрания (TimeSlots). Если параметр ActivityDomain не задан, метод FindMeetingTimes считает, что для этого параметра установлено значение Work. Необязательный

FindMeetingTimes проверяет сведения о доступности в основных календарях организатора и участников. В зависимости от указанных параметров действие предложит оптимальное время встречи. В следующей таблице описаны ограничения, которые можно указать в параметре TimeConstraint.

Значение ActivityDomain в TimeConstraint Предложения по времени проведения собраний
Work (Работа) Предложения ограничиваются рамками рабочего времени пользователя, которое определяется настройками его календаря. Пользователь или администратор также могут изменять рабочее время. По умолчанию рабочим считается время с 8:00 до 17:00 (в часовом поясе, установленном для почтового ящика пользователя) с понедельника по пятницу. Это значение является значением по умолчанию, если не задан параметр ActivityDomain.
Personal (Личное) Предложения возможны в рабочее время пользователя, а также в субботу и воскресенье. Значением по умолчанию является время с 8:00 до 17:00 (в часовом поясе, установленном для почтового ящика пользователя) с понедельника по воскресенье.
Unrestricted (Без ограничений) Предложения могут относиться к любому времени в любой день недели.
Unknown (Неизвестно) Не рекомендуется использовать это значение, так как в будущем его поддержка будет прекращена. В настоящее время значение равносильно значению Work. Измените существующий код, используя соответствующие значения Work, Personal или Unrestricted.

Тип ответа

Объект MeetingTimeSuggestionsResult включающий коллекцию предложений о собрании, каждое из которых имеет тип MeetingTimeSuggestion и свойство EmptySuggestionsReason.

Каждое предложение определяется как объект MeetingTimeSuggestion, где средняя вероятность присутствия участников составляет 50 % или определенное процентное значение, указанное в параметре MinimumAttendeePercentage.

По умолчанию каждое предлагаемое время проведения собрания указывается в формате UTC. Примените заголовок запроса Prefer: outlook.timezone для возврата предложений времени собрания в другом часовом поясе, например:

Prefer: outlook.timezone="Pacific Standard Time"

Если FindMeetingTimes не может вернуть любые предложения собрания, в ответе будет указана причина в свойстве EmptySuggestionsReason. На основе этого значения можно скорректировать параметры и снова вызвать FindMeetingTimes.

Примечание

В настоящий момент FindMeetingTimes предполагает, что любой объект Attendee, являющийся пользователем (а не ресурсом), представляет собой обязательного участника. Укажите Required для пользователя и Resource для ресурса в соответствующем свойстве Type в составе параметра коллекции Attendees.

Во всех следующих примерах выполняется вызов FindMeetingTimes с различиями по доступности участников, ограничениям по местоположению или времени:

Поиск времени и места для встречи с определенными участниками

Поиск времени и мест для встречи с указанием следующих параметров в тексте запроса:

  • Attendees
  • TimeConstraint
  • MeetingDuration

Пример запроса

Следующий пример содержит предложение времени и места встречи с учетом доступности организатора и участника в рабочее время в указанном диапазоне, а также необходимую продолжительность.

POST https://outlook.office.com/api/v2.0/me/findmeetingtimes

Prefer: outlook.timezone="Pacific Standard Time"
Content-Type: application/json 

{ 
  "Attendees": [ 
    { 
      "Type": "Required",  
      "EmailAddress": { 
        "Name": "Fanny",
        "Address": "fannyd@prosewareltd.onmicrosoft.com" 
      } 
    } 
  ],  
  "TimeConstraint": { 
    "ActivityDomain":"Work",
    "Timeslots": [ 
       { 
        "Start": { 
          "DateTime": "2016-05-20T07:00:00",  
          "TimeZone": "Pacific Standard Time" 
        },  
        "End": { 
          "DateTime": "2016-05-20T17:00:00",  
          "TimeZone": "Pacific Standard Time" 
        } 
      } 
    ] 
  },  
  "MeetingDuration": "PT1H" 
} 

Пример ответа

Код состояния: 200

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Microsoft.OutlookServices.MeetingTimeSuggestionsResult",
    "MeetingTimeSuggestions": [
        {
            "MeetingTimeSlot": {
                "Start": {
                    "DateTime": "2016-05-20T10:00:00.0000000",
                    "TimeZone": "Pacific Standard Time"
                },
                "End": {
                    "DateTime": "2016-05-20T11:00:00.0000000",
                    "TimeZone": "Pacific Standard Time"
                }
            },
            "Confidence": 100.0,
            "OrganizerAvailability": "Free",
            "AttendeeAvailability": [
                {
                    "Attendee": {
                        "Type": "Required",
                        "EmailAddress": {
                            "Name": "Fanny",
                            "Address": "fannyd@prosewareltd.onmicrosoft.com"
                        }
                    },
                    "Availability": "Free"
                }
            ],
            "Locations": [
               {
                    "DisplayName": "Tokyo conference room",
                    "LocationEmailAddress": "",
                    "LocationUri": "",
                    "Address": null,
                    "Coordinates": null
                }
            ]
        },
        {
            "MeetingTimeSlot": {
                "Start": {
                    "DateTime": "2016-05-20T11:00:00.0000000",
                    "TimeZone": "Pacific Standard Time"
                },
                "End": {
                    "DateTime": "2016-05-20T12:00:00.0000000",
                    "TimeZone": "Pacific Standard Time"
                }
            },
            "Confidence": 100.0,
            "OrganizerAvailability": "Free",
            "AttendeeAvailability": [
                {
                    "Attendee": {
                        "Type": "Required",
                        "EmailAddress": {
                            "Name": "Fanny",
                            "Address": "fannyd@prosewareltd.onmicrosoft.com"
                        }
                    },
                    "Availability": "Free"
                }
            ],
            "Locations": [
               {
                    "DisplayName": "Paris conference room",
                    "LocationEmailAddress": "",
                    "LocationUri": "",
                    "Address": null,
                    "Coordinates": null
                }
            ]
        }
    ],
    "EmptySuggestionsReason": ""
}

Поиск времени для встречи в известном месте и получение причины для каждого предложения

Поиск времени для встречи в заранее установленном месте, а также запрос причины для каждого предложения с указанием следующих параметров в тексте запроса:

  • Attendees
  • LocationConstraint
  • TimeConstraint
  • MeetingDuration
  • ReturnSuggestionReasons

При установке параметра ReturnSuggestionReasons для каждого предложения отображается объяснение в свойстве SuggestionReason, если метод FindMeetingTimes возвращает какие-либо предложения.

Пример запроса

POST https://outlook.office.com/api/v2.0/me/findmeetingtimes

Prefer: outlook.timezone="Pacific Standard Time"
Content-Type: application/json 

{ 
  "Attendees": [ 
    { 
      "Type": "Required",  
      "EmailAddress": { 
        "Name": "Fanny",
        "Address": "fannyd@prosewareltd.onmicrosoft.com" 
      } 
    } 
  ],  
  "LocationConstraint": { 
    "IsRequired": "false",  
    "SuggestLocation": "false",  
    "Locations": [ 
      { 
        "ResolveAvailability": "false",
        "DisplayName": "Conf room Hood" 
      } 
    ] 
  },  
  "TimeConstraint": { 
    "ActivityDomain":"Work",
    "Timeslots": [ 
      { 
        "Start": { 
          "DateTime": "2016-05-20T07:00:00",  
          "TimeZone": "Pacific Standard Time" 
        },  
        "End": { 
          "DateTime": "2016-05-20T17:00:00",  
          "TimeZone": "Pacific Standard Time" 
        } 
      } 
    ] 
  },  
  "MeetingDuration": "PT2H",
  "ReturnSuggestionReasons": "true"
} 

Пример ответа

Код состояния: 200

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Microsoft.OutlookServices.MeetingTimeSuggestionsResult",
    "MeetingTimeSuggestions": [
        {
            "MeetingTimeSlot": {
                "Start": {
                    "DateTime": "2016-05-20T10:00:00.0000000",
                    "TimeZone": "Pacific Standard Time"
                },
                "End": {
                    "DateTime": "2016-05-20T12:00:00.0000000",
                    "TimeZone": "Pacific Standard Time"
                }
            },
            "Confidence": 100.0,
            "OrganizerAvailability": "Free",
            "AttendeeAvailability": [
                {
                    "Attendee": {
                        "Type": "Required",
                        "EmailAddress": {
                            "Name": "Fanny",
                            "Address": "fannyd@prosewareltd.onmicrosoft.com"
                        }
                    },
                    "Availability": "Free"
                }
            ],
            "Locations": [
                {
                    "DisplayName": "Conf room Hood"
                }
            ],
            "SuggestionReason": "Suggested because it is one of the nearest times when all attendees are available."
        }
    ],
    "EmptySuggestionsReason": ""
}

Поиск времени для встречи, когда участники недоступны

Поиск времени для встречи в заранее установленном месте с указанием следующих параметров в тексте запроса:

  • Attendees
  • LocationConstraint
  • TimeConstraint
  • MeetingDuration

В этом примере в соответствии с указанными параметрами и доступностью участника метод FindMeetingTimes не может вернуть какие-либо предложения, вместо этого выполняется возврат причины AttendeesUnavailable в свойстве EmptySuggestionsReason.

См. прочие возможные причины невозможности возврата каких-либо предложений по собранию.

Пример запроса

POST https://outlook.office.com/api/v2.0/me/findmeetingtimes

Prefer: outlook.timezone="Pacific Standard Time"
Content-Type: application/json 

{ 
  "Attendees": [ 
    { 
      "Type": "Required",  
      "EmailAddress": { 
        "Name": "Fanny",
        "Address": "fannyd@prosewareltd.onmicrosoft.com" 
      } 
    } 
  ],  
  "LocationConstraint": { 
    "IsRequired": "false",  
    "SuggestLocation": "false",  
    "Locations": [ 
      { 
        "ResolveAvailability": "false",
        "DisplayName": "Conf room Hood" 
      } 
    ] 
  },  
  "TimeConstraint": { 
    "Timeslots": [ 
      { 
        "Start": { 
          "DateTime": "2016-05-20T7:00:00",  
          "TimeZone": "Pacific Standard Time" 
        },  
        "End": { 
          "DateTime": "2016-05-20T14:00:00",  
          "TimeZone": "Pacific Standard Time" 
        } 
      } 
    ] 
  },  
  "MeetingDuration": "PT2H" 
}

Пример ответа

Код состояния: 200

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Microsoft.OutlookServices.MeetingTimeSuggestionsResult",
    "MeetingTimeSuggestions": [
    ],
    "EmptySuggestionsReason": "AttendeesUnavailable"
}

Поиск времени для встречи, когда доступны не все участники

Поиск времени для встречи в заранее установленном месте с указанием следующих параметров в тексте запроса:

  • Attendees
  • LocationConstraint
  • TimeConstraint
  • MeetingDuration
  • ReturnSuggestionReasons
  • MinimumAttendeePercentage

В этом примере доступен только один участник из двух. Каждое предложение по собранию, которое возвращает метод FindMeetingTimes, включает:

  • Доступность каждого участника
  • Вычисленная достоверность собрания, которая представляет собой среднее процентное значение вероятности посещения участником собрания. Это значение должно соответствовать 60 %, как указано в MinimumAttendeePercentage.
  • SuggestionHint, так как установлен параметр ReturnSuggestionReasons.

Для получения дополнительной информации о достоверности собрания перейдите по ссылке.

Пример запроса

POST https://outlook.office.com/api/v2.0/me/findmeetingtimes

Prefer: outlook.timezone="Pacific Standard Time"
Content-Type: application/json 

{ 
  "Attendees": [ 
    { 
      "Type": "Required",  
      "EmailAddress": { 
        "Name": "Fanny",
        "Address": "fannyd@prosewareltd.onmicrosoft.com" 
      } 
    },
   { 
      "Type": "Optional",  
      "EmailAddress": { 
        "Name": "Dana",
        "Address": "danas@prosewareltd.onmicrosoft.com" 
      } 
    } 
  ],  
  "LocationConstraint": { 
    "IsRequired": "false",  
    "SuggestLocation": "false",  
    "Locations": [ 
      { 
        "ResolveAvailability": "false",
        "DisplayName": "Conf room Hood" 
      } 
    ] 
  },  
  "TimeConstraint": { 
    "ActivityDomain":"Work",
    "Timeslots": [ 
      { 
        "Start": { 
          "DateTime": "2016-05-20T09:00:00",  
          "TimeZone": "Pacific Standard Time" 
        },  
        "End": { 
          "DateTime": "2016-05-20T17:00:00",  
          "TimeZone": "Pacific Standard Time" 
        } 
      } 
    ] 
  },  
  "MeetingDuration": "PT1H",
  "ReturnSuggestionReasons": "true",
  "MinimumAttendeePercentage": "60"
}

Пример ответа

Код состояния: 200

{
   "@odata.context":"https://outlook.office.com/api/v2.0/$metadata#Microsoft.OutlookServices.MeetingTimeSuggestionsResult",
   "MeetingTimeSuggestions":[
      {
         "MeetingTimeSlot":{
            "Start":{
               "DateTime":"2016-05-20T10:00:00.0000000",
               "TimeZone":"Pacific Standard Time"
            },
            "End":{
               "DateTime":"2016-05-20T11:00:00.0000000",
               "TimeZone":"Pacific Standard Time"
            }
         },
         "Confidence":100.0,
         "OrganizerAvailability":"Free",
         "AttendeeAvailability":[
            {
               "Attendee":{
                  "Type":"Required",
                  "EmailAddress":{
                     "Name": "Fanny",
                     "Address":"fannyd@prosewareltd.onmicrosoft.com"
                  }
               },
               "Availability":"Free"
            },
            {
               "Attendee":{
                  "Type":"Required",
                  "EmailAddress":{
                     "Name": "Dana",
                     "Address":"danas@prosewareltd.onmicrosoft.com"
                  }
               },
               "Availability":"Free"
            }
         ],
         "Locations":[
            {
               "DisplayName":"Conf room Hood"
            }
         ],
         "SuggestionReason":"Suggested because it is one of the nearest times when most attendees are available."
      },
      {
         "MeetingTimeSlot":{
            "Start":{
               "DateTime":"2016-05-20T11:00:00.0000000",
               "TimeZone":"Pacific Standard Time"
            },
            "End":{
               "DateTime":"2016-05-20T12:00:00.0000000",
               "TimeZone":"Pacific Standard Time"
            }
         },
         "Confidence":74.5,
         "OrganizerAvailability":"Free",
         "AttendeeAvailability":[
            {
               "Attendee":{
                  "Type":"Required",
                  "EmailAddress":{
                     "Name": "Fanny",
                     "Address":"fannyd@prosewareltd.onmicrosoft.com"
                  }
               },
               "Availability":"Free"
            },
            {
               "Attendee":{
                  "Type":"Required",
                  "EmailAddress":{
                     "Name": "Dana",
                     "Address":"danas@prosewareltd.onmicrosoft.com"
                  }
               },
               "Availability":"Unknown"
            }
         ],
         "Locations":[
            {
               "DisplayName":"Conf room Hood"
            }
         ],
         "SuggestionReason":"Suggested because it is one of the nearest times when most attendees are available."
      }
   ],
   "EmptySuggestionsReason":""
}

Поиск интервалов свободного времени для пользователя, который вошел в систему

Поиск интервалов свободного времени в основном календаре пользователя, который вошел в систему, в любой день недели в пределах диапазона дат с указанием следующих параметров в тексте запроса:

  • TimeConstraint
  • MeetingDuration

Пример запроса

В данном примере выполняется поиск 1-часовых интервалов свободного времени, как указано с помощью параметра MeetingDuration, в основном календаре пользователя, который вошел в систему, в любой день недели в пределах диапазона дат, как указано параметром TimeConstraint.

POST https://outlook.office.com/api/v2.0/me/findmeetingtimes

Prefer: outlook.timezone="Pacific Standard Time"
Content-Type: application/json 

{ 
  "Attendees": [],
  "TimeConstraint": { 
    "ActivityDomain": "Unrestricted",
    "Timeslots": [ 
      { 
        "Start": { 
          "DateTime": "2016-05-20T06:00:00",  
          "TimeZone": "Pacific Standard Time" 
        },  
        "End": { 
          "DateTime": "2016-05-22T23:00:00",  
          "TimeZone": "Pacific Standard Time" 
        } 
      } 
    ] 
  },  
  "MeetingDuration": "PT1H"
}

Пример ответа

Код состояния: 200

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Microsoft.OutlookServices.MeetingTimeSuggestionsResult",
    "MeetingTimeSuggestions": [
        {
            "MeetingTimeSlot": {
                "Start": {
                    "DateTime": "2016-05-20T06:00:00.0000000",
                    "TimeZone": "Pacific Standard Time"
                },
                "End": {
                    "DateTime": "2016-05-20T07:00:00.0000000",
                    "TimeZone": "Pacific Standard Time"
                }
            },
            "Confidence": 100.0,
            "OrganizerAvailability": "Free",
            "AttendeeAvailability": [
            ],
            "Locations": [
            ]
        },
        {
            "MeetingTimeSlot": {
                "Start": {
                    "DateTime": "2016-05-21T09:00:00.0000000",
                    "TimeZone": "Pacific Standard Time"
                },
                "End": {
                    "DateTime": "2016-05-21T10:00:00.0000000",
                    "TimeZone": "Pacific Standard Time"
                }
            },
            "Confidence": 100.0,
            "OrganizerAvailability": "Free",
            "AttendeeAvailability": [
            ],
            "Locations": [
            ]
        },
        {
            "MeetingTimeSlot": {
                "Start": {
                    "DateTime": "2016-05-22T19:00:00.0000000",
                    "TimeZone": "Pacific Standard Time"
                },
                "End": {
                    "DateTime": "2016-05-22T20:00:00.0000000",
                    "TimeZone": "Pacific Standard Time"
                }
            },
            "Confidence": 100.0,
            "OrganizerAvailability": "Free",
            "AttendeeAvailability": [
            ],
            "Locations": [
            ]
        }
    ],
    "EmptySuggestionsReason": ""
}

Получение конференц-залов (предварительная версия)

Эта функция в настоящий момент доступна в бета-версии. Чтобы узнать больше, в оглавлении слева перейдите в раздел Справка по API REST для Office 365 и выберите бета.

Создание событий

Создание события календаря

Минимальная требуемая область

Одно из следующих:

Создайте событие в основном календаре пользователя или в определенном календаре путем размещения в конечной точке календаря events. При создании события сервер отправляет приглашения всем участникам.

POST https://outlook.office.com/api/v2.0/me/events
POST https://outlook.office.com/api/v2.0/me/calendars/{calendar_id}/events
Обязательный параметр Тип Описание
Параметры URL-адреса
calendar_id string Идентификатор календаря.

Пример запроса

POST https://outlook.office.com/api/v2.0/me/events
Content-Type: application/json
{
  "Subject": "Discuss the Calendar REST API",
  "Body": {
    "ContentType": "HTML",
    "Content": "I think it will meet our requirements!"
  },
  "Start": {
      "DateTime": "2014-02-02T18:00:00",
      "TimeZone": "Pacific Standard Time"
  },
  "End": {
      "DateTime": "2014-02-02T19:00:00",
      "TimeZone": "Pacific Standard Time"
  },
  "Attendees": [
    {
      "EmailAddress": {
        "Address": "janets@a830edad9050849NDA1.onmicrosoft.com",
        "Name": "Janet Schorr"
      },
      "Type": "Required"
    }
  ]
}

Пример ответа

Код состояния: 201

{
  "@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Events/$entity",
  "@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGE4v1RAAA=')",
  "@odata.etag": "W/\"Jj9S59cHB0Wq4jXUzBgDvQAAFeNheA==\"",
  "Id": "AAMkAGE4v1RAAA=",
  "ChangeKey": "Jj9S59cHB0Wq4jXUzBgDvQAAFeNheA==",
  "Categories": [],
  "CreatedDateTime": "2014-01-22T20:56:10.1058291Z",
  "LastModifiedDateTime": "2014-01-22T20:56:10.3402186Z",
  "Subject": "Discuss the Calendar REST API",
  "BodyPreview": "I think it will meet our requirements!",
  "Body": {
    "ContentType": "HTML",
    "Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>\r\nI think it will meet our requirements!\r\n</body>\r\n</html>\r\n"
  },
  "Importance": "Normal",
  "HasAttachments": false,
  "Start": {
      "DateTime": "2014-02-02T18:00:00",
      "TimeZone": "Pacific Standard Time"
  },
  "End": {
      "DateTime": "2014-02-02T19:00:00",
      "TimeZone": "Pacific Standard Time"
  },
  "Location": {
    "DisplayName": "",
    "Address": null
  },
  "ShowAs": "Busy",
  "IsAllDay": false,
  "IsCancelled": false,
  "IsOrganizer": true,
  "ResponseRequested": true,
  "Type": "SingleInstance",
  "SeriesMasterId": null,
  "Attendees": [
    {
      "EmailAddress": {
        "Address": "janets@a830edad9050849NDA1.onmicrosoft.com",
        "Name": "Janet Schorr"
      },
      "Status": {
        "Response": "None",
        "Time": "0001-01-01T00:00:00Z"
      },
      "Type": "Required"
    }
  ],
  "Recurrence": null,
  "OriginalEndTimeZone": "Pacific Standard Time",
  "OriginalStartTimeZone": "Pacific Standard Time",
  "Organizer": {
    "EmailAddress": {
      "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com",
      "Name": "alexd"
    }
  },
  "OnlineMeetingUrl": null
}

Тип ответа

Новое событие.

По умолчанию ответ включает все свойства нового события. Для лучшей производительности используйте $select, чтобы указать только те свойства, которые вам нужны. Свойство Id всегда возвращается.

Следующий пример включает только свойства Start и End нового события в ответе.

POST https://outlook.office.com/api/v2.0/me/events?$Select=Start,End

Обновление событий

Обновление события календаря

Минимальная требуемая область

Одно из следующих:

Измените событие. Будут изменены только указанные свойства. Если пользователь является организатором, всем участникам сервером будут отправлены обновления собрания.

PATCH https://outlook.office.com/api/v2.0/me/events/{event_id}
Обязательный параметр Тип Описание
Параметры URL-адреса
event_id string Идентификатор события.

Укажите любые записываемые свойства события в тексте запроса.

Пример запроса

PATCH https://outlook.office.com/api/v2.0/me/events/AAMkAGE0M4v1OAAA=
Content-Type: application/json

{
  "Location": {
    "DisplayName": "Your office",
    "Address": null
  }
}

Пример ответа

Код состояния: 200

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Events/$entity",
  "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGE0M4v1OAAA=')",
  "@odata.etag": "W/\"Jj9S59cHB0Wq4jXUzBgDvQAAFeNheQ==\"",
  "Id": "AAMkAGE0M4v1OAAA=",
  "ChangeKey": "Jj9S59cHB0Wq4jXUzBgDvQAAFeNheQ==",
  "Categories": [],
  "CreatedDateTime": "2014-01-22T20:49:05.5657528Z",
  "LastModifiedDateTime": "2014-01-22T21:14:17.4886416Z",
  "Subject": "Discuss the Calendar REST API",
  "BodyPreview": "I think it will meet our requirements!",
  "Body": {
    "ContentType": "HTML",
    "Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>\r\nI think it will meet our requirements!\r\n</body>\r\n</html>\r\n"
  },
  "Importance": "Normal",
  "HasAttachments": false,
  "Start": {
      "DateTime": "2014-02-02T18:00:00",
      "TimeZone": "Pacific Standard Time"
  },
  "End": {
      "DateTime": "2014-02-02T19:00:00",
      "TimeZone": "Pacific Standard Time"
  },
  "Location": {
    "DisplayName": "Your office",
    "Address": null
  },
  "ShowAs": "Busy",
  "IsAllDay": false,
  "IsCancelled": false,
  "IsOrganizer": true,
  "ResponseRequested": true,
  "Type": "SingleInstance",
  "SeriesMasterId": null,
  "Attendees": [],
  "Recurrence": null,
  "OriginalEndTimeZone": "Pacific Standard Time",
  "OriginalStartTimeZone": "Pacific Standard Time",
  "Organizer": {
    "EmailAddress": {
      "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com",
      "Name": "alexd"
    }
  },
  "OnlineMeetingUrl": null
}

Тип ответа

Обновленное событие. Если пользователь является организатором, всем участникам сервером будут отправлены обновления собрания.

По умолчанию ответ включает все свойства обновленного события. Для лучшей производительности используйте $select, чтобы указать только те свойства, которые вам нужны. Свойство Id всегда возвращается.

PATCH https://outlook.office.com/api/v2.0/me/events/AAMkAGE1MFKPQWAAA=?$select=Location

Ответ на события

Принятие события

Минимальная требуемая область

Одно из следующих:

Принятие указанного события.

POST https://outlook.office.com/api/v2.0/me/events/{event_id}/accept
Параметр Тип Описание
Параметры URL-адреса
event_id string Идентификатор события. Обязательный.
Параметры текста сообщения
Comment string Текст, включенный в ответ. Необязательный.
SendResponse boolean true если ответ должен быть отправлен организатору. В противном случае false. Необязательный атрибут. Значение по умолчанию — true.

Пример запроса

POST https://outlook.office.com/api/v2.0/me/events('AAMkAGE1M2IyNGNmLTI5MT_bs88AAAXDJwEAAA=')/accept

Content-Type: application/json

{
  "Comment": "Great idea!",
  "SendResponse": "true"
}

Отклик

Ответ об успешном выполнении характеризуется наличием кода ответа HTTP 202 Accepted.

Предварительное принятие события

Минимальная требуемая область

Одно из следующих:

Предварительное принятие указанного события.

POST https://outlook.office.com/api/v2.0/me/events/{event_id}/tentativelyaccept
Параметр Тип Описание
Параметры URL-адреса
event_id string Идентификатор события. Обязательный.
Параметры текста сообщения
Comment string Текст, включенный в ответ. Необязательный.
SendResponse boolean true если ответ должен быть отправлен организатору. В противном случае false. Необязательный атрибут. Значение по умолчанию — true.

Пример запроса

POST https://outlook.office.com/api/v2.0/me/events('AAMkAGE1M2IyNGNmLTI5MT_bs88AAAXDJwEAAA=')/tentativelyaccept

Content-Type: application/json

{
  "Comment": "I'll confirm later!",
  "SendResponse": "true"
}

Отклик

Ответ об успешном выполнении характеризуется наличием кода ответа HTTP 202 Accepted.

Отклонение события

Минимальная требуемая область

Одно из следующих:

Отклонение приглашения на указанное событие.

POST https://outlook.office.com/api/v2.0/me/events/{event_id}/decline
Параметр Тип Описание
Параметры URL-адреса
event_id string Идентификатор события. Обязательный.
Параметры текста сообщения
Comment string Текст, включенный в ответ. Необязательный.
SendResponse boolean true если ответ должен быть отправлен организатору. В противном случае false. Необязательный атрибут. Значение по умолчанию — true.

Пример запроса

POST https://outlook.office.com/api/v2.0/me/events('AAMkAGE1M2IyNGNmLTI5MT_bs88AAAXDJwEAAA=')/decline

Content-Type: application/json

{
  "Comment": "Sorry, maybe next time!",
  "SendResponse": "true"
}

Отклик

Ответ об успешном выполнении характеризуется наличием кода ответа HTTP 202 Accepted.

Перенаправление событий (предварительная версия)

Эта функция в настоящий момент доступна только в бета-версии. Чтобы узнать больше, в оглавлении слева перейдите в раздел Справка по API REST для Office 365 и выберите бета.

Удаление событий

Удаление события календаря

Минимальная требуемая область

Одно из следующих:

Переместите событие в папку "Удаленные" пользователя, который вошел в систему. Если событие является собранием, а пользователь, который вошел в систему, является организатором, все участники получат сообщение об отмене от сервера.

DELETE https://outlook.office.com/api/v2.0/me/events/{event_id}
Обязательный параметр Тип Описание
Параметры URL-адреса
event_id string Идентификатор события.

Пример запроса

DELETE https://outlook.office.com/api/v2.0/me/events/AAMkAGE0M4v1OAAA=

Пример ответа

Status code: 204

Отмена событий (предварительная версия)

Эта функция в настоящий момент доступна только в бета-версии. Чтобы узнать больше, в оглавлении слева перейдите в раздел Справка по API REST для Office 365 и выберите бета.

Получение вложений

Можно получить коллекцию вложений или получить вложение.

Получение набора вложений

Минимальная требуемая область

Одно из следующих:

Получите вложения из определенного события.

Примечание

См. Параметры запроса OData для фильтрации, сортировки и разбиения на страницы.

GET https://outlook.office.com/api/v2.0/me/events/{event_id}/attachments
Обязательный параметр Тип Описание
Параметры URL-адреса
event_id string Идентификатор события.

Тип ответа

Набор вложений может с типом FileAttachment или ItemAttachment.

Пример запроса

GET https://outlook.office.com/api/v2.0/me/events/AAMkAGI2NGTG9yAAA=/attachments

Пример ответа

Код состояния: 200

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Events('AAMkAGI2NG9yAAA%3D')/Attachments",
    "value": [
        {
            "@odata.type": "#Microsoft.OutlookServices.FileAttachment",
            "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2NGTG9yAAA=')/Attachments('AAMkAGI2NGLwydGuOzcHf1FBlo=')",
            "Id": "AAMkAGI2NGLwydGuOzcHf1FBlo=",
            "LastModifiedDateTime": "2014-10-22T00:30:26Z",
            "Name": "Company Party.docx",
            "ContentType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
            "Size": 11647,
            "IsInline": false,
            "ContentId": null,
            "ContentLocation": null,
            "ContentBytes": "UEsDBBQABgAIAAAAIQDfpNJs...AAF4pAAAAAA=="
        }
    ]
}

Получение вложения

Минимальная требуемая область

Одно из следующих:

Получите вложение из определенного события.

GET https://outlook.office.com/api/v2.0/me/events/{event_id}/attachments/{attachment_id}
Обязательный параметр Тип Описание
Параметры URL-адреса
event_id string Идентификатор события.
attachment_id string Идентификатор вложения.

Примечание

См. Параметры запроса OData для фильтрации, сортировки и разбиения на страницы.

Тип ответа

Запрошенное вложение файла или вложение элемента.

Пример запроса

GET https://outlook.office.com/api/v2.0/me/events/AAMkAGI2WRAAADTG9yAAA=/attachments/AAMkAGI2TG9yAAABEgAQALxJtn1LwydGuOzcHf1FBlo=

Пример ответа

Код состояния: 200

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Events('AAMkAGI2WRAAADTG9yAAA%3D')/Attachments/$entity",
    "@odata.type": "#Microsoft.OutlookServices.FileAttachment",
    "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2WRAAADTG9yAAA=')/Attachments('AAMkAGI2TG9yAAABEgAQALxJtn1LwydGuOzcHf1FBlo=')",
    "Id": "AAMkAGI2TG9yAAABEgAQALxJtn1LwydGuOzcHf1FBlo=",
    "LastModifiedDateTime": "2014-10-22T00:30:26Z",
    "Name": "Company Party.docx",
    "ContentType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
    "Size": 11647,
    "IsInline": false,
    "ContentId": null,
    "ContentLocation": null,
    "ContentBytes": "UEsDBBQABgAIAAAAIQD...AAF4pAAAAAA=="
}

Пример запроса ($расширение вложений)

В следующем примере выполняется получение и расширение двух вложений ссылок, встроенных в свойства события.

GET https://outlook.office.com/api/v2.0/me/events('AAMkAGE1Mbs88AADggYEcAAA=')?$expand=attachments

Пример ответа

Код состояния: 200

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#users('ddfcd489-628b-40d7-b48b-57002df800e5')/events/$entity",
    "@odata.etag": "W/\"mODEKWhc/Um6lA3uPm7PPAAA4KZrtA==\"",
    "id": "AAMkAGE1Mbs88AADggYEcAAA=",
    "createdDateTime": "2016-03-22T22:19:58.1359352Z",
    "lastModifiedDateTime": "2016-03-22T22:39:09.9335289Z",
    "changeKey": "mODEKWhc/Um6lA3uPm7PPAAA4KZrtA==",
    "categories": [
    ],
    "originalStartTimeZone": "Pacific Standard Time",
    "originalEndTimeZone": "Pacific Standard Time",
    "responseStatus": {
        "response": "organizer",
        "time": "0001-01-01T00:00:00Z"
    },
    "iCalUId": "040000008200E00074C5B7101A82E008000000005895FCF78884D10100000000000000001000000099DD7CA6BCF37C4F9F7DAACCADDD6B89",
    "reminderMinutesBeforeStart": 15,
    "isReminderOn": true,
    "hasAttachments": true,
    "subject": "Plan Easter egg hunt!",
    "body": {
        "contentType": "html",
        "content": "<html>\r\n<body>\r\nLet's get organized for this weekend's gathering.\r\n</body>\r\n</html>\r\n"
    },
    "bodyPreview": "Let's get organized for this weekend's gathering.",
    "importance": "normal",
    "sensitivity": "normal",
    "start": {
        "dateTime": "2016-03-26T17:00:00.0000000",
        "timeZone": "UTC"
    },
    "end": {
        "dateTime": "2016-03-26T18:00:00.0000000",
        "timeZone": "UTC"
    },
    "location": {
        "displayName": "",
        "locationType": "default",
        "address": {
            "type": "unknown"
        },
        "coordinates": {
        }
    },
    "locations": [

    ],
    "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": "Randi Welch",
                "address": "randiw@contoso.onmicrosoft.com"
            }
        }
    ],
    "organizer": {
        "emailAddress": {
            "name": "Dana Swope",
            "address": "danas@contoso.onmicrosoft.com"
        }
    },
    "webLink": "https://outlook.office.com/owa/?ItemID=AAMkAGE1Mbs88AADggYEcAAA%3D&exvsurl=1&viewmodel=ICalendarItemDetailsViewModelFactory",
    "onlineMeetingUrl": null,
    "attachments@odata.context": "https://outlook.office.com/api/beta/$metadata#users('ddfcd489-628b-40d7-b48b-57002df800e5')/events('AAMkAGE1Mbs88AADggYEcAAA%3D')/attachments",
    "attachments": [
        {
            "@odata.type": "#Microsoft.OutlookServices.ReferenceAttachment",
            "id": "AAMkAGE1Mbs88AADggYEcAAABEgAQAABWAoLgP3REt_LWRG8ORv4=",
            "lastModifiedDateTime": "2016-03-22T22:27:20Z",
            "name": "Hydrangea picture",
            "contentType": null,
            "size": 412,
            "isInline": false,
            "sourceUrl": "https://contoso-my.spoppe.com/personal/danas_contoso_onmicrosoft_com/Documents/Pics/hydrangea.jpg",
            "providerType": "oneDriveBusiness",
            "thumbnailUrl": null,
            "previewUrl": null,
            "permission": "edit",
            "isFolder": false
        },
        {
            "@odata.type": "#Microsoft.OutlookServices.ReferenceAttachment",
            "id": "AAMkAGE1Mbs88AADggYEcAAABEgAQAE1rHHth7YNLlR9WsgnODy0=",
            "lastModifiedDateTime": "2016-03-22T22:39:09Z",
            "name": "Koala picture",
            "contentType": null,
            "size": 382,
            "isInline": false,
            "sourceUrl": "https://contoso-my.spoppe.com/personal/danas_contoso_onmicrosoft_com/Documents/Pics/koala.jpg",
            "providerType": "oneDriveBusiness",
            "thumbnailUrl": null,
            "previewUrl": null,
            "permission": "edit",
            "isFolder": false
        }
    ]
}

Пример запроса ($расширение вложенных элементов)

В следующем примере выполняется получение вложенного элемента.

GET https://outlook-sdf.office.com/api/v2.0/me/events/AAMkAGE1Mbs88AADUv0uFAAA=/attachments/AAMkAGE1Mbs88AADUv0uFAAABEgAQAL53d0u3BKBJmCxKVxZKBZ8=$expand=Microsoft.OutlookServices.ItemAttachment/Item

Пример ответа

Status code: 200

{
    "Id": "AAMkAGE1Mbs88AADUv0uFAAABEgAQAL53d0u3BKBJmCxKVxZKBZ8=",
    "LastModifiedDateTime": "2017-04-25T20:05:55Z",
    "Name": "RE: Changes to GetConditionMetadata handler",
    "ContentType": null,
    "Size": 78927,
    "IsInline": false,
    "Item": {
        "Id": "", 
        "Name": "How to retrieve item attachment using Outlook REST API",
        "ContentType": message/rfc822,
        "Size": 71094,
        "IsInline": false,
        "LastModifiedDateTime": "2015-09-24T05:57:59Z",
    }
}

Создание вложений

Можно создать вложение файла или создать вложение элемента для события.

Создание вложения файла

Минимальная требуемая область

Одно из следующих:

Добавьте вложение файла в событие.

POST https://outlook.office.com/api/v2.0/me/events/{event_id}/attachments
Обязательный параметр Тип Описание
Параметры URL-адреса
event_id string Идентификатор события.
Параметры текста сообщения
@odata.type string #Microsoft.OutlookServices.FileAttachment
Имя string Имя вложения.
ContentBytes двоичный Файл для вложения.

Тип ответа

Новое вложение файла.

Создание вложения элемента

Минимальная требуемая область

Одно из следующих:

Добавьте вложение элемента в событие.

POST https://outlook.office.com/api/v2.0/me/events/{event_id}/attachments
Обязательный параметр Тип Описание
Параметры URL-адреса
event_id string Идентификатор события.
Параметры текста сообщения
@odata.type string #Microsoft.OutlookServices.ItemAttachment
Имя string Имя вложения.
Item Объект Сообщение, Событие или Контакт. Элемент для вложения.

Тип ответа

Новое вложение элемента.

Создание вложения ссылки

Минимальная требуемая область

https://outlook.office.com/calendars.readwrite

Добавьте вложение ссылки в событие.

POST https://outlook.office.com/api/v2.0/me/events/{event_id}/attachments
Обязательный параметр Тип Описание
Параметры URL-адреса
event_id Строка Идентификатор события.
Параметры текста сообщения
@odata.type Строка #Microsoft.OutlookServices.ReferenceAttachment
Имя Строка Отображаемое имя вложения. Обязательный.
SourceUrl Строка URL для получения содержимого вложения. Если это URL-адрес на папку, то для надлежащего отображения папки в Outlook или Outlook в Интернете установите для параметра IsFolder значение true. Обязательный.

Укажите параметры Name и SourceUrl и любые записываемые свойства вложения ссылки в тексте запроса.

Тип ответа

Вложение ссылки.

Пример запроса

В следующем примере выполняется добавление вложения ссылки в существующее событие. Вложение представляет собой ссылку на файл в OneDrive для бизнеса.

POST https://outlook.office.com/api/v2.0/me/events('AAMkAGE1Mbs88AADggYEcAAA=')/attachments
Content-Type: application/json

{
    "@odata.type": "#Microsoft.OutlookServices.ReferenceAttachment", 
    "Name": "Hydrangea picture", 
    "SourceUrl": "https://contoso-my.spoppe.com/personal/danas_contoso_onmicrosoft_com/Documents/Pics/hydrangea.jpg", 
    "ProviderType": "oneDriveBusiness", 
    "Permission": "Edit", 
    "IsFolder": "False" 
 }

Пример ответа

Код состояния: 201 Создано

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#users('ddfcd489-628b-40d7-b48b-57002df800e5')/events('AAMkAGE1Mbs88AADggYEcAAA%3D')/attachments/$entity",
    "@odata.type": "#Microsoft.OutlookServices.ReferenceAttachment",
    "Id": "AAMkAGE1Mbs88AADggYEcAAABEgAQAABWAoLgP3REt_LWRG8ORv4=",
    "LastModifiedDateTime": "2016-03-22T22:27:20Z",
    "Name": "Hydrangea picture",
    "ContentType": null,
    "Size": 412,
    "IsInline": false,
    "SourceUrl": "https://contoso-my.spoppe.com/personal/danas_contoso_onmicrosoft_com/Documents/Pics/hydrangea.jpg",
    "ProviderType": "oneDriveBusiness",
    "ThumbnailUrl": null,
    "PreviewUrl": null,
    "Permission": "edit",
    "IsFolder": false
}

Удаление вложений

Удаление вложения события

Минимальная требуемая область

Одно из следующих:

Удалите указанное вложение события. Вложением может быть вложение файла или вложение элемента.

DELETE https://outlook.office.com/api/v2.0/me/events/{event_id}/attachments/{attachment_id}
Обязательный параметр Тип Описание
Параметры URL-адреса
event_id string Идентификатор события.
attachment_id string Идентификатор вложения.

Пример запроса

DELETE https:/outlook.office.com/api/v2.0/me/events/AAMkAGE0MG4v1OAAA=/attachments/AAMkAGITG9yAAA=

Пример ответа

Status code: 204

Получение напоминаний

Получите список напоминаний событий между двумя датами и временем из календаря.

Минимальная требуемая область

Одно из следующих:

GET https://outlook.office.com/api/v2.0/me/ReminderView(StartDateTime='{DateTime}',EndDateTime='{DateTime}')
Обязательный параметр Тип Описание
Параметры заголовка
Prefer: outlook.timezone Часовой пояс по умолчанию для событий в ответе.
Параметры URL-адреса
StartDateTime string Дата и время начала для отображаемых напоминаний.
EndDateTime string Дата и время завершения для отображаемых напоминаний.

Используйте заголовок Prefer: outlook.timezone для указания часового пояса, который будет использоваться для времени начала и завершения события в ответе. Если событие создано с применением другого часового пояса, время начала и завершения будет изменено в соответствии с указанным часовым поясом.

Для получения информации об именах поддерживаемых часовых поясов см. этот список. Если заголовок Prefer: outlook.timezone не указан, будет установлен часовой пояс UTC.

Функция повторного напоминания

Используйте функцию повторного напоминания, чтобы отложить напоминание до более позднего времени.

Минимальная требуемая область

Одно из следующих:

POST https://outlook.office.com/api/v2.0/me/Events('{id}')/SnoozeReminder
Необходимые параметры Тип Описание
Параметры URL-адреса
id string Идентификатор события.
Параметры текста сообщения
NewReminderTime DateTimeTimeZone Новые дата и время для активации напоминания.

Отклонение напоминаний

Отклонение активированного напоминания.

Минимальная требуемая область

Одно из следующих:

POST https://outlook.office.com/api/v2.0/me/Events({id})/DismissReminder
Необходимые параметры Тип Описание
Параметры URL-адреса
id string Идентификатор события.

Получение календарей

Можно получить набор календарей или календарь.

Получить набор календарей

Минимальная требуемая область

Одно из следующих:

Получить все календари пользователя (calendars) или получить календари из определенной группы календарей.

GET https://outlook.office.com/api/v2.0/me/calendars
GET https://outlook.office.com/api/v2.0/me/calendargroups/{calendar_group_id}/calendars

Примечание

См. Параметры запроса OData для фильтрации, сортировки и разбиения на страницы.

Обязательный параметр Тип Описание
Параметры URL-адреса
calender_group_id string Идентификатор группы календарей.

Пример запроса

https://outlook.office.com/api/v2.0/me/calendars

Пример ответа

Код состояния: 200

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Calendars",
    "value": [
        {
            "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Calendars('AAMkAGI2TGuLAAA=')",
            "Id": "AAMkAGI2TGuLAAA=",
            "Name": "Calendar",
            "Color": "Auto",
            "ChangeKey": "nfZyf7VcrEKLNoU37KWlkQAAA0x0+w==",
            "CanShare":true,
            "CanViewPrivateItems":true,
            "CanEdit":true,
            "Owner":{
              "Name":"Fanny Downs",
              "Address":"fannyd@adatum.onmicrosoft.com"
            }
        }
    ]
}

Получить календарь

Минимальная требуемая область

Одно из следующих:

Получите календарь по идентификатору. Можно получить основной календарь пользователя с помощью конечной точки ../me/calendar.

GET https://outlook.office.com/api/v2.0/me/calendars/{calendar_id}

Примечание

См. Параметры запроса OData для фильтрации, сортировки и разбиения на страницы.

Обязательный параметр Тип Описание
Параметры URL-адреса
calendar_id string Идентификатор календаря.

Пример запроса

GET https://outlook.office.com/api/v2.0/me/calendars/AAMkAGI2TGuLAAA=

Пример ответа

Код состояния: 200

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Calendars/$entity",
    "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Calendars('AAMkAGI2TGuLAAA=')",
    "Id": "AAMkAGI2TGuLAAA=",
    "Name": "Calendar",
    "Color": "Auto",
    "ChangeKey": "nfZyf7VcrEKLNoU37KWlkQAAA0x0+w==",
    "CanShare":true,
    "CanViewPrivateItems":true,
    "CanEdit":true,
    "Owner":{
      "Name":"Fanny Downs",
      "Address":"fannyd@adatum.onmicrosoft.com"
    }
}

Тип ответа

Запрошенный календарь.

Создание календарей

Создание календаря

Минимальная требуемая область

Одно из следующих:

Создайте календарь в группе календарей по умолчанию с помощью ярлыка ../me/calendars или в определенной группе календарей путем размещения в конечной точке группы calendars.

POST https://outlook.office.com/api/v2.0/me/calendars
POST https://outlook.office.com/api/v2.0/me/calendargroups/{calendar_group_id}/calendars
Обязательный параметр Тип Описание
Параметры URL-адреса
calender_group_id string Идентификатор группы календарей, если выполняется получение календарей из определенной группы.
Параметры текста сообщения
Имя string Имя нового календаря.

Пример запроса

POST https://outlook.office.com/api/v2.0/me/calendars
Content-Type: application/json

{
  "Name": "Social"
}

Пример ответа

Код состояния: 201

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Calendars/$entity",
  "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Calendars('AAMkAGE4xLHAAA=')",
  "@odata.etag": "W/\"Jj9S59cHB0Wq4jXUzBgDvQAAFeN/SQ==\"",
  "Id": "AAMkAGE4xLHAAA=",
  "Name": "Social",
  "ChangeKey": "Jj9S59cHB0Wq4jXUzBgDvQAAFeN/SQ==",
  "CanShare":true,
  "CanViewPrivateItems":true,
  "CanEdit":true,
  "Owner":{
    "Name":"Fanny Downs",
    "Address":"fannyd@adatum.onmicrosoft.com"
  }
}

Тип ответа

Новый календарь.

Обновление календарей

Обновление календаря

Минимальная требуемая область

Одно из следующих:

Измените записываемые свойства календаря.

PATCH https://outlook.office.com/api/v2.0/me/calendars/{calendar_id}
Обязательный параметр Тип Описание
Параметры URL-адреса
calendar_id string Идентификатор календаря.

Пример запроса

PATCH https://outlook.office.com/api/v2.0/me/calendars/AAMkAGE4xLIAAA=
Content-Type: application/json

{
  "Name": "Social events"
}

Пример ответа

Код состояния: 200

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Calendars/$entity",
  "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Calendars('AAMkAGE4xLIAAA=')",
  "@odata.etag": "W/\"Jj9S59cHB0Wq4jXUzBgDvQAAFeN/Sw==\"",
  "Id": "AAMkAGE4xLIAAA=",
  "Name": "Social events",
  "ChangeKey": "Jj9S59cHB0Wq4jXUzBgDvQAAFeN/Sw==",
  "CanShare":true,
  "CanViewPrivateItems":true,
  "CanEdit":true,
  "Owner":{
    "Name":"Fanny Downs",
    "Address":"fannyd@adatum.onmicrosoft.com"
  }
}

Тип ответа

Обновленный календарь.

Удаление календарей

Удаление календаря

Минимальная требуемая область

Одно из следующих:

DELETE https://outlook.office.com/api/v2.0/me/calendars/{calendar_id}
Обязательный параметр Тип Описание
Параметры URL-адреса
calendar_id string Идентификатор календаря.

Пример запроса

DELETE https://outlook.office.com/api/v2.0/me/calendars/AAMkAGE4xLIAAA=

Пример ответа

Status code: 204

Получение групп календарей

Можно получить набор группы календарей или получить группу календарей.

Примечание

Outlook.com поддерживает только группу календарей по умолчанию, которая доступна с помощью ярлыка ../me/calendars.

Получение набора группы календарей

Минимальная требуемая область

Одно из следующих:

Получение групп календарей в почтовом ящике.

GET https://outlook.office.com/api/v2.0/me/calendargroups

Примечание

См. Параметры запроса OData для фильтрации, сортировки и разбиения на страницы.

Пример запроса

GET https://outlook.office.com/api/v2.0/me/calendargroups

Пример ответа

Код состояния: 200

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/CalendarGroups",
    "value": [
        {
            "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/CalendarGroups('AAMkAGI2TGuKAAA=')",
            "Id": "AAMkAGI2TGuKAAA=",
            "Name": "My Calendars",
            "ClassId": "0006f0b7-0000-0000-c000-000000000046",
            "ChangeKey": "nfZyf7VcrEKLNoU37KWlkQAAA0x0+g=="
        },
        {
            "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/CalendarGroups('AAMkAGI2TGuMAAA=')",
            "Id": "AAMkAGI2TGuMAAA=",
            "Name": "Other Calendars",
            "ClassId": "0006f0b8-0000-0000-c000-000000000046",
            "ChangeKey": "nfZyf7VcrEKLNoU37KWlkQAAA0x0/A=="
        }
    ]
}

Тип ответа

Запрошенный набор группы календарей.

Получение группы календарей

Минимальная требуемая область

Одно из следующих:

Получите группу календарей по идентификатору.

GET https://outlook.office.com/api/v2.0/me/calendargroups/{calendar_group_id}

Примечание

См. Параметры запроса OData для фильтрации, сортировки и разбиения на страницы.

Обязательный параметр Тип Описание
Параметры URL-адреса
calendar_group_id string Идентификатор группы календарей.

Пример запроса

GET https://outlook.office.com/api/v2.0/me/calendargroups/AAMkAGI2TGuKAAA=

Пример ответа

Код состояния: 200

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/CalendarGroups/$entity",
    "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/CalendarGroups('AAMkAGI2TGuKAAA=')",
    "Id": "AAMkAGI2TGuKAAA=",
    "Name": "My Calendars",
    "ClassId": "0006f0b7-0000-0000-c000-000000000046",
    "ChangeKey": "nfZyf7VcrEKLNoU37KWlkQAAA0x0+g=="
}

Тип ответа

Запрошенная группа календарей.

Создание групп календарей

Создание группы календарей. Имя является единственным записываемым свойством группы календарей.

Примечание

Outlook.com поддерживает только группу календарей по умолчанию, которая доступна с помощью ярлыка ../me/calendars. Не удастся создать другую группу календарей в Outlook.com.

Создание группы календарей

Минимальная требуемая область

Одно из следующих:

POST https://outlook.office.com/api/v2.0/me/calendargroups
Обязательный параметр Тип Описание
Параметр URL-адреса
Параметры текста сообщения
Имя string Имя группы календарей.

Пример запроса

POST https://outlook.office.com/api/v2.0/me/calendargroups
Content-Type: application/json

{
  "Name": "Birthdays"
}

Пример ответа

Код состояния: 201

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/CalendarGroups/$entity",
  "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/CalendarGroups('AAMkAGE0M4xLGAAA=')",
  "@odata.etag": "W/\"Jj9S59cHB0Wq4jXUzBgDvQAAFeN/Rw==\"",
  "Id": "AAMkAGE0M4xLGAAA=",
  "Name": "Birthdays",
  "ChangeKey": "Jj9S59cHB0Wq4jXUzBgDvQAAFeN/Rw==",
  "ClassId": "4d969bba-8942-42a0-ae33-c7d4410d1e11"
}

Тип ответа

Новая группа календарей.

Обновление групп календарей

Обновление группы календарей

Минимальная требуемая область

Одно из следующих:

Измените имя группы календарей. Имя является единственным записываемым свойством группы календарей.

PATCH https://outlook.office.com/api/v2.0/me/calendargroups/{calendar_group_id}
Обязательный параметр Тип Описание
Параметры URL-адреса
calendar_group_id string Идентификатор группы календарей.
Параметры текста сообщения
Имя string Имя обновленной группы календарей.

Пример запроса

PATCH https://outlook.office.com/api/v2.0/me/calendargroups/AAMkAGE0M4xLGAAA=
Content-Type: application/json

{
  "Name": "Holidays"
}

Пример ответа

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/CalendarGroups/$entity",
  "@odata.id": "https://https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/CalendarGroups('AAMkAGE0MGM4xLGAAA=')",
  "@odata.etag": "W/\"Jj9S59cHB0Wq4jXUzBgDvQAAFeN/SA==\"",
  "Id": "AAMkAGE0MGM4xLGAAA=",
  "Name": "Holidays",
  "ChangeKey": "Jj9S59cHB0Wq4jXUzBgDvQAAFeN/SA==",
  "ClassId": "4d969bba-8942-42a0-ae33-c7d4410d1e11"
}

Тип ответа

Обновленная группа календарей.

Удаление групп календарей

Примечание

Outlook.com поддерживает только группу календарей по умолчанию, которая доступна с помощью ярлыка ../me/calendars. Не удаляйте эту группу календарей.

Удаление группы календарей

Минимальная требуемая область

Одно из следующих:

DELETE https://outlook.office.com/api/v2.0/me/calendargroups/{calendar_group_id}
Обязательный параметр Тип Описание
Параметры URL-адреса
calendar_group_id string Идентификатор группы календарей.

Пример запроса

DELETE https://outlook.office.com/api/v2.0/me/calendargroups/AAMkAGE0MGM4xLGAAA=

Пример ответа

Status code: 204

Дальнейшие действия

Независимо от того, готовы ли вы приступить к созданию приложения или хотите изучить больше материалов, у нас есть все необходимое.

Или узнайте больше об использовании платформы Office 365 здесь: