Interfejs Merchant API wprowadza bardziej niezawodny i intuicyjny sposób zarządzania danymi produktów. Główną zmianą jest podział danych produktów na 2 osobne zasoby: ProductInput do przesyłania danych i Product do wyświetlania ostatecznej, przetworzonej wersji, w tym stanu produktu i problemów. Ta nowa struktura zapewnia bardziej przewidywalne i przejrzyste działanie.
Ten przewodnik zawiera najważniejsze różnice, które pomogą Ci przeprowadzić migrację integracji z Content API for Shopping. Szczegółowy przewodnik po korzystaniu z nowych funkcji znajdziesz w artykule Zarządzanie produktami.
Najważniejsze różnice
Oto najważniejsze zmiany w sposobie zarządzania produktami w Merchant API w porównaniu z Content API for Shopping:
Osobne zasoby dla danych wejściowych i przetworzonych: Merchant API dzieli zarządzanie produktami na 2 zasoby. Możesz użyć zasobu
ProductInputdo wstawiania, aktualizowania i usuwania danych o produktach. Możesz użyć zasobuProducttylko do odczytu, aby wyświetlić ostateczny produkt po przetworzeniu przez Google Twoich danych wejściowych, zastosowaniu reguł i połączeniu danych ze źródeł dodatkowych.Kodowanie nazw produktów: w przypadku pól
ProductInput.nameiProduct.namemożesz użyć kodowania base64url bez dopełnienia (RFC 4648, sekcja 5). Jeśli nazwy produktów zawierają znaki używane przez interfejs Merchant API lub znaki zarezerwowane w adresach URL, kodowanie jest obowiązkowe. Musisz na przykład zakodować nazwy produktów, jeśli zawierają one którykolwiek z tych znaków:% . + / : ~ , ( * ! ) & ? = @ # $Zintegrowany stan produktu: usługa
productstatuseszostała usunięta. Problemy z weryfikacją produktu i stany miejsc docelowych są teraz bezpośrednio uwzględniane w zasobieProductw poluproductStatus, co upraszcza pobieranie danych.Przewidywalne aktualizacje produktów: nowa metoda
productInputs.patchbezpośrednio modyfikuje określone dane wejściowe produktu. Jest to znaczne ulepszenie w porównaniu z interfejsem Content API for Shopping, w którym aktualizacje mogły być nieoczekiwanie zastępowane przez inne przesłane pliki danych. W Merchant API aktualizacja pozostaje do momentu ponownego zaktualizowania lub usunięcia określonych danych wejściowych produktu. Aktualizacje produktów są stosowane w zasobieProductInputzamiast w zasobie przetworzonymProduct.Wybierz źródło danych, aby ułatwić zarządzanie danymi: wszystkie
productInputsoperacje zapisu wymagają teraz parametru zapytaniadataSource, co sprawia, że źródło danych, które modyfikujesz, jest wyraźnie określone. Jest to szczególnie przydatne, jeśli masz wiele źródeł dostarczających dane.Nowe identyfikatory zasobów: produkty są teraz identyfikowane za pomocą zasobu RESTful
namezamiast polaid. Format toaccounts/{account}/products/{product}.Brak niestandardowych partii: metoda
custombatchnie jest już dostępna. Możesz używać żądań asynchronicznych lub grupowania żądań HTTP, aby wysyłać wiele żądań w jednym wywołaniu HTTP.
Wytyczne dotyczące źródeł danych podczas migracji
Zanim przeprowadzisz migrację źródeł danych, zdecydowanie zalecamy wybranie strategii dotyczącej źródeł danych.
Aby zapewnić płynną migrację i zapobiec problemom, takim jak kradzież ofert, postępuj zgodnie z tymi zaleceniami:
Wypełnij bazę danych: zamiast wywoływać
dataSources.listprzed każdą operacją na produkcie, zdecydowanie zalecamy jednorazowe wypełnienie lokalnej bazy danych. Dodaj do każdego rekordu produktu poledataSourcenamedataSource, aby podawać prawidłowy identyfikator bezpośrednio w swoich żądaniach.Konsolidowanie i używanie źródeł danych dla dowolnej etykiety i języka: Merchant API umożliwia utworzenie źródła danych bez określania etykiety i języka, a tym samym wstawianie produktów z dowolną etykietą i językiem źródła danych. Rozważ użycie jednego źródła danych dla dowolnej etykiety i języka.
Chroń swoje produkty: jeśli używasz reguł źródła danych, wywołaj funkcję
products.get, aby znaleźć dokładny identyfikatordataSourcepowiązany z produktem przed jego zaktualizowaniem lub usunięciem. Dzięki temu zmodyfikujesz zamierzone źródło i zapobiegniesz przypadkowemu przejęciu oferty.
Żądania
W tej sekcji porównujemy formaty żądań w Content API for Shopping i Merchant API.
| Opis prośby | Content API for Shopping | Merchant API |
|---|---|---|
| Pobieranie produktu | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product} |
| Wyświetl listę produktów | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products |
| Wstaw produkt | POST https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products |
POST https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs:insert |
| Aktualizowanie produktu | PATCH https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} |
PATCH https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput} |
| Usuwanie produktu | DELETE https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} |
DELETE https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput} |
| Uzyskiwanie stanu produktu | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses/{productId} |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product} |
| Wyświetlanie listy stanów produktów | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products |
| Zbiorcze przesyłanie wielu żądań | POST https://shoppingcontent.googleapis.com/content/v2.1/products/custombatch |
Używanie żądań asynchronicznych lub grupowania żądań HTTP |
Identyfikatory
Format identyfikatorów produktów w Merchant API został zmieniony na standardową nazwę zasobu REST.
| Opis identyfikatora | Content API for Shopping | Merchant API |
|---|---|---|
| Identyfikator produktu | Ciąg składający się z segmentów rozdzielonych dwukropkiem (:).Format: channel:contentLanguage:targetCountry:offerId lub channel:contentLanguage:feedLabel:offerId.Przykład: online:en:US:sku123 |
Ciąg znaków name zasobu REST.Format: accounts/{account}/products/{product}, gdzie {product} to contentLanguage~feedLabel~offerId.Przykład: accounts/12345/products/en~US~sku123.Kodowanie: zalecane jest kodowanie base64url bez dopełnienia, a w przypadku identyfikatorów produktów zawierających znaki używane przez Merchant API lub znaki zarezerwowane w adresie URL jest ono obowiązkowe. |
Metody
Ta tabela zawiera metody Content API for Shopping i ich odpowiedniki w interfejsie Merchant API.
| Metoda Content API for Shopping | Metoda Merchant API | Dostępność i uwagi |
|---|---|---|
products.get |
products.get |
Pobiera ostateczny, przetworzony produkt. |
products.list |
products.list |
Zawiera listę gotowych, przetworzonych produktów. |
products.insert |
productInputs.insert |
Wstawia dane wejściowe produktu. Wymaga subskrypcji dataSource. |
products.update |
productInputs.patch |
Zachowanie jest znacznie inne. Aktualizuje konkretne dane wejściowe produktu i jest trwałe. |
products.delete |
productInputs.delete |
Usuwa konkretne dane wejściowe produktu. Wymaga subskrypcji dataSource. |
products.custombatch |
Niedostępne | Używaj żądań asynchronicznych lub grupuj żądania HTTP. |
productstatuses.get |
products.get |
Usługa productstatuses została usunięta. Informacje o stanie są teraz częścią zasobu Product. |
productstatuses.list |
products.list |
Usługa productstatuses została usunięta. Informacje o stanie są teraz częścią zasobu Product. |
productstatuses.custombatch |
Niedostępne | Używaj żądań asynchronicznych lub grupowania żądań HTTP. |
Szczegółowe zmiany w polach
Ta tabela zawiera ważne pola, które zostały zmienione, dodane lub usunięte w interfejsie Merchant API.
| Content API for Shopping | Merchant API | Opis |
|---|---|---|
id |
name |
Głównym identyfikatorem produktu jest teraz zasób REST name. Kodowanie base64url bez dopełnienia jest zalecane i obowiązkowe w przypadku nazw produktów, które zawierają znaki używane przez Merchant API lub znaki zarezerwowane w adresie URL. |
Atrybuty specyfikacji danych produktów najwyższego poziomu (np. title, price, link) |
productAttributes obiekt |
Atrybuty produktów, takie jak title, price i link, nie są już polami najwyższego poziomu. Są one teraz zgrupowane w obiekcie productAttributes w zasobach Product i ProductInput. Zapewnia to bardziej przejrzystą i uporządkowaną strukturę zasobów. |
targetCountry |
feedLabel |
Nazwa zasobu używa teraz znaku feedLabel zamiast targetCountry, aby była zgodna z funkcjami Merchant Center. |
feedId |
dataSource (parametr zapytania) |
Nazwa dataSource jest teraz wymaganym parametrem zapytania we wszystkich metodach zapisu productInputs (insert, update, delete). |
channel |
Niedostępne. Używaj wartości legacy_local w przypadku produktów dostępnych tylko lokalnie. |
Pole channel nie występuje już w Merchant API. W przypadku produktów z kanałem LOCAL w Content API for Shopping należy ustawić pole legacy_local na wartość „true”. |
| Niedostępne | versionNumber |
Nowe pole opcjonalne w ProductInput, które może być używane, by nie dopuścić do błędnej kolejności wstawiania danych do podstawowych źródeł danych. |
string pola typu z określonym zestawem wartości, |
enum pola typu z określonym zestawem wartości, |
Pola w atrybutach produktów z określonym zestawem wartości (np. excluded_destinations, availability) mają teraz typ enum. |