A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developers.google.com/workspace/drive/api/guides/push below:

Notifications for resource changes | Google Drive

This document describes how to use push notifications that inform your application when a resource changes.

Overview

The Google Drive API provides push notifications that let you monitor changes in resources. You can use this feature to improve the performance of your application. It lets you eliminate the extra network and compute costs involved with polling resources to determine if they have changed. Whenever a watched resource changes, the Google Drive API notifies your application.

To use push notifications, you must do two things:

Currently, the Google Drive API supports notifications for changes to the files and changes methods.

Create notification channels

To request push notifications, you must set up a notification channel for each resource you want to monitor. After your notification channels are set up, the Google Drive API informs your application when any watched resource changes.

Make watch requests

Each watchable Google Drive API resource has an associated watch method at a URI of the following form:

https://www.googleapis.com/API_NAME/API_VERSION/RESOURCE_PATH/watch

To set up a notification channel for messages about changes to a particular resource, send a POST request to the watch method for the resource.

Each notification channel is associated both with a particular user and a particular resource (or set of resources). A watch request won't be successful unless the current user or service account owns or has permission to access this resource.

Examples

The following code sample shows how to use a channels resource to start watching for changes to a single files resource using the files.watch method:

POST https://www.googleapis.com/drive/v3/files/fileId/watch
Authorization: Bearer CURRENT_USER_AUTH_TOKEN
Content-Type: application/json

{
  "id": "01234567-89ab-cdef-0123456789ab", // Your channel ID.
  "type": "web_hook",
  "address": "https://mydomain.com/notifications", // Your receiving URL.
  ...
  "token": "target=myApp-myFilesChannelDest", // (Optional) Your files channel token.
  "expiration": 1426325213000 // (Optional) Your requested channel expiration date and time.
}

The following code sample shows how to use a channels resource to start watching for all changes using the changes.watch method:

POST https://www.googleapis.com/drive/v3/changes/watch
Authorization: Bearer CURRENT_USER_AUTH_TOKEN
Content-Type: application/json

{
  "id": "4ba78bf0-6a47-11e2-bcfd-0800200c9a77", // Your channel ID.
  "type": "web_hook",
  "address": "https://mydomain.com/notifications", // Your receiving URL.
  ...
  "token": "target=myApp-myChangesChannelDest", // (Optional) Your changes channel token.
  "expiration": 1426325213000 // (Optional) Your requested channel expiration date and time.
}
Required properties

With each watch request, you must provide these fields:

Optional properties

You can also specify these optional fields with your watch request:

Note: For Google Drive API, the maximum expiration time is 86400 seconds (1 day) after the current time for the files resource and 604800 seconds (1 week) for changes. If you don’t set the expiration property in your request, the expiration time defaults to 3600 seconds after the current time.

For more details on the request, refer to the watch method for the files and changes methods in the API Reference.

Watch response

If the watch request successfully creates a notification channel, it returns an HTTP 200 OK status code.

The message body of the watch response provides information about the notification channel you just created, as shown in the example below.

{
  "kind": "api#channel",
  "id": "01234567-89ab-cdef-0123456789ab"", // ID you specified for this channel.
  "resourceId": "o3hgv1538sdjfh", // ID of the watched resource.
  "resourceUri": "https://www.googleapis.com/drive/v3/files/o3hgv1538sdjfh", // Version-specific ID of the watched resource.
  "token": "target=myApp-myFilesChannelDest", // Present only if one was provided.
  "expiration": 1426325213000, // Actual expiration date and time as UNIX timestamp (in milliseconds), if applicable.
}

In addition to the properties you sent as part of your request, the returned information also includes the resourceId and resourceUri to identify the resource being watched on this notification channel.

Note: The resourceId property is a stable, version-independent identifier for the resource. The resourceUri property is the canonical URI of the watched resource in the context of the current API version, so it's version-specific.

You can pass the returned information to other notification channel operations, such as when you want to stop receiving notifications.

For more details on the response, refer to the watch method for the files and changes methods in the API Reference.

Sync message

After creating a notification channel to watch a resource, the Google Drive API sends a sync message to indicate that notifications are starting. The X-Goog-Resource-State HTTP header value for these messages is sync. Due to network timing issues, it's possible to receive the sync message even before you receive the watch method response.

It's safe to ignore the sync notification, but you can also use it. For example, if you decide you don't want to keep the channel, you can use the X-Goog-Channel-ID and X-Goog-Resource-ID values in a call to stop receiving notifications. You can also use the sync notification to do some initialization to prepare for later events.

The format of sync messages the Google Drive API sends to your receiving URL is shown below.

POST https://mydomain.com/notifications // Your receiving URL.
X-Goog-Channel-ID: channel-ID-value
X-Goog-Channel-Token: channel-token-value
X-Goog-Channel-Expiration: expiration-date-and-time // In human-readable format. Present only if the channel expires.
X-Goog-Resource-ID: identifier-for-the-watched-resource
X-Goog-Resource-URI: version-specific-URI-of-the-watched-resource
X-Goog-Resource-State: sync
X-Goog-Message-Number: 1

