In diesem Dokument wird beschrieben, wie Sie Push-Benachrichtigungen verwenden, um Ihre wenn sich eine Ressource ändert.
Übersicht
Die Admin SDK API bietet Push-Benachrichtigungen, mit denen Sie Änderungen an den Ressourcen. Mit dieser Funktion können Sie die Leistung Ihrer Ihre Anwendung. Sie eliminieren zusätzliche Netzwerk- und Rechenleistung Kosten für das Abfragen von Ressourcen, um festzustellen, ob sie sich geändert haben. Wenn sich eine beobachtete Ressource ändert, benachrichtigt die Admin SDK API Ihr .
Um Push-Benachrichtigungen zu verwenden, müssen Sie zwei Dinge tun:
Empfangs-URL oder Webhook einrichten des Rückrufempfängers.
Dieses ist ein HTTPS-Server, der API-Benachrichtigungen verarbeitet, die wird ausgelöst, wenn sich eine Ressource ändert.
Richten Sie einen (Benachrichtigungskanal) für jeden Ressourcenendpunkt ein, den Sie einrichten möchten. ansehen.
Ein Kanal gibt Routinginformationen für Benachrichtigungen an. Nachrichten. Bei der Einrichtung des Channels müssen Sie die URL angeben, unter der Sie Benachrichtigungen erhalten möchten. Wenn sich die Ressourcen eines Kanals ändern, Die Admin SDK API sendet eine Benachrichtigung als
POST
an diese URL senden.
Derzeit unterstützt die Admin SDK API Benachrichtigungen über Änderungen an Die Ressource Activities
Benachrichtigungskanäle erstellen
Um Push-Benachrichtigungen anzufordern, musst du einen Benachrichtigungskanal einrichten für jede Ressource, die Sie überwachen möchten. Nach dem Festlegen der Benachrichtigungskanäle wird Ihre Anwendung von der Admin SDK API informiert, Änderungen.
Wiedergabeanfragen stellen
Jeder Watchable Admin SDK API-Ressource ist ein
watch
bei einem URI der folgenden Form:
https://www.googleapis.com/API_NAME/API_VERSION/RESOURCE_PATH/watch
So richten Sie einen Benachrichtigungskanal für Benachrichtigungen über Änderungen an einer
bestimmten Ressource, senden Sie eine POST
-Anfrage an den
Die Methode watch
für die Ressource.
Jeder Benachrichtigungskanal ist sowohl einem bestimmten Nutzer als auch
eine bestimmte Ressource (oder eine Gruppe von Ressourcen) Eine watch
-Anfrage
ist nur erfolgreich, wenn der aktuelle Nutzer
oder Dienstkonto
besitzt oder hat die Berechtigung, auf diese Ressource zuzugreifen.
Beispiele
Alle Überwachungsanfragen für die Aktivitätsressource haben das folgende allgemeine Format:
POST https://admin.googleapis.com/admin/reports/v1/activity/users/userKey or all/applications/applicationName/watch Authorization: Bearer auth_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. }
Sie können die Parameter userKey, applicationName, eventName
und filters
verwenden, um nur Benachrichtigungen zu bestimmten Ereignissen, Nutzern oder Anwendungen zu erhalten.
Hinweis:In den folgenden Beispielen wird der Anfragetext zur Verdeutlichung weggelassen.
Achten Sie auf alle Administratoraktivitäten:
POST https://admin.googleapis.com/admin/reports/v1/activity/users/all/applications/admin/watch
Achten Sie auf alle Docs-Aktivitäten:
POST https://admin.googleapis.com/admin/reports/v1/activity/users/all/applications/docs/watch
Achten Sie auf die Administratoraktivität eines bestimmten Nutzers:
POST https://admin.googleapis.com/admin/reports/v1/activity/users/liz@example.com/applications/admin/watch
Achten Sie auf ein bestimmtes Ereignis, z. B. bei der Änderung des Passworts eines Nutzers:
POST https://admin.googleapis.com/admin/reports/v1/activity/users/all/applications/admin/watch?eventName=CHANGE_PASSWORD
Achten Sie auf Änderungen an einem bestimmten Dokument:
POST https://admin.googleapis.com/admin/reports/v1/activity/users/all/applications/docs/watch?eventName=EDIT&filters==doc_id=123456abcdef
Erforderliche Properties
Bei jeder watch
-Anfrage müssen die folgenden Felder angegeben werden:
-
Ein
id
-Attributstring, der dieses Objekt eindeutig identifiziert in Ihrem Projekt zu erstellen. Wir empfehlen die Verwendung von eine universell eindeutige Kennung (UUID) oder Ähnliches eindeutigen String hinzu. Maximale Länge: 64 Zeichen.Der von Ihnen festgelegte ID-Wert wird im
X-Goog-Channel-Id
-HTTP-Header jeder Benachrichtigung die du für diesen Kanal erhältst. -
Ein
type
-Attributstring, der auf den Wert festgelegt istweb_hook
. -
Einen
address
-Property-String, der auf die URL festgelegt ist, die überwacht und reagiert auf Benachrichtigungen für diesen Benachrichtigungskanal. Dies ist Ihre Webhook-Callback-URL und muss HTTPS verwenden.Die Admin SDK API kann Benachrichtigungen an diese HTTPS-Adresse nur verwenden, wenn ein gültiges SSL-Zertifikat installiert ist auf Ihrem Webserver. Folgende Zertifikate sind nicht gültig:
- selbst signierte Zertifikate.
- von einer nicht vertrauenswürdigen Quelle signierte Zertifikate
- gesperrte Zertifikate
- Zertifikate, deren Thema nicht mit dem Ziel übereinstimmt Hostname.
Optionale Attribute
Sie können diese optionalen Felder auch mit Ihrem
watch
-Anfrage:
-
Ein
token
-Attribut, das einen beliebigen String angibt. -Wert zur Verwendung als Kanaltoken. Du kannst den Benachrichtigungskanal verwenden für verschiedene Zwecke. Sie können beispielsweise die Methode um zu überprüfen, ob alle eingehenden Nachrichten zu einem Kanal gehören, Anwendung erstellt, um sicherzustellen, dass die Benachrichtigung nicht um Spoofing zu verhindern, oder die Nachricht an das richtige Ziel innerhalb entsprechend dem Zweck dieses Kanals anpassen. Maximale Länge: 256 Zeichen.Das Token ist im
X-Goog-Channel-Token
-HTTP-Header in jeder Benachrichtigung Nachricht, die deine Anwendung für diesen Kanal erhält.Wenn Sie Tokens für Benachrichtigungskanäle verwenden, empfehlen wir Folgendes:
Verwenden Sie ein erweiterbares Codierungsformat, z. B. URL-Suchanfrage. Parameter. Beispiel:
forwardTo=hr&createdBy=mobile
Verwenden Sie keine sensiblen Daten wie OAuth-Tokens.
-
Ein
expiration
-Attributstring, der auf einen Unix-Zeitstempel (in Millisekunden) für das Datum und die Uhrzeit, zu der die Admin SDK API keine weiteren Nachrichten mehr für diesen Benachrichtigungskanal senden.Wenn ein Channel eine Ablaufzeit hat, wird dieser als Wert des HTTP-Headers
X-Goog-Channel-Expiration
(für Menschen lesbar) Format) in jeder Benachrichtigung, die Ihr Anwendung für diesen Kanal erhält.
Weitere Informationen zur Anfrage finden Sie in der Methode watch
.
für die Ressource Aktivitäten in der API-Referenz.
Antwort ansehen
Wenn die watch
-Anfrage erfolgreich eine Benachrichtigung erstellt
wird der HTTP-Statuscode 200 OK
zurückgegeben.
Der Nachrichtentext der Überwachungsantwort enthält Informationen über die den Sie gerade erstellt haben, wie im folgenden Beispiel gezeigt.
{ "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. }
Zusätzlich zu den Eigenschaften, die Sie im Rahmen Ihrer Anfrage gesendet haben, enthält der
die zurückgegebenen Informationen auch die resourceId
und
resourceUri
, um die dafür zu überwachende Ressource zu identifizieren
Benachrichtigungskanal.
Sie können die zurückgegebenen Informationen an einen anderen Benachrichtigungskanal weitergeben. z. B. wenn Sie den Erhalt von E-Mails nicht mehr Benachrichtigungen.
Weitere Informationen zur Antwort findest du in den watch
.
für die Ressource Activities in der API-Referenz.
Nachricht synchronisieren
Nachdem Sie einen Benachrichtigungskanal zum Überwachen einer Ressource erstellt haben, zeigt der
Die Admin SDK API sendet eine sync
-Nachricht, um anzugeben, dass
Benachrichtigungen werden gestartet. Das X-Goog-Resource-State
-HTTP
Der Headerwert für diese Nachrichten ist sync
. Aufgrund des Netzwerks
Probleme mit dem Zeitplan haben, ist es möglich, dass die sync
-Nachricht
noch bevor Sie die Antwort der Methode watch
erhalten.
Du kannst die sync
-Benachrichtigung ignorieren, aber du kannst
verwenden. Wenn Sie z. B. entscheiden, Ihre
des Kanals, können Sie X-Goog-Channel-ID
und
X-Goog-Resource-ID
-Werte in einem Aufruf von
keine Benachrichtigungen mehr erhalten. Sie können auch die
sync
-Benachrichtigung an, eine Initialisierung durchzuführen, um sich auf
späteren Terminen.
Das Format der sync
-Nachrichten, an die die Admin SDK API sendet
Ihre Empfangs-URL wird unten angezeigt.
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
Synchronisierungsnachrichten haben immer das HTTP-Statuscode X-Goog-Message-Number
Headerwert von 1
. Jede weitere Benachrichtigung für diesen Kanal hat
die größer als die vorherige ist, auch wenn die Meldung
keine fortlaufende Nummerierung.
Benachrichtigungskanäle verlängern
Ein Benachrichtigungskanal kann eine Ablaufzeit haben, mit einem Wert
der entweder durch Ihre Anfrage oder durch interne Limits der Admin SDK API bestimmt wird
oder Standardwerte (der restriktivere Wert wird verwendet). Ablauf des Kanals
(sofern vorhanden) als Unix-Zeitstempel
(in Millisekunden) in den Informationen, die von der Methode watch
zurückgegeben werden. Darüber hinaus enthält der
Ablaufdatum und -uhrzeit werden (in visuell lesbarem Format) in jedem
Benachrichtigung, die Ihre Anwendung für diesen Kanal in der
HTTP-Header „X-Goog-Channel-Expiration
“
Derzeit gibt es keine automatische Verlängerung eines Benachrichtigungskanals. Wann?
ein Kanal bald abläuft, musst du ihn durch einen neuen ersetzen. Rufe dazu folgenden Link auf:
die Methode watch
. Wie immer müssen Sie für jedes Element einen eindeutigen Wert verwenden,
Das Attribut id
des neuen Channels Es gibt wahrscheinlich
als „Überlappung“ Zeitraum, in dem die beiden Benachrichtigungskanäle für den
Ressource aktiv sind.
Benachrichtigungen erhalten
Immer wenn sich eine beobachtete Ressource ändert, erhält Ihre Anwendung eine
eine Benachrichtigung mit einer Beschreibung der Änderung. Die Admin SDK API sendet diese
Nachrichten als HTTPS-POST
-Anfragen an die URL senden, die Sie als
address
-Property für diese Benachrichtigung
Kanal.
Nachrichtenformat für Benachrichtigungen interpretieren
Alle Benachrichtigungen enthalten eine Reihe von HTTP-Headern mit
X-Goog-
Präfixe.
Einige Benachrichtigungstypen können auch ein
Nachrichtentext.
Header
Benachrichtigungen, die von der Admin SDK API an Ihren Empfänger gesendet werden Die URL enthält die folgenden HTTP-Header:
Header | Beschreibung |
---|---|
Immer einblenden | |
|
UUID oder ein anderer eindeutiger String, den Sie zur Identifizierung angegeben haben Benachrichtigungskanal. |
|
Ganzzahl, die diese Nachricht für diese Benachrichtigung identifiziert
Kanal. Der Wert für sync -Nachrichten ist immer 1 . Nachricht
mit jeder nachfolgenden Nachricht im Kanal erhöht,
nicht sequenziell. |
|
Ein intransparenter Wert, der die überwachte Ressource identifiziert. Diese ID lautet in allen API-Versionen stabil sein. |
|
Der neue Ressourcenstatus, der die Benachrichtigung ausgelöst hat.
Mögliche Werte:
sync oder einen Ereignisnamen.
|
|
Eine API-versionsspezifische Kennung für die überwachte Ressource. |
Manchmal anwesend | |
|
Datum und Uhrzeit des Ablaufs des Benachrichtigungskanals, angegeben in menschenlesbares Format. Nur vorhanden, wenn definiert. |
|
Token des Benachrichtigungskanals, das von Ihrer Anwendung festgelegt wurde, und mit dem Sie die Benachrichtigungsquelle überprüfen können. Nur vorhanden, wenn definiert. |
Benachrichtigungen für Aktivitäten enthalten die folgenden Informationen im Anfragetext:
Attribut | Beschreibung |
---|---|
kind |
Kennzeichnet dies als Activity-Ressource. Wert: der feste String „admin#reports#activity “. |
id |
Eindeutige Kennung des Aktivitätsdatensatzes. |
id.time |
Zeitpunkt des Auftretens der Aktivität. Der Wert ist in Datums- und Uhrzeitformat im ISO 8601-Format. Uhrzeit ist das vollständige Datum plus Stunden, Minuten und Sekunden im Format JJJJ-MM-TTThh:mm:ssTZD. Beispiel: 2010-04-05T17:30:04+01:00. |
id.uniqueQualifier |
Eindeutiger Kennzeichner, wenn mehrere Ereignisse gleichzeitig stattfinden. |
id.applicationName |
Name der Anwendung, zu der das Ereignis gehört. Folgende Werte sind möglich: <ph type="x-smartling-placeholder"> |
id.customerId |
Die eindeutige Kennung für ein Google Workspace-Konto. |
actor |
Nutzer, der die Aktion ausführt. |
actor.callerType |
Der Typ des Autors, der die im Bericht angegebene Aktivität ausgeführt hat. In dieser Version der API ist callerType die USER - oder OAuth 2LO-Entitätsanfrage, die die im Bericht aufgeführte Aktion ausgeführt hat . |
actor.email |
Die primäre E-Mail-Adresse des Nutzers, dessen Aktivitäten gemeldet werden. |
actor.profileId |
Die eindeutige Google Workspace-Profil-ID des Nutzers. |
ownerDomain |
Domain der Admin-Konsole oder des Eigentümers des Dokuments in der Google Docs-Anwendung Das ist die Domain, die vom Ereignis im Bericht betroffen ist. |
ipAddress |
IP-Adresse des Nutzers, der die Aktion ausführt. Das ist die IP-Adresse (Internet Protocol) des Nutzers bei der Anmeldung in Google Workspace, die den physischen Standort des Nutzers widerspiegeln kann oder nicht. Die IP-Adresse kann beispielsweise die Adresse des Proxyservers des Nutzers oder die Adresse eines virtuellen privaten Netzwerks (VPN) sein. Die API unterstützt IPv4 und IPv6. |
events[] |
Aktivitätsereignisse im Bericht. |
events[].type |
Ereignistyp. Der Google Workspace-Dienst oder die Google Workspace-Funktion, die ein Administrator ändert, ist in der type -Property angegeben. Diese kennzeichnet ein Ereignis mithilfe der eventName -Property. |
events[].name |
Name des Ereignisses. Dies ist der spezifische Name der Aktivität, die von der API gemeldet wird. Und jede eventName bezieht sich auf einen bestimmten Google Workspace-Dienst oder eine Google Workspace-Funktion, die von der API in Arten von Ereignissen organisiert wird.
Für eventName -Anfrageparameter im Allgemeinen:
<ph type="x-smartling-placeholder">
|
events[].parameters[] |
Parameterwerte für verschiedene Anwendungen. |
events[].parameters[].name |
Name des Parameters. |
events[].parameters[].value |
Stringwert des Parameters. |
events[].parameters[].intValue |
Ganzzahlwert des Parameters. |
events[].parameters[].boolValue |
Boolescher Wert des Parameters. |
Beispiele
Benachrichtigungen für Ereignisse zu Aktivitätsressourcen haben das folgende allgemeine Format:
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 } ] } ] }
Beispiel für ein Ereignis einer Administratoraktivität:
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" } ] } ] }
Auf Benachrichtigungen reagieren
Bei erfolgreicher Ausführung können Sie einen der folgenden Statuscodes zurückgeben:
200
, 201
, 202
, 204
oder
102
Wenn Ihr Dienst die API-Clientbibliothek von Google verwendet
und gibt 500
,502
, 503
oder 504
, die Admin SDK API, zurück.
Wiederholungsversuche mit exponentiellem Backoff.
Jeder andere Rückgabestatuscode wird als Nachrichtenfehler betrachtet.
Informationen zu Admin SDK API-Benachrichtigungsereignissen
Dieser Abschnitt enthält Details zu den Benachrichtigungen, die Sie erhalten, wenn Push-Benachrichtigungen mit der Admin SDK API verwendet werden.
Push-Benachrichtigungen der Reports API enthalten zwei Arten von Nachrichten: Synchronisierungsnachrichten und Ereignisbenachrichtigungen. Der Nachrichtentyp wird im HTTP-Header X-Goog-Resource-State
angegeben. Die möglichen Werte für Ereignisbenachrichtigungen sind die gleichen wie für die Methode activities.list
. Jede Anwendung hat eindeutige Ereignisse:
Benachrichtigungen deaktivieren
Mit der Eigenschaft expiration
wird festgelegt, wann die Benachrichtigungen automatisch beendet werden. Sie können
Du kannst festlegen, dass du für einen bestimmten Kanal keine Benachrichtigungen mehr erhalten möchtest, bevor dieser
durch Aufrufen der Methode stop
unter
den folgenden URI:
https://www.googleapis.com/admin/reports_v1/channels/stop
Bei dieser Methode müssen Sie mindestens den Typ
id
- und resourceId
-Eigenschaften, wie in den
Beispiel unten. Wenn die Admin SDK API über mehrere
Ressourcen mit watch
-Methoden, es gibt nur eine
stop
-Methode.
Nur Nutzer mit der entsprechenden Berechtigung können einen Kanal beenden. Wichtig ist insbesondere:
- Wurde der Kanal über ein reguläres Nutzerkonto erstellt, werden nur dieselben Nutzer aus dem gleichen Client (identifiziert durch OAuth 2.0-Client-IDs aus der Authentifizierungstokens), die den Kanal erstellt haben, können ihn beenden.
- Wenn der Kanal von einem Dienstkonto erstellt wurde, kann jeder Nutzer desselben kann der Client den Kanal beenden.
Das folgende Codebeispiel zeigt, wie Sie keine Benachrichtigungen mehr erhalten:
POST https://www.googleapis.com/admin/reports_v1/channels/stop Authorization: Bearer CURRENT_USER_AUTH_TOKEN Content-Type: application/json { "id": "4ba78bf0-6a47-11e2-bcfd-0800200c9a66", "resourceId": "ret08u3rv24htgh289g" }