Migracja usług

Interfejs Merchant API wprowadza bardziej niezawodny i intuicyjny sposób zarządzania danymi produktów. Główna zmiana polega na rozdzieleniu danych produktów na 2 odrębne 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.

Z tego przewodnika dowiesz się o najważniejszych różnicach, które pomogą Ci przeprowadzić migrację integracji z Content API for Shopping. Szczegółowy przewodnik dotyczący korzystania 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:

  • Dedykowane zasoby do wprowadzania i przetwarzania danych: Merchant API dzieli zarządzanie produktami na 2 zasoby. Za pomocą zasobu ProductInput możesz wstawiać, aktualizować i usuwać dane produktów. Za pomocą zasobu tylko do odczytu Product możesz wyświetlać ostateczny produkt po przetworzeniu przez Google Twoich danych wejściowych, zastosowaniu reguł i połączeniu danych z dodatkowych źródeł.

  • Kodowanie nazw produktów: w przypadku pól ProductInput.name i Product.name możesz używać kodowania base64url bez dopełnienia (RFC 4648 sekcja 5). Jeśli nazwy produktów zawierają znaki używane przez Merchant API lub znaki zarezerwowane w adresach URL, kodowanie jest obowiązkowe. Nazwy produktów musisz na przykład zakodować, jeśli zawierają one którykolwiek z tych znaków:

    % . + / : ~ , ( * ! ) & ? = @ # $
    
  • Zintegrowany stan produktu: usługa productstatuses została usunięta. Problemy z weryfikacją produktów i stany miejsc docelowych są teraz bezpośrednio uwzględniane w Product zasobie w polu productStatus, co upraszcza pobieranie danych.

  • Przewidywalne aktualizacje produktów: nowa productInputs.patch metoda bezpośrednio modyfikuje konkretne dane wejściowe produktu. Jest to znaczące ulepszenie w porównaniu z Content API for Shopping, gdzie aktualizacje mogły zostać nieoczekiwanie zastąpione przez inne przesłane pliki danych. W Merchant API aktualizacja pozostaje do momentu ponownej aktualizacji lub usunięcia konkretnych danych wejściowych produktu. Aktualizacje produktów są stosowane do ProductInput zasobu, a nie do przetworzonego Product zasobu.

  • Wybierz źródło danych, aby ułatwić zarządzanie danymi: wszystkie productInputs operacje zapisu wymagają teraz parametru zapytania dataSource, co pozwala wyraźnie określić, które źródło danych modyfikujesz. Jest to szczególnie przydatne, jeśli masz wiele źródeł danych.

  • Nowe identyfikatory zasobów: produkty są teraz identyfikowane za pomocą zasobu RESTful name, a nie pola id. Format to accounts/{account}/products/{product}.

  • Brak niestandardowych partii: metoda custombatch nie jest już dostępna. Aby wysłać wiele żądań w jednym wywołaniu HTTP, możesz użyć asynchronicznych żądań lub grupowania HTTP.

  • Źródła danych dla dowolnej etykiety pliku danych i języka: Merchant API umożliwia tworzenie źródła danych bez określania etykiety pliku danych i języka a tym samym wstawianie produktu z dowolną etykietą pliku danych i językiem.

Żą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świetlanie listy produktów GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products
Wstawianie produktu 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}
Pobieranie 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
Grupowanie wielu żądań POST https://shoppingcontent.googleapis.com/content/v2.1/products/custombatch Użyj żądań asynchronicznych lub grupowania 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 znaków składający się z segmentów oddzielonych dwukropkiem (:).
Format: channel:contentLanguage:targetCountry:offerId lub channel:contentLanguage:feedLabel:offerId.
Przykład: online:en:US:sku123
Ciąg znaków zasobu REST name.
Format: accounts/{account}/products/{product} gdzie {product} to contentLanguage~feedLabel~offerId.
Przykład: accounts/12345/products/en~US~sku123.
Kodowanie: kodowanie base64url bez dopełnienia jest zalecane i obowiązkowe w przypadku identyfikatorów produktów zawierających znaki używane przez Merchant API lub znaki zarezerwowane w adresach URL.

Metody

Ta tabela zawiera metody Content API for Shopping i ich odpowiedniki w 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 Wyświetla listę ostatecznych, przetworzonych produktów.
products.insert productInputs.insert Wstawia dane wejściowe produktu. Wymaga parametru dataSource.
products.update productInputs.patch Działanie jest znacznie inne. Aktualizuje konkretne dane wejściowe produktu i jest trwałe.
products.delete productInputs.delete Usuwa konkretne dane wejściowe produktu. Wymaga parametru dataSource.
products.custombatch Niedostępne Użyj żądań asynchronicznych lub grupowania 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żyj żądań asynchronicznych lub grupowania HTTP.

Szczegółowe zmiany pól

Ta tabela zawiera najważniejsze pola, które zostały zmienione, dodane lub usunięte w Merchant API.

Content API for Shopping Merchant API Opis
id name Głównym identyfikatorem produktu jest teraz nazwa zasobu REST name. Kodowanie base64url bez dopełnienia jest zalecane i obowiązkowe w przypadku nazw produktów zawierających znaki używane przez Merchant API lub znaki zarezerwowane w adresach URL.
Atrybuty specyfikacji danych produktów najwyższego poziomu (np. title, price, link) Obiekt productAttributes 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 parametru 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. W przypadku produktów dostępnych tylko lokalnie użyj parametru legacy_local. Pole channel nie jest już dostępne w Merchant API. W przypadku produktów z kanałem LOCAL w Content API for Shopping należy ustawić wartość true w polu legacy_local.
Niedostępne versionNumber Nowe opcjonalne pole w ProductInput, które można wykorzystać do zapobiegania wstawianiu danych w nieprawidłowej kolejności do głównych źródeł danych.
Pola typu string z określonym zestawem wartości Pola typu enum z określonym zestawem wartości Pola w atrybutach produktów z określonym zestawem wartości (np. excluded_destinations, availability) są teraz typu enum.