Puoi abbonarti alle notifiche PRODUCT_STATUS_CHANGE per ricevere avvisi in tempo reale
ogni volta che lo stato di approvazione dei prodotti cambia nei tuoi account
Merchant Center. Ad esempio, puoi rilevare quando un prodotto viene disapprovato per poter risolvere potenziali problemi di qualità dei dati.
Prima di iniziare, assicurati che l'URI di callback sia configurato in base ai requisiti descritti nella Panoramica della sub-API Notifications.
Iscriviti alle modifiche dello stato del prodotto
Per abbonarti alle modifiche dello stato del prodotto, invia una richiesta POST alla risorsa notificationsubscriptions con registeredEvent impostato su PRODUCT_STATUS_CHANGE.
Iscrizione a un account di destinazione specifico
La seguente richiesta di esempio esegue la registrazione alle modifiche dello stato del prodotto per un account commerciante specifico:
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"targetAccount": "accounts/{TARGETACCOUNT_ID}",
"callBackUri": "https://example.com/callback"
}
Sostituisci quanto segue:
- ACCOUNT_ID: l'identificatore dell'account proprietario dell'abbonamento e che riceve le notifiche.
- TARGETACCOUNT_ID: L'identificatore dell'account su cui vuoi ricevere notifiche.
Se il tuo account Merchant Center è un account autonomo senza account collegati, utilizza il tuo ID account per entrambe le variabili.
Iscriviti per tutti gli account gestiti
Se gestisci più account (ad esempio un account avanzato con
subaccount), puoi iscriverti alle modifiche dello stato dei prodotti in tutti gli account
gestiti impostando allManagedAccounts: true:
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
Le chiamate riuscite restituiscono un
name
identificatore per l'abbonamento, incluso un ID abbonamento univoco:
{
"name":"accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}",
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
Decodificare i payload di modifica dello stato del prodotto
Quando si verifica una modifica dello stato del prodotto, l'URI di callback riceve un messaggio codificato in base64. Una volta decodificato, il payload è conforme al formato
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"
}
Campi e regole del payload
oldValueenewValue: rappresentano lo stato precedente e quello aggiornato. I valori possibili sonoapproved,pending,disapprovedo una stringa vuota ('').- Se
oldValueviene omesso, il prodotto viene creato di recente. - Se
newValueviene omesso, il prodotto è stato eliminato.
- Se
expirationTime: indica la data di scadenza dell'offerta del prodotto. Questo campo viene omesso quando un prodotto viene eliminato.reportingContext: La piattaforma pubblicitaria o di schede senza costi in cui è cambiato lo stato. I valori supportati includonoSHOPPING_ADS,LOCAL_INVENTORY_ADS,YOUTUBE_SHOPPING,YOUTUBE_CHECKOUT,YOUTUBE_AFFILIATEeFREE_LISTINGS_UCP_CHECKOUTda ReportingContextEnum.eventTime: il timestamp di generazione dell'evento. Utilizza questo timestamp per garantire il corretto ordine degli eventi.
Testare le notifiche di modifica dello stato del prodotto
Utilizza la seguente richiesta di esempio per verificare se l'endpoint di callback riceve, riconosce e decodifica correttamente i messaggi di modifica dello stato del prodotto:
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=="}}'In risposta a questa chiamata, l'URI di callback deve restituire un codice di stato HTTP accettabile (ad esempio 200 OK). Il messaggio decodificato ha i seguenti contenuti:
{
"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"
}