L'API Merchant introduce un modo più efficace e intuitivo per gestire i dati di prodotto. La modifica principale è la separazione dei dati di prodotto in due risorse distinte: ProductInput per l'invio dei dati e Product per la visualizzazione della versione finale elaborata, inclusi lo stato del prodotto e i problemi. Questa nuova struttura offre un'esperienza più prevedibile e trasparente.
Questa guida illustra le principali differenze per aiutarti a eseguire la migrazione della tua integrazione dall'API Content for Shopping. Per una guida dettagliata sull'utilizzo delle nuove funzionalità, consulta Gestisci i tuoi prodotti.
Differenze principali
Ecco le modifiche più significative alla gestione dei prodotti nell'API Merchant rispetto all'API Content for Shopping:
Risorse dedicate per i dati di input ed elaborati: l'API Merchant suddivide la gestione dei prodotti in due risorse. Puoi utilizzare la risorsa
ProductInputper inserire, aggiornare ed eliminare i dati di prodotto. Puoi utilizzare la risorsa di sola letturaProductper visualizzare il prodotto finale dopo che Google ha elaborato i tuoi input, applicato le regole e combinato i dati provenienti da origini supplementari.Codifica per i nomi dei prodotti: puoi utilizzare la codifica base64url senza spaziatura interna (RFC 4648 sezione 5) per i campi
ProductInput.nameeProduct.name. Se i nomi dei prodotti contengono caratteri utilizzati dall'API Merchant o caratteri riservati per gli URL, la codifica è obbligatoria. Ad esempio, devi codificare i nomi dei prodotti se contengono uno dei seguenti caratteri:% . + / : ~ , ( * ! ) & ? = @ # $Stato del prodotto integrato: il servizio
productstatusesviene rimosso. I problemi di convalida dei prodotti e gli stati delle destinazioni sono ora inclusi direttamente nella risorsaProductall'interno del campoproductStatus, semplificando il recupero dei dati.Aggiornamenti dei prodotti prevedibili: il nuovo metodo
productInputs.patchmodifica direttamente un input di prodotto specifico. Si tratta di un miglioramento significativo rispetto all'API Content for Shopping, in cui gli aggiornamenti potevano essere sovrascritti inaspettatamente da altri caricamenti di feed. Nell'API Merchant, un aggiornamento rimane fino a quando l'input del prodotto specifico non viene aggiornato di nuovo o eliminato. Gli aggiornamenti dei prodotti vengono applicati alla risorsaProductInputanziché alla risorsaProductelaborata.Scegli l'origine dati per una gestione dei dati più pulita: tutte le operazioni di scrittura di
productInputsora richiedono un parametro di querydataSource, che indica esplicitamente l'origine dati che stai modificando. Questo è particolarmente utile se hai più origini che forniscono dati.Nuovi identificatori di risorse: i prodotti sono ora identificati da una risorsa RESTful
nameanziché dal campoid. Il formato èaccounts/{account}/products/{product}.Nessun batch personalizzato: il metodo
custombatchnon è più disponibile. Puoi utilizzare le richieste asincrone o il raggruppamento in batch HTTP per inviare più richieste in una singola chiamata HTTP.
Linee guida per le origini dati durante la migrazione
Prima di eseguire la migrazione delle origini dati, ti consigliamo vivamente di scegliere la strategia per le origini dati.
Per garantire una migrazione senza problemi ed evitare problemi come il furto di offerte, segui questi consigli:
Esegui il backfill del database: anziché chiamare
dataSources.listprima di ogni operazione sui prodotti, ti consigliamo vivamente di eseguire un backfill una tantum del tuo database locale. Aggiungi un campo del nomedataSourcea ogni record di prodotto in modo da poter fornire l'identificatore corretto direttamente nelle tue richieste.Consolida e utilizza le origini dati per qualsiasi etichetta e lingua: l'API Merchant consente di creare un'origine dati senza specificare l'etichetta e la lingua, consentendo quindi di inserire prodotti con qualsiasi etichetta dell'origine dati e lingua. Valuta la possibilità di utilizzare un'unica origine dati per qualsiasi etichetta e lingua.
Proteggi i tuoi prodotti: se utilizzi le regole dell'origine dati, chiama
products.getper trovare l'esattodataSourceassociato a un prodotto prima di aggiornarlo o eliminarlo. In questo modo, ti assicuri di modificare l'origine prevista ed eviti il furto accidentale delle offerte.
Richieste
Questa sezione mette a confronto i formati delle richieste per l'API Content for Shopping e l'API Merchant.
| Descrizione della richiesta | API Content per Shopping | API Merchant |
|---|---|---|
| Ottieni un prodotto | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product} |
| Elenca prodotti | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products |
| Inserisci un prodotto | POST https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products |
POST https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs:insert |
| Aggiorna un prodotto | PATCH https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} |
PATCH https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput} |
| Elimina un prodotto | DELETE https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} |
DELETE https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput} |
| Ottieni lo stato del prodotto | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses/{productId} |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product} |
| Elenca gli stati dei prodotti | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products |
| Raggruppa più richieste in batch | POST https://shoppingcontent.googleapis.com/content/v2.1/products/custombatch |
Utilizza le richieste asincrone o il raggruppamento in batch HTTP |
Identificatori
Il formato degli ID prodotto è stato modificato nell'API Merchant in un nome di risorsa REST standard.
| Descrizione dell'identificatore | API Content per Shopping | API Merchant |
|---|---|---|
| ID prodotto | Una stringa composta da segmenti separati da due punti (:).Formato: channel:contentLanguage:targetCountry:offerId o channel:contentLanguage:feedLabel:offerId.Esempio: online:en:US:sku123 |
Una stringa name della risorsa REST.Formato: accounts/{account}/products/{product} dove {product} è contentLanguage~feedLabel~offerId.Esempio: accounts/12345/products/en~US~sku123.Codifica: codifica base64url senza spaziatura consigliata e obbligatoria nel caso di ID prodotto che contengono caratteri utilizzati dall'API Merchant o caratteri riservati per gli URL. |
Metodi
Questa tabella mostra i metodi dell'API Content for Shopping e i relativi equivalenti nell'API Merchant.
| Metodo API Content for Shopping | Metodo dell'API Merchant | Disponibilità e note |
|---|---|---|
products.get |
products.get |
Recupera il prodotto finale elaborato. |
products.list |
products.list |
Elenca i prodotti finali elaborati. |
products.insert |
productInputs.insert |
Inserisce un input del prodotto. È richiesto un dataSource. |
products.update |
productInputs.patch |
Il comportamento è notevolmente diverso. Aggiorna un input di prodotto specifico ed è permanente. |
products.delete |
productInputs.delete |
Elimina un input di prodotto specifico. È richiesto un dataSource. |
products.custombatch |
Non disponibile | Utilizza le richieste asincrone o il raggruppamento in batch HTTP. |
productstatuses.get |
products.get |
Il servizio productstatuses viene rimosso. Le informazioni sullo stato ora fanno parte della risorsa Product. |
productstatuses.list |
products.list |
Il servizio productstatuses viene rimosso. Le informazioni sullo stato ora fanno parte della risorsa Product. |
productstatuses.custombatch |
Non disponibile | Utilizza le richieste asincrone o il raggruppamento in batch HTTP. |
Modifiche dettagliate ai campi
Questa tabella evidenzia i campi importanti che sono stati modificati, aggiunti o rimossi nell'API Merchant.
| API Content per Shopping | API Merchant | Descrizione |
|---|---|---|
id |
name |
L'identificatore principale di un prodotto è ora la risorsa REST name. La codifica base64url senza spaziatura è consigliata e obbligatoria nel caso di nomi di prodotti che contengono caratteri utilizzati dall'API Merchant o caratteri riservati per gli URL. |
Attributi della specifica dei dati di prodotto di primo livello (ad es. title, price, link) |
productAttributes oggetto |
Gli attributi del prodotto come title, price e link non sono più campi di primo livello. Ora sono raggruppati all'interno dell'oggetto productAttributes sia nella risorsa Product sia nella risorsa ProductInput. In questo modo, la struttura delle risorse è più pulita e organizzata. |
targetCountry |
feedLabel |
Il nome della risorsa ora utilizza feedLabel anziché targetCountry per allinearsi alla funzionalità di Merchant Center. |
feedId |
dataSource (parametro di query) |
Un nome dataSource è ora un parametro di query obbligatorio per tutti i metodi di scrittura productInputs (insert, update, delete). |
channel |
Non disponibile. Utilizza legacy_local per i prodotti solo locali. |
Il campo channel non è più presente nell'API Merchant. Per i prodotti con canale LOCAL nell'API Content for Shopping, il campo legacy_local deve essere impostato su true. |
| Non disponibile | versionNumber |
Un nuovo campo facoltativo su ProductInput che può essere utilizzato per impedire inserimenti fuori ordine nelle origini dati principali. |
Campi di tipo string con un insieme di valori definito |
Campi di tipo enum con un insieme di valori definito |
I campi all'interno degli attributi del prodotto con un insieme di valori definito (ad esempio excluded_destinations, availability) ora sono di tipo enum. |
gtin |
productAttributes.gtins |
Modificato da una stringa singola (gtin) a una stringa ripetuta (gtins). |
sizes |
productAttributes.size |
Modifica da una stringa ripetuta (sizes) a una stringa singola (size). |
sizeType, additionalSizeType |
productAttributes.sizeTypes |
sizeType e additionalSizeType sono stati sostituiti con un enum SizeType ripetuto (sizeTypes) che accetta fino a due valori (ad esempio ["PETITE", "MATERNITY"]). |