概要
Reseller API は Pub/Sub API を使用して、さまざまな Google Workspace サブスクリプション イベントに関するプッシュ通知を配信します。たとえば、ユーザーのサブスクリプション ステータスが変更されたときに通知を受け取るように、プッシュ通知を設定できます。
前提条件
- Google Cloud プロジェクトで Pub/Sub API を有効にします。
- Cloud プロジェクトのサービス アカウントに Pub/Sub IAM ロールを付与します。
roles/pubsub.editor
ロールを付与することは、簡単で範囲が広すぎない良い妥協案ですが、より具体的な Pub/Sub 権限を使用することをおすすめします。
トピックの作成
トピックを作成するには、resellernotify.register
メソッドを使用して Reseller API に登録する必要があります。resellernotify.register
メソッドは、サービス アカウントのメールアドレスをパラメータとして受け取ります。新しく作成したトピックにサブスクライブできるのは、この方法で承認されたサービス アカウントのみです。
POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/register
{
"serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}
成功すると、HTTP 200
ステータス コードと、Pub/Sub トピック名を含む JSON レスポンスが返されます。
レスポンスの例を次に示します。
{
"topicName": "projects/partner-watch/topics/C0abcdefg"
}
トピックを使用するように追加のサービス アカウントを承認するには、resellernotify.register
を再度呼び出します。
サービス アカウントのアクセス権を取り消す
Reseller API には、resellernotify.unregister
エンドポイントを使用してサービス アカウントの登録を解除する機能もあります。
POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/unregister
{
"serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}
トピックをサブスクライブする
Pub/Sub トピックを作成したら、アプリケーションが変更イベントを使用する方法を設定する必要があります。次のいずれかを選択してください。
- プッシュ サブスクリプション: HTTP
POST
コールバックを指定します。Pub/Sub は、このコールバックを使用して新しいイベントをアプリケーションに通知します。 - pull サブスクリプション: アプリケーションは定期的に HTTP 呼び出しを行い、キューに追加されたすべての変更を取得します。
トピックをサブスクライブするリクエストの例を次に示します。
PUT https://pubsub.googleapis.com/v1/projects/PROJECT/subscriptions/SUBSCRIPTION_NAME { "topic": "TOPIC_NAME" // Only needed for push configurations "pushConfig": { "pushEndpoint": "PUSH_NOTIFICATION_ENDPOINT" }, }
次のように置き換えます。
PROJECT
: Google Cloud プロジェクト。SUBSCRIPTION_NAME
: サブスクリプションの識別名。TOPIC_NAME
: 前に作成した Pub/Sub トピック。PUSH_NOTIFICATION_ENDPOINT
: プッシュ通知ハンドラのエンドポイント。
成功すると、HTTP 200
ステータス コードが返されます。レスポンスの例を次に示します。
{ "name": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME", "topic": "TOPIC_NAME", "pushConfig": { "pushEndpoint": "PUSH_NOTIFICATION_ENDPOINT" }, "ackDeadlineSeconds": 10 }
通知の形式
次の例は、Pub/Sub 通知の例です。メッセージ データは、base64 でエンコードされた JSON 文字列として送信されます。
{ "message": { "attributes": {}, "data": "eyJza3VfaWQiOiAiR29vZ2xlLUFwcHMtVW5saW1pdGVkIiwgImV2ZW50X3R5cGUiOiAiU1VCU0NSSVBUSU9OX0NBTkNFTExFRCIsICJjdXN0b21lcl9kb21haW5fbmFtZSI6ICJkb21haW4uY29tIiwgInN1YnNjcmlwdGlvbl9pZCI6ICIxMjM0NTY3IiwgImN1c3RvbWVyX2lkIjogIkMwYWJjZGVmIiwgIm1lc3NhZ2VfaWQiOiAiODY3NTMwOSIsICJwdWJsaXNoX3RpbWUiOiB7InNlY29uZHMiOiAxNDU3NzMxODQ2LCAibmFub3MiOiAzNDkwMDAwMDB9LCAicmVzZWxsZXJfY3VzdG9tZXJfaWQiOiAiQzByZXNlbGxlciJ9", "message_id": 1234567891012131 }, "subscription": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME" }
デコード後の message.data
オブジェクトの例を次に示します。
{
"customer_id": "C0abcdef",
"customer_domain_name": "domain.com",
"event_type": "SUBSCRIPTION_CANCELLED",
"sku_id": "Google-Apps-Unlimited",
"subscription_id": "1234567",
// Optional fields depended on event_type
"subscription_suspension_reasons": [],
"subscription_cancellation_reason": "REASON"
}
イベントタイプ
次のリストに、使用可能なすべてのイベントタイプを示します。
NEW_SUBSCRIPTION_CREATED
: 新しい定期購入が作成されました。SUBSCRIPTION_TRIAL_ENDED
: サブスクリプションのトライアルが終了しました。PRICE_PLAN_SWITCHED
: お客様がフレキシブル プランから年間プランに切り替えました。お客様が更新の一環として期間契約型プランからフレキシブル プランに切り替えた場合、このイベントはトリガーされません。COMMITMENT_CHANGED
: 年間コミットメントが増加または減少しました。SUBSCRIPTION_RENEWED
: 年間定期購入が更新されました。SUBSCRIPTION_SUSPENDED
: 定期購入が停止されています。subscription_suspension_reasons
フィールドを確認します。SUBSCRIPTION_SUSPENSION_REVOKED
: 以前に停止された定期購入の停止が取り消されました。SUBSCRIPTION_CANCELLED
: 定期購入が解約されました。subscription_cancellation_reason
フィールドを確認します。転送の検出にも使用できます。SUBSCRIPTION_CONVERTED
: 定期購入が変換されました。このイベントの例を次に示します。- 直接サブスクリプションを販売パートナー サブスクリプションに変換する。
- 有料定期購入を猶予期間特典に切り替える。
- オンライン サブスクリプションをオフライン サブスクリプションに切り替える。
SUBSCRIPTION_UPGRADE
: サブスクリプションの SKU がアップグレードされました。たとえば、サブスクリプションが Google Workspace Business Starter から Business Standard にアップグレードされた場合です。SUBSCRIPTION_DOWNGRADE
: サブスクリプション SKU がダウングレードされました。たとえば、サブスクリプションが Google Workspace Business Standard から Business Starter にダウングレードされた場合です。LICENSE_ASSIGNMENT_CHANGED
: ライセンスがユーザーに割り当てられたか、ユーザーから取り消されました。このイベントを使用すると、フレキシブル サブスクリプションの座席数の変更を事後的に追跡できます。
定期購入の解約理由
定期購入の解約理由は、event_type
が SUBSCRIPTION_CANCELLED
の場合に入力されます。キャンセルの理由として考えられるのは次のとおりです。
TRANSFERRED_OUT
: お客様が直接請求または別の販売パートナーに移行しました。PURCHASE_OF_SUBSUMING_SKU
: お客様が、別の SKU をオーバーライドする SKU にアップグレードしました。たとえば、Google Workspace Business Starter と Google Vault をご利用のお客様が Google Workspace Business Plus にアップグレードした場合、Vault サブスクリプションは Google Workspace Business Plus に含まれているため、サブスクリプションは自動的に解約されます。RESELLER_INITIATED
: 販売パートナーが定期購入をキャンセルしました。OTHER
: 上記以外の理由で定期購入が解約されました。
サブスクリプションの停止理由
サブスクリプションの停止理由は、event_type
が SUBSCRIPTION_SUSPENDED
の場合に入力されます。停止の理由として考えられるのは次のとおりです。
PENDING_TOS_ACCEPTANCE
: お客様がログインして Google Workspace の再販利用規約に同意していません。RENEWAL_WITH_TYPE_CANCEL
: お客様のコミットメントが終了し、契約期間の終了時にサービスが解約されました。RESELLER_INITIATED
: 販売パートナーがサブスクリプションを手動で停止しました。TRIAL_ENDED
: お客様の試用期間が終了し、お客様が試用以外のプランを選択しませんでした。OTHER
: お客様が Google 内部の理由(不正行為など)で停止されている。
Pub/Sub の制限事項
プッシュ通知の順序は保証されません。メッセージが複数回配信される場合や、極端な状況では配信されない場合があります。変更されたすべてのサブスクリプションで reseller.subscriptions.get
を使用して現在の状態を取得することをおすすめします。