La API de Merchant presenta una forma más sólida e intuitiva de administrar tus datos de productos. El cambio principal es la separación de los datos de productos en dos recursos distintos: ProductInput para enviar tus datos y Product para ver la versión final procesada, incluidos el estado y los problemas del producto. Esta nueva estructura proporciona una experiencia más predecible y transparente.
En esta guía, se explican las principales diferencias para ayudarte a migrar tu integración desde Content API for Shopping. Para obtener una guía detallada sobre el uso de las nuevas funciones, consulta Administra tus productos.
Diferencias clave
Estos son los cambios más significativos en la forma en que administras los productos en la API de Merchant en comparación con la Content API for Shopping:
- Recursos dedicados para los datos de entrada y los datos procesados: La API de Merchant divide la administración de productos en dos recursos. Puedes usar el recurso - ProductInputpara insertar, actualizar y borrar los datos de tus productos. Puedes usar el recurso de solo lectura- Productpara ver el producto final después de que Google procese tus entradas, aplique reglas y combine datos de fuentes complementarias.
- Estado del producto integrado: Se quitó el servicio de - productstatuses. Los problemas de validación de productos y los estados de destino ahora se incluyen directamente en el recurso- Productdentro del campo- productStatus, lo que simplifica la recuperación de datos.
- Actualizaciones de productos predecibles: El nuevo método - productInputs.patchmodifica directamente una entrada de producto específica. Esta es una mejora significativa en comparación con Content API for Shopping, en la que las actualizaciones podían sobrescribirse de forma inesperada con otras cargas de feeds. En la API de Merchant, una actualización permanece hasta que se vuelve a actualizar o se borra esa entrada de producto específica. Las actualizaciones de productos se aplican en el recurso- ProductInputen lugar de en el recurso- Productprocesado.
- Elige tu fuente de datos para una administración de datos más clara: Todas las operaciones de escritura ahora requieren un parámetro de consulta - dataSource, lo que explicita qué fuente de datos estás modificando.- productInputsEsto es especialmente útil si tienes varias fuentes que proporcionan datos.
- Nuevos identificadores de recursos: Ahora los productos se identifican con un recurso - namede RESTful en lugar del campo- id. El formato es- accounts/{account}/products/{product}.
- No hay lotes personalizados: El método - custombatchya no está disponible. Puedes usar solicitudes asíncronas o lotes HTTP para enviar varias solicitudes en una sola llamada HTTP.
- Fuentes de datos para cualquier etiqueta de feed e idioma: La API de Merchant permite crear fuentes de datos sin especificar la etiqueta de feed ni el idioma y, por lo tanto, permite insertar productos con cualquier etiqueta de feed e idioma. 
Solicitudes
En esta sección, se comparan los formatos de solicitud de Content API for Shopping y Merchant API.
| Descripción de la solicitud | Content API for Shopping | API de Merchant | 
|---|---|---|
| Obtén un producto | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} | GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product} | 
| Enumera productos | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products | GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products | 
| Insertar un producto | POST https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products | POST https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs:insert | 
| Actualiza un producto | PATCH https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} | PATCH https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput} | 
| Borrar un producto | DELETE https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} | DELETE https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput} | 
| Obtén el estado del producto | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses/{productId} | GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product} | 
| Enumera los estados de los productos | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses | GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products | 
| Agrupa varias solicitudes en lotes | POST https://shoppingcontent.googleapis.com/content/v2.1/products/custombatch | Solicitudes asíncronas y procesamiento por lotes HTTP | 
Identificadores
El formato de los identificadores de productos cambió en la API de Merchant a un nombre de recurso de REST estándar.
| Descripción del identificador | Content API for Shopping | API de Merchant | 
|---|---|---|
| ID del producto | Es una cadena compuesta por segmentos separados por dos puntos ( :).Formato: channel:contentLanguage:targetCountry:offerIdochannel:contentLanguage:feedLabel:offerId.Ejemplo: online:en:US:sku123 | Es una cadena namede recursos de REST.Formato: accounts/{account}/products/{product}, donde{product}escontentLanguage~feedLabel~offerId.Ejemplo: accounts/12345/products/en~US~sku123 | 
Métodos
En esta tabla, se muestran los métodos de Content API for Shopping y sus equivalentes en Merchant API.
| Método de Content API for Shopping | Método de la API de Merchant | Disponibilidad y notas | 
|---|---|---|
| products.get | products.get | Recupera el producto final procesado. | 
| products.list | products.list | Enumera los productos finales procesados. | 
| products.insert | productInputs.insert | Inserta una entrada de producto. Se requiere un dataSource. | 
| products.update | productInputs.update | El comportamiento es significativamente diferente. Actualiza una entrada de producto específica y es persistente. | 
| products.delete | productInputs.delete | Borra una entrada de producto específica. Se requiere un dataSource. | 
| products.custombatch | No disponible | Usa solicitudes asíncronas o procesamiento por lotes de HTTP. | 
| productstatuses.get | products.get | Se quita el servicio productstatuses. La información de estado ahora forma parte del recursoProduct. | 
| productstatuses.list | products.list | Se quita el servicio productstatuses. La información de estado ahora forma parte del recursoProduct. | 
| productstatuses.custombatch | No disponible | Usa [asíncrono | 
solicitudes](/merchant/api/samples/insert-product-input-async) o lotes HTTP. |
Cambios detallados en los campos
En esta tabla, se destacan los campos importantes que se cambiaron, agregaron o quitaron en la API de Merchant.
| Content API for Shopping | API de Merchant | Descripción | 
|---|---|---|
| id | name | El identificador principal de un producto ahora es el recurso de REST name. | 
| Atributos de especificaciones de datos de productos de nivel superior (p.ej., title,price,link) | Objeto productAttributes | Los atributos del producto, como title,priceylink, ya no son campos de nivel superior. Ahora se agrupan dentro del objetoproductAttributesen los recursosProductyProductInput. Esto proporciona una estructura de recursos más organizada y clara. | 
| targetCountry | feedLabel | El nombre del recurso ahora usa feedLabelen lugar detargetCountrypara alinearse con la funcionalidad de Merchant Center. | 
| feedId | dataSource(parámetro de consulta) | Ahora, el nombre de dataSourcees un parámetro de consulta obligatorio para todos los métodos de escritura deproductInputs(insert,update,delete). | 
| channel | No disponible. Usa legacy_localpara los productos solo locales. | El campo channelya no está presente en la API de Merchant. Los productos con el canalLOCALen Content API for Shopping deben establecer el campolegacy_localcomo verdadero. | 
| No disponible | versionNumber | Es un nuevo campo opcional en ProductInputque se puede usar para evitar inserciones desordenadas en las fuentes de datos principales. | 
| Campos de tipo stringcon un conjunto de valores definidos | Campos de tipo enumcon un conjunto de valores definidos | Los campos dentro de los atributos del producto con un conjunto de valores definido (por ejemplo, excluded_destinations,availability) ahora son de tipoenum. |