このドキュメントでは、プッシュ通知を使用して、 アプリケーションを変更する必要はありません。
概要
Admin SDK API のプッシュ通知を使用して、 おすすめします。この機能を使用すると、キャンペーンの 説明します。リソースが変更済みかどうかを判断するためにリソースをポーリングすることによってネットワークとコンピューティングのコストが増加することを避けることができます。監視対象のリソースが変更されるたびに、Admin SDK API は 説明します。
プッシュ通知を使用するには、次の 2 つのことを行う必要があります。
受信 URL(「Webhook」コールバック レシーバー)を設定します。
この 通知メッセージを処理する HTTPS サーバーです。 トリガーされます。
必要なリソース エンドポイントごとに(通知チャンネル)を設定する 。
チャンネルは、通知メッセージのルーティング情報を指定します。チャネル設定の一環として、そのチャネルの URL を を選択します。チャンネルのリソースが変更されると、Admin SDK API は通知メッセージを
POST
リクエストとして、その URL に送信します。
現在、Admin SDK API は Activities リソースに対する変更の通知をサポートしています。
通知チャンネルを作成する
プッシュ通知をリクエストするには、通知チャンネルを設定する必要があります リソースごとに最大 100 個の IP アドレスが必要です。通知チャンネルを設定した後 Admin SDK API は、監視対象のリソースが検出されたときに できます。
監視リクエストを送信する
監視可能な Admin SDK API のリソースには、次の形式の URI に関連付けられた watch
メソッドがあります。
https://www.googleapis.com/API_NAME /API_VERSION /RESOURCE_PATH /watch
特定のリソースに対する変更に関するメッセージの通知チャンネルを設定するには、そのリソースの watch
メソッドに POST
リクエストを送信します。
各通知チャンネルは特定のユーザーとユーザーの両方に
特定のリソース(またはリソースセット)へのアクセスを制御します。watch
リクエスト
ログインするには、現在のユーザーが
またはサービス アカウント
このリソースへのアクセス権を持ちます。
例
Activities リソースに対するすべての監視リクエストの一般的な形式は次のとおりです。
POST https://admin.googleapis.com/admin/reports/v1/activity/users/userKey or all /applications/applicationName /watch Authorization: Bearerauth_token_for_current_user 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 channel token. "payload": true, // (Optional) Whether to include the payload (message body) in notifications. "expiration": 3600 // (Optional) Your requested channel expiration time. }
userKey、applicationName、eventName
、filters
パラメータを使用すると、特定のイベント、ユーザー、アプリの通知のみを受け取ることができます。
注: 次の例では、わかりやすくするためにリクエスト本文を省略しています。
すべての管理アクティビティに注意してください。
POST https://admin.googleapis.com/admin/reports/v1/activity/users/all/applications/admin/watch
すべてのドキュメント アクティビティを監視します。
POST https://admin.googleapis.com/admin/reports/v1/activity/users/all/applications/docs/watch
特定のユーザーの管理者アクティビティを監視する:
POST https://admin.googleapis.com/admin/reports/v1/activity/users/liz@example.com/applications/admin/watch
ユーザーのパスワードの変更など、特定のイベントを監視します。
POST https://admin.googleapis.com/admin/reports/v1/activity/users/all/applications/admin/watch?eventName=CHANGE_PASSWORD
特定のドキュメントに対する変更を監視します。
POST https://admin.googleapis.com/admin/reports/v1/activity/users/all/applications/docs/watch?eventName=EDIT&filters==doc_id=123456abcdef
必須プロパティ
個々の watch
リクエストで、次のプロパティを指定する必要があります。
-
これを一意に識別する
id
プロパティ文字列 通知チャンネルを作成します。UUID(Universally Unique Identifier)または同様の一意の文字列を使用することをおすすめします。最大 64 文字を設定できます。設定した ID 値は、このチャンネルで受信するすべての通知メッセージの
X-Goog-Channel-Id
HTTP ヘッダーにそのまま使用されます。 -
値
web_hook
に設定されたtype
プロパティ文字列。 -
この通知チャンネルの通知をリッスンして応答する URL に設定された
address
プロパティ文字列。これは、 HTTPS を使用する必要があります。Admin SDK API がこの HTTPS アドレスに通知を送信できるのは、ウェブサーバーに有効な SSL 証明書がインストールされている場合にのみです。次のような証明書は無効です。
- 自己署名証明書。
- 信頼できない提供元によって署名された証明書。
- 失効した証明書。
- サブジェクトがターゲット ホスト名と一致しない証明書。
省略可能なプロパティ
watch
リクエストでは、以下のフィールドを指定することもできます。
-
チャンネル トークンとして使用する任意の文字列値を指定する
token
プロパティ。通知チャンネルを使用すると、 使用できます。たとえば、 認証トークンを使用して、各受信メッセージが 作成され、通知が送信されていないことを または、メールを内部の正しい宛先に このチャネルの目的に応じてアプリケーションを設計します。最大 256 文字を設定できます。トークンは すべての通知の
X-Goog-Channel-Token
HTTP ヘッダー アプリケーションがこのチャンネル用に受信するメッセージです。通知チャンネル トークンを使用するにあたっては、次のことをおすすめします。
URL クエリ パラメータなどの拡張可能なエンコード形式を使用します例:
forwardTo=hr&createdBy=mobile
OAuth トークンなどの機密データは含めないでください。
-
設定された
expiration
プロパティ文字列。 Unix タイムスタンプ (ミリ秒単位)です。 この通知チャンネルへのメッセージの送信を停止します。チャンネルに有効期限が設定されている場合、このチャンネルでアプリケーションが受け取るすべての通知メッセージの
X-Goog-Channel-Expiration
HTTP ヘッダーの値(人が読める形式の有効期限)として含まれます。
リクエストの詳細については、watch
メソッドをご覧ください。
API リファレンスの Activities リソースをご覧ください。
スマートウォッチのレスポンス
watch
リクエストで通知チャンネルが正常に作成されると、HTTP 200 OK
ステータス コードが返されます。
ウォッチ レスポンスのメッセージ本文には、メッセージの 通知チャンネルを使用します。
{ "kind": "api#channel", "id": "reportsApiId", // ID you specified for this channel. "resourceId": "o3hgv1538sdjfh", // ID of the watched resource. "resourceUri": "https://admin.googleapis.com/admin/reports/v1/activity/userKey /applications/applicationName ", // Version-specific ID of the watched resource. "token": "target=myApp-myFilesChannelDest", // Present only if one was provided. "expiration": 3600, // Actual expiration time as Unix timestamp (in ms), if applicable. }
返される情報には、リクエストの一部として送信したプロパティに加えて、この通知チャンネルで監視されているリソースを識別するための resourceId
と resourceUri
も含まれています。
返された情報は、通知の受信を停止するときなど、他の通知チャンネル操作に渡すことができます。
レスポンスの詳細については、watch
を参照してください。
API リファレンスの Activities リソースのメソッドをご覧ください。
メッセージを同期
リソースを監視する通知チャンネルを作成すると、Admin SDK API は通知が開始されていることを示す sync
メッセージを送信します。X-Goog-Resource-State
HTTP
これらのメッセージのヘッダー値は sync
です。ネットワークのタイミングの問題により、watch
メソッドのレスポンスを受け取る前に、sync
メッセージを受信することがあります。
sync
の通知は無視してもかまいませんが、
使用しています。たとえば、特定のメッセージを保持せずに
作成するには、X-Goog-Channel-ID
と
呼び出し内の X-Goog-Resource-ID
の値
通知の受信を停止します。また、
初期化を行うための sync
通知
できます。
Admin SDK API が受信 URL に送信する sync
メッセージの形式を以下に示します。
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
同期メッセージの X-Goog-Message-Number
HTTP ヘッダー値は、常に 1
になります。このチャンネルの後続の通知には、前の通知よりも大きなメッセージ番号が付与されます(ただし連続にはなりません)。
通知チャンネルを更新する
通知チャンネルには、有効期限とその値
リクエストまたは Admin SDK API の内部制限によって決定されます
またはデフォルト(より制限の厳しい値が使用されます)チャンネルの有効期限(設定されている場合)は、watch
メソッドによって返される情報に Unix タイムスタンプ(ミリ秒単位)で含まれています。また、このチャンネルでアプリケーションが受信するすべての通知メッセージの X-Goog-Channel-Expiration
HTTP ヘッダーにも、人が読める形式で有効期限の日時が含まれています。
現時点では、通知チャンネルを自動的に更新する方法はありません。チャンネルの有効期限が近づいたら、watch
メソッドを呼び出して新しいチャンネルに置き換える必要があります。通常どおり、新しいチャンネルの id
プロパティには一意の値を使用する必要があります。なお、
「重なり」であると言えます。2 つの通知チャンネルが通知される期間を
同じリソースがアクティブになります。
通知を受け取る
監視対象のリソースが変更されると、アプリケーションは
変更を説明する通知メッセージが送信されます。Admin SDK API は、この通知チャンネルの address
プロパティとして指定された URL に、HTTPS POST
リクエストとして、これらのメッセージを送信します。
通知メッセージの形式を解釈する
すべての通知メッセージには、X-Goog-
接頭辞を持つ一連の HTTP ヘッダーが含まれます。
通知の種類によっては、
あります。
ヘッダー
Admin SDK API によって受信側に送信された通知メッセージ URL には次の HTTP ヘッダーを含めます。
ヘッダー | 説明 |
---|---|
常に表示 | |
|
この ID を識別するために指定した UUID またはその他の一意の文字列 通知チャンネル。 |
|
この通知チャンネルでこのメッセージを識別する整数。sync メッセージの場合、値は常に 1 です。チャンネルの後続のメッセージごとにメッセージ番号が増加しますが、連続ではありません。 |
|
監視対象のリソースを識別する不透明値。この ID は API バージョン間で安定している。 |
|
通知をトリガーした新しいリソースの状態。
有効な値は、sync またはイベント名です。
|
|
監視対象リソースの API バージョン固有の識別子。 |
ときどき存在する | |
|
通知チャンネルの有効期限の日時(人が読める形式)。定義されている場合のみ存在します。 |
|
アプリケーションによって設定され、通知元の確認に使用できる通知チャンネル トークン。次の場合にのみ表示 定義します。 |
アクティビティの通知メッセージのリクエスト本文には、次の情報が含まれます。
プロパティ | 説明 |
---|---|
kind |
これを Activity リソースとして識別します。値: 固定文字列 "admin#reports#activity "。 |
id |
アクティビティ レコードの一意の識別子。 |
id.time |
アクティビティの発生時刻。値は ISO 8601 の日時形式です。時刻は、YYYY-MM-DDThh:mm:ssTZD の形式で、完全な日付と時、分、秒を指定します。例: 2010-04-05T17:30:04+01:00 |
id.uniqueQualifier |
複数のイベントの時間が同じ場合の一意の修飾子。 |
id.applicationName |
イベントが属するアプリケーション名。有効な値は次のとおりです。 <ph type="x-smartling-placeholder"> |
id.customerId |
Google Workspace アカウントの一意の識別子。 |
actor |
操作を行ったユーザー。 |
actor.callerType |
レポートに記載されているアクティビティを行った作成者のタイプ。このバージョンの API では、callerType は、レポートに記載されているアクションを実行した USER または OAuth 2LO エンティティ リクエストです。 |
actor.email |
アクティビティが報告されるユーザーのメインのメールアドレス。 |
actor.profileId |
ユーザーの一意の Google Workspace プロフィール ID。 |
ownerDomain |
管理コンソールまたはドキュメント アプリケーションのドキュメント所有者のドメイン。レポートのイベントの影響を受けるドメインです。 |
ipAddress |
操作を行ったユーザーの IP アドレス。これは、Google Workspace にログインしたときユーザーのインターネット プロトコル(IP)アドレスです。ユーザーの物理的な場所を反映している場合もあれば、そうでない場合もあります。たとえば、ユーザーのプロキシ サーバーのアドレスや、バーチャル プライベート ネットワーク(VPN)のアドレスを IP アドレスとして使用できます。API は IPv4 と IPv6 をサポートしています。 |
events[] |
レポートのアクティビティ イベント。 |
events[].type |
イベントの種類。管理者によって変更される Google Workspace のサービスまたは機能は、eventName プロパティを使用してイベントを識別する type プロパティで識別されます。 |
events[].name |
イベントの名前。これは、API によって報告されるアクティビティの特定の名前です。各 eventName は特定の Google Workspace サービスまたは機能に関連付けられており、API によってイベントの種類別に整理されます。
eventName リクエスト パラメータ全般:
|
events[].parameters[] |
さまざまなアプリケーションのパラメータ値のペア。 |
events[].parameters[].name |
パラメータの名前。 |
events[].parameters[].value |
パラメータの文字列値。 |
events[].parameters[].intValue |
パラメータの整数値。 |
events[].parameters[].boolValue |
パラメータのブール値。 |
例
Activity リソース イベントの通知メッセージの一般的な形式は次のとおりです。
POST https://mydomain.com/notifications // Your receiving URL. Content-Type: application/json; utf-8 Content-Length: 0 X-Goog-Channel-ID: reportsApiId X-Goog-Channel-Token: 398348u3tu83ut8uu38 X-Goog-Channel-Expiration: Tue, 29 Oct 2013 20:32:02 GMT X-Goog-Resource-ID: ret08u3rv24htgh289g X-Goog-Resource-URI: https://admin.googleapis.com/admin/reports/v1/activity/userKey /applications/applicationName X-Goog-Resource-State:eventName X-Goog-Message-Number: 10 { "kind": "admin#reports#activity", "id": { "time":datetime , "uniqueQualifier":long , "applicationName":string , "customerId":string }, "actor": { "callerType":string , "email":string , "profileId":long }, "ownerDomain":string , "ipAddress":string , "events": [ { "type":string , "name":string , "parameters": [ { "name":string , "value":string , "intValue":long , "boolValue":boolean } ] } ] }
管理者アクティビティ イベントの例:
POST https://mydomain.com/notifications // Your receiving URL. Content-Type: application/json; utf-8 Content-Length: 596 X-Goog-Channel-ID: reportsApiId X-Goog-Channel-Token: 245t1234tt83trrt333 X-Goog-Channel-Expiration: Tue, 29 Oct 2013 20:32:02 GMT X-Goog-Resource-ID: ret987df98743md8g X-Goog-Resource-URI: https://admin.googleapis.com/admin/reports/v1/activity/users/all/applications/admin?alt=json X-Goog-Resource-State: CREATE_USER X-Goog-Message-Number: 23 { "kind": "admin#reports#activity", "id": { "time": "2013-09-10T18:23:35.808Z", "uniqueQualifier": "-0987654321", "applicationName": "admin", "customerId": "ABCD012345" }, "actor": { "callerType": "USER", "email": "admin@example.com", "profileId": "0123456789987654321" }, "ownerDomain": "apps-reporting.example.com", "ipAddress": "192.0.2.0", "events": [ { "type": "USER_SETTINGS", "name": "CREATE_USER", "parameters": [ { "name": "USER_EMAIL", "value": "liz@example.com" } ] } ] }
お知らせに対応する
成功を示すために、次のいずれかのステータス コードが返されます。
200
、201
、202
、204
、または
102
。
サービスが Google の API クライアント ライブラリを使用していて、500
、502
、503
、または 504
を返した場合、Admin SDK API は指数バックオフで再試行します。
それ以外の戻りステータス コードは、すべてメッセージ失敗とみなされます。
Admin SDK API の通知イベントについて
このセクションでは、Admin SDK API でプッシュ通知を使用する際に受け取る通知メッセージについて詳しく説明します。
Reports API のプッシュ通知には、同期メッセージとイベント通知の 2 種類のメッセージが含まれます。メッセージ タイプは X-Goog-Resource-State
HTTP ヘッダーに示されます。イベント通知に指定できる値は、activities.list
メソッドの場合と同じです。アプリケーションごとに固有のイベントがあります。
通知を停止する
expiration
プロパティは、通知を自動的に停止するタイミングを制御します。Google Chat では
通知を受け取らないように設定することもできます。
次の URL にある stop
メソッドを呼び出して期限切れにします。
次の URI を使用します。
https://www.googleapis.com/admin/reports_v1/channels/stop
この方法では、少なくともチャンネルの
id
プロパティと resourceId
プロパティ。次のサンプルをご覧ください。
見てみましょう。Admin SDK API に watch
メソッドを持つ複数のタイプのリソースがある場合でも、stop
メソッドは 1 つのみです。
チャンネルの停止は適切な権限を持つユーザーのみが行えます。具体的には、次のとおりです。
- 通常のユーザー アカウントによってチャンネルが作成された場合、チャンネルを停止できるのは、同じクライアント(認証トークンの OAuth 2.0 クライアント ID で識別)の同じユーザーのみです。
- サービス アカウントによってチャンネルが作成された場合、同じクライアントのすべてのユーザーがそのチャンネルを停止できます。
次のコードサンプルは、通知の受信を停止する方法を示しています。
POST https://www.googleapis.com/admin/reports_v1/channels/stop Authorization: BearerCURRENT_USER_AUTH_TOKEN Content-Type: application/json { "id": "4ba78bf0-6a47-11e2-bcfd-0800200c9a66", "resourceId": "ret08u3rv24htgh289g" }