Migra de Content API v2 a v2.1

En marzo de 2019, lanzamos la versión 2.1 de Content API for Shopping y, en abril de 2021, anunciamos que la versión 2 dejaría de estar disponible el 30 de septiembre de 2021. La versión v2 ya no está disponible. Migra a la versión 2.1 de inmediato.

Migra tu aplicación

La migración de v2 a v2.1 implica actualizar tus URLs de extremo para llamar a las nuevas versiones v2.1 y modificar tus aplicaciones a fin de que tengan en cuenta los cambios rotundos que se introducen en la versión v2.1.

Actualizar las llamadas a la API para usar los extremos v2.1

Para realizar llamadas a la versión 2.1, actualiza tus solicitudes a fin de que usen los extremos nuevos de la v2.1.

Por ejemplo, para llamar al método products.get con v2, deberías usar lo siguiente:

GET https://shoppingcontent.googleapis.com/content/v2/merchantId/products/productId

Para la versión 2.1, actualiza la URL a:

GET https://shoppingcontent.googleapis.com/content/v2.1/merchantId/products/productId

Para obtener información completa sobre los servicios y extremos v2.1, consulta la Referencia de la API.

Realiza los cambios necesarios

Además de actualizar las URL para tus llamadas a la API, también debes actualizar tu aplicación a fin de que tenga en cuenta varios cambios rotundos que se introdujeron en la versión 2.1. Revisa las siguientes secciones y actualiza tu aplicación según sea necesario.

1. Actualiza las integraciones con el servicio inventory

Se quitó el servicio inventory de la versión 2 y tiene una funcionalidad equivalente disponible con las siguientes funciones de la versión 2.1:

  • Usa los nuevos feeds complementarios o products.update para las actualizaciones parciales de productos. Se pueden actualizar todos los campos de productos mutables, incluidos todos los campos actualizados previamente con inventory.set (excepto los exclusivos de localinventory). Consulta Cómo migrar a feeds complementarios para obtener más detalles.

  • Usa el nuevo servicio localinventory para las actualizaciones de productos locales.

2. Actualiza las llamadas al servicio accounts

  • Las llamadas al método accounts.update en la versión 2.1 reemplazan por completo el recurso accounts, en lugar de solo actualizar los campos incluidos en la solicitud. Si quieres evitar borrar campos en el recurso accounts, actualiza tus solicitudes de llamada para incluir todos los campos.

  • Se quitó el dispositivo reviewsUrl.

  • Se quitó el estado de vinculación inactive para adsLinks, googleMyBusinessLink y youtubeChannelLinks.

3. Actualiza las llamadas al servicio products

  • Los atributos personalizados ya no incluyen un tipo ni una unidad. En cambio, las unidades se deben agregar al valor, y los tipos deben detectarse automáticamente.

  • El campo repetido productTypes reemplazó a productType y additionalProductTypes.

  • Los campos repetidos includedDestinations y excludedDestinations reemplazaron el campo repetido destinations.

  • Los siguientes campos relacionados con AdWords cambiaron de nombre:

    • adwordsGrouping -> adsGrouping
    • adwordsLabels -> adsLabels
    • adwordsRedirect -> adsRedirect
  • Se quitaron los siguientes campos:

    • aspects
    • destinations
    • onlineOnly
    • validatedDestinations
    • warnings
  • Se quitó el parámetro includeInvalidInsertedItems. En la versión v2.1, todos los productos se muestran de forma predeterminada.

  • Ahora hay un retraso de unos minutos antes de que un producto insertado se pueda recuperar a través de products.get o products.list.

  • Ya no se garantiza que el objeto offerId que se muestra sea el mismo que el offerId de entrada. La versión 2.1 recorta los espacios en blanco iniciales y finales en offerId y combina varios caracteres de espacios en blanco en uno. Este cambio no afecta a los valores offerId que cumplen con la sintaxis offerId recomendada.

  • Los precios ahora se validan antes de la inserción de productos. Solo se permiten los siguientes caracteres en la string de valor: +, -, . y los dígitos (es decir, 0-9). Ya no se aceptan comas.

  • Las respuestas de una llamada a products.insert o products.update solo contienen los siguientes atributos:

    • channel
    • contentLanguage
    • id
    • offerId
    • feedLabel
  • La opción includeAttributes de la v2 dejó de estar disponible. En su lugar, usa products.get con el ProductId para ver la información completa del producto.

4. Actualiza las llamadas al servicio productstatuses

  • Se quitó el atributo product, junto con el parámetro includeAttributes. Para recuperar los atributos de un producto que corresponde a un estado, usa el servicio products y pasa el valor del nuevo campo productId.

  • Se quitó el parámetro includeInvalidInsertedItems. Ahora se muestra el productId de cada producto, sin importar si el producto es válido

  • Los campos intention, approvalStatus y approvalPending en destinationStatuses se reemplazaron por status, que es una string que puede ser approved, disapproved o pending.

  • dataQualityIssues se reemplazó por itemLevelIssues.

