イベント: デルタ

名前空間: microsoft.graph

重要

Microsoft Graph の /beta バージョンの API は変更される可能性があります。 実稼働アプリケーションでこれらの API を使用することは、サポートされていません。 v1.0 で API を使用できるかどうかを確認するには、Version セレクターを使用します。

1 つ以上の予定表で追加、削除、または更新された 一連のイベント リソースを取得します。

メールボックスまたは特定の予定表のすべての予定表、またはカレンダーの calendarView のイベント コレクション (開始日と終了日によって定義されるイベントの範囲) のイベントで、これらの増分変更の特定の種類を取得できます。 予定表には、既定の予定表またはユーザーに属するその他の指定された予定表を指定できます。 calendarView で増分変更を取得する場合、予定表はグループ予定表にもなります。

通常、ローカル ストアの calendar または calendarView のイベントを同期するには、複数の デルタ 関数呼び出しのラウンドが伴います。 最初の呼び出しは完全同期で、同じラウンドの後続の 差分 呼び出しはすべて増分の変更 (追加、削除、更新) を取得します。 差分を使用すると、指定した予定表内のイベントのローカル ストアを増分維持および同期できます。

次の表は、カレンダーの calendarView のイベントデル関数とデル関数の違いを示しています。

イベントのデルタ関数 calendarView のデルタ関数
開始日と終了日の範囲に縛られずに、カレンダー内のすべてのイベントの増分変更を取得します。 または、開始時刻で境界を指定して、その日時以降に開始するカレンダー内のイベントの増分変更を取得することもできます。 calendarView の開始日時と終了日時内のイベントの増分変更を取得します。
パフォーマンス上の理由から、 イベント プロパティの 限られたセットのみを返します。 クライアントは後で GET /events/{id} を使用してイベントを展開します。 サーバー側の拡張では、 より完全なイベント プロパティのセットが返されます。
応答には、単一インスタンスと定期的なシリーズ マスターが含まれます。 応答には、単一のインスタンス、定期的な一連の発生と例外が含まれます。
ユーザー予定表のイベントに適用されますが、グループ予定表には適用されません。 ユーザーおよびグループの予定表のイベントに適用されます。
現在ベータ版でのみ利用可能です。 v1.0 バージョンとベータ バージョンで利用できます。

この API は、次の国内クラウド展開で使用できます。

グローバル サービス 米国政府機関 L4 米国政府機関 L5 (DOD) 21Vianet が運営する中国

アクセス許可

この API の最小特権としてマークされているアクセス許可またはアクセス許可を選択します。 アプリで必要な場合にのみ、より高い特権のアクセス許可またはアクセス許可を使用します。 委任されたアクセス許可とアプリケーションのアクセス許可の詳細については、「アクセス許可の種類」を参照してください。 これらのアクセス許可の詳細については、「アクセス許可のリファレンス」を参照してください。

アクセス許可の種類 最小特権アクセス許可 より高い特権のアクセス許可
委任 (職場または学校のアカウント) Calendars.ReadBasic Calendars.Read、Calendars.ReadWrite
委任 (個人用 Microsoft アカウント) Calendars.ReadBasic Calendars.Read、Calendars.ReadWrite
アプリケーション Calendars.Read Calendars.ReadBasic、Calendars.ReadWrite

HTTP 要求

このセクションでは、指定した予定表または予定表ビュー内のすべてのイベントを取得する完全同期を開始する最初の デルタ 関数呼び出しの HTTP 要求構文を示します。 この構文には 、状態トークンは含まれていません。

成功した応答の @odata.nextLink または @odata.deltaLink で返されるクエリ URL には、状態トークンが含まれます。 後続の デルタ 関数呼び出しでは、 @odata.nextLink またはその前の @odata.deltaLink でクエリ URL を使用します。

ユーザー予定表のイベントのデルタ関数 (プレビュー)

