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 liés aux 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.
Différences majeures
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
ProductInputpour insérer, mettre à jour et supprimer vos données produit. Vous pouvez utiliser la ressourceProducten 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.Encodage pour les noms de produits : vous pouvez utiliser l'encodage base64url sans remplissage (section 5 de la norme RFC 4648) pour les champs
ProductInput.nameetProduct.name. L'encodage est obligatoire si les noms de produits contiennent des caractères utilisés par l'API Merchant ou des caractères réservés aux URL. Par exemple, vous devez encoder les noms de produits s'ils contiennent l'un des caractères suivants :% . + / : ~ , ( * ! ) & ? = @ # $État du produit intégré : le service
productstatusesest supprimé. Les problèmes de validation des produits et les états des destinations sont désormais directement inclus dans la ressourceProductdu champproductStatus, ce qui simplifie la récupération des données.Mises à jour prévisibles des produits : la nouvelle méthode
productInputs.patchmodifie 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 ressourceProductInputau lieu d'être traitées par la ressourceProduct.Choisissez votre source de données pour une gestion plus propre : toutes les opérations d'écriture
productInputsnécessitent désormais un paramètre de requêtedataSource, 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
nameau lieu du champid. Il a le format suivant :accounts/{account}/products/{product}.Pas de lots personnalisés : la méthode
custombatchn'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 des sources de données sans spécifier de libellé de flux ni de langue. Vous pouvez donc 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 |
Utiliser des requêtes asynchrones ou le 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} est contentLanguage~feedLabel~offerId.Exemple : accounts/12345/products/en~US~sku123.Encodage : encodage base64url sans remplissage recommandé et obligatoire pour les ID de produit contenant des caractères utilisés par l'API Merchant ou des caractères réservés aux URL. |
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 Merchant API | 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. Elle met à jour une entrée de produit spécifique et est persistante. |
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 des requêtes asynchrones ou le traitement par lot 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. L'encodage base64url sans remplissage est recommandé et obligatoire pour les noms de produits contenant des caractères utilisés par l'API Merchant ou des caractères réservés aux URL. |
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 mieux organisée. |
targetCountry |
feedLabel |
Le nom de la ressource utilise désormais feedLabel au lieu de targetCountry pour s'aligner sur la fonctionnalité 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 proposés 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. |