Migrer des produits

L'API Merchant offre un moyen plus robuste et intuitif de gérer vos données produit. Le principal changement est la séparation des données produit en deux ressources distinctes : ProductInput pour envoyer vos données et Product pour afficher la version finale traitée, y compris l'état et les problèmes des produits. Cette nouvelle structure offre une expérience plus prévisible et transparente.

Ce guide vous présente les principales différences pour vous aider à migrer votre intégration depuis Content API for Shopping. Pour obtenir un guide détaillé sur l'utilisation des nouvelles fonctionnalités, consultez Gérer vos produits.

Principales différences

Voici les principales différences entre la gestion des produits dans l'API Merchant et dans Content API for Shopping :

  • Ressources dédiées aux données d'entrée et traitées : l'API Merchant divise la gestion des produits en deux ressources. Vous pouvez utiliser la ressource ProductInput pour insérer, mettre à jour et supprimer vos données produit. Vous pouvez utiliser la ressource Product en lecture seule pour afficher le produit final une fois que Google a traité vos entrées, appliqué les règles et combiné les données provenant de sources supplémentaires.

  • État du produit intégré : le service productstatuses est supprimé. Les problèmes de validation des produits et les états des destinations sont désormais directement inclus dans la ressource Product du champ productStatus, ce qui simplifie la récupération des données.

  • Mises à jour prévisibles des produits : la nouvelle méthode productInputs.patch modifie directement une entrée de produit spécifique. Il s'agit d'une amélioration significative par rapport à Content API for Shopping, où les mises à jour pouvaient être remplacées de manière inattendue par d'autres importations de flux. Dans l'API Merchant, une mise à jour reste en place jusqu'à ce que l'entrée de produit spécifique soit à nouveau mise à jour ou supprimée. Les mises à jour des produits sont appliquées à la ressource ProductInput au lieu d'être traitées par la ressource Product.

  • Choisissez votre source de données pour une gestion plus propre des données : toutes les opérations d'écriture productInputs nécessitent désormais un paramètre de requête dataSource, ce qui permet de savoir explicitement quelle source de données vous modifiez. Cela est particulièrement utile si vous disposez de plusieurs sources de données.

  • Nouveaux identifiants de ressources : les produits sont désormais identifiés par une ressource RESTful name au lieu du champ id. Il a le format suivant : accounts/{account}/products/{product}.

  • Pas de lots personnalisés : la méthode custombatch n'est plus disponible. Vous pouvez utiliser des requêtes asynchrones ou le traitement par lot HTTP pour envoyer plusieurs requêtes en un seul appel HTTP.

  • Sources de données pour n'importe quel libellé de flux et n'importe quelle langue : l'API Merchant permet de créer une source de données sans spécifier de libellé de flux ni de langue, et donc d'insérer des produits avec n'importe quel libellé de flux et n'importe quelle langue.

Requêtes

Cette section compare les formats de requête pour Content API for Shopping et l'API Merchant.

Description de la requête Content API for Shopping API Merchant
Obtenir un produit GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product}
Répertorier les produits GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products
Insérer un produit POST https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products POST https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs:insert
Mettre à jour un produit PATCH https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} PATCH https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput}
Supprimer un produit DELETE https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} DELETE https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput}
Obtenir l'état d'un produit GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses/{productId} GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product}
Lister les états des produits GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products
Regrouper plusieurs requêtes POST https://shoppingcontent.googleapis.com/content/v2.1/products/custombatch Requêtes asynchrones, traitement par lot HTTP

Identifiants

Le format des identifiants produit a été modifié dans Merchant API pour devenir un nom de ressource REST standard.

Description de l'identifiant Content API for Shopping API Merchant
ID produit Chaîne composée de segments séparés par un deux-points (:).
Format : channel:contentLanguage:targetCountry:offerId ou channel:contentLanguage:feedLabel:offerId.
Exemple : online:en:US:sku123
Chaîne name de ressource REST.
Format : accounts/{account}/products/{product}, où {product} correspond à contentLanguage~feedLabel~offerId.
Exemple : accounts/12345/products/en~US~sku123

Méthodes

Ce tableau présente les méthodes Content API for Shopping et leurs équivalents dans l'API Merchant.

Méthode Content API for Shopping Méthode de l'API Merchant Disponibilité et remarques
products.get products.get Récupère le produit final traité.
products.list products.list Liste les produits finaux traités.
products.insert productInputs.insert Insère une entrée de produit. Nécessite un dataSource.
products.update productInputs.update Le comportement est très différent. Il met à jour une entrée de produit spécifique et est persistant.
products.delete productInputs.delete Supprime une entrée de produit spécifique. Nécessite un dataSource.
products.custombatch Non disponible Utilisez des requêtes asynchrones ou le traitement par lot HTTP.
productstatuses.get products.get Le service productstatuses est supprimé. Les informations sur l'état font désormais partie de la ressource Product.
productstatuses.list products.list Le service productstatuses est supprimé. Les informations sur l'état font désormais partie de la ressource Product.
productstatuses.custombatch Non disponible Utilisez [asynchronous

requests](/merchant/api/samples/insert-product-input-async) ou regroupement HTTP. |

Modifications détaillées des champs

Ce tableau met en évidence les champs importants qui ont été modifiés, ajoutés ou supprimés dans l'API Merchant.

Content API for Shopping API Merchant Description
id name L'identifiant principal d'un produit est désormais la ressource REST name.
Attributs de premier niveau des spécifications des données produit (par exemple, title, price, link) Objet productAttributes Les attributs de produit tels que title, price et link ne sont plus des champs de premier niveau. Ils sont désormais regroupés dans l'objet productAttributes des ressources Product et ProductInput. Cela permet d'obtenir une structure de ressources plus propre et plus organisée.
targetCountry feedLabel Le nom de la ressource utilise désormais feedLabel au lieu de targetCountry pour s'aligner sur les fonctionnalités de Merchant Center.
feedId dataSource (paramètre de requête) Un nom dataSource est désormais un paramètre de requête obligatoire pour toutes les méthodes d'écriture productInputs (insert, update, delete).
channel Non disponible. Utilisez legacy_local pour les produits disponibles uniquement en magasin. Le champ channel n'est plus présent dans l'API Merchant. Les produits avec le canal LOCAL dans Content API for Shopping doivent plutôt définir le champ legacy_local sur "true".
Non disponible versionNumber Un nouveau champ facultatif sur ProductInput qui peut être utilisé pour éviter les insertions dans le désordre dans les sources de données principales.
Champs de type string avec un ensemble de valeurs défini Champs de type enum avec un ensemble de valeurs défini Les champs des attributs de produit avec un ensemble de valeurs défini (par exemple, excluded_destinations, availability) sont désormais de type enum.