指定したユーザー予定表内の特定の日時以降に開始するすべてのイベントまたはイベントに デルタ 関数を適用します。

  • すべてのイベント、または ユーザーのメールボックスで指定された日時以降に開始するイベントの増分変更を取得するには、次の操作を行います。

    GET /me/events/delta
    GET /users/{id | userPrincipalName}/events/delta
    
    GET /me/events/delta?startDateTime={start_datetime}
    GET /users/{id | userPrincipalName}/events/delta?startDateTime={start_datetime}
    
  • すべてのイベント、または ユーザーの既定の予定表の指定された日時以降に開始するイベントの増分変更を取得するには、次の操作を行います。

    GET /me/calendar/events/delta
    GET /users/{id | userPrincipalName}/calendar/events/delta
    
    GET /me/calendar/events/delta?startDateTime={start_datetime}
    GET /users/{id | userPrincipalName}/calendar/events/delta?startDateTime={start_datetime}
    
  • すべてのイベント、 または指定されたユーザー カレンダーの指定された日時以降に開始するイベントの増分変更を取得するには、次の操作を行います。

    GET /me/calendars/{id}/events/delta
    GET /users/{id | userPrincipalName}/calendars/{id}/events/delta
    
    GET /me/calendars/{id}/events/delta?startDateTime={start_datetime}
    GET /users/{id | userPrincipalName}/calendars/{id}/events/delta?startDateTime={start_datetime}
    
  • 指定した 予定表グループおよび予定表で、すべてのイベント、または指定した日付/時刻以降に始まるイベントの増分変更を取得するには:

    GET /me/calendarGroups/{id}/calendars/{id}/events/delta
    GET /users/{id | userPrincipalName}/calendarGroups/{id}/calendars/{id}/events/delta
    
    GET /me/calendarGroups/{id}/calendars/{id}/events/delta?startDateTime={start_datetime}
    GET /users/{id | userPrincipalName}/calendarGroups/{id}/calendars/{id}/events/delta?startDateTime={start_datetime}
    

カレンダーのデルタ関数ユーザー予定表の表示

指定したユーザー予定表の、開始日時と終了日時で区切られたイベントの範囲に デルタ 関数を適用します。

  • ユーザーの既定の予定表の予定表ビューで増分変更を取得するには、次の操作を行います。

    GET /me/calendarView/delta?startDateTime={start_datetime}&endDateTime={end_datetime}
    GET /users/{id}/calendarView/delta?startDateTime={start_datetime}&endDateTime={end_datetime}
    
  • 指定したユーザー予定表の予定表ビューで増分変更を取得するには、次の操作を行います。

    GET /me/calendars/{id}/calendarView/delta?startDateTime={start_datetime}&endDateTime={end_datetime}
    GET /users/{id}/calendars/{id}/calendarView/delta?startDateTime={start_datetime}&endDateTime={end_datetime}
    

予定表のデルタ関数グループ予定表で表示する

  • グループの予定表の予定表ビューで増分変更を取得するには:
    GET /groups/{id}/calendarView?startDateTime={start_datetime}&endDateTime={end_datetime}
    

クエリ パラメーター

変更を追跡すると、1 つ以上の デルタ 関数呼び出しがラウンドで発生します。 任意のクエリ パラメーター ($deltatoken$skiptoken以外) を使用する場合は、最初のデルタ要求でこれを指定する必要があります。 Microsoft Graph は、応答で提供される @odata.nextLink または @odata.deltaLink の URL のトークン部分に指定したパラメーターを自動的にエンコードします。 必要なクエリ パラメーターを前もって 1 回指定しておくだけで済みます。 その後の要求では、前の応答で得られた @odata.nextLink@odata.deltaLink の URL をコピーして適用します。エンコード済みの必要なパラメーターがこの URL に既に含まれているためです。

