From 430160bf817527c70a490be25548c68b17ea23c4 Mon Sep 17 00:00:00 2001 From: Pruthvi Kantevari Date: Mon, 16 Dec 2024 16:14:27 +0530 Subject: [PATCH 01/36] documentation changes for supporting get transcript and recording graph apis for channel meetings --- api-reference/beta/api/callrecording-get.md | 5 ++- api-reference/beta/api/calltranscript-get.md | 5 ++- .../beta/api/onlinemeeting-list-recordings.md | 5 ++- .../api/onlinemeeting-list-transcripts.md | 6 ++-- ...ations-callrecording-and-calltranscript.md | 34 ++++++++++++++----- 5 files changed, 42 insertions(+), 13 deletions(-) diff --git a/api-reference/beta/api/callrecording-get.md b/api-reference/beta/api/callrecording-get.md index 7fed8abb7f6..8b37bdbbaf9 100644 --- a/api-reference/beta/api/callrecording-get.md +++ b/api-reference/beta/api/callrecording-get.md @@ -14,7 +14,7 @@ Namespace: microsoft.graph [!INCLUDE [beta-disclaimer](../../includes/beta-disclaimer.md)] -Get a [callRecording](../resources/callrecording.md) object associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API doesn't support getting call recordings from channel meetings. +Get a [callRecording](../resources/callrecording.md) object associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API supports getting call recordings from private meetings, channel meetings. For a recording, this API returns the metadata of the single recording associated with the online meeting. For the content of a recording, this API returns the stream of bytes associated with the recording. @@ -22,6 +22,7 @@ For a recording, this API returns the metadata of the single recording associate > > * This is a metered API. For more information, see [payment models for meeting APIs](/graph/teams-licenses#payment-models-for-meeting-apis). > * This API doesn't support meetings created by using the [create onlineMeeting API](/graph/api/application-post-onlinemeetings) that are not associated with an event on the user's calendar. +> * This API might not return call recording if there are multiple meetings scheduled under a single channel post thread. > * This API works differently in one or more national clouds. For details, see [Microsoft Teams API implementation differences in national clouds](/graph/teamwork-national-cloud-differences). [!INCLUDE [national-cloud-support](../../includes/global-only.md)] @@ -41,11 +42,13 @@ Choose the permission or permissions marked as least privileged for this API. Us > > * In delegated permission scenarios, [getting callRecording content](#example-2-get-callrecording-content) is supported only for the meeting organizer. Meeting participants don't have permission to download meeting recordings. For more information, see [permissions or role-based access](/microsoftteams/tmr-meeting-recording-change). Tenant admins can unblock meeting participants to download meeting recordings. For more information, see [block the download of Teams meeting recording files](/MicrosoftTeams/block-download-meeting-recording). > * The application permission `OnlineMeetingRecording.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). +> * This permission is applicable only for scheduleed private meetings, not for channel meetings. To use application permissions for this API, tenant administrators must create an application access policy and grant it to a user. It authorizes the app configured in the policy to fetch online meetings or online meeting artifacts on behalf of that user (with the user ID specified in the request path). For more information, see [Allow applications to access online meetings on behalf of a user](/graph/cloud-communication-online-meeting-application-access-policy). > [!NOTE] > This API works only for a meeting that hasn't expired. For more information, see [Limits and specifications for Microsoft Teams](/microsoftteams/limits-specifications-teams#meeting-expiration). +> This API works only for users who are part of the meeting calendar invite(applicable to both private, channel meetings). ## HTTP request diff --git a/api-reference/beta/api/calltranscript-get.md b/api-reference/beta/api/calltranscript-get.md index b04a869d809..2416cdfbfb9 100644 --- a/api-reference/beta/api/calltranscript-get.md +++ b/api-reference/beta/api/calltranscript-get.md @@ -14,7 +14,7 @@ Namespace: microsoft.graph [!INCLUDE [beta-disclaimer](../../includes/beta-disclaimer.md)] -Retrieve a [callTranscript](../resources/calltranscript.md) object associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API doesn't support getting call transcripts from channel meetings. +Retrieve a [callTranscript](../resources/calltranscript.md) object associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md).This API supports getting call transcripts from private meetings, channel meetings. Retrieving the transcript returns the metadata of the single transcript associated with the online meeting. Retrieving the content of the transcript returns the stream of text associated with the transcript. @@ -22,6 +22,7 @@ Retrieving the transcript returns the metadata of the single transcript associat > > * This is a metered API. For more information, see [payment models for meeting APIs](/graph/teams-licenses#payment-models-for-meeting-apis). > * This API doesn't support meetings created using the [create onlineMeeting API](/graph/api/application-post-onlinemeetings) that are not associated with an event on the user's calendar. +> * This API might not return call transcript if there are multiple meetings scheduled under a single channel post thread. > * This API works differently in one or more national clouds. For details, see [Implementation differences in national clouds](/graph/teamwork-national-cloud-differences). > * If you want to retrieve meeting transcripts, use the [Create event](../api/user-post-events.md#example-5-create-and-enable-an-event-as-an-online-meeting) API instead. @@ -39,11 +40,13 @@ Choose the permission or permissions marked as least privileged for this API. Us |Application|OnlineMeetingTranscript.Read.All, OnlineMeetingTranscript.Read.Chat|Not available.| > **Note:** The application permission `OnlineMeetingTranscript.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). +> This permission is applicable only for scheduled private meetings, not for channel meetings. To use application permissions for this API, tenant administrators must create an application access policy and grant it to a user. It authorizes the app configured in the policy to fetch online meetings and/or online meeting artifacts on behalf of that user (with the user ID specified in the request path). For more information, see [Allow applications to access online meetings on behalf of a user](/graph/cloud-communication-online-meeting-application-access-policy). > [!NOTE] > This API works for a meeting only if the meeting has not expired. For more information, see [Limits and specifications for Microsoft Teams](/microsoftteams/limits-specifications-teams#meeting-expiration). +> This API works only for users who are part of the meeting calendar invite(applicable to both private, channel meetings). ## HTTP request diff --git a/api-reference/beta/api/onlinemeeting-list-recordings.md b/api-reference/beta/api/onlinemeeting-list-recordings.md index b73b81b41bb..afb9229f698 100644 --- a/api-reference/beta/api/onlinemeeting-list-recordings.md +++ b/api-reference/beta/api/onlinemeeting-list-recordings.md @@ -14,10 +14,11 @@ Namespace: microsoft.graph [!INCLUDE [beta-disclaimer](../../includes/beta-disclaimer.md)] -Get the list of [callRecording](../resources/callrecording.md) objects associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API doesn't support getting call recordings from channel meetings. +Get the list of [callRecording](../resources/callrecording.md) objects associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API supports getting call recordings from private meetings, channel meetings. > [!NOTE] > * This API doesn't support meetings created using the [create onlineMeeting API](/graph/api/application-post-onlinemeetings) that are not associated with an event on the user's calendar. +> * This API might not give complete results if there are multiple meetings scheduled under a single channel post thread. > * This API works differently in one or more national clouds. For details, see [Microsoft Teams API implementation differences in national clouds](/graph/teamwork-national-cloud-differences). [!INCLUDE [national-cloud-support](../../includes/global-only.md)] @@ -34,11 +35,13 @@ Choose the permission or permissions marked as least privileged for this API. Us |Application|OnlineMeetingRecording.Read.All, OnlineMeetingRecording.Read.Chat|Not available.| > **Note:** The application permission `OnlineMeetingRecording.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). +> This permission is applicable only for scheduled private meetings, not for channel meetings. To use application permission for this API, tenant administrators must create an application access policy and grant it to a user. It authorizes the app configured in the policy to fetch online meetings or online meeting artifacts on behalf of that user (with the user ID specified in the request path). For more information, see [Allow applications to access online meetings on behalf of a user](/graph/cloud-communication-online-meeting-application-access-policy). > [!NOTE] > This API works only for a meeting that hasn't expired. For more information, see [Limits and specifications for Microsoft Teams](/microsoftteams/limits-specifications-teams#meeting-expiration). +> This API works only for users who are part of the meeting calendar invite(applicable to both private, channel meetings). ## HTTP request diff --git a/api-reference/beta/api/onlinemeeting-list-transcripts.md b/api-reference/beta/api/onlinemeeting-list-transcripts.md index 3e0549eb7d5..a26df34f444 100644 --- a/api-reference/beta/api/onlinemeeting-list-transcripts.md +++ b/api-reference/beta/api/onlinemeeting-list-transcripts.md @@ -14,10 +14,11 @@ Namespace: microsoft.graph [!INCLUDE [beta-disclaimer](../../includes/beta-disclaimer.md)] -Retrieve the list of [callTranscript](../resources/calltranscript.md) objects associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API doesn't support getting call transcripts from channel meetings. +Retrieve the list of [callTranscript](../resources/calltranscript.md) objects associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API supports getting call transcripts from private meetings, channel meetings. > [!NOTE] > * This API doesn't support meetings created using the [create onlineMeeting API](/graph/api/application-post-onlinemeetings) that are not associated with an event on the user's calendar. +> * This API might not give complete results if there are multiple meetings scheduled under a single channel post thread. > * This API works differently in one or more national clouds. For details, see [Microsoft Teams API implementation differences in national clouds](/graph/teamwork-national-cloud-differences). [!INCLUDE [national-cloud-support](../../includes/global-only.md)] @@ -34,12 +35,13 @@ Choose the permission or permissions marked as least privileged for this API. Us |Application|OnlineMeetingTranscript.Read.All, OnlineMeetingTranscript.Read.Chat|Not available.| > **Note:** The application permission `OnlineMeetingTranscript.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). +> This permission is applicable only for scheduled private meetings, not for channel meetings. To use application permissions for this API, tenant administrators must create an application access policy and grant it to a user. It authorizes the app configured in the policy to fetch online meetings or online meeting artifacts on behalf of that user (with the user ID specified in the request path). For more information, see [Allow applications to access online meetings on behalf of a user](/graph/cloud-communication-online-meeting-application-access-policy). > [!NOTE] > This API works for a meeting only if the meeting has not expired. For more information, see [Limits and specifications for Microsoft Teams](/microsoftteams/limits-specifications-teams#meeting-expiration). - +> This API works only for users who are part of the meeting calendar invite(applicable to both private, channel meetings). ## HTTP request diff --git a/concepts/teams-changenotifications-callrecording-and-calltranscript.md b/concepts/teams-changenotifications-callrecording-and-calltranscript.md index 05a7185c9e3..8c2856bf81f 100644 --- a/concepts/teams-changenotifications-callrecording-and-calltranscript.md +++ b/concepts/teams-changenotifications-callrecording-and-calltranscript.md @@ -19,7 +19,10 @@ This article describes scenarios for the **transcript** and **recording** resour ## Subscribe to transcripts available at the tenant-level -To get change notifications for any transcript available for any online meeting in a tenant, subscribe to `communications/onlineMeetings/getAllTranscripts`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. The notification for a transcript is sent only if the subscription happens before the transcription starts. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting) but not channel meetings. +To get change notifications for any transcript available for any online meeting in a tenant, subscribe to `communications/onlineMeetings/getAllTranscripts`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. The notification for a transcript is sent only if the subscription happens before the transcription starts. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting). + +> [!NOTE] +> This subscription supports channel meetings on the /beta endpoint. ### Permissions @@ -54,7 +57,10 @@ Content-Type: application/json ## Subscribe to transcripts available for a particular online meeting -To get change notifications for any transcript available for a particular online meeting, subscribe to `communications/onlineMeetings/{onlineMeetingId}/transcripts`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. The notification for a transcript is sent only if the subscription happens before the transcription starts. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting) but not channel meetings. +To get change notifications for any transcript available for a particular online meeting, subscribe to `communications/onlineMeetings/{onlineMeetingId}/transcripts`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. The notification for a transcript is sent only if the subscription happens before the transcription starts. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting). + +> [!NOTE] +> This subscription supports channel meetings on the /beta endpoint. ### Permissions @@ -67,7 +73,7 @@ One of the following permissions is required to subscribe to `communications/onl | Application | OnlineMeetingTranscript.Read.Chat, OnlineMeetingTranscript.Read.All | > [!NOTE] -> - The OnlineMeetingTranscript.Read.Chat permission uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). +> - The OnlineMeetingTranscript.Read.Chat permission uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). This permission is applicable only for scheduled private meetings, not for channel meetings. > - To subscribe to any transcript available for a particular online meeting by using only required [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent) permissions, use the `useResourceSpecificConsentBasedAuthorization=true` query parameter with your resource string. ### Example 1: Subscribe to transcripts available for a particular online meeting using classic permissions @@ -108,7 +114,10 @@ Content-Type: application/json ``` ## Subscribe to transcripts available at the user level -To get change notifications for any transcript available for any online meeting organized by a specific user, subscribe to `users/{userId}/onlineMeetings/getAllTranscripts`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. The notification for a transcript is sent only if the subscription happens before the transcription starts. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting) but not channel meetings. +To get change notifications for any transcript available for any online meeting organized by a specific user, subscribe to `users/{userId}/onlineMeetings/getAllTranscripts`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. The notification for a transcript is sent only if the subscription happens before the transcription starts. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting). + +> [!NOTE] +> This subscription supports channel meetings on the /beta endpoint. ### Permissions @@ -199,7 +208,10 @@ Content-Type: application/json ## Subscribe to recordings available at the tenant level -To get change notifications for any recording available for any online meeting in a tenant, subscribe to `communications/onlineMeetings/getAllRecordings`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting) but not channel meetings. +To get change notifications for any recording available for any online meeting in a tenant, subscribe to `communications/onlineMeetings/getAllRecordings`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting). + +> [!NOTE] +> This subscription supports channel meetings on the /beta endpoint. ### Permissions @@ -234,7 +246,10 @@ Content-Type: application/json ## Subscribe to recordings available for a particular online meeting -To get change notifications for any recording available for a particular online meeting, subscribe to `communications/onlineMeetings/{onlineMeetingId}/recordings`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting) but not channel meetings. +To get change notifications for any recording available for a particular online meeting, subscribe to `communications/onlineMeetings/{onlineMeetingId}/recordings`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting). + +> [!NOTE] +> This subscription supports channel meetings on the /beta endpoint. ### Permissions @@ -247,7 +262,7 @@ One of the following permissions is required to subscribe to `communications/onl | Application | OnlineMeetingRecording.Read.Chat, OnlineMeetingRecording.Read.All | > [!NOTE] -> - The OnlineMeetingRecording.Read.Chat permission uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). +> - The OnlineMeetingRecording.Read.Chat permission uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). This permission is applicable only for scheduled private meetings, not for channel meetings. > - To subscribe to any recording available for a particular online meeting using only required [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent) permissions, use the `useResourceSpecificConsentBasedAuthorization=true` query parameter with your resource string. ### Example 1: Subscribe to recordings available for a particular online meeting using classic permissions @@ -290,7 +305,10 @@ Content-Type: application/json ## Subscribe to recordings available at the user level -To get change notifications for any recording available for any online meeting organized by a specific user, subscribe to `users/{userId}/onlineMeetings/getAllRecordings`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting) but not channel meetings. +To get change notifications for any recording available for any online meeting organized by a specific user, subscribe to `users/{userId}/onlineMeetings/getAllRecordings`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting). + +> [!NOTE] +> This subscription supports channel meetings on the /beta endpoint. ### Permissions From b9790c86d6841f6d61fe647b99cfd92af9c0ae52 Mon Sep 17 00:00:00 2001 From: Pruthvi Kantevari Date: Mon, 16 Dec 2024 16:57:12 +0530 Subject: [PATCH 02/36] resolve comments --- api-reference/beta/api/callrecording-get.md | 6 +++--- api-reference/beta/api/calltranscript-get.md | 6 +++--- api-reference/beta/api/onlinemeeting-list-recordings.md | 6 +++--- api-reference/beta/api/onlinemeeting-list-transcripts.md | 4 ++-- ...-changenotifications-callrecording-and-calltranscript.md | 4 ++-- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/api-reference/beta/api/callrecording-get.md b/api-reference/beta/api/callrecording-get.md index 8b37bdbbaf9..3bb352000f7 100644 --- a/api-reference/beta/api/callrecording-get.md +++ b/api-reference/beta/api/callrecording-get.md @@ -14,7 +14,7 @@ Namespace: microsoft.graph [!INCLUDE [beta-disclaimer](../../includes/beta-disclaimer.md)] -Get a [callRecording](../resources/callrecording.md) object associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API supports getting call recordings from private meetings, channel meetings. +Get a [callRecording](../resources/callrecording.md) object associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API supports getting call recordings from private chat meetings, channel meetings. For a recording, this API returns the metadata of the single recording associated with the online meeting. For the content of a recording, this API returns the stream of bytes associated with the recording. @@ -42,13 +42,13 @@ Choose the permission or permissions marked as least privileged for this API. Us > > * In delegated permission scenarios, [getting callRecording content](#example-2-get-callrecording-content) is supported only for the meeting organizer. Meeting participants don't have permission to download meeting recordings. For more information, see [permissions or role-based access](/microsoftteams/tmr-meeting-recording-change). Tenant admins can unblock meeting participants to download meeting recordings. For more information, see [block the download of Teams meeting recording files](/MicrosoftTeams/block-download-meeting-recording). > * The application permission `OnlineMeetingRecording.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). -> * This permission is applicable only for scheduleed private meetings, not for channel meetings. +> * This permission is applicable only for scheduled private chat meetings, not for channel meetings. To use application permissions for this API, tenant administrators must create an application access policy and grant it to a user. It authorizes the app configured in the policy to fetch online meetings or online meeting artifacts on behalf of that user (with the user ID specified in the request path). For more information, see [Allow applications to access online meetings on behalf of a user](/graph/cloud-communication-online-meeting-application-access-policy). > [!NOTE] > This API works only for a meeting that hasn't expired. For more information, see [Limits and specifications for Microsoft Teams](/microsoftteams/limits-specifications-teams#meeting-expiration). -> This API works only for users who are part of the meeting calendar invite(applicable to both private, channel meetings). +> This API works only for users who are part of the meeting calendar invite(applicable to both private chat meetings, channel meetings). ## HTTP request diff --git a/api-reference/beta/api/calltranscript-get.md b/api-reference/beta/api/calltranscript-get.md index 2416cdfbfb9..4f1dd2b33f6 100644 --- a/api-reference/beta/api/calltranscript-get.md +++ b/api-reference/beta/api/calltranscript-get.md @@ -14,7 +14,7 @@ Namespace: microsoft.graph [!INCLUDE [beta-disclaimer](../../includes/beta-disclaimer.md)] -Retrieve a [callTranscript](../resources/calltranscript.md) object associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md).This API supports getting call transcripts from private meetings, channel meetings. +Retrieve a [callTranscript](../resources/calltranscript.md) object associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md).This API supports getting call transcripts from private chat meetings, channel meetings. Retrieving the transcript returns the metadata of the single transcript associated with the online meeting. Retrieving the content of the transcript returns the stream of text associated with the transcript. @@ -40,13 +40,13 @@ Choose the permission or permissions marked as least privileged for this API. Us |Application|OnlineMeetingTranscript.Read.All, OnlineMeetingTranscript.Read.Chat|Not available.| > **Note:** The application permission `OnlineMeetingTranscript.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). -> This permission is applicable only for scheduled private meetings, not for channel meetings. +> This permission is applicable only for scheduled private chat meetings, not for channel meetings. To use application permissions for this API, tenant administrators must create an application access policy and grant it to a user. It authorizes the app configured in the policy to fetch online meetings and/or online meeting artifacts on behalf of that user (with the user ID specified in the request path). For more information, see [Allow applications to access online meetings on behalf of a user](/graph/cloud-communication-online-meeting-application-access-policy). > [!NOTE] > This API works for a meeting only if the meeting has not expired. For more information, see [Limits and specifications for Microsoft Teams](/microsoftteams/limits-specifications-teams#meeting-expiration). -> This API works only for users who are part of the meeting calendar invite(applicable to both private, channel meetings). +> This API works only for users who are part of the meeting calendar invite(applicable to both private chat meetings, channel meetings). ## HTTP request diff --git a/api-reference/beta/api/onlinemeeting-list-recordings.md b/api-reference/beta/api/onlinemeeting-list-recordings.md index afb9229f698..ebb6965edf2 100644 --- a/api-reference/beta/api/onlinemeeting-list-recordings.md +++ b/api-reference/beta/api/onlinemeeting-list-recordings.md @@ -14,7 +14,7 @@ Namespace: microsoft.graph [!INCLUDE [beta-disclaimer](../../includes/beta-disclaimer.md)] -Get the list of [callRecording](../resources/callrecording.md) objects associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API supports getting call recordings from private meetings, channel meetings. +Get the list of [callRecording](../resources/callrecording.md) objects associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API supports getting call recordings from private chat meetings, channel meetings. > [!NOTE] > * This API doesn't support meetings created using the [create onlineMeeting API](/graph/api/application-post-onlinemeetings) that are not associated with an event on the user's calendar. @@ -35,13 +35,13 @@ Choose the permission or permissions marked as least privileged for this API. Us |Application|OnlineMeetingRecording.Read.All, OnlineMeetingRecording.Read.Chat|Not available.| > **Note:** The application permission `OnlineMeetingRecording.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). -> This permission is applicable only for scheduled private meetings, not for channel meetings. +> This permission is applicable only for scheduled private chat meetings, not for channel meetings. To use application permission for this API, tenant administrators must create an application access policy and grant it to a user. It authorizes the app configured in the policy to fetch online meetings or online meeting artifacts on behalf of that user (with the user ID specified in the request path). For more information, see [Allow applications to access online meetings on behalf of a user](/graph/cloud-communication-online-meeting-application-access-policy). > [!NOTE] > This API works only for a meeting that hasn't expired. For more information, see [Limits and specifications for Microsoft Teams](/microsoftteams/limits-specifications-teams#meeting-expiration). -> This API works only for users who are part of the meeting calendar invite(applicable to both private, channel meetings). +> This API works only for users who are part of the meeting calendar invite(applicable to both private chat meetings, channel meetings). ## HTTP request diff --git a/api-reference/beta/api/onlinemeeting-list-transcripts.md b/api-reference/beta/api/onlinemeeting-list-transcripts.md index a26df34f444..4065b8cc5e7 100644 --- a/api-reference/beta/api/onlinemeeting-list-transcripts.md +++ b/api-reference/beta/api/onlinemeeting-list-transcripts.md @@ -14,7 +14,7 @@ Namespace: microsoft.graph [!INCLUDE [beta-disclaimer](../../includes/beta-disclaimer.md)] -Retrieve the list of [callTranscript](../resources/calltranscript.md) objects associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API supports getting call transcripts from private meetings, channel meetings. +Retrieve the list of [callTranscript](../resources/calltranscript.md) objects associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API supports getting call transcripts from private chat meetings, channel meetings. > [!NOTE] > * This API doesn't support meetings created using the [create onlineMeeting API](/graph/api/application-post-onlinemeetings) that are not associated with an event on the user's calendar. @@ -35,7 +35,7 @@ Choose the permission or permissions marked as least privileged for this API. Us |Application|OnlineMeetingTranscript.Read.All, OnlineMeetingTranscript.Read.Chat|Not available.| > **Note:** The application permission `OnlineMeetingTranscript.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). -> This permission is applicable only for scheduled private meetings, not for channel meetings. +> This permission is applicable only for scheduled private chat meetings, not for channel meetings. To use application permissions for this API, tenant administrators must create an application access policy and grant it to a user. It authorizes the app configured in the policy to fetch online meetings or online meeting artifacts on behalf of that user (with the user ID specified in the request path). For more information, see [Allow applications to access online meetings on behalf of a user](/graph/cloud-communication-online-meeting-application-access-policy). diff --git a/concepts/teams-changenotifications-callrecording-and-calltranscript.md b/concepts/teams-changenotifications-callrecording-and-calltranscript.md index 8c2856bf81f..50dd78e5541 100644 --- a/concepts/teams-changenotifications-callrecording-and-calltranscript.md +++ b/concepts/teams-changenotifications-callrecording-and-calltranscript.md @@ -73,7 +73,7 @@ One of the following permissions is required to subscribe to `communications/onl | Application | OnlineMeetingTranscript.Read.Chat, OnlineMeetingTranscript.Read.All | > [!NOTE] -> - The OnlineMeetingTranscript.Read.Chat permission uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). This permission is applicable only for scheduled private meetings, not for channel meetings. +> - The OnlineMeetingTranscript.Read.Chat permission uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). This permission is applicable only for scheduled private chat meetings, not for channel meetings. > - To subscribe to any transcript available for a particular online meeting by using only required [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent) permissions, use the `useResourceSpecificConsentBasedAuthorization=true` query parameter with your resource string. ### Example 1: Subscribe to transcripts available for a particular online meeting using classic permissions @@ -262,7 +262,7 @@ One of the following permissions is required to subscribe to `communications/onl | Application | OnlineMeetingRecording.Read.Chat, OnlineMeetingRecording.Read.All | > [!NOTE] -> - The OnlineMeetingRecording.Read.Chat permission uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). This permission is applicable only for scheduled private meetings, not for channel meetings. +> - The OnlineMeetingRecording.Read.Chat permission uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). This permission is applicable only for scheduled private chat meetings, not for channel meetings. > - To subscribe to any recording available for a particular online meeting using only required [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent) permissions, use the `useResourceSpecificConsentBasedAuthorization=true` query parameter with your resource string. ### Example 1: Subscribe to recordings available for a particular online meeting using classic permissions From 1a90a97a2a5b1a6c508ac9c39de230d765905c5f Mon Sep 17 00:00:00 2001 From: Pruthvi Kantevari Date: Mon, 16 Dec 2024 16:58:27 +0530 Subject: [PATCH 03/36] resolve comments --- api-reference/beta/api/onlinemeeting-list-transcripts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-reference/beta/api/onlinemeeting-list-transcripts.md b/api-reference/beta/api/onlinemeeting-list-transcripts.md index 4065b8cc5e7..9568780e927 100644 --- a/api-reference/beta/api/onlinemeeting-list-transcripts.md +++ b/api-reference/beta/api/onlinemeeting-list-transcripts.md @@ -41,7 +41,7 @@ To use application permissions for this API, tenant administrators must create a > [!NOTE] > This API works for a meeting only if the meeting has not expired. For more information, see [Limits and specifications for Microsoft Teams](/microsoftteams/limits-specifications-teams#meeting-expiration). -> This API works only for users who are part of the meeting calendar invite(applicable to both private, channel meetings). +> This API works only for users who are part of the meeting calendar invite(applicable to both private chat meetings, channel meetings). ## HTTP request From 6509e9437aedfb214f5f049187d2f359045d6d2f Mon Sep 17 00:00:00 2001 From: Jarbas Horst Date: Tue, 17 Dec 2024 21:57:31 +0100 Subject: [PATCH 04/36] Update callrecording-get.md --- api-reference/beta/api/callrecording-get.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/api-reference/beta/api/callrecording-get.md b/api-reference/beta/api/callrecording-get.md index 3bb352000f7..2f9a1b72cf8 100644 --- a/api-reference/beta/api/callrecording-get.md +++ b/api-reference/beta/api/callrecording-get.md @@ -14,7 +14,7 @@ Namespace: microsoft.graph [!INCLUDE [beta-disclaimer](../../includes/beta-disclaimer.md)] -Get a [callRecording](../resources/callrecording.md) object associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API supports getting call recordings from private chat meetings, channel meetings. +Get a [callRecording](../resources/callrecording.md) object associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API supports the retrieval of call recordings from private chat meetings and channel meetings. For a recording, this API returns the metadata of the single recording associated with the online meeting. For the content of a recording, this API returns the stream of bytes associated with the recording. @@ -22,7 +22,7 @@ For a recording, this API returns the metadata of the single recording associate > > * This is a metered API. For more information, see [payment models for meeting APIs](/graph/teams-licenses#payment-models-for-meeting-apis). > * This API doesn't support meetings created by using the [create onlineMeeting API](/graph/api/application-post-onlinemeetings) that are not associated with an event on the user's calendar. -> * This API might not return call recording if there are multiple meetings scheduled under a single channel post thread. +> * This API might not return a call recording if multiple meetings are scheduled under a single channel post thread. > * This API works differently in one or more national clouds. For details, see [Microsoft Teams API implementation differences in national clouds](/graph/teamwork-national-cloud-differences). [!INCLUDE [national-cloud-support](../../includes/global-only.md)] @@ -42,13 +42,13 @@ Choose the permission or permissions marked as least privileged for this API. Us > > * In delegated permission scenarios, [getting callRecording content](#example-2-get-callrecording-content) is supported only for the meeting organizer. Meeting participants don't have permission to download meeting recordings. For more information, see [permissions or role-based access](/microsoftteams/tmr-meeting-recording-change). Tenant admins can unblock meeting participants to download meeting recordings. For more information, see [block the download of Teams meeting recording files](/MicrosoftTeams/block-download-meeting-recording). > * The application permission `OnlineMeetingRecording.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). -> * This permission is applicable only for scheduled private chat meetings, not for channel meetings. +> * This permission applies only to scheduled private chat meetings, not to channel meetings. To use application permissions for this API, tenant administrators must create an application access policy and grant it to a user. It authorizes the app configured in the policy to fetch online meetings or online meeting artifacts on behalf of that user (with the user ID specified in the request path). For more information, see [Allow applications to access online meetings on behalf of a user](/graph/cloud-communication-online-meeting-application-access-policy). > [!NOTE] -> This API works only for a meeting that hasn't expired. For more information, see [Limits and specifications for Microsoft Teams](/microsoftteams/limits-specifications-teams#meeting-expiration). -> This API works only for users who are part of the meeting calendar invite(applicable to both private chat meetings, channel meetings). +> * This API is available for a meeting that hasn't expired. For more information, see [Limits and specifications for Microsoft Teams](/microsoftteams/limits-specifications-teams#meeting-expiration). +> * This API is also available to users who are part of the meeting calendar invite, which applies to both private chat meetings and channel meetings. ## HTTP request From 39127bc60d2584286732c8e229b438fdf1a5c7f3 Mon Sep 17 00:00:00 2001 From: Jarbas Horst Date: Tue, 17 Dec 2024 22:02:52 +0100 Subject: [PATCH 05/36] Update calltranscript-get.md --- api-reference/beta/api/calltranscript-get.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/api-reference/beta/api/calltranscript-get.md b/api-reference/beta/api/calltranscript-get.md index 4f1dd2b33f6..a46604e9414 100644 --- a/api-reference/beta/api/calltranscript-get.md +++ b/api-reference/beta/api/calltranscript-get.md @@ -14,7 +14,7 @@ Namespace: microsoft.graph [!INCLUDE [beta-disclaimer](../../includes/beta-disclaimer.md)] -Retrieve a [callTranscript](../resources/calltranscript.md) object associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md).This API supports getting call transcripts from private chat meetings, channel meetings. +Retrieve a [callTranscript](../resources/calltranscript.md) object associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API supports the retrieval of call transcripts from private chat meetings and channel meetings. Retrieving the transcript returns the metadata of the single transcript associated with the online meeting. Retrieving the content of the transcript returns the stream of text associated with the transcript. @@ -22,7 +22,7 @@ Retrieving the transcript returns the metadata of the single transcript associat > > * This is a metered API. For more information, see [payment models for meeting APIs](/graph/teams-licenses#payment-models-for-meeting-apis). > * This API doesn't support meetings created using the [create onlineMeeting API](/graph/api/application-post-onlinemeetings) that are not associated with an event on the user's calendar. -> * This API might not return call transcript if there are multiple meetings scheduled under a single channel post thread. +> * This API might not return a call transcript if multiple meetings are scheduled under a single channel post thread. > * This API works differently in one or more national clouds. For details, see [Implementation differences in national clouds](/graph/teamwork-national-cloud-differences). > * If you want to retrieve meeting transcripts, use the [Create event](../api/user-post-events.md#example-5-create-and-enable-an-event-as-an-online-meeting) API instead. @@ -39,14 +39,15 @@ Choose the permission or permissions marked as least privileged for this API. Us |Delegated (personal Microsoft account)|Not supported.|Not supported.| |Application|OnlineMeetingTranscript.Read.All, OnlineMeetingTranscript.Read.Chat|Not available.| -> **Note:** The application permission `OnlineMeetingTranscript.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). -> This permission is applicable only for scheduled private chat meetings, not for channel meetings. +> **Note:** +> * The application permission `OnlineMeetingTranscript.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). +> * This permission applies only to scheduled private chat meetings, not to channel meetings. To use application permissions for this API, tenant administrators must create an application access policy and grant it to a user. It authorizes the app configured in the policy to fetch online meetings and/or online meeting artifacts on behalf of that user (with the user ID specified in the request path). For more information, see [Allow applications to access online meetings on behalf of a user](/graph/cloud-communication-online-meeting-application-access-policy). > [!NOTE] -> This API works for a meeting only if the meeting has not expired. For more information, see [Limits and specifications for Microsoft Teams](/microsoftteams/limits-specifications-teams#meeting-expiration). -> This API works only for users who are part of the meeting calendar invite(applicable to both private chat meetings, channel meetings). +> * This API is available for a meeting that hasn't expired. For more information, see [Limits and specifications for Microsoft Teams](/microsoftteams/limits-specifications-teams#meeting-expiration). +> * This API is also available to users who are part of the meeting calendar invite, which applies to both private chat meetings and channel meetings. ## HTTP request From 4495402206b8fc06287a12c65be12dfeaa9ec0c4 Mon Sep 17 00:00:00 2001 From: Jarbas Horst Date: Tue, 17 Dec 2024 22:07:01 +0100 Subject: [PATCH 06/36] Update onlinemeeting-list-recordings.md --- .../beta/api/onlinemeeting-list-recordings.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/api-reference/beta/api/onlinemeeting-list-recordings.md b/api-reference/beta/api/onlinemeeting-list-recordings.md index ebb6965edf2..c79f209be5e 100644 --- a/api-reference/beta/api/onlinemeeting-list-recordings.md +++ b/api-reference/beta/api/onlinemeeting-list-recordings.md @@ -14,11 +14,11 @@ Namespace: microsoft.graph [!INCLUDE [beta-disclaimer](../../includes/beta-disclaimer.md)] -Get the list of [callRecording](../resources/callrecording.md) objects associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API supports getting call recordings from private chat meetings, channel meetings. +Get the list of [callRecording](../resources/callrecording.md) objects associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API supports the retrieval of call recordings from private chat meetings and channel meetings. > [!NOTE] > * This API doesn't support meetings created using the [create onlineMeeting API](/graph/api/application-post-onlinemeetings) that are not associated with an event on the user's calendar. -> * This API might not give complete results if there are multiple meetings scheduled under a single channel post thread. +> * This API might not return all results if multiple meetings are scheduled under a single channel post thread. > * This API works differently in one or more national clouds. For details, see [Microsoft Teams API implementation differences in national clouds](/graph/teamwork-national-cloud-differences). [!INCLUDE [national-cloud-support](../../includes/global-only.md)] @@ -34,14 +34,15 @@ Choose the permission or permissions marked as least privileged for this API. Us |Delegated (personal Microsoft account)|Not supported.|Not supported.| |Application|OnlineMeetingRecording.Read.All, OnlineMeetingRecording.Read.Chat|Not available.| -> **Note:** The application permission `OnlineMeetingRecording.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). -> This permission is applicable only for scheduled private chat meetings, not for channel meetings. +> **Note:** +> * The application permission `OnlineMeetingRecording.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). +> * This permission applies only to scheduled private chat meetings, not to channel meetings. To use application permission for this API, tenant administrators must create an application access policy and grant it to a user. It authorizes the app configured in the policy to fetch online meetings or online meeting artifacts on behalf of that user (with the user ID specified in the request path). For more information, see [Allow applications to access online meetings on behalf of a user](/graph/cloud-communication-online-meeting-application-access-policy). > [!NOTE] -> This API works only for a meeting that hasn't expired. For more information, see [Limits and specifications for Microsoft Teams](/microsoftteams/limits-specifications-teams#meeting-expiration). -> This API works only for users who are part of the meeting calendar invite(applicable to both private chat meetings, channel meetings). +> * This API is available for a meeting that hasn't expired. For more information, see [Limits and specifications for Microsoft Teams](/microsoftteams/limits-specifications-teams#meeting-expiration). +> * This API is also available to users who are part of the meeting calendar invite, which applies to both private chat meetings and channel meetings. ## HTTP request From 753f24694e7ecbc67d308e77ec46d36fc0a7dc21 Mon Sep 17 00:00:00 2001 From: Jarbas Horst Date: Tue, 17 Dec 2024 22:16:38 +0100 Subject: [PATCH 07/36] Update onlinemeeting-list-transcripts.md --- .../beta/api/onlinemeeting-list-transcripts.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/api-reference/beta/api/onlinemeeting-list-transcripts.md b/api-reference/beta/api/onlinemeeting-list-transcripts.md index 9568780e927..02df400c442 100644 --- a/api-reference/beta/api/onlinemeeting-list-transcripts.md +++ b/api-reference/beta/api/onlinemeeting-list-transcripts.md @@ -14,11 +14,11 @@ Namespace: microsoft.graph [!INCLUDE [beta-disclaimer](../../includes/beta-disclaimer.md)] -Retrieve the list of [callTranscript](../resources/calltranscript.md) objects associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API supports getting call transcripts from private chat meetings, channel meetings. +Retrieve the list of [callTranscript](../resources/calltranscript.md) objects associated with a scheduled [onlineMeeting](../resources/onlinemeeting.md). This API supports the retrieval of call transcripts from private chat meetings and channel meetings. > [!NOTE] > * This API doesn't support meetings created using the [create onlineMeeting API](/graph/api/application-post-onlinemeetings) that are not associated with an event on the user's calendar. -> * This API might not give complete results if there are multiple meetings scheduled under a single channel post thread. +> * This API might not return all results if multiple meetings are scheduled under a single channel post thread. > * This API works differently in one or more national clouds. For details, see [Microsoft Teams API implementation differences in national clouds](/graph/teamwork-national-cloud-differences). [!INCLUDE [national-cloud-support](../../includes/global-only.md)] @@ -34,14 +34,16 @@ Choose the permission or permissions marked as least privileged for this API. Us |Delegated (personal Microsoft account)|Not supported.|Not supported.| |Application|OnlineMeetingTranscript.Read.All, OnlineMeetingTranscript.Read.Chat|Not available.| -> **Note:** The application permission `OnlineMeetingTranscript.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). -> This permission is applicable only for scheduled private chat meetings, not for channel meetings. +> **Note:** +> * The application permission `OnlineMeetingTranscript.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). +> * This permission applies only to scheduled private chat meetings, not to channel meetings. To use application permissions for this API, tenant administrators must create an application access policy and grant it to a user. It authorizes the app configured in the policy to fetch online meetings or online meeting artifacts on behalf of that user (with the user ID specified in the request path). For more information, see [Allow applications to access online meetings on behalf of a user](/graph/cloud-communication-online-meeting-application-access-policy). > [!NOTE] -> This API works for a meeting only if the meeting has not expired. For more information, see [Limits and specifications for Microsoft Teams](/microsoftteams/limits-specifications-teams#meeting-expiration). -> This API works only for users who are part of the meeting calendar invite(applicable to both private chat meetings, channel meetings). +> * This API is available for a meeting that hasn't expired. For more information, see [Limits and specifications for Microsoft Teams](/microsoftteams/limits-specifications-teams#meeting-expiration). +> * This API is also available to users who are part of the meeting calendar invite, which applies to both private chat meetings and channel meetings. + ## HTTP request From f07559ef16104623b9999e8b50f43448a90f9659 Mon Sep 17 00:00:00 2001 From: Jarbas Horst Date: Tue, 17 Dec 2024 22:26:26 +0100 Subject: [PATCH 08/36] Update teams-changenotifications-callrecording-and-calltranscript.md --- ...ations-callrecording-and-calltranscript.md | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/concepts/teams-changenotifications-callrecording-and-calltranscript.md b/concepts/teams-changenotifications-callrecording-and-calltranscript.md index 50dd78e5541..e31a45f04b0 100644 --- a/concepts/teams-changenotifications-callrecording-and-calltranscript.md +++ b/concepts/teams-changenotifications-callrecording-and-calltranscript.md @@ -21,8 +21,7 @@ This article describes scenarios for the **transcript** and **recording** resour To get change notifications for any transcript available for any online meeting in a tenant, subscribe to `communications/onlineMeetings/getAllTranscripts`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. The notification for a transcript is sent only if the subscription happens before the transcription starts. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting). -> [!NOTE] -> This subscription supports channel meetings on the /beta endpoint. +> **Note:** This subscription also supports channel meetings on the `/beta` endpoint. ### Permissions @@ -59,8 +58,7 @@ Content-Type: application/json To get change notifications for any transcript available for a particular online meeting, subscribe to `communications/onlineMeetings/{onlineMeetingId}/transcripts`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. The notification for a transcript is sent only if the subscription happens before the transcription starts. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting). -> [!NOTE] -> This subscription supports channel meetings on the /beta endpoint. +> **Note:** This subscription also supports channel meetings on the `/beta` endpoint. ### Permissions @@ -73,7 +71,7 @@ One of the following permissions is required to subscribe to `communications/onl | Application | OnlineMeetingTranscript.Read.Chat, OnlineMeetingTranscript.Read.All | > [!NOTE] -> - The OnlineMeetingTranscript.Read.Chat permission uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). This permission is applicable only for scheduled private chat meetings, not for channel meetings. +> - The `OnlineMeetingTranscript.Read.Chat` permission uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). This permission applies only to scheduled private chat meetings, not to channel meetings. > - To subscribe to any transcript available for a particular online meeting by using only required [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent) permissions, use the `useResourceSpecificConsentBasedAuthorization=true` query parameter with your resource string. ### Example 1: Subscribe to transcripts available for a particular online meeting using classic permissions @@ -116,8 +114,7 @@ Content-Type: application/json To get change notifications for any transcript available for any online meeting organized by a specific user, subscribe to `users/{userId}/onlineMeetings/getAllTranscripts`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. The notification for a transcript is sent only if the subscription happens before the transcription starts. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting). -> [!NOTE] -> This subscription supports channel meetings on the /beta endpoint. +> **Note:** This subscription also supports channel meetings on the `/beta` endpoint. ### Permissions @@ -154,8 +151,8 @@ Content-Type: application/json To get change notifications for any transcript available for any online meeting where a specific Teams app is installed, subscribe to `appCatalogs/teamsApps/{teams-app-id}/installedToOnlineMeetings/getAllTranscripts`. This resource supports [including resource data](webhooks-with-resource-data.md) in the notification. The notification for a transcript is sent only if the subscription happens before the transcription starts. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting) but not channel meetings. -> [!NOTE] -> This resource type is available only on the `/beta` endpoint. +> **Note:** This resource type is available only on the `/beta` endpoint. + ### Permissions One of the following permissions is required to subscribe to `appCatalogs/teamsApps/{teams-app-id}/installedToOnlineMeetings/getAllTranscripts`. To learn more, including how to choose permissions, see [Permissions](/graph/permissions-reference). @@ -167,7 +164,7 @@ One of the following permissions is required to subscribe to `appCatalogs/teamsA | Application | OnlineMeetingTranscript.Read.Chat, OnlineMeetingTranscript.Read.All | > [!NOTE] -> - The OnlineMeetingTranscript.Read.Chat permission uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). +> - The `OnlineMeetingTranscript.Read.Chat` permission uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). > - To subscribe to transcripts available for any online meeting where a specific Teams app is installed using only required [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent) permissions, use the `useResourceSpecificConsentBasedAuthorization=true` query parameter with your resource string. ### Example 1: Subscribe to transcripts available for any online meeting where a specific Teams app is installed using classic permissions @@ -210,8 +207,7 @@ Content-Type: application/json To get change notifications for any recording available for any online meeting in a tenant, subscribe to `communications/onlineMeetings/getAllRecordings`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting). -> [!NOTE] -> This subscription supports channel meetings on the /beta endpoint. +> **Note:** This subscription also supports channel meetings on the `/beta` endpoint. ### Permissions @@ -248,8 +244,7 @@ Content-Type: application/json To get change notifications for any recording available for a particular online meeting, subscribe to `communications/onlineMeetings/{onlineMeetingId}/recordings`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting). -> [!NOTE] -> This subscription supports channel meetings on the /beta endpoint. +> **Note:** This subscription also supports channel meetings on the `/beta` endpoint. ### Permissions @@ -262,7 +257,7 @@ One of the following permissions is required to subscribe to `communications/onl | Application | OnlineMeetingRecording.Read.Chat, OnlineMeetingRecording.Read.All | > [!NOTE] -> - The OnlineMeetingRecording.Read.Chat permission uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). This permission is applicable only for scheduled private chat meetings, not for channel meetings. +> - The `OnlineMeetingRecording.Read.Chat` permission uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). This permission applies only to scheduled private chat meetings, not to channel meetings. > - To subscribe to any recording available for a particular online meeting using only required [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent) permissions, use the `useResourceSpecificConsentBasedAuthorization=true` query parameter with your resource string. ### Example 1: Subscribe to recordings available for a particular online meeting using classic permissions @@ -307,8 +302,7 @@ Content-Type: application/json To get change notifications for any recording available for any online meeting organized by a specific user, subscribe to `users/{userId}/onlineMeetings/getAllRecordings`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting). -> [!NOTE] -> This subscription supports channel meetings on the /beta endpoint. +> **Note:** This subscription also supports channel meetings on the `/beta` endpoint. ### Permissions @@ -345,8 +339,8 @@ Content-Type: application/json To get change notifications for any recording available for any online meeting where a specific Teams app is installed, subscribe to `appCatalogs/teamsApps/{teams-app-id}/installedToOnlineMeetings/getAllRecordings`. This resource supports [including resource data](change-notifications-with-resource-data.md) in the notification. This subscription supports scheduled [onlineMeetings](/graph/api/resources/onlinemeeting) but not channel meetings. -> [!NOTE] -> This resource type is available only on the `/beta` endpoint. +> **Note:** This resource type is available only on the `/beta` endpoint. + ### Permissions One of the following permissions is required to subscribe to `appCatalogs/teamsApps/{teams-app-id}/installedToOnlineMeetings/getAllRecordings`. To learn more, including how to choose permissions, see [Permissions](/graph/permissions-reference). @@ -358,7 +352,7 @@ One of the following permissions is required to subscribe to `appCatalogs/teamsA | Application | OnlineMeetingRecording.Read.Chat, OnlineMeetingRecording.Read.All | > [!NOTE] -> - The OnlineMeetingRecording.Read.Chat permission uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). +> - The `OnlineMeetingRecording.Read.Chat` permission uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). > - To subscribe to recordings available for any online meeting where a specific Teams app is installed using only required [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent) permissions, use the `useResourceSpecificConsentBasedAuthorization=true` query parameter with your resource string. ### Example 1: Subscribe to recordings available for any online meeting where a specific Teams app is installed using required classic permissions From cd9f76246ee04d90bea634d495e6530d262bf125 Mon Sep 17 00:00:00 2001 From: Jarbas Horst Date: Tue, 17 Dec 2024 22:27:15 +0100 Subject: [PATCH 09/36] Update callrecording-get.md --- api-reference/beta/api/callrecording-get.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/api-reference/beta/api/callrecording-get.md b/api-reference/beta/api/callrecording-get.md index 2f9a1b72cf8..43a5270c5c0 100644 --- a/api-reference/beta/api/callrecording-get.md +++ b/api-reference/beta/api/callrecording-get.md @@ -41,8 +41,7 @@ Choose the permission or permissions marked as least privileged for this API. Us > **Notes:** > > * In delegated permission scenarios, [getting callRecording content](#example-2-get-callrecording-content) is supported only for the meeting organizer. Meeting participants don't have permission to download meeting recordings. For more information, see [permissions or role-based access](/microsoftteams/tmr-meeting-recording-change). Tenant admins can unblock meeting participants to download meeting recordings. For more information, see [block the download of Teams meeting recording files](/MicrosoftTeams/block-download-meeting-recording). -> * The application permission `OnlineMeetingRecording.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). -> * This permission applies only to scheduled private chat meetings, not to channel meetings. +> * The application permission `OnlineMeetingRecording.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). This permission applies only to scheduled private chat meetings, not to channel meetings. To use application permissions for this API, tenant administrators must create an application access policy and grant it to a user. It authorizes the app configured in the policy to fetch online meetings or online meeting artifacts on behalf of that user (with the user ID specified in the request path). For more information, see [Allow applications to access online meetings on behalf of a user](/graph/cloud-communication-online-meeting-application-access-policy). From b8d99c6720e2f03785ebc03f60017e8f8be056f9 Mon Sep 17 00:00:00 2001 From: Jarbas Horst Date: Tue, 17 Dec 2024 22:28:08 +0100 Subject: [PATCH 10/36] Update calltranscript-get.md --- api-reference/beta/api/calltranscript-get.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/api-reference/beta/api/calltranscript-get.md b/api-reference/beta/api/calltranscript-get.md index a46604e9414..13ee2bd43f9 100644 --- a/api-reference/beta/api/calltranscript-get.md +++ b/api-reference/beta/api/calltranscript-get.md @@ -39,9 +39,7 @@ Choose the permission or permissions marked as least privileged for this API. Us |Delegated (personal Microsoft account)|Not supported.|Not supported.| |Application|OnlineMeetingTranscript.Read.All, OnlineMeetingTranscript.Read.Chat|Not available.| -> **Note:** -> * The application permission `OnlineMeetingTranscript.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). -> * This permission applies only to scheduled private chat meetings, not to channel meetings. +> **Note:** The application permission `OnlineMeetingTranscript.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). This permission applies only to scheduled private chat meetings, not to channel meetings. To use application permissions for this API, tenant administrators must create an application access policy and grant it to a user. It authorizes the app configured in the policy to fetch online meetings and/or online meeting artifacts on behalf of that user (with the user ID specified in the request path). For more information, see [Allow applications to access online meetings on behalf of a user](/graph/cloud-communication-online-meeting-application-access-policy). From c92b0ab474cae5a5c81a281bd42ae9590ca8973c Mon Sep 17 00:00:00 2001 From: Jarbas Horst Date: Tue, 17 Dec 2024 22:28:31 +0100 Subject: [PATCH 11/36] Update onlinemeeting-list-recordings.md --- api-reference/beta/api/onlinemeeting-list-recordings.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/api-reference/beta/api/onlinemeeting-list-recordings.md b/api-reference/beta/api/onlinemeeting-list-recordings.md index c79f209be5e..0faa23bcb7c 100644 --- a/api-reference/beta/api/onlinemeeting-list-recordings.md +++ b/api-reference/beta/api/onlinemeeting-list-recordings.md @@ -34,9 +34,7 @@ Choose the permission or permissions marked as least privileged for this API. Us |Delegated (personal Microsoft account)|Not supported.|Not supported.| |Application|OnlineMeetingRecording.Read.All, OnlineMeetingRecording.Read.Chat|Not available.| -> **Note:** -> * The application permission `OnlineMeetingRecording.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). -> * This permission applies only to scheduled private chat meetings, not to channel meetings. +> **Note:** The application permission `OnlineMeetingRecording.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). This permission applies only to scheduled private chat meetings, not to channel meetings. To use application permission for this API, tenant administrators must create an application access policy and grant it to a user. It authorizes the app configured in the policy to fetch online meetings or online meeting artifacts on behalf of that user (with the user ID specified in the request path). For more information, see [Allow applications to access online meetings on behalf of a user](/graph/cloud-communication-online-meeting-application-access-policy). From 73d0a987109841c95992ffad8eec191227106a43 Mon Sep 17 00:00:00 2001 From: Jarbas Horst Date: Tue, 17 Dec 2024 22:28:53 +0100 Subject: [PATCH 12/36] Update onlinemeeting-list-transcripts.md --- api-reference/beta/api/onlinemeeting-list-transcripts.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/api-reference/beta/api/onlinemeeting-list-transcripts.md b/api-reference/beta/api/onlinemeeting-list-transcripts.md index 02df400c442..4298e4bbe6e 100644 --- a/api-reference/beta/api/onlinemeeting-list-transcripts.md +++ b/api-reference/beta/api/onlinemeeting-list-transcripts.md @@ -34,9 +34,7 @@ Choose the permission or permissions marked as least privileged for this API. Us |Delegated (personal Microsoft account)|Not supported.|Not supported.| |Application|OnlineMeetingTranscript.Read.All, OnlineMeetingTranscript.Read.Chat|Not available.| -> **Note:** -> * The application permission `OnlineMeetingTranscript.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). -> * This permission applies only to scheduled private chat meetings, not to channel meetings. +> **Note:** The application permission `OnlineMeetingTranscript.Read.Chat` uses [resource-specific consent](/microsoftteams/platform/graph-api/rsc/resource-specific-consent). This permission applies only to scheduled private chat meetings, not to channel meetings. To use application permissions for this API, tenant administrators must create an application access policy and grant it to a user. It authorizes the app configured in the policy to fetch online meetings or online meeting artifacts on behalf of that user (with the user ID specified in the request path). For more information, see [Allow applications to access online meetings on behalf of a user](/graph/cloud-communication-online-meeting-application-access-policy). From d51d4945b3edf3ded904983c4cc3bfcb47b87f77 Mon Sep 17 00:00:00 2001 From: Jarbas Horst Date: Tue, 17 Dec 2024 22:37:17 +0100 Subject: [PATCH 13/36] Update whats-new-overview.md --- concepts/whats-new-overview.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/concepts/whats-new-overview.md b/concepts/whats-new-overview.md index 6998d004cf9..fa3b2bbf5f0 100644 --- a/concepts/whats-new-overview.md +++ b/concepts/whats-new-overview.md @@ -49,6 +49,10 @@ Enabled the **description**, **displayName**, and **severity** properties as sup Create and manage a [news link page](/graph/api/resources/newslinkpage?view=graph-rest-beta&preserve-view=true) in SharePoint. +### Teamwork and communications | Calls and online meetings + +The get and list operations of the [callRecording](/graph/api/resources/callrecording?view=graph-rest-beta&preserve-view=true) and [callTranscript](/graph/api/resources/calltranscript?view=graph-rest-beta&preserve-view=true) resources support the retrieval of call recordings or call transcripts from private chat meetings and channel meetings. + ## November 2024: New and generally available ### Files From 024eb13b73aa4d1ab310c622a76906fdc9741705 Mon Sep 17 00:00:00 2001 From: Faith Moraa Ombongi Date: Fri, 27 Dec 2024 10:19:20 +0300 Subject: [PATCH 14/36] Change notifications illustration --- concepts/change-notifications-overview.md | 10 +++++++--- .../change-notifications-vs-delta-query.png | Bin 0 -> 113338 bytes 2 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 concepts/images/change-notifications/change-notifications-vs-delta-query.png diff --git a/concepts/change-notifications-overview.md b/concepts/change-notifications-overview.md index a3ac6029675..0e60a06f777 100644 --- a/concepts/change-notifications-overview.md +++ b/concepts/change-notifications-overview.md @@ -8,7 +8,7 @@ ms.topic: concept-article ms.subservice: change-notifications ms.localizationpriority: high ms.custom: graphiamtop20 -ms.date: 12/27/2023 +ms.date: 12/27/2024 #customer intent: As a developer, I want to receive notifications of changes to specific Microsoft Graph resources, so that I can build apps that process the changes according to the business requirements. --- @@ -16,8 +16,6 @@ ms.date: 12/27/2023 Change notifications enable applications to receive alerts when a Microsoft Graph resource they're interested in changes; that is, created, updated, or deleted. Microsoft Graph sends notifications to the specified client endpoint, and the client service processes the notifications according to the business requirements. For example, the service might fetch more data, update its cache and views, and so on. - - ## Why get change notifications? Change notifications follow an event-driven model where customers receive alerts when changes occur instead of them polling Microsoft Graph. Depending on your business logic, change notifications are suitable when: @@ -26,6 +24,12 @@ Change notifications follow an event-driven model where customers receive alerts - You need to react to changes in near real-time. - You want to avoid frequently polling Microsoft Graph which might cause you to hit the throttling limits. +The following image shows how change notifications works and compares with [change tracking](./delta-query-overview.md). + +:::image type="content" source="images/change-notifications/change-notifications-vs-delta-query.png" alt-text="Illustration of change notifications and delta query services"::: + +The following video provides an overview of change notifications in Microsoft Graph. + > [!VIDEO https://www.youtube-nocookie.com/embed/rC1bunenaq4] ## Types of change notifications diff --git a/concepts/images/change-notifications/change-notifications-vs-delta-query.png b/concepts/images/change-notifications/change-notifications-vs-delta-query.png new file mode 100644 index 0000000000000000000000000000000000000000..fa5291b110b4f920027f71f0ec9645ca1dbfbb85 GIT binary patch literal 113338 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

=rX> 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 Uc~LJ6xu`np>F(`Tj}FQB2RQ|+7ytkO literal 0 HcmV?d00001 From 4d7bcd3622be441c18977fea3089e6b411810a14 Mon Sep 17 00:00:00 2001 From: Faith Moraa Ombongi Date: Fri, 27 Dec 2024 12:28:17 +0300 Subject: [PATCH 15/36] createdDateTime in authentication methods --- api-reference/beta/resources/authenticationmethod.md | 12 ++++++++---- .../beta/resources/emailauthenticationmethod.md | 2 ++ .../resources/hardwareoathauthenticationmethod.md | 2 ++ .../microsoftauthenticatorauthenticationmethod.md | 2 +- .../beta/resources/passwordauthenticationmethod.md | 2 -- ...lessmicrosoftauthenticatorauthenticationmethod.md | 1 - .../beta/resources/phoneauthenticationmethod.md | 2 ++ .../platformcredentialauthenticationmethod.md | 2 +- .../resources/softwareoathauthenticationmethod.md | 2 ++ .../temporaryaccesspassauthenticationmethod.md | 1 - .../windowshelloforbusinessauthenticationmethod.md | 3 +-- 11 files changed, 19 insertions(+), 12 deletions(-) diff --git a/api-reference/beta/resources/authenticationmethod.md b/api-reference/beta/resources/authenticationmethod.md index e89f13d774c..5357b5886dd 100644 --- a/api-reference/beta/resources/authenticationmethod.md +++ b/api-reference/beta/resources/authenticationmethod.md @@ -6,7 +6,7 @@ author: "jpettere" ms.reviewer: intelligentaccesspm ms.subservice: "entra-sign-in" doc_type: "resourcePageType" -ms.date: 12/06/2024 +ms.date: 12/27/2024 --- # authenticationMethod resource type @@ -17,13 +17,15 @@ Namespace: microsoft.graph An abstract type that represents an authentication method registered to a user. An [authentication method](/azure/active-directory/authentication/concept-authentication-methods) is something used by a user to authenticate or otherwise prove their identity to the system. Some examples include password, phone (usable via SMS or voice call), FIDO2 security keys, and more. +Inherits from [entity](../resources/entity.md). + This resource type is an abstract type that's inherited by the following derived types: + [emailAuthenticationMethod](emailauthenticationmethod.md) + [fido2AuthenticationMethod](fido2authenticationmethod.md) + [hardwareOathAuthenticationMethod](hardwareOathAuthenticationMethod.md) + [microsoftAuthenticatorAuthenticationMethod](microsoftauthenticatorauthenticationmethod.md) -+ [passwordlessMicrosoftAuthenticatorAuthenticationMethod](passwordlessmicrosoftauthenticatorauthenticationmethod.md) ++ [passwordlessMicrosoftAuthenticatorAuthenticationMethod](passwordlessmicrosoftauthenticatorauthenticationmethod.md) (deprecated) + [passwordAuthenticationMethod](passwordauthenticationmethod.md) + [phoneAuthenticationMethod](phoneauthenticationmethod.md) + [softwareOathAuthenticationMethod](softwareoathauthenticationmethod.md) @@ -44,7 +46,8 @@ This resource type is an abstract type that's inherited by the following derived | Property | Type | Description | |:-------------|:------------|:------------| -|id|String| The identifier of this instance of an authentication method registered to this user. Read-only. | +|id|String| The identifier of this instance of an authentication method registered to this user. Read-only. Inherited from [entity](../resources/entity.md). | +|createdDateTime|DateTimeOffset| The date and time the authentication method was registered to the user. Read-only. Optional. This optional value is `null` if the authentication method doesn't populate it. The timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on Jan 1, 2014 is `2014-01-01T00:00:00Z`.| ## Relationships @@ -66,7 +69,8 @@ The following JSON representation shows the resource type. ```json { "@odata.type": "#microsoft.graph.authenticationMethod", - "id": "String (identifier)" + "id": "String (identifier)", + "createdDateTime": "String (timestamp)" } ``` diff --git a/api-reference/beta/resources/emailauthenticationmethod.md b/api-reference/beta/resources/emailauthenticationmethod.md index 8356630915f..b83511a5dcf 100644 --- a/api-reference/beta/resources/emailauthenticationmethod.md +++ b/api-reference/beta/resources/emailauthenticationmethod.md @@ -34,6 +34,7 @@ This is a derived type that inherits from the [authenticationMethod](authenticat |Property|Type|Description| |:---|:---|:---| |id|String|The identifier of the email address registered to this user. The ID is always `3ddfcfc8-9383-446f-83cc-3ab9be4be18f`.| +|createdDateTime|DateTimeOffset| The date and time the authentication method was registered to the user. Read-only. Optional. The timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on Jan 1, 2014 is `2014-01-01T00:00:00Z`.| |emailAddress|String|The email address registered to this user.| ## Relationships @@ -52,6 +53,7 @@ The following JSON representation shows the resource type. ``` json { "@odata.type": "#microsoft.graph.emailAuthenticationMethod", + "createdDateTime": "String (timestamp)", "id": "String (identifier)", "emailAddress": "String" } diff --git a/api-reference/beta/resources/hardwareoathauthenticationmethod.md b/api-reference/beta/resources/hardwareoathauthenticationmethod.md index 766756d848a..36f86fa8ca2 100644 --- a/api-reference/beta/resources/hardwareoathauthenticationmethod.md +++ b/api-reference/beta/resources/hardwareoathauthenticationmethod.md @@ -35,6 +35,7 @@ Inherits from [authenticationMethod](../resources/authenticationmethod.md). ## Properties |Property|Type|Description| |:---|:---|:---| +|createdDateTime|DateTimeOffset| The date and time the authentication method was registered to the user. Read-only. Optional. The timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on Jan 1, 2014 is `2014-01-01T00:00:00Z`.| |id|String|Unique identifier for the device. Inherited from [entity](../resources/entity.md).| ## Relationships @@ -55,6 +56,7 @@ The following JSON representation shows the resource type. ``` json { "@odata.type": "#microsoft.graph.hardwareOathAuthenticationMethod", + "createdDateTime": "String (timestamp)", "id": "String (identifier)", } ``` diff --git a/api-reference/beta/resources/microsoftauthenticatorauthenticationmethod.md b/api-reference/beta/resources/microsoftauthenticatorauthenticationmethod.md index 5124be913fe..09247b988f6 100644 --- a/api-reference/beta/resources/microsoftauthenticatorauthenticationmethod.md +++ b/api-reference/beta/resources/microsoftauthenticatorauthenticationmethod.md @@ -59,7 +59,7 @@ The following JSON representation shows the resource type. "displayName": "String", "deviceTag": "String", "phoneAppVersion": "String", - "createdDateTime": "DateTimeOffset", + "createdDateTime": "String (timestamp)" "clientAppName": "microsoftAuthenticator" } ``` diff --git a/api-reference/beta/resources/passwordauthenticationmethod.md b/api-reference/beta/resources/passwordauthenticationmethod.md index 102530f9a0b..81b6475acf7 100644 --- a/api-reference/beta/resources/passwordauthenticationmethod.md +++ b/api-reference/beta/resources/passwordauthenticationmethod.md @@ -43,8 +43,6 @@ None. The following JSON representation shows the resource type. -The following JSON representation shows the resource type. - wEyfTz&(Ts!;jU)c!q3(ey(e>yc9 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

