サブスクリプションを作成する
名前空間: microsoft.graph
重要
Microsoft Graph の /beta
バージョンの API は変更される可能性があります。 実稼働アプリケーションでこれらの API を使用することは、サポートされていません。 v1.0 で API を使用できるかどうかを確認するには、バージョン セレクターを使用します。
変更の要求された種類が Microsoft Graph の指定されたリソースに発生したときに変更通知を受信するため、リスナー アプリケーションに登録します。
サブスクリプションを作成できるリソースとサブスクリプションの制限事項を特定するには、「 リソース データの変更に関する通知を設定する: サポートされているリソース」を参照してください。
一部のリソースでは、リッチ通知 、つまりリソース データを含む通知がサポートされています。 これらのリソースの詳細については、「 リソース データを含む変更通知を設定する: サポートされているリソース」を参照してください。
この API は、次の国内クラウド展開で使用できます。
グローバル サービス | 米国政府機関 L4 | 米国政府機関 L5 (DOD) | 21Vianet が運営する中国 |
---|---|---|---|
✅ | ✅ | ✅ | ✅ |
アクセス許可
サブスクリプションを作成するには、リソースに対する読み取りアクセス許可が必要です。 たとえば、メッセージの変更通知を取得するには、アプリに Mail.Read アクセス許可が必要です。
要求されたリソースとアクセス許可の種類 (委任およびアプリケーション) によっては、以下の表で指定されているアクセス許可がこの API を呼び出すために最小限必要な特権となります。 より多くの特権アクセス許可を選択する前に 注意する ことを含め、詳細については、[アクセス許可] で次のアクセス許可を検索してください。
注:
セキュリティ制限のため、Microsoft Graph サブスクリプションでは、読み取りアクセス許可のみが必要な場合、書き込みアクセス許可はサポートされません。
一部のリソースでは、複数のシナリオで変更通知がサポートされており、それぞれに異なるアクセス許可が必要な場合があります。 このような場合は、リソース パスを使用してシナリオを区別します。
* でマークされたアクセス許可は、リソース固有の同意を使用します。
サポートされているリソース | 委任 (職場または学校のアカウント) | 委任 (個人用 Microsoft アカウント) | アプリケーション |
---|---|---|---|
callRecord | サポートされていません。 | サポートされていません。 | CallRecords.Read.All |
callRecording communications/onlineMeetings/getAllRecordings すべての記録がテナントで使用できるようになります。 |
サポートされていません。 | サポートされていません。 | OnlineMeetingRecording.Read.All |
callRecording communications/onlineMeetings/{onlineMeetingId}/recordings すべての記録は、特定の会議で使用できるようになります。 |
OnlineMeetingRecording.Read.All | サポートされていません。 | OnlineMeetingRecording.Read.All |
callRecording users/{userId}/onlineMeetings/getAllRecordings すべての記録は、特定のユーザーが開催した会議で使用できるようになります。 |
OnlineMeetingRecording.Read.All | サポートされていません。 | OnlineMeetingRecording.Read.All |
callTranscript communications/onlineMeetings/getAllTranscripts すべてのトランスクリプトがテナントで使用できるようになります。 |
サポートされていません。 | サポートされていません。 | OnlineMeetingTranscript.Read.All |
callTranscript communications/onlineMeetings/{onlineMeetingId}/transcripts トランスクリプトは、特定の会議で使用できるようになります。 |
OnlineMeetingTranscript.Read.All | サポートされていません。 | OnlineMeetingTranscript.Read.All |
callTranscript users/{userId}/onlineMeetings/getAllTranscripts トランスクリプトは、特定のユーザーが開催した会議で使用できるようになります。 |
OnlineMeetingTranscript.Read.All | サポートされていません。 | OnlineMeetingTranscript.Read.All |
channel /teams/getAllChannels organization内のすべてのチャネル。 |
サポートされていません。 | サポートされていません。 | Channel.ReadBasic.All、ChannelSettings.Read.All |
channel /teams/{id}/channels organization内の特定のチームのすべてのチャネル。 |
Channel.ReadBasic.All、ChannelSettings.Read.All | サポートされていません。 | Channel.ReadBasic.All、ChannelSettings.Read.All |
チャット /chats organization内のすべてのチャット。 |
サポートされていません。 | サポートされていません。 | Chat.ReadBasic.All、 Chat.Read.All、 Chat.ReadWrite.All |
チャット /chats/{id} 特定のチャット。 |
Chat.ReadBasic、 Chat.Read、 Chat.ReadWrite | サポートされていません。 | ChatSettings.Read.Chat*, ChatSettings.ReadWrite.Chat*, Chat.Manage.Chat*, Chat.ReadBasic.All, Chat.Read.All, Chat.ReadWrite.All |
チャット /appCatalogs/teamsApps/{id}/installedToChats 特定の Teams アプリがインストールされているorganization内のすべてのチャット。 |
サポートされていません。 | サポートされていません。 | Chat.ReadBasic.WhereInstalled、Chat.Read.WhereInstalled、Chat.ReadWrite.WhereInstalled |
chatMessage /teams/{id}/channels/{id}/messages 特定のチャネルのすべてのメッセージと応答。 |
ChannelMessage.Read.All、Group.Read.All、Group.ReadWrite.All | サポートされていません。 | ChannelMessage.Read.Group*、ChannelMessage.Read.All |
chatMessage /teams/getAllMessages organization内のすべてのチャネル メッセージ。 |
サポートされていません。 | サポートされていません。 | ChannelMessage.Read.All |
chatMessage /chats/{id}/messages チャット内のすべてのメッセージ。 |
Chat.Read、Chat.ReadWrite | サポートされていません。 | Chat.Read.All |
chatMessage /chats/getAllMessages organization内のすべてのチャット メッセージ。 |
サポートされていません。 | サポートされていません。 | Chat.Read.All |
chatMessage /users/{id}/chats/getAllMessages 特定のユーザーが参加しているすべてのチャットに対するチャット メッセージ。 |
Chat.Read、Chat.ReadWrite | サポートされていません。 | Chat.Read.All、Chat.ReadWrite.All |
chatMessage /appCatalogs/teamsApps/{id}/installedToChats/getAllMessages 特定の Teams アプリがインストールされているorganization内のすべてのチャットのチャット メッセージ。 |
サポートされていません。 | サポートされていません。 | Chat.Read.WhereInstalled、Chat.ReadWrite.WhereInstalled |
contact | Contacts.Read | Contacts.Read | Contacts.Read |
conversationMember /chats/getAllMembers organization内のすべてのチャットのメンバー。 |
サポートされていません。 | サポートされていません。 | ChatMember.Read.All, ChatMember.ReadWrite.All, Chat.ReadBasic.All, Chat.Read.All, Chat.ReadWrite.All |
conversationMember /chats/{id}/members 特定のチャットのメンバー。 |
ChatMember.Read, ChatMember.ReadWrite, Chat.ReadBasic, Chat.Read, Chat.ReadWrite | サポートされていません。 | ChatMember.Read.Chat*, Chat.Manage.Chat*, ChatMember.Read.All, ChatMember.ReadWrite.All, Chat.ReadBasic.All, Chat.Read.All, Chat.ReadWrite.All |
conversationMember /appCatalogs/teamsApps/{id}/installedToChats/getAllMembers 特定の Teams アプリがインストールされているorganization内のすべてのチャットのチャット メンバー。 |
サポートされていません。 | サポートされていません。 | ChatMember.Read.WhereInstalled、ChatMember.ReadWrite.WhereInstalled、Chat.ReadBasic.WhereInstalled、Chat.Read.WhereInstalled、Chat.ReadWrite.WhereInstalled |
conversationMember /teams/getAllMembers organizationのすべてのチームのメンバー。 |
サポートされていません。 | サポートされていません。 | TeamMember.Read.All, TeamMember.ReadWrite.All |
conversationMember /teams/{id}/members 特定のチームのメンバー。 |
TeamMember.Read.All | サポートされていません。 | TeamMember.Read.All |
conversationMember /teams/{id}/channels/getAllMembers 特定のチームのすべてのプライベート チャネルのメンバー。 |
サポートされていません。 | サポートされていません。 | ChannelMember.Read.All |
conversationMember /teams/getAllChannels/getAllMembers |
サポートされていません。 | サポートされていません。 | ChannelMember.Read.All |
driveItem (ユーザーの個人用 OneDrive) | サポートされていません。 | Files.ReadWrite | サポートされていません。 |
driveItem (OneDrive for Business) | Files.ReadWrite.All | サポートされていません。 | Files.ReadWrite.All |
イベント | Calendars.Read | Calendars.Read | Calendars.Read |
グループ | Group.Read.All | サポートされていません。 | Group.Read.All |
グループ会話 | Group.Read.All | サポートされていません。 | サポートされていません。 |
リスト | Sites.ReadWrite.All | サポートされていません。 | Sites.ReadWrite.All |
メッセージ | Mail.ReadBasic, Mail.Read | Mail.ReadBasic, Mail.Read | Mail.Read |
オンライン会議 | サポートされていません。 | サポートされていません。 | OnlineMeetings.Read.All、OnlineMeetings.ReadWrite.All |
プレゼンス | Presence.Read.All | サポートされていません。 | サポートされていません。 |
printer | サポートされていません。 | サポートされていません。 | Printer.Read.All, Printer.ReadWrite.All |
printTaskDefinition | サポートされていません。 | サポートされていません。 | PrintTaskDefinition.ReadWrite.All |
セキュリティの警告 | SecurityEvents.ReadWrite.All | サポートされていません。 | SecurityEvents.ReadWrite.All |
team /teams organization内のすべてのチーム。 |
サポートされていません。 | サポートされていません。 | Team.ReadBasic.All、TeamSettings.Read.All |
team /teams/{id} 特定のチーム。 |
Team.ReadBasic.All、TeamSettings.Read.All | サポートされていません。 | Team.ReadBasic.All、TeamSettings.Read.All |
todoTask | Tasks.ReadWrite | Tasks.ReadWrite | サポートされていません。 |
user | User.Read.All | User.Read.All | User.Read.All |
baseTask (非推奨) | Tasks.ReadWrite | Tasks.ReadWrite | サポートされていません。 |
chatMessage
chatMessage サブスクリプションは、リソース データを含めるように指定できます。 リソース データを含めるように指定した場合 (includeResourceData を true
に設定)、暗号化が必要です。 そのようなサブスクリプションに encryptionCertificate が指定されていない場合、サブスクリプションの作成は失敗します。
要求ヘッダーを使用して、Prefer: include-unknown-enum-members
chatMessagemessageTypeの進化可能な列挙型systemEventMessage
の for と /chats/{id}/messages
resource で次の値を/teams/{id}/channels/{id}/messages
取得する必要があります。
注:
/teams/getAllMessages
、 /chats/getAllMessages
、 /me/chats/getAllMessages
、 /users/{id}/chats/getAllMessages
および /appCatalogs/teamsApps/{id}/installedToChats/getAllMessages
は従量制課金 API です。 支払いモデルとライセンス要件が 適用される場合があります。
/teams/getAllMessages
と /chats/getAllMessages
の両方model=A
のmodel=B
支払いモデル、、/me/chats/getAllMessages
/users/{id}/chats/getAllMessages
、および のみがサポートmodel=B
されます/appCatalogs/teamsApps/{id}/installedToChats/getAllMessages
。
クエリで支払いモデルを指定しない場合は、既定の 評価モード が使用されます。
注:
変更通知のサブスクライブされたリソースの支払いモデルを追加または変更するには、新しい支払いモデルを使用して新しい変更通知サブスクリプションを作成する必要があります。既存の変更通知の更新は機能しません。
conversationMember
conversationMember サブスクリプションを指定して、リソース データを含めることができます。 リソース データを含めるように指定した場合 (includeResourceData を true
に設定)、暗号化が必要です。 encryptionCertificateが指定されていない場合、サブスクリプションの作成は失敗します。
注:
/teams/getAllMembers
、 /chats/getAllMembers
、および /appCatalogs/teamsApps/{id}/installedToChats/getAllMembers
は従量制課金 API です。 支払いモデルとライセンス要件が 適用される場合があります。
/teams/getAllMembers
と /chats/getAllMembers
支払いモデルの両方 model=A
を model=B
サポートします。 /appCatalogs/teamsApps/{id}/installedToChats/getAllMembers
は のみを model=B
サポートします。
クエリで支払いモデルを指定しない場合は、既定の 評価モード が使用されます。
注:
変更通知のサブスクライブされたリソースの支払いモデルを追加または変更するには、新しい支払いモデルを使用して新しい変更通知サブスクリプションを作成する必要があります。既存の変更通知の更新は機能しません。
チーム、チャネル、チャット
チーム、 チャネル、 チャット サブスクリプションを指定して、リソース データを含めることができます。 リソース データを含めるように指定した場合 (includeResourceData を true
に設定)、暗号化が必要です。 encryptionCertificateが指定されていない場合、サブスクリプションの作成は失敗します。
注:
/appCatalogs/teamsApps/{id}/installedToChats
には 、ライセンスと支払いの要件があり、特に のみを model=B
サポートしています。
モデルが指定されていない場合は、評価モードが使用されます。
注:
変更通知のサブスクライブされたリソースの支払いモデルを追加または変更するには、新しい支払いモデルを使用して新しい変更通知サブスクリプションを作成する必要があります。既存の変更通知の更新は機能しません。
要求の例
要求本文の リソース プロパティで、model
クエリ パラメーターを指定します。
POST https://graph.microsoft.com/v1.0/subscriptions
Content-type: application/json
{
"changeType": "created",
"notificationUrl": "https://webhook.azurewebsites.net/api/send/myNotifyClient",
"resource": "chats/getAllMessages?model=A",
"expirationDateTime":"2016-11-20T18:23:45.9356913Z",
"clientState": "secretClientValue",
"latestSupportedTlsVersion": "v1_2"
}
driveItem
OneDrive アイテムのサブスクリプションには、その他の制限事項が適用されます。 この制限は、サブスクリプションの作成および管理 (取得、更新、削除) に適用されます。
個人用 OneDrive では、そのドライブのルート フォルダーまたは任意のサブフォルダーにサブスクライブできます。 OneDrive for Business の場合、サブスクライブできるのはルート フォルダーのみです。 変更通知は、サブスクライブされたフォルダー、またはその階層内の任意のファイル、フォルダー、またはその他の driveItem インスタンスに対して要求された変更に対して送信されます。 個々のファイルなど、フォルダーではない drive または driveItem インスタンスをサブスクライブすることはできません。
OneDrive for Business と SharePoint は、driveItem で発生するセキュリティ イベントのアプリケーション通知の送信をサポートします。 これらのイベントをサブスクライブするには、prefer:includesecuritywebhooks
ヘッダーを要求に追加してサブスクリプションを作成します。 サブスクリプションが作成された後、アイテムに対するアクセス許可が変更されたときに通知を受け取ります。 このヘッダーは SharePoint と OneDrive for Business に適用されますが、コンシューマー OneDrive アカウントには適用されません。
連絡先、イベント、メッセージ
Outlook の連絡先、 イベント、または メッセージ リソースの変更をサブスクライブし、必要に応じて POST 要求ペイロードに、暗号化されたリソース データを通知に含めるかどうかを指定できます。
サブスクリプションの作成と管理 (取得、更新、および削除) には、リソースの読み取りスコープが必要です。 たとえば、メッセージに関する変更通知を受信するには、アプリに Mail.Read アクセス許可が必要です。 Outlook 変更通知は、委任されたアクセス許可スコープとアプリケーション アクセス許可スコープをサポートします。 次の制限がある点に注意してください。
委任されたアクセス許可では、サインインしているユーザーのメールボックス内のフォルダーにあるアイテムのみをサブスクライブできます。 たとえば、委任されたアクセス許可 Calendars.Read を使用して、別のユーザーのメールボックス内のイベントをサブスクライブすることはできません。
共有または委任フォルダーの Outlook 連絡先、イベント、メッセージの変更通知をサブスクライブするには、次のようにします。
- 対応するアプリケーション アクセス許可を使用して、テナントの任意のユーザーのフォルダーまたはメールボックス内にあるアイテムの変更をサブスクライブします。
- Outlook 共有アクセス許可 (Contacts.Read.Shared、Calendars.Read.Shared、Mail.Read.Shared、およびその読み取り/書き込みに対応するアクセス許可) は使用しないでください。これは、共有フォルダーまたは委任されたフォルダー内のアイテムに対する通知の変更のサブスクライブをサポート していないため です。
onlineMeetings, プレゼンス
onlineMeetings とプレゼンスのサブスクリプションでは、暗号化されたリソース データを含む通知のサブスクリプションを作成するときに、encryptionCertificate プロパティと encryptionCertificateId プロパティが必要です。 詳細については、「 リソース データを含むように変更通知を設定する」を参照してください。 オンライン会議サブスクリプションの詳細については、「オンライン会議 の変更通知を取得する」を参照してください。
HTTP 要求
POST /subscriptions
要求ヘッダー
名前 | 種類 | 説明 |
---|---|---|
Authorization | string | ベアラー {token}。 必須です。 |
要求本文
要求本文で、subscription オブジェクトの JSON 表記を指定します。
応答
成功した場合、このメソッドは 201 Created
応答コードと応答本文の サブスクリプション オブジェクトを返します。
エラーがどのように返されるかの詳細については、「エラー応答」を参照してください。
例
要求
要求本文で、subscription オブジェクトの JSON 表記を指定します。
clientState
と latestSupportedTlsVersion
フィールドは省略可能です。
この要求により、現在サインインしているユーザーが受信した新しいメールに関する変更通知のサブスクリプションが作成されます。
POST https://graph.microsoft.com/beta/subscriptions
Content-type: application/json
{
"changeType": "created",
"notificationUrl": "https://webhook.azurewebsites.net/api/send/myNotifyClient",
"resource": "me/mailFolders('Inbox')/messages",
"expirationDateTime":"2016-11-20T18:23:45.9356913Z",
"clientState": "secretClientValue",
"latestSupportedTlsVersion": "v1_2"
}
要求本文で、subscription オブジェクトの JSON 表記を指定します。
clientState
と latestSupportedTlsVersion
フィールドは省略可能です。
重複するサブスクリプションの動作
重複するサブスクリプションは許可されません。 サブスクリプション要求に、既存のサブスクリプションに含まれている changeType と リソース に同じ値が含まれている場合、要求は HTTP エラー コード 409 Conflict
、およびエラー メッセージ Subscription Id <> already exists for the requested combination
で失敗します。
リソースの例
リソース プロパティの有効な値を次に示します。
リソースの種類 | 例 |
---|---|
callRecord | communications/callRecords |
callRecording | communications/onlineMeetings/getAllRecordings , communications/onlineMeetings/{onlineMeetingId}/recordings , users/{userId}/onlineMeetings/getAllRecordings |
callTranscript | communications/onlineMeetings/getAllTranscripts , communications/onlineMeetings/{onlineMeetingId}/transcripts , users/{userId}/onlineMeetings/getAllTranscripts |
channel | /teams/getAllChannels , /teams/{id}/channels |
チャット | /chats , /chats/{id} |
chatMessage | chats/{id}/messages , chats/getAllMessages , teams/{id}/channels/{id}/messages , teams/getAllMessages |
contact | me/contacts |
conversationMember | /chats/{id}/members , /chats/getAllMembers , /teams/{id}/members , /teams/getAllMembers , /teams/{id}/channels/getAllMembers |
driveItem | me/drive/root |
イベント | me/events |
グループ | groups |
グループ会話 | groups('{id}')/conversations |
リスト | sites/{site-id}/lists/{list-id} |
message | me/mailfolders('inbox')/messages , me/messages |
オンライン会議 | /communications/onlineMeetings/?$filter=JoinWebUrl eq '{JoinWebUrl}' |
プレゼンス | /communications/presences/{id} (単一ユーザー)、/communications/presences?$filter=id in ('{id}','{id}',…) (複数のユーザー) |
printer | print/printers/{id}/jobs |
printTaskDefinition | print/taskDefinitions/{id}/tasks |
team | /teams , /teams/{id} |
user | users |
todoTask | /me/todo/lists/{todoTaskListId}/tasks |
セキュリティの警告 | security/alerts?$filter=status eq 'NewAlert' |
baseTask (非推奨) | /me/tasks/lists/{Id}/tasks |
注:
me
で始まるパスは、me
ではなくusers/{id}
でも使用して、現在のユーザーではなく特定のユーザーをターゲットにすることができます。
応答
次の例は応答を示しています。
注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。
HTTP/1.1 201 Created
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#subscriptions/$entity",
"id": "7f105c7d-2dc5-4530-97cd-4e7ae6534c07",
"resource": "me/mailFolders('Inbox')/messages",
"applicationId": "24d3b144-21ae-4080-943f-7067b395b913",
"changeType": "created",
"clientState": "secretClientValue",
"notificationUrl": "https://webhook.azurewebsites.net/api/send/myNotifyClient",
"expirationDateTime": "2016-11-20T18:23:45.9356913Z",
"creatorId": "8ee44408-0679-472c-bc2a-692812af3437",
"latestSupportedTlsVersion": "v1_2",
"notificationContentType": "application/json"
}
通知エンドポイントの検証
サブスクリプション通知エンドポイント ( notificationUrl プロパティで指定) は、「 ユーザー データの変更に対する通知を設定する」で説明されているように、検証要求に応答できる必要があります。 検証に失敗した場合、サブスクリプションを作成する要求は「400 要求が正しくありません」というエラーを返します。