クエリ パラメーター 種類 説明
startDateTime String 時間範囲の開始日時は、ISO 8601 形式で表されます。 たとえば、"2019-11-08T19:00:00-08:00" です。
タイムゾーンはパラメーター値のタイムゾーン オフセット部分で指定され、存在する場合は Prefer: outlook.timezone ヘッダーの影響を受けません。 値にタイムゾーン オフセットが含まれない場合は、UTC として解釈されます。
予定表のイベントの 差分 では省略可能です。
calendarView差分に必要です。
endDateTime String 時間範囲の終了日時は、ISO 8601 形式で表されます。 たとえば、"2019-11-08T20:00:00-08:00" です。
タイムゾーンは、パラメーター値のタイムゾーン オフセット部分で指定され、 Prefer: outlook.timezone ヘッダーが存在する場合は、その影響を受けません。 値にタイムゾーン オフセットが含まれない場合は、UTC として解釈されます。
予定表のイベントの差分ではサポートされません
calendarView差分に必要です。
$deltatoken string 同じ予定表ビューの以前のデルタ関数呼び出しの@odata.deltaLink URL で返される状態トークン。変更追跡のそのラウンドの完了を示します。 このトークンを含む @odata.deltaLink URL 全体を保存し、その予定表ビューに対する次の変更追跡の最初の要求に適用します。
$skiptoken string 前のデルタ関数呼び出しの @odata.nextLink URL 内で返された状態トークンで、同じカレンダー ビュー内に追跡されるべきさらなる変化があることを示しています。

OData クエリ パラメーター

  • calendarView での delta 関数の呼び出しは、通常の GET /calendarView 要求で取得するものと同じプロパティを返すことを予想します。 $select を使用して、これらのプロパティのサブセットのみを取得することはできません。

  • delta 関数は、ユーザーの予定表のイベントまたは calendarView のイベントに対するクエリ パラメーター ($expand$filter$orderby$search$select) をサポートしていません。

要求ヘッダー

名前 説明
Authorization string ベアラー {token}。 必須です。 認証と認可についての詳細をご覧ください。
Content-Type string application/json. Required.
Prefer string odata.maxpagesize={x} です。 省略可能。
Prefer string outlook.timezone={タイム ゾーン文字列}. 省略可能。存在しない場合は UTC が想定されます。

応答

イベントのデルタ関数 (プレビュー)

成功した場合、このメソッドは応答本文で 200 OK 応答コードと イベント コレクションを返します。 パフォーマンス上の理由から、応答の各 イベント には IDTypeStart、および End の各プロパティのみが含まれています。 後で GET /events/{id} を使用して、応答からイベントを展開します。

calendarView のデルタ関数

成功した場合、このメソッドは応答本文で 200 OK 応答コードと イベント コレクションを返します。

通常、 GET /calendarView 要求から取得するすべてのプロパティを取得することが想定されます。

calendarView の日付範囲によってバインドされたデルタ関数呼び出しのラウンド内で、デルタ呼び出しが @removed の下に 2 種類のイベントを返し、その理由deletedを見つける場合があります。

  • 日付範囲内にあり、前回の デルタ 呼び出し以降に削除されたイベント。
  • 日付範囲 で、前回の デルタ 呼び出し以降に追加、削除、または更新されたイベント。

シナリオで必要とされる日付範囲の @removed 以下のイベントをフィルター処理します。

例 1: カレンダー内のイベントのデルタ関数 (プレビュー)

要求

次の例は、サインインしているユーザーの既定の予定表でイベントを取得するための最初の同期要求を示しています。このイベントは、指定された startDateTime パラメーター以降に発生します。 最初の要求には、状態トークンは含まれていません。

要求は Prefer: odata.maxpagesize ヘッダーを使用して、各応答のイベントの最大数を 1 に制限します。 応答で@odata.deltaLinkが得られるまで、@odata.nextLink で返されたクエリを使用して delta 関数の呼び出しを続行します。

GET https://graph.microsoft.com/beta/me/calendar/events/delta?startDateTime=2020-06-12T00:00:00Z

Prefer: odata.maxpagesize=1

応答

要求が成功した場合、応答には状態トークンが含まれます。この状態トークンは、 skipToken ( @odata.nextLink 応答ヘッダー内) または deltaToken ( @odata.deltaLink 応答ヘッダー内) のいずれかです。 それぞれ、ラウンドを続行する必要があるか、そのラウンドのすべての変更の取得を完了したかを示します。

以下の応答は、@odata.nextLink 応答ヘッダーに含まれる skipToken を示しています。

HTTP/1.1 200 OK
Content-type: application/json

