PRODUCT_STATUS_CHANGE 通知に登録すると、Merchant Center アカウントで商品の承認状況が変更されるたびに、リアルタイムでアラートを受け取ることができます。たとえば、商品が不承認になったことを検出して、データ品質の問題を修正できます。
始める前に、Notifications サブ API の概要に記載されている要件に従ってコールバック URI が構成されていることを確認してください。
商品ステータスの変更に関する通知を受け取る
商品のステータスの変更を登録するには、registeredEvent を PRODUCT_STATUS_CHANGE に設定して、notificationsubscriptions リソースに POST リクエストを送信します。
特定のターゲット アカウントを登録する
次のサンプル リクエストでは、特定の販売アカウントの商品ステータスの変更を登録します。
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"targetAccount": "accounts/{TARGETACCOUNT_ID}",
"callBackUri": "https://example.com/callback"
}
次のように置き換えます。
- ACCOUNT_ID: サブスクリプションを所有し、通知を受け取るアカウントの識別子。
- TARGETACCOUNT_ID: 通知を受け取るアカウントの識別子。
Merchant Center アカウントがリンクされたアカウントのない独立アカウントである場合は、両方の変数に独自のアカウント ID を使用します。
すべての管理対象アカウントを登録する
複数のアカウント(サブアカウントを持つアドバンス アカウントなど)を管理している場合は、allManagedAccounts: true を設定することで、管理対象のすべてのアカウントで商品のステータス変更を登録できます。
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
呼び出しが成功すると、一意のサブスクリプション ID を含むサブスクリプションの name 識別子が返されます。
{
"name":"accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}",
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
商品ステータス変更のペイロードをデコードする
商品のステータスが変更されると、コールバック URI は base64 でエンコードされたメッセージを受信します。デコードされたペイロードは、ProductStatusChangeMessage 形式に準拠しています。
{
"account": "accounts/{TARGETACCOUNT_ID}",
"managingAccount": "accounts/{ACCOUNT_ID}",
"resourceType": "PRODUCT",
"attribute": "STATUS",
"changes": [{
"oldValue": "approved",
"newValue": "disapproved",
"regionCode": "US",
"reportingContext": "SHOPPING_ADS"
}, {
"oldValue": "approved",
"newValue": "disapproved",
"regionCode": "JP",
"reportingContext": "SHOPPING_ADS"
},{
"oldValue": "approved",
"newValue": "disapproved",
"regionCode": "GE",
"reportingContext": "SHOPPING_ADS"
}],
"resourceId": "ONLINE~en~US~1234",
"resource": "accounts/{TARGETACCOUNT_ID}/products/ONLINE~en~US~1234",
"expirationTime": "2024-10-22T02:43:47.461464Z",
"eventTime": "2024-03-21T02:43:47.461464Z"
}
ペイロード フィールドとルール
oldValueとnewValue: 以前のステータスと更新されたステータスを表します。指定できる値は、approved、pending、disapproved、または空の文字列('')です。oldValueを省略すると、商品が新規作成されます。newValueが省略されている場合、プロダクトは削除されています。
expirationTime: 商品の特典の有効期限を示します。商品が削除されると、このフィールドは省略されます。reportingContext: ステータスが変更された広告または無料リスティングのサーフェス。サポートされている値には、ReportingContextEnum のSHOPPING_ADS、LOCAL_INVENTORY_ADS、YOUTUBE_SHOPPING、YOUTUBE_CHECKOUT、YOUTUBE_AFFILIATE、FREE_LISTINGS_UCP_CHECKOUTがあります。eventTime: イベントが生成された時点のタイムスタンプ。このタイムスタンプを使用して、イベントの順序を適切に設定します。
商品ステータスの変更通知をテストする
次のサンプル リクエストを使用して、コールバック エンドポイントが商品ステータスの変更メッセージを正しく受信、確認、デコードするかどうかをテストします。
curl --request POST \
'https://{YOUR_CALLBACK_URI}' \
--header 'Content-Type: application/json' \
--header 'Accept: text/plain' \
--data '{"message":{"data": "ewogICJhY2NvdW50IjogImFjY291bnRzLzEyMzQiLAogICJtYW5hZ2luZ0FjY291bnQiOiAiYWNjb3VudHMvNTY3OCIsCiAgInJlc291cmNlVHlwZSI6ICJQUk9EVUNUIiwKICAiYXR0cmlidXRlIjogIlNUQVRVUyIsCiAgImNoYW5nZXMiOiBbewogICAgIm9sZFZhbHVlIjogImFwcHJvdmVkIiwKICAgICJyZWdpb25Db2RlIjogIlVTIiwKICAgICJyZXBvcnRpbmdDb250ZXh0IjogIlNIT1BQSU5HX0FEUyIKICB9XSwKICAicmVzb3VyY2VJZCI6ICJPTkxJTkV+ZW5+VVN+MDAwMDAwMDAwMDAwIiwKICAicmVzb3VyY2UiOiAiYWNjb3VudHMvMTIzNC9wcm9kdWN0cy9PTkxJTkV+ZW5+VVN+MDAwMDAwMDAwMDAwIiwKICAiZXhwaXJhdGlvblRpbWUiOiAiMjAyNC0xMC0yMlQwMjo0Mzo0Ny40NjE0NjRaIiwKICAiZXZlbnRUaW1lIjogIjIwMjQtMDMtMjFUMDI6NDM6NDcuNDYxNDY0WiIKfQ=="}}'この呼び出しに応答して、コールバック URI は許容可能な HTTP ステータス コード(200 OK など)を返す必要があります。デコードされたメッセージの内容は次のとおりです。
{
"account": "accounts/1234",
"managingAccount": "accounts/5678",
"resourceType": "PRODUCT",
"attribute": "STATUS",
"changes": [{
"oldValue": "approved",
"regionCode": "US",
"reportingContext": "SHOPPING_ADS"
}],
"resourceId": "ONLINE~en~US~000000000000",
"resource": "accounts/1234/products/ONLINE~en~US~000000000000",
"expirationTime": "2024-10-22T02:43:47.461464Z",
"eventTime": "2024-03-21T02:43:47.461464Z"
}