=rX> 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 Uc~LJ6xu`np>F(`Tj}FQB2RQ|+7ytkO From 4c3239c132568e328e48de43a507f3ff7d237117 Mon Sep 17 00:00:00 2001 From: Faith Moraa Ombongi Date: Fri, 27 Dec 2024 13:34:22 +0300 Subject: [PATCH 22/36] Surface group lifecycle policy on TOC --- .../beta/api/grouplifecyclepolicy-renewgroup.md | 2 +- api-reference/beta/resources/grouplifecyclepolicy.md | 10 ++++++---- api-reference/beta/toc/toc.mapping.json | 8 ++++++++ api-reference/v1.0/resources/grouplifecyclepolicy.md | 10 ++++++---- api-reference/v1.0/toc/toc.mapping.json | 8 ++++++++ 5 files changed, 29 insertions(+), 9 deletions(-) diff --git a/api-reference/beta/api/grouplifecyclepolicy-renewgroup.md b/api-reference/beta/api/grouplifecyclepolicy-renewgroup.md index 264b5b7f236..a63ceecb584 100644 --- a/api-reference/beta/api/grouplifecyclepolicy-renewgroup.md +++ b/api-reference/beta/api/grouplifecyclepolicy-renewgroup.md @@ -50,7 +50,7 @@ In the request body, provide a JSON object with the following parameters. | Parameter | Type | Description | | :-------- | :--- | :---------------------------- | -| groupId | Guid | The id of the group to renew. | +| groupId | Guid | The object ID of the group to renew. | ## Response diff --git a/api-reference/beta/resources/grouplifecyclepolicy.md b/api-reference/beta/resources/grouplifecyclepolicy.md index 885db01756a..16df4c6679d 100644 --- a/api-reference/beta/resources/grouplifecyclepolicy.md +++ b/api-reference/beta/resources/grouplifecyclepolicy.md @@ -20,14 +20,16 @@ Represents a lifecycle policy for a Microsoft 365 group. A group lifecycle polic - Once renewed, the group expiration is extended by the number of days defined in the policy and the group's **expirationDateTime** property defines the new expiration date. - If the group is not renewed, it expires and is deleted. The group can be restored within a period of 30 days from deletion. +For more information, see [Manage the lifecycle of Microsoft 365 groups in your tenant](/entra/identity/users/groups-lifecycle). + ## Methods | Method | Return Type | Description | | :--------------------------------------------------------------------------------------- | :--------------------------------------------------------- | :------------------------------------------------------------------ | -| [Get policy](../api/grouplifecyclepolicy-get.md) | [groupLifecyclePolicy](grouplifecyclepolicy.md) | Read properties and relationships of a groupLifecyclePolicy object. | -| [List policies](../api/grouplifecyclepolicy-list.md) | [groupLifecyclePolicy](grouplifecyclepolicy.md) collection | List all the groupLifecyclePolicies. | -| [Update policy](../api/grouplifecyclepolicy-update.md) | [groupLifecyclePolicy](grouplifecyclepolicy.md) | Update a groupLifecyclePolicy object. | -| [Delete policy](../api/grouplifecyclepolicy-delete.md) | None | Delete a groupLifecyclePolicy object. | +| [List](../api/grouplifecyclepolicy-list.md) | [groupLifecyclePolicy](grouplifecyclepolicy.md) collection | List all the groupLifecyclePolicies. | +| [Get](../api/grouplifecyclepolicy-get.md) | [groupLifecyclePolicy](grouplifecyclepolicy.md) | Read properties and relationships of a groupLifecyclePolicy object. | +| [Update](../api/grouplifecyclepolicy-update.md) | [groupLifecyclePolicy](grouplifecyclepolicy.md) | Update a groupLifecyclePolicy object. | +| [Delete](../api/grouplifecyclepolicy-delete.md) | None | Delete a groupLifecyclePolicy object. | | [Add group](../api/grouplifecyclepolicy-addgroup.md) | None | Add a group to a lifecycle policy | | [Remove group](../api/grouplifecyclepolicy-removegroup.md) | None | Remove a group to a lifecycle policy. | | [Renew group](../api/grouplifecyclepolicy-renewgroup.md) | None | Renew a group's expiration date. | diff --git a/api-reference/beta/toc/toc.mapping.json b/api-reference/beta/toc/toc.mapping.json index 883b1548594..d184efc7f17 100644 --- a/api-reference/beta/toc/toc.mapping.json +++ b/api-reference/beta/toc/toc.mapping.json @@ -12,6 +12,14 @@ "overview": "../../resources/groups-overview.md", "resources": [ "group" + ], + "childNodes": [ + { + "name": "Group lifecycle policy", + "resources": [ + "groupLifecyclePolicy" + ] + } ] }, { diff --git a/api-reference/v1.0/resources/grouplifecyclepolicy.md b/api-reference/v1.0/resources/grouplifecyclepolicy.md index 6b71c72ed91..29e4e0a522e 100644 --- a/api-reference/v1.0/resources/grouplifecyclepolicy.md +++ b/api-reference/v1.0/resources/grouplifecyclepolicy.md @@ -18,14 +18,16 @@ Represents a lifecycle policy for a Microsoft 365 group. A group lifecycle polic - Once renewed, the group expiration is extended by the number of days defined in the policy and the group's **expirationDateTime** property defines the new expiration date. - If the group is not renewed, it expires and is deleted. The group can be restored within a period of 30 days from deletion. +For more information, see [Manage the lifecycle of Microsoft 365 groups in your tenant](/entra/identity/users/groups-lifecycle). + ## Methods | Method | Return Type | Description | | :--------------------------------------------------------------------------------------- | :--------------------------------------------------------- | :------------------------------------------------------------------ | -| [Get policy](../api/grouplifecyclepolicy-get.md) | [groupLifecyclePolicy](grouplifecyclepolicy.md) | Read properties and relationships of a groupLifecyclePolicy object. | -| [List policies](../api/grouplifecyclepolicy-list.md) | [groupLifecyclePolicy](grouplifecyclepolicy.md) collection | List all the groupLifecyclePolicies. | -| [Update policy](../api/grouplifecyclepolicy-update.md) | [groupLifecyclePolicy](grouplifecyclepolicy.md) | Update a groupLifecyclePolicy object. | -| [Delete policy](../api/grouplifecyclepolicy-delete.md) | None | Delete a groupLifecyclePolicy object. | +| [List](../api/grouplifecyclepolicy-list.md) | [groupLifecyclePolicy](grouplifecyclepolicy.md) collection | List all the groupLifecyclePolicies. | +| [Get](../api/grouplifecyclepolicy-get.md) | [groupLifecyclePolicy](grouplifecyclepolicy.md) | Read properties and relationships of a groupLifecyclePolicy object. | +| [Update](../api/grouplifecyclepolicy-update.md) | [groupLifecyclePolicy](grouplifecyclepolicy.md) | Update a groupLifecyclePolicy object. | +| [Delete](../api/grouplifecyclepolicy-delete.md) | None | Delete a groupLifecyclePolicy object. | | [Add group](../api/grouplifecyclepolicy-addgroup.md) | None | Add a group to a lifecycle policy | | [Remove group](../api/grouplifecyclepolicy-removegroup.md) | None | Remove a group to a lifecycle policy. | diff --git a/api-reference/v1.0/toc/toc.mapping.json b/api-reference/v1.0/toc/toc.mapping.json index 1db13e5ab69..7278bd13ee3 100644 --- a/api-reference/v1.0/toc/toc.mapping.json +++ b/api-reference/v1.0/toc/toc.mapping.json @@ -12,6 +12,14 @@ "overview": "../../resources/groups-overview.md", "resources": [ "group" + ], + "childNodes": [ + { + "name": "Group lifecycle policy", + "resources": [ + "groupLifecyclePolicy" + ] + } ] }, { From 2211aa3b0459c8af00c15115a908cd40496bf1b6 Mon Sep 17 00:00:00 2001 From: Microsoft Graph DevX Tooling Date: Fri, 27 Dec 2024 10:36:45 +0000 Subject: [PATCH 23/36] Update reference TOC --- api-reference/beta/toc/groups/toc.yml | 20 ++++++++++++++++++++ api-reference/v1.0/toc/groups/toc.yml | 18 ++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/api-reference/beta/toc/groups/toc.yml b/api-reference/beta/toc/groups/toc.yml index d8b2108bbb1..f77d7c86bba 100644 --- a/api-reference/beta/toc/groups/toc.yml +++ b/api-reference/beta/toc/groups/toc.yml @@ -218,3 +218,23 @@ items: href: ../../api/group-unsubscribebymail.md - name: Reset unseen count href: ../../api/group-resetunseencount.md +- name: Group lifecycle policy + items: + - name: Group lifecycle policy + items: + - name: Group lifecycle policy + href: ../../resources/grouplifecyclepolicy.md + - name: List + href: ../../api/grouplifecyclepolicy-list.md + - name: Get + href: ../../api/grouplifecyclepolicy-get.md + - name: Update + href: ../../api/grouplifecyclepolicy-update.md + - name: Delete + href: ../../api/grouplifecyclepolicy-delete.md + - name: Add group + href: ../../api/grouplifecyclepolicy-addgroup.md + - name: Remove group + href: ../../api/grouplifecyclepolicy-removegroup.md + - name: Renew group + href: ../../api/grouplifecyclepolicy-renewgroup.md diff --git a/api-reference/v1.0/toc/groups/toc.yml b/api-reference/v1.0/toc/groups/toc.yml index 660795c6406..f045eddda77 100644 --- a/api-reference/v1.0/toc/groups/toc.yml +++ b/api-reference/v1.0/toc/groups/toc.yml @@ -198,3 +198,21 @@ items: href: ../../api/group-unsubscribebymail.md - name: Reset unseen count href: ../../api/group-resetunseencount.md +- name: Group lifecycle policy + items: + - name: Group lifecycle policy + items: + - name: Group lifecycle policy + href: ../../resources/grouplifecyclepolicy.md + - name: List + href: ../../api/grouplifecyclepolicy-list.md + - name: Get + href: ../../api/grouplifecyclepolicy-get.md + - name: Update + href: ../../api/grouplifecyclepolicy-update.md + - name: Delete + href: ../../api/grouplifecyclepolicy-delete.md + - name: Add group + href: ../../api/grouplifecyclepolicy-addgroup.md + - name: Remove group + href: ../../api/grouplifecyclepolicy-removegroup.md From 26fad844c9261e70fc70b5ff41ef4e155665df98 Mon Sep 17 00:00:00 2001 From: Faith Moraa Ombongi Date: Fri, 27 Dec 2024 19:31:28 +0300 Subject: [PATCH 24/36] Minor fixes --- .../beta/api/grouplifecyclepolicy-addgroup.md | 9 +++++---- ...ouplifecyclepolicy-post-grouplifecyclepolicies.md | 4 ++-- api-reference/beta/resources/grouplifecyclepolicy.md | 3 ++- .../v1.0/api/grouplifecyclepolicy-addgroup.md | 12 +++++++++--- ...ouplifecyclepolicy-post-grouplifecyclepolicies.md | 4 ++-- api-reference/v1.0/resources/grouplifecyclepolicy.md | 3 ++- 6 files changed, 22 insertions(+), 13 deletions(-) diff --git a/api-reference/beta/api/grouplifecyclepolicy-addgroup.md b/api-reference/beta/api/grouplifecyclepolicy-addgroup.md index 374ade1fa38..0479827601c 100644 --- a/api-reference/beta/api/grouplifecyclepolicy-addgroup.md +++ b/api-reference/beta/api/grouplifecyclepolicy-addgroup.md @@ -1,6 +1,6 @@ --- title: "groupLifecyclePolicy: addGroup" -description: "Adds a group to a lifecycle policy." +description: "Add a group to a lifecycle policy." author: "yuhko-msft" ms.reviewer: "mbhargav, khotzteam, aadgroupssg" ms.localizationpriority: medium @@ -15,7 +15,7 @@ Namespace: microsoft.graph [!INCLUDE [beta-disclaimer](../../includes/beta-disclaimer.md)] -Adds specific groups to a lifecycle policy. This action limits the group lifecycle policy to a set of groups only if the **managedGroupTypes** property of [groupLifecyclePolicy](../resources/grouplifecyclepolicy.md) is set to `Selected`. +Add a group to a [groupLifecyclePolicy](../resources/grouplifecyclepolicy.md). This action is supported only if the **managedGroupTypes** property of the policy is set to `Selected`. [!INCLUDE [national-cloud-support](../../includes/all-clouds.md)] @@ -55,7 +55,7 @@ Only one group can be added per request. ## Response -If successful, this method returns `200 OK` response code. If the group is added to the policy, a `true` value is returned in the response body. Otherwise, a `false` value is returned in the response body. +If successful, this method returns `200 OK` response code. If the group is added to the policy, a `true` value is returned in the response body and the **expirationDateTime** property of the added group is set based on the policy's **groupLifetimeInDays** value. Otherwise, a `false` value is returned in the response body. ## Example @@ -88,7 +88,8 @@ HTTP/1.1 200 OK Content-type: application/json { - "value": true + "@odata.context": "https://graph.microsoft.com/beta/$metadata#Edm.Boolean", + "value": true } ``` diff --git a/api-reference/beta/api/grouplifecyclepolicy-post-grouplifecyclepolicies.md b/api-reference/beta/api/grouplifecyclepolicy-post-grouplifecyclepolicies.md index 5df902885f3..6206ca922e6 100644 --- a/api-reference/beta/api/grouplifecyclepolicy-post-grouplifecyclepolicies.md +++ b/api-reference/beta/api/grouplifecyclepolicy-post-grouplifecyclepolicies.md @@ -15,7 +15,7 @@ Namespace: microsoft.graph [!INCLUDE [beta-disclaimer](../../includes/beta-disclaimer.md)] -Creates a new [groupLifecyclePolicy](../resources/grouplifecyclepolicy.md). +Creates a new [groupLifecyclePolicy](../resources/grouplifecyclepolicy.md). Only one policy exists in the tenant. [!INCLUDE [national-cloud-support](../../includes/all-clouds.md)] @@ -107,7 +107,7 @@ Content-type: application/json ### Response -Note: The response object shown here might be shortened for readability. +>**Note:** The response object shown here might be shortened for readability. + ```http HTTP/1.1 200 OK From e57f3f4bbd9fd8bee4f6895027cd6c68f52d7d65 Mon Sep 17 00:00:00 2001 From: Microsoft Graph DevX Tooling Date: Fri, 27 Dec 2024 16:58:53 +0000 Subject: [PATCH 28/36] Update reference TOC --- api-reference/beta/toc/groups/toc.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/api-reference/beta/toc/groups/toc.yml b/api-reference/beta/toc/groups/toc.yml index d8b2108bbb1..2422854e518 100644 --- a/api-reference/beta/toc/groups/toc.yml +++ b/api-reference/beta/toc/groups/toc.yml @@ -218,3 +218,23 @@ items: href: ../../api/group-unsubscribebymail.md - name: Reset unseen count href: ../../api/group-resetunseencount.md +- name: Group lifecycle policy + items: + - name: Group lifecycle policy + href: ../../resources/grouplifecyclepolicy.md + - name: List + href: ../../api/grouplifecyclepolicy-list.md + - name: Create + href: ../../api/grouplifecyclepolicy-post-grouplifecyclepolicies.md + - name: Get + href: ../../api/grouplifecyclepolicy-get.md + - name: Update + href: ../../api/grouplifecyclepolicy-update.md + - name: Delete + href: ../../api/grouplifecyclepolicy-delete.md + - name: Add group + href: ../../api/grouplifecyclepolicy-addgroup.md + - name: Remove group + href: ../../api/grouplifecyclepolicy-removegroup.md + - name: Renew group + href: ../../api/grouplifecyclepolicy-renewgroup.md From 51b27a439e29008557d7b39c52978d06f9d4194d Mon Sep 17 00:00:00 2001 From: Faith Moraa Ombongi Date: Fri, 27 Dec 2024 20:08:49 +0300 Subject: [PATCH 29/36] Add API Doctor suppression --- api-reference/v1.0/api/grouplifecyclepolicy-addgroup.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/api-reference/v1.0/api/grouplifecyclepolicy-addgroup.md b/api-reference/v1.0/api/grouplifecyclepolicy-addgroup.md index 9331d649451..2f396787d29 100644 --- a/api-reference/v1.0/api/grouplifecyclepolicy-addgroup.md +++ b/api-reference/v1.0/api/grouplifecyclepolicy-addgroup.md @@ -133,5 +133,11 @@ Content-type: application/json "description": "groupLifecyclePolicy: addgroup", "keywords": "", "section": "documentation", - "tocPath": "" + "tocPath": "", + "suppressions": [ + " + Error: grouplifecyclepolicy_addgroup: + Unable to locate the corresponding response for this method. Missing or incorrect code block annotation. + " + ] }--> From 4c0f9ce799a1fba6522a1eea96f0c706009c1d6d Mon Sep 17 00:00:00 2001 From: Faith Moraa Ombongi Date: Fri, 27 Dec 2024 20:35:21 +0300 Subject: [PATCH 30/36] Update internalDomainFederation response code is 204 No Content --- .../api/internaldomainfederation-update.md | 31 ++----------------- .../api/internaldomainfederation-update.md | 30 ++---------------- 2 files changed, 6 insertions(+), 55 deletions(-) diff --git a/api-reference/beta/api/internaldomainfederation-update.md b/api-reference/beta/api/internaldomainfederation-update.md index 675b6afb741..6b096470bd6 100644 --- a/api-reference/beta/api/internaldomainfederation-update.md +++ b/api-reference/beta/api/internaldomainfederation-update.md @@ -84,7 +84,7 @@ PATCH /domains/{domainsId}/federationConfiguration/{internalDomainFederationId} ## Response -If successful, this method returns a `200 OK` response code and an updated [internalDomainFederation](../resources/internaldomainfederation.md) object in the response body. +If successful, this method returns a `204 No Content` response code. ## Examples @@ -144,37 +144,12 @@ Content-Type: application/json ### Response >**Note:** The response object shown here might be shortened for readability. ``` http -HTTP/1.1 200 OK -Content-Type: application/json - -{ - "@odata.type": "#microsoft.graph.internalDomainFederation", - "id": "6601d14b-d113-8f64-fda2-9b5ddda18ecc", - "displayName": "Contoso name change", - "issuerUri": "http://contoso.com/adfs/services/trust", - "metadataExchangeUri": "https://sts.contoso.com/adfs/services/trust/mex", - "signingCertificate": "MIIE3jCCAsagAwIBAgIQQcyDaZz3MI", - "passiveSignInUri": "https://sts.contoso.com/adfs/ls", - "preferredAuthenticationProtocol": "wsFed", - "activeSignInUri": "https://sts.contoso.com/adfs/services/trust/2005/usernamemixed", - "signOutUri": "https://sts.contoso.com/adfs/ls", - "promptLoginBehavior": "nativeSupport", - "isSignedAuthenticationRequestRequired": true, - "nextSigningCertificate": "MIIE3jCCAsagAwIBAgIQQcyDaZz3MI", - "signingCertificateUpdateStatus": { - "certificateUpdateResult": "Success", - "lastRunDateTime": "2021-08-25T07:44:46.2616778Z" - }, - "federatedIdpMfaBehavior": "acceptIfMfaDoneByFederatedIdp", - "passwordResetUri": "https://sts.contoso.com/adfs/passwordReset" -} +HTTP/1.1 204 No Content ``` ``` http -HTTP/1.1 200 OK -Content-Type: application/json - -{ - "@odata.type": "#microsoft.graph.internalDomainFederation", - "id": "6601d14b-d113-8f64-fda2-9b5ddda18ecc", - "displayName": "Contoso name change", - "issuerUri": "http://contoso.com/adfs/services/trust", - "metadataExchangeUri": "https://sts.contoso.com/adfs/services/trust/mex", - "signingCertificate": "MIIE3jCCAsagAwIBAgIQQcyDaZz3MI", - "passiveSignInUri": "https://sts.contoso.com/adfs/ls", - "preferredAuthenticationProtocol": "wsFed", - "activeSignInUri": "https://sts.contoso.com/adfs/services/trust/2005/usernamemixed", - "signOutUri": "https://sts.contoso.com/adfs/ls", - "promptLoginBehavior": "nativeSupport", - "isSignedAuthenticationRequestRequired": true, - "nextSigningCertificate": "MIIE3jCCAsagAwIBAgIQQcyDaZz3MI", - "signingCertificateUpdateStatus": { - "certificateUpdateResult": "Success", - "lastRunDateTime": "2021-08-25T07:44:46.2616778Z" - }, - "federatedIdpMfaBehavior": "acceptIfMfaDoneByFederatedIdp" -} +HTTP/1.1 204 No Content ``` + ```http HTTP/1.1 200 OK -Content-type: application/json - -{ - "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Edm.Boolean", - "value": true -} ``` From 8bb3e0e1851177eaf76de8f356ceb7a53ee1accd Mon Sep 17 00:00:00 2001 From: Faith Moraa Ombongi Date: Fri, 27 Dec 2024 20:58:44 +0300 Subject: [PATCH 32/36] Add example of complex type filtering - directoryAudits LIST --- api-reference/beta/api/directoryaudit-list.md | 80 +++++++++++++++++- api-reference/v1.0/api/directoryaudit-list.md | 81 ++++++++++++++++++- 2 files changed, 155 insertions(+), 6 deletions(-) diff --git a/api-reference/beta/api/directoryaudit-list.md b/api-reference/beta/api/directoryaudit-list.md index 5399ebed0b3..421aa66dcb6 100644 --- a/api-reference/beta/api/directoryaudit-list.md +++ b/api-reference/beta/api/directoryaudit-list.md @@ -52,9 +52,11 @@ Don't supply a request body for this method. If successful, this method returns a `200 OK` response code and a collection of [directoryAudit](../resources/directoryaudit.md) objects in the response body. -## Example +## Examples -### Request +### Example 1: Retrieve the list of audit logs + +#### Request The following example shows a request. @@ -102,7 +104,7 @@ GET https://graph.microsoft.com/beta/auditLogs/directoryAudits --- -### Response +#### Response The following example shows the response. @@ -175,6 +177,78 @@ Content-type: application/json } ``` +### Example 2: Retrieve the list of audit logs with a filter on initiatedBy/user + +#### Request + +The following example shows a request. + + + +```msgraph-interactive +GET https://graph.microsoft.com/v1.0/auditLogs/directoryAudits?$filter=initiatedBy/user/id eq '00000000-0000-0000-0000-000000000000' +``` + +#### Response + +The following example shows the response. + +>**Note:** The response object shown here might be shortened for readability. + + +```http +HTTP/1.1 200 OK +Content-type: application/json + +{ + "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#auditLogs/directoryAudits", + "@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET auditLogs/directoryAudits?$select=activityDateTime,activityDisplayName", + "value": [ + { + "id": "SSGM_b662f17a-4e4d-4e1c-9248-cdec180024b2_MCDC4_88453290", + "category": "GroupManagement", + "correlationId": "b662f17a-4e4d-4e1c-9248-cdec180024b2", + "result": "success", + "resultReason": "OK", + "activityDisplayName": "GroupLifecyclePolicies_Get", + "activityDateTime": "2024-12-27T10:01:19.5796748Z", + "loggedByService": "Self-service Group Management", + "operationType": "Update", + "initiatedBy": { + "app": null, + "user": { + "id": "00000000-0000-0000-0000-000000000000", + "displayName": null, + "userPrincipalName": null, + "ipAddress": "40.126.23.163", + "userType": null, + "homeTenantId": null, + "homeTenantName": null + } + }, + "targetResources": [ + { + "id": "00000000-0000-0000-0000-000000000000", + "displayName": null, + "type": "N/A", + "userPrincipalName": null, + "groupType": null, + "modifiedProperties": [] + } + ], + "additionalDetails": [] + } + ] +} +``` + + +```msgraph-interactive +GET https://graph.microsoft.com/beta/auditLogs/directoryAudits?$filter=initiatedBy/user/id eq '00000000-0000-0000-0000-000000000000' +``` + +#### Response + +The following example shows the response. + +>**Note:** The response object shown here might be shortened for readability. + + +```http +HTTP/1.1 200 OK +Content-type: application/json + +{ + "@odata.context": "https://graph.microsoft.com/beta/$metadata#auditLogs/directoryAudits", + "@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET auditLogs/directoryAudits?$select=activityDateTime,activityDisplayName", + "value": [ + { + "id": "SSGM_b662f17a-4e4d-4e1c-9248-cdec180024b2_MCDC4_88453290", + "category": "GroupManagement", + "correlationId": "b662f17a-4e4d-4e1c-9248-cdec180024b2", + "result": "success", + "resultReason": "OK", + "activityDisplayName": "GroupLifecyclePolicies_Get", + "activityDateTime": "2024-12-27T10:01:19.5796748Z", + "loggedByService": "Self-service Group Management", + "operationType": "Update", + "userAgent": null, + "initiatedBy": { + "app": null, + "user": { + "id": "00000000-0000-0000-0000-000000000000", + "displayName": null, + "userPrincipalName": null, + "ipAddress": "40.126.23.163", + "userType": null, + "homeTenantId": null, + "homeTenantName": null + } + }, + "targetResources": [ + { + "id": "00000000-0000-0000-0000-000000000000", + "displayName": null, + "type": "N/A", + "userPrincipalName": null, + "groupType": null, + "modifiedProperties": [] + } + ], + "additionalDetails": [] + } + ] +} +``` + -```msgraph-interactive -GET https://graph.microsoft.com/v1.0/auditLogs/directoryAudits?$filter=initiatedBy/user/id eq '00000000-0000-0000-0000-000000000000' +```http +GET https://graph.microsoft.com/beta/auditLogs/directoryAudits?$filter=initiatedBy/user/id eq '00000000-0000-0000-0000-000000000000' ``` #### Response @@ -208,7 +208,7 @@ HTTP/1.1 200 OK Content-type: application/json { - "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#auditLogs/directoryAudits", + "@odata.context": "https://graph.microsoft.com/beta/$metadata#auditLogs/directoryAudits", "@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET auditLogs/directoryAudits?$select=activityDateTime,activityDisplayName", "value": [ { @@ -221,6 +221,7 @@ Content-type: application/json "activityDateTime": "2024-12-27T10:01:19.5796748Z", "loggedByService": "Self-service Group Management", "operationType": "Update", + "userAgent": null, "initiatedBy": { "app": null, "user": { diff --git a/api-reference/v1.0/api/directoryaudit-list.md b/api-reference/v1.0/api/directoryaudit-list.md index a2248dbbe87..e4aa7a7ec6c 100644 --- a/api-reference/v1.0/api/directoryaudit-list.md +++ b/api-reference/v1.0/api/directoryaudit-list.md @@ -179,8 +179,8 @@ The following example shows a request. "name": "get_directoryaudits_filter_initiatedby" }--> -```msgraph-interactive -GET https://graph.microsoft.com/beta/auditLogs/directoryAudits?$filter=initiatedBy/user/id eq '00000000-0000-0000-0000-000000000000' +```http +GET https://graph.microsoft.com/v1.0/auditLogs/directoryAudits?$filter=initiatedBy/user/id eq '00000000-0000-0000-0000-000000000000' ``` #### Response @@ -199,7 +199,7 @@ HTTP/1.1 200 OK Content-type: application/json { - "@odata.context": "https://graph.microsoft.com/beta/$metadata#auditLogs/directoryAudits", + "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#auditLogs/directoryAudits", "@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET auditLogs/directoryAudits?$select=activityDateTime,activityDisplayName", "value": [ { @@ -212,7 +212,6 @@ Content-type: application/json "activityDateTime": "2024-12-27T10:01:19.5796748Z", "loggedByService": "Self-service Group Management", "operationType": "Update", - "userAgent": null, "initiatedBy": { "app": null, "user": { From 5d297abea23b5a3368c8b126b128de2f276f12f5 Mon Sep 17 00:00:00 2001 From: Faith Moraa Ombongi Date: Fri, 27 Dec 2024 21:28:04 +0300 Subject: [PATCH 35/36] nits --- api-reference/beta/api/directoryaudit-list.md | 2 +- api-reference/v1.0/api/directoryaudit-list.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/api-reference/beta/api/directoryaudit-list.md b/api-reference/beta/api/directoryaudit-list.md index 14b0e08ca8b..a7bbd56c68d 100644 --- a/api-reference/beta/api/directoryaudit-list.md +++ b/api-reference/beta/api/directoryaudit-list.md @@ -228,7 +228,7 @@ Content-type: application/json "id": "00000000-0000-0000-0000-000000000000", "displayName": null, "userPrincipalName": null, - "ipAddress": "40.126.23.163", + "ipAddress": "10.0.0.0", "userType": null, "homeTenantId": null, "homeTenantName": null diff --git a/api-reference/v1.0/api/directoryaudit-list.md b/api-reference/v1.0/api/directoryaudit-list.md index e4aa7a7ec6c..f2c76463449 100644 --- a/api-reference/v1.0/api/directoryaudit-list.md +++ b/api-reference/v1.0/api/directoryaudit-list.md @@ -218,7 +218,7 @@ Content-type: application/json "id": "00000000-0000-0000-0000-000000000000", "displayName": null, "userPrincipalName": null, - "ipAddress": "40.126.23.163", + "ipAddress": "10.0.0.0", "userType": null, "homeTenantId": null, "homeTenantName": null From 635738f78081d67bfe1415c55beec343b2e987c1 Mon Sep 17 00:00:00 2001 From: Faith Moraa Ombongi Date: Fri, 27 Dec 2024 21:49:29 +0300 Subject: [PATCH 36/36] Properties stored outside Directory Services --- api-reference/beta/resources/groups-overview.md | 5 +++-- api-reference/beta/resources/users.md | 4 +++- api-reference/v1.0/resources/groups-overview.md | 8 ++++++++ api-reference/v1.0/resources/users.md | 4 +++- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/api-reference/beta/resources/groups-overview.md b/api-reference/beta/resources/groups-overview.md index 52b39f870a3..ee9d6e69a10 100644 --- a/api-reference/beta/resources/groups-overview.md +++ b/api-reference/beta/resources/groups-overview.md @@ -268,14 +268,15 @@ For more information about what guest users can do with groups, see [Compare mem You can use group-based licensing to assign one or more product licenses to a Microsoft Entra group, and the licenses are then inherited by the members of the group, and automatically by any new members. When members leave the group, those licenses are removed. The feature can only be used with security groups and Microsoft 365 groups that have **securityEnabled** set to `true`. To learn more about group-based licensing, see [What is group-based licensing in Microsoft Entra ID?](/azure/active-directory/fundamentals/active-directory-licensing-whatis-azure-portal). + ## Properties stored outside the main data store While the group resource data is mostly stored in Microsoft Entra ID, some of its properties, like **autoSubscribeNewMembers** and **allowExternalSenders**, are stored in Microsoft Exchange. In most instances, you can't specify these properties in the same Create or Update request body as other group properties. - - Properties stored outside the main data store also aren't supported as part of [change tracking](/graph/delta-query-overview). Therefore, a change to any of these properties doesn't result in an object showing up in the delta query response. +The following properties on the group object are stored outside the main data store: **accessType**, **allowExternalSenders**, **autoSubscribeNewMembers**, **cloudLicensing**, **hideFromAddressLists**, **hideFromOutlookClients**, **isFavorite**, **isSubscribedByMail**, **unseenConversationsCount**, **unseenCount**, **unseenMessagesCount**, **membershipRuleProcessingStatus**, **isArchived**. + ## Common use cases for the groups API in Microsoft Graph Using Microsoft Graph, you can perform the following common operations on groups. diff --git a/api-reference/beta/resources/users.md b/api-reference/beta/resources/users.md index 2ab3bfa6192..4bd30935529 100644 --- a/api-reference/beta/resources/users.md +++ b/api-reference/beta/resources/users.md @@ -162,7 +162,9 @@ Some properties of the user object aren't returned by default and must be specif While the user resource data is mostly stored in Microsoft Entra ID, some of its properties, like **skills**, are stored in SharePoint Online. In most instances, you can't specify these properties in the same Create or Update request body as other user properties. -Properties stored outside the main data store also aren't supported as part of change tracking. Therefore, a change to any of these properties doesn't result in an object showing up in the delta query response. +Properties stored outside the main data store also aren't supported as part of [change tracking](/graph/delta-query-overview). Therefore, a change to any of these properties doesn't result in an object showing up in the delta query response. + +The following properties on the user object are stored outside the main data store: **signInActivity**, **cloudLicensing**, **mailboxSettings**, **deviceEnrollmentLimit**, **print**, **aboutMe**, **birthday**, **hireDate**, **interests**, **mySite**, **pastProjects**, **preferredName**, **responsibilities**, **schools**, **skills**. ## Related content diff --git a/api-reference/v1.0/resources/groups-overview.md b/api-reference/v1.0/resources/groups-overview.md index fe56680d9b7..c42fac6f553 100644 --- a/api-reference/v1.0/resources/groups-overview.md +++ b/api-reference/v1.0/resources/groups-overview.md @@ -271,6 +271,14 @@ You can use group-based licensing to assign one or more product licenses to a Mi To learn more about group-based licensing, see [What is group-based licensing in Microsoft Entra ID?](/azure/active-directory/fundamentals/active-directory-licensing-whatis-azure-portal). +## Properties stored outside the main data store + +While the group resource data is mostly stored in Microsoft Entra ID, some of its properties, like **autoSubscribeNewMembers** and **allowExternalSenders**, are stored in Microsoft Exchange. In most instances, you can't specify these properties in the same Create or Update request body as other group properties. + +Properties stored outside the main data store also aren't supported as part of [change tracking](/graph/delta-query-overview). Therefore, a change to any of these properties doesn't result in an object showing up in the delta query response. + +The following properties on the group object are stored outside the main data store: **accessType**, **allowExternalSenders**, **autoSubscribeNewMembers**, **cloudLicensing**, **hideFromAddressLists**, **hideFromOutlookClients**, **isFavorite**, **isSubscribedByMail**, **unseenConversationsCount**, **unseenCount**, **unseenMessagesCount**, **membershipRuleProcessingStatus**, **isArchived**. + ## Common use cases Using Microsoft Graph, you can perform the following common operations on groups. diff --git a/api-reference/v1.0/resources/users.md b/api-reference/v1.0/resources/users.md index 0bdb430829b..b5fb91cc4e8 100644 --- a/api-reference/v1.0/resources/users.md +++ b/api-reference/v1.0/resources/users.md @@ -180,7 +180,9 @@ Some properties of the user object aren't returned by default and must be specif While the user resource data is mostly stored in Microsoft Entra ID, some of its properties, like **skills**, are stored in SharePoint Online. In most instances, you can't specify these properties in the same Create or Update request body as other user properties. -Properties stored outside the main data store also aren't supported as part of change tracking. Therefore, a change to any of these properties doesn't result in an object showing up in the delta query response. +Properties stored outside the main data store also aren't supported as part of [change tracking](/graph/delta-query-overview). Therefore, a change to any of these properties doesn't result in an object showing up in the delta query response. + +The following properties on the user object are stored outside the main data store: **signInActivity**, **cloudLicensing**, **mailboxSettings**, **deviceEnrollmentLimit**, **print**, **aboutMe**, **birthday**, **hireDate**, **interests**, **mySite**, **pastProjects**, **preferredName**, **responsibilities**, **schools**, **skills**. ## Related content