{
  "@odata.nextLink":"https://graph.microsoft.com/beta/me/calendar/events/delta?$skiptoken=R0usmcdvmMu7jxWP8",
  "value": [
    {
      "id": " AAMkADllMWMwNDkzLWJlY2EtNDIyOS1iZjAA=",
      "type": "singleInstance",
      "start": {
             "DateTime": "2020-02-19T10:00:00.0000000", 
             "TimeZone": "UTC"
         }, 
       "end": {
                "DateTime": "2020-02-19T11:00:00.0000000", 
                "TimeZone": "UTC"      
          } 
        }
  ]
}

例 2: calendarView のデルタ関数

要求

次の例は、サインインしているユーザーの指定した予定表のイベントを、 calendarView で示された日付の範囲内で取得するための初期同期要求を示しています。 最初の要求には、状態トークンは含まれていません。

要求は Prefer: odata.maxpagesize ヘッダーを使用して、各応答のイベントの最大数を 2 に制限します。 @odata.nextLink で返されたクエリを使用して delta 関数の呼び出しを続行し、その予定表ビューのすべてのイベントと応答の@odata.deltaLinkを取得します。

GET https://graph.microsoft.com/beta/me/calendars/AAMkADI5M1BbeAAA=/calendarView/delta?startDateTime=2020-06-01T00:00:00Z&endDateTime=2020-06-10T00:00:00Z

Prefer: odata.maxpagesize=2

応答

要求が成功した場合、応答には状態トークンが含まれます。この状態トークンは、 skipToken ( @odata.nextLink 応答ヘッダー内) または deltaToken ( @odata.deltaLink 応答ヘッダー内) のいずれかです。 それぞれ、ラウンドを続行する必要があるか、そのラウンドのすべての変更の取得を完了したかを示します。

次の応答では、@odata.nextLink 応答ヘッダーに skipToken が表示されます。

