Skip to content

Commit a6fe890

Browse files
authored
Merge pull request #26097 from microsoftgraph/freshness-changeNotifications-webhooks
[Content-Freshness] Change notifications - webhooks
2 parents 57ac5cc + d79e079 commit a6fe890

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

concepts/change-notifications-delivery-webhooks.md

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ ms.topic: how-to
88
ms.subservice: change-notifications
99
ms.localizationpriority: high
1010
ms.custom: graphiamtop20
11-
ms.date: 01/03/2024
11+
ms.date: 01/15/2025
1212
#customer intent: As a developer, I want to receive notifications of changes to specific Microsoft Graph resources through webhooks, so that I can build apps that process the changes according to business requirements.
1313
---
1414

@@ -23,6 +23,7 @@ The article guides you through the process of implementing your webhook endpoint
2323
For details about how to create change notifications, see [Microsoft Graph API change notifications](/graph/api/resources/change-notifications-api-overview).
2424

2525
## Considerations for a webhook endpoint
26+
2627
Before you can receive a notification via webhooks, you must create a publicly accessible, HTTPS-secured endpoint that is addressable via URL. If your endpoint isn't publicly accessible, Microsoft Graph doesn't send notifications to your endpoint.
2728

2829
Your endpoint must provide correct, consistent, and timely HTTP responses in order to reliably receive notifications. If an endpoint doesn't respond in a timely manner, the change notification service may begin to drop notifications. Dropped notifications can't be recovered.
@@ -52,13 +53,13 @@ For security and performance reasons, Microsoft Graph throttles notifications se
5253
If your endpoint is unable to meet these performance characteristics, consider using [Event Hubs](/graph/change-notifications-delivery-event-hubs) or [Event Grid](/azure/event-grid/subscribe-to-graph-api-events?context=graph/context) as a target for receiving notifications.
5354

5455
### Authentication
55-
When you create your subscription, an access token is sent to your endpoint. This access token is used only to check the validity of your endpoint and has a lifecycle different from that of your change notification subscription. This access token generally expires within 1 hour.
56+
When you create your subscription, an access token is sent to your endpoint. This access token is used only to check the validity of your endpoint and has a lifecycle different from your change notification subscription. This access token generally expires within 1 hour.
5657

57-
Your endpoint must be prepared to be regularly reauthorized by Microsoft Graph to ensure that Microsoft Graph can continue to deliver notifications to your endpoint.
58+
To ensure uninterrupted notifications, your endpoint must be prepared for regular reauthorization by Microsoft Graph.
5859

59-
If an access token expires, notifications aren't delivered. However, it doesn't trigger endpoint throttling behavior and Microsoft Graph continues to retry sending each notification for up to 4 hours. So if the access token is refreshed within 4 hours of expiration, unsent notifications are delivered.
60+
If an access token expires, notifications aren't delivered. However, it doesn't trigger endpoint throttling behavior and Microsoft Graph continues to retry sending each notification for up to 4 hours. So if the access token is refreshed within 4 hours of expiration, unsent notifications are delivered.
6061

61-
It's recommended that you add [lifecycle notifications](.\change-notifications-lifecycle-events.md) to your subscription to receive a warning about token expiration so you can reauthorize your endpoint in a timely manner.
62+
We recommend that you add [lifecycle notifications](.\change-notifications-lifecycle-events.md) to your subscription to receive a warning about token expiration so you can reauthorize your endpoint in a timely manner.
6263

6364
When you [renew your subscription](#renew-a-subscription), your access token is also refreshed.
6465

@@ -69,21 +70,22 @@ You can configure the firewall that protects your endpoint to allow inbound conn
6970
> The listed IP addresses that are used to deliver change notifications can be updated at any time without notice.
7071
7172
## Create a subscription
73+
7274
> [!IMPORTANT]
7375
> Multiple steps are required to ensure a secure communication channel is established and maintained between the Microsoft Graph change notifications service and your endpoint.
7476
7577
To start receiving Microsoft Graph change notifications, you must create a subscription using the URL of your endpoint (notification URL) to establish the subscription. The pattern of establishing a subscription is as follows:
7678

7779
1. The client app sends a subscription request to subscribe to changes on a specific resource.
7880

79-
1. Microsoft Graph checks the request.
81+
2. Microsoft Graph checks the request.
8082

8183
- If the request is valid, Microsoft Graph sends a validation token to the notification URL for the client app to validate the notification URL.
8284
- If the request is invalid, Microsoft Graph sends an error response with an error code and details.
8385

84-
1. When the client receives the notification URL validation request, the client responds with the validation token in plain text.
86+
3. When the client receives the notification URL validation request, the client responds with the validation token in plain text.
8587

86-
1. Microsoft Graph validates the client's validation token response and if the validation token is valid, responds with a subscription ID.
88+
4. Microsoft Graph validates the client's validation token response and if the validation token is valid, responds with a subscription ID.
8789

8890
### Subscription request
8991

@@ -151,7 +153,7 @@ Each subscription has a unique **subscriptionId**, even if you have multiple sub
151153
> [!NOTE]
152154
> Any query string parameter included in the **notificationUrl** property is included in the HTTP POST request when notifications are being delivered to your service.
153155
>
154-
> Duplicate subscriptions are not allowed. When a subscription request contains the same values for **changeType** and **resource** as an existing subscription, the request fails with an HTTP error code `409 Conflict`, and the error message `Subscription Id <> already exists for the requested combination`.
156+
> Duplicate subscriptions aren't allowed. When a subscription request contains the same values for **changeType** and **resource** as an existing subscription, the request fails with an HTTP error code `409 Conflict`, and the error message `Subscription Id <> already exists for the requested combination`.
155157
156158
#### notificationUrl validation
157159

@@ -321,7 +323,7 @@ When you subscribe to lifecycle notifications, Microsoft Graph alerts you:
321323
- When a tenant administrator revokes your app's permissions to read a resource.
322324

323325
> [!NOTE]
324-
> If an access token expires, notifications are not delivered to the endpoint. But Microsoft Graph continues to retry sending each notification for up to 4 hours. So if the access token is refreshed within 4 hours of expiration, unsent notifications are delivered.
326+
> If an access token expires, notifications aren't delivered to the endpoint. But Microsoft Graph continues to retry sending each notification for up to 4 hours. So if the access token is refreshed within 4 hours of expiration, unsent notifications are delivered.
325327
326328
For more information on how to utilize lifecycle notifications for your subscription, see [lifecycle notifications](/graph/change-notifications-lifecycle-events).
327329

0 commit comments

Comments
 (0)