Sync messages always have an X-Goog-Message-Number HTTP header value of 1. Each subsequent notification for this channel has a message number that's larger than the previous one, though the message numbers will not be sequential.

Renew notification channels

A notification channel can have an expiration time, with a value determined either by your request or by any Google Drive API internal limits or defaults (the more restrictive value is used). The channel's expiration time, if it has one, is included as a Unix timestamp (in milliseconds) in the information returned by the watch method. In addition, the expiration date and time is included (in human-readable format) in every notification message your application receives for this channel in the X-Goog-Channel-Expiration HTTP header.

Currently, there's no automatic way to renew a notification channel. When a channel is close to its expiration, you must replace it with a new one by calling the watch method. As always, you must use a unique value for the id property of the new channel. Note that there's likely to be an "overlap" period of time when the two notification channels for the same resource are active.

Receive notifications

Whenever a watched resource changes, your application receives a notification message describing the change. The Google Drive API sends these messages as HTTPS POST requests to the URL you specified as the address property for this notification channel.

Note: Notification delivery HTTPS requests specify a user agent of APIs-Google and respect robots.txt directives, as described in APIs Google User Agent. Interpret the notification message format

All notification messages include a set of HTTP headers that have X-Goog- prefixes. Some types of notifications can also include a message body.

Notification messages for files and changes are empty.

Examples

Change notification message for files resources, which doesn't include a request body:

POST https://mydomain.com/notifications // Your receiving URL.
Content-Type: application/json; utf-8
Content-Length: 0
X-Goog-Channel-ID: 4ba78bf0-6a47-11e2-bcfd-0800200c9a66
X-Goog-Channel-Token: 398348u3tu83ut8uu38
X-Goog-Channel-Expiration: Tue, 19 Nov 2013 01:13:52 GMT
X-Goog-Resource-ID:  ret08u3rv24htgh289g
X-Goog-Resource-URI: https://www.googleapis.com/drive/v3/files/ret08u3rv24htgh289g
X-Goog-Resource-State:  update
X-Goog-Changed: content,properties
X-Goog-Message-Number: 10

Change notification message for changes resources, which includes a request body:

POST https://mydomain.com/notifications // Your receiving URL.
Content-Type: application/json; utf-8
Content-Length: 118
X-Goog-Channel-ID: 8bd90be9-3a58-3122-ab43-9823188a5b43
X-Goog-Channel-Token: 245t1234tt83trrt333
X-Goog-Channel-Expiration: Tue, 19 Nov 2013 01:13:52 GMT
X-Goog-Resource-ID:  ret987df98743md8g
X-Goog-Resource-URI: https://www.googleapis.com/drive/v3/changes
X-Goog-Resource-State:  changed
X-Goog-Message-Number: 23

{
  "kind": "drive#changes"
}
Respond to notifications

To indicate success, you can return any of the following status codes: 200, 201, 202, 204, or 102.

If your service uses Google's API client library and returns 500,502, 503, or 504, the Google Drive API retries with exponential backoff. Every other return status code is considered to be a message failure.

Understand Google Drive API notification events

This section provides details on the notification messages you can receive when using push notifications with the Google Drive API.

X-Goog-Resource-State Applies to Delivered when sync files, changes A channel was successfully created. You can expect to start receiving notifications for it. add files A resource was created or shared. remove files An existing resource was deleted or unshared. update files One or more properties (metadata) of a resource have been updated. trash files A resource has been moved to the trash. untrash files A resource has been removed from the trash. change changes One or more changelog items have been added. Additional resource state events might be added to this list over time. You might receive unexpected event types. Your event handlers should gracefully ignore these.

For update events, the X-Goog-Changed HTTP header might be provided. That header contains a comma-separated list that describes the types of changes that have occurred.

Change type Indicates content The resource content has been updated. properties One or more resource properties have been updated. parents One or more resource parents have been added or removed. children One or more resource children have been added or removed. permissions The resource permissions have been updated.

Example with X-Goog-Changed header:

X-Goog-Resource-State: update
X-Goog-Changed: content, permissions
Stop notifications

The expiration property controls when the notifications stop automatically. You can choose to stop receiving notifications for a particular channel before it expires by calling the stop method at the following URI:

https://www.googleapis.com/drive/v3/channels/stop

This method requires that you provide at least the channel's id and the resourceId properties, as shown in the example below. Note that if the Google Drive API has several types of resources that have watch methods, there's only one stop method.

Only users with the right permission can stop a channel. In particular:

The following code sample shows how to stop receiving notifications:

POST https://www.googleapis.com/drive/v3/channels/stop
  
Authorization: Bearer CURRENT_USER_AUTH_TOKEN
Content-Type: application/json

{
  "id": "4ba78bf0-6a47-11e2-bcfd-0800200c9a66",
  "resourceId": "ret08u3rv24htgh289g"
}

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4