5. Actualiza las llamadas al servicio datafeeds

  • Se reemplazaron los siguientes campos de destino:

    • contentLanguage -> language
    • targetCountry -> country
    • intendedDestinations -> includedDestinations y excludedDestinations
  • Se quitaron los feeds de datos con contentType = "product inventory update".

6. Actualiza las llamadas a los servicios de orders y TestOrders

  • En la versión 2.1, las llamadas no deben incluir datos fiscales porque estos se calculan automáticamente. Si el pedido se entrega en un estado con una Ley de Equidad de Mercado (MFA) o similar, las llamadas que incluyen datos fiscales fallan. Si el pedido se entrega en un estado que no es de MFA, el impuesto se calcula según la configuración establecida en Merchant Center. Si no se configura, el impuesto calculado es 0.

  • Los campos InStoreRefundLineItem y ReturnRefundLineItem amountPretax y amountTax se reemplazaron por priceAmount y taxAmount, respectivamente. priceAmount puede ser antes o después de impuestos, según la ubicación del pedido.

  • Los campos ShipLineItem carrier, shipmentId y trackingId de la solicitud se movieron a shipmentInfos.

  • billingAddress y predefinedBillingAddress ahora son campos de nivel superior en orders y TestOrder, respectivamente.

  • customer.explicitMarketingPreference se reemplazó por customer.marketingRightsInfo.

  • El campo netAmount se dividió en netPriceAmount y netTaxAmount.

  • shippingOption se reemplazó por lineItems[].shippingDetails.

  • Se quitaron los campos CancelLineItem amount, amountPretax y amountTax de la solicitud. El importe reembolsado ahora se calcula automáticamente.

  • Se quitó CustomBatch.

  • Se quitó Refund. En su lugar, usa refundOrder o refundItem.

  • Se quitó el campo paymentMethod.

  • Los métodos orders.returnlineitem y orders.refund de la v2 se reemplazan por orderreturns.creatOrderReturn y orderreturns.process.

  • Se quitaron los campos customer.email, channelType y lineItem.product.channel.

  • El campo promotions se quitó del servicio TestOrder y su formato cambió en Order.

7. Actualiza las llamadas al servicio orderinvoice

  • Los campos amountPretax y amountTax se reemplazaron por priceAmount y taxAmount, respectivamente. El campo priceAmount puede ser antes o después de impuestos, según la ubicación del pedido.

  • Se quitaron los saldos (comercio, cliente, Google) en invoiceSummary y los campos relacionados con los cargos de promoción.

8. Quitar funcionalidad no incluida en la v2.1

En la versión 2.1, se quitaron muchas otras funciones de Content API. Revisa la siguiente lista y actualiza tu aplicación según sea necesario:

  • Ya no se admite XML. Si quieres obtener más información para cambiar a JSON, consulta Descontinuación de la compatibilidad con XML en Content API for Shopping.

  • Se quitó el parámetro dryRun. Este cambio se aplica a todas las llamadas a la API.

  • Se quitaron todos los métodos HTTP BATCH. Se usa customBatch en su lugar.

  • Se quitó el método patch de los siguientes servicios:

    • accounts
    • accounttax
    • datafeeds
    • liasettings
    • shippingsettings
  • Se quitó el servicio orderpayments.

Prueba tu migración

Para obtener más información sobre cómo probar los cambios en tus aplicaciones después de migrar a la versión 2.1, consulta Pruebas de uso de Content API for Shopping. Si tienes problemas mientras pruebas las actualizaciones, puedes publicarlos en el foro de Content API.

Cambios adicionales en la versión 2.1

Además de los cambios que requieren actualizaciones, la versión v2.1 también incluye varias funciones nuevas y cambios no rotundos:

  • Nuevos servicios:

    • El nuevo servicio localinventory te permite realizar actualizaciones de productos locales (en lugar del servicio inventory en la v2).

    • El nuevo servicio orderreturns facilita la administración de Comprar con Google (antes conocido como Acciones de Shopping), ya que te permite procesar devoluciones sin tener que usar el servicio orders.

  • Los feeds complementarios te permiten realizar actualizaciones parciales del producto.

  • Cambios adicionales en el servicio products:

    • Las solicitudes products.insert ya no informan advertencias ni errores recuperables. Esto te permite insertar productos y realizar actualizaciones posteriores para resolver los problemas mediante las reglas del feed en Merchant Center, al igual que con los feeds administrados fuera de Content API.

    • Se agregó products.update para permitirte realizar actualizaciones en un conjunto elegido de campos de productos. Para obtener más información sobre el uso posible, consulta la guía.

    • Los valores no válidos para los siguientes atributos ya no activan errores de inserción, y el servicio productstatus los muestra como parte de itemLevelIssues:

      • ageGroup
      • availability
      • condition
      • energyEfficiencyClass
      • gender
      • maxEnergyEfficiencyClass
      • minEnergyEfficiencyClass
      • sizeSystem
      • sizeType
    • Los atributos personalizados ahora son recursivos, por lo que ya no es necesario crear grupos personalizados.

    • Los atributos personalizados ahora tienen un campo groupValues además del campo value original. Se debe establecer solo uno de los campos.