注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(event)",
    "@odata.nextLink": "https://graph.microsoft.com/beta/me/calendars/AAMkADI5M1BbeAAA=/calendarView/delta?$skiptoken=R0usmcdvmMu7jxWP8",
    "value": [
        {
            "@odata.type": "#microsoft.graph.event",
            "@odata.etag": "W/\"Jdsb3FEkPk2qoUHCdliYowACwixTgw==\"",
            "createdDateTime": "2020-06-16T04:05:43.8668791Z",
            "lastModifiedDateTime": "2020-06-16T04:08:27.354268Z",
            "changeKey": "Jdsb3FEkPk2qoUHCdliYowACwixTgw==",
            "categories": [],
            "transactionId": null,
            "originalStartTimeZone": "Pacific Standard Time",
            "originalEndTimeZone": "Pacific Standard Time",
            "uid": "040000008200E00074C5B7101A82E00800000000F088B8B95843D601000000000000000010000000165CD5547CFC9545B6492B261750B48C",
            "reminderMinutesBeforeStart": 15,
            "isReminderOn": false,
            "hasAttachments": false,
            "subject": "Summer party",
            "bodyPreview": "",
            "importance": "normal",
            "sensitivity": "normal",
            "isAllDay": false,
            "isCancelled": false,
            "isOrganizer": true,
            "IsRoomRequested": false,
            "AutoRoomBookingStatus": "None",
            "responseRequested": true,
            "seriesMasterId": null,
            "showAs": "busy",
            "type": "singleInstance",
            "webLink": "https://outlook.office365.com/owa/?itemid=AAMkADI5MAAKkeE1QAAA%3D&exvsurl=1&path=/calendar/item",
            "onlineMeetingUrl": null,
            "isOnlineMeeting": false,
            "onlineMeetingProvider": "unknown",
            "allowNewTimeProposals": true,
            "OccurrenceId": null,
            "isDraft": false,
            "recurrence": null,
            "AutoRoomBookingOptions": null,
            "onlineMeeting": null,
            "id": "AAMkADI5MAAKkeE1QAAA=",
            "responseStatus": {
                "response": "none",
                "time": "0001-01-01T00:00:00Z"
            },
            "body": {
                "contentType": "html",
                "content": "<html>\r\n<head></head>\r\n<body lang=\"EN-US\" link=\"#0563C1\" vlink=\"#954F72\" style=\"\">\r\n<div class=\"WordSection1\">\r\n<p class=\"MsoNormal\">&nbsp;</p>\r\n</div>\r\n</body>\r\n</html>\r\n"
            },
            "start": {
                "dateTime": "2020-06-02T20:00:00.0000000",
                "timeZone": "UTC"
            },
            "end": {
                "dateTime": "2020-06-02T22:30:00.0000000",
                "timeZone": "UTC"
            },
            "location": {
                "displayName": "",
                "locationType": "default",
                "uniqueIdType": "unknown",
                "address": {
                    "type": "unknown"
                },
                "coordinates": {}
            },
            "locations": [],
            "attendees": [
                {
                    "type": "required",
                    "status": {
                        "response": "none",
                        "time": "0001-01-01T00:00:00Z"
                    },
                    "emailAddress": {
                        "name": "Samantha Booth",
                        "address": "samanthab@contoso.com"
                    }
                }
            ],
            "organizer": {
                "emailAddress": {
                    "name": "Samantha Booth",
                    "address": "samanthab@contoso.com"
                }
            }
        },
        {
            "@odata.type": "#microsoft.graph.event",
            "@odata.etag": "W/\"Jdsb3FEkPk2qoUHCdliYowACwixTfw==\"",
            "createdDateTime": "2020-06-16T04:06:18.386713Z",
            "lastModifiedDateTime": "2020-06-16T04:08:19.5694048Z",
            "changeKey": "Jdsb3FEkPk2qoUHCdliYowACwixTfw==",
            "categories": [],
            "transactionId": null,
            "originalStartTimeZone": "Pacific Standard Time",
            "originalEndTimeZone": "Pacific Standard Time",
            "uid": "040000008200E00074C5B7101A82E0080000000060074BC55843D6010000000000000000100000002D33A89F36B10D43A12FD990B62858B2",
            "reminderMinutesBeforeStart": 15,
            "isReminderOn": true,
            "hasAttachments": false,
            "subject": "Summer party part 2",
            "bodyPreview": "",
            "importance": "normal",
            "sensitivity": "normal",
            "isAllDay": false,
            "isCancelled": false,
            "isOrganizer": true,
            "IsRoomRequested": false,
            "AutoRoomBookingStatus": "None",
            "responseRequested": true,
            "seriesMasterId": null,
            "showAs": "busy",
            "type": "singleInstance",
            "webLink": "https://outlook.office365.com/owa/?itemid=AAMkADI5MAAKkeE1RAAA%3D&exvsurl=1&path=/calendar/item",
            "onlineMeetingUrl": null,
            "isOnlineMeeting": false,
            "onlineMeetingProvider": "unknown",
            "allowNewTimeProposals": true,
            "OccurrenceId": null,
            "isDraft": false,
            "recurrence": null,
            "AutoRoomBookingOptions": null,
            "onlineMeeting": null,
            "id": "AAMkADI5MAAKkeE1RAAA=",
            "responseStatus": {
                "response": "none",
                "time": "0001-01-01T00:00:00Z"
            },
            "body": {
                "contentType": "html",
                "content": "<html>\r\n<head></head>\r\n<body lang=\"EN-US\" link=\"#0563C1\" vlink=\"#954F72\" style=\"\">\r\n<div class=\"WordSection1\">\r\n<p class=\"MsoNormal\">&nbsp;</p>\r\n</div>\r\n</body>\r\n</html>\r\n"
            },
            "start": {
                "dateTime": "2020-06-04T19:30:00.0000000",
                "timeZone": "UTC"
            },
            "end": {
                "dateTime": "2020-06-04T22:30:00.0000000",
                "timeZone": "UTC"
            },
            "location": {
                "displayName": "",
                "locationType": "default",
                "uniqueIdType": "unknown",
                "address": {
                    "type": "unknown"
                },
                "coordinates": {}
            },
            "locations": [],
            "attendees": [
                {
                    "type": "required",
                    "status": {
                        "response": "none",
                        "time": "0001-01-01T00:00:00Z"
                    },
                    "emailAddress": {
                        "name": "Samantha Booth",
                        "address": "samanthab@contoso.com"
                    }
                }
            ],
            "organizer": {
                "emailAddress": {
                    "name": "Samantha Booth",
                    "address": "samanthab@contoso.com"
                }
            }
        }
    ]
}