プロダクトを移行する

Merchant API では、商品データをより堅牢かつ直感的に管理できるようになりました。主な変更点は、商品データが 2 つの異なるリソースに分離されたことです。ProductInput はデータを送信するためのリソース、Product は商品ステータスや問題など、最終的な処理済みバージョンを表示するためのリソースです。この新しい構造により、より予測可能で透明性の高いエクスペリエンスが実現します。

このガイドでは、Content API for Shopping から統合を移行するうえで重要な違いについて説明します。新機能の使用に関する詳細なガイドについては、プロダクトを管理するをご覧ください。

主な違い

Merchant API での商品管理方法と Content API for Shopping での商品管理方法の主な違いは次のとおりです。

  • 入力データと処理済みデータ専用のリソース: Merchant API は、商品管理を 2 つのリソースに分割します。ProductInput リソースを使用して、商品データを挿入、更新、削除できます。読み取り専用の Product リソースを使用すると、Google が入力を処理し、ルールを適用して、補助ソースのデータを結合した後の最終的な商品を表示できます。

  • 商品名のエンコード: ProductInput.name フィールドと Product.name フィールドの両方で、パディングなしの base64url(RFC 4648 セクション 5)エンコードを使用できます。商品名に Merchant API で使用される文字または URL 予約文字が含まれている場合は、エンコードが必須です。たとえば、商品名に次のいずれかの文字が含まれている場合は、商品名をエンコードする必要があります。

    % . + / : ~ , ( * ! ) & ? = @ # $
    
  • 統合されたプロダクトのステータス: productstatuses サービスが削除されます。商品検証の問題と配信先のステータスが productStatus フィールド内の Product リソースに直接含まれるようになり、データ取得が簡素化されました。

  • 予測可能なプロダクトの更新: 新しい productInputs.patch メソッドは、特定のプロダクト入力を直接変更します。これは Content API for Shopping から大幅に改善された点です。Content API for Shopping では、他のフィードのアップロードによって更新が予期せず上書きされる可能性がありました。Merchant API では、特定の商品の入力が再度更新されるか削除されるまで、更新は維持されます。商品更新は、処理済みの Product リソースではなく、ProductInput リソースに適用されます。

  • データ管理を簡素化するためのデータソースの選択: すべての productInputs 書き込みオペレーションで dataSource クエリ パラメータが必要になり、変更するデータソースが明示的に指定されるようになりました。これは、複数のソースからデータが提供される場合に特に便利です。

  • 新しいリソース識別子: 商品は id フィールドではなく、RESTful リソース name で識別されるようになりました。形式は accounts/{account}/products/{product} です。

  • カスタム バッチなし: custombatch メソッドは使用できなくなりました。非同期リクエストまたは HTTP バッチ処理を使用して、単一の HTTP 呼び出しで複数のリクエストを送信できます。

  • 任意のフィードラベルと言語のデータソース: Merchant API を使用すると、フィードラベルと言語を指定せずにデータソースを作成できるため、任意のフィードラベルと言語の商品を挿入できます。

リクエスト

このセクションでは、Content API for Shopping と Merchant API のリクエスト形式を比較します。

リクエストの説明 Content API for Shopping Merchant API
商品を入手する GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product}
商品を一覧表示する GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products
商品を挿入する POST https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products POST https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs:insert
商品を更新する PATCH https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} PATCH https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput}
商品の削除 DELETE https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} DELETE https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput}
商品のステータスを取得する GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses/{productId} GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product}
商品のステータスを一覧表示する GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products
複数のリクエストをバッチ処理する POST https://shoppingcontent.googleapis.com/content/v2.1/products/custombatch 非同期リクエストまたは HTTP バッチ処理を使用する

識別子

Merchant API での商品 ID の形式が標準の REST リソース名に変更されました。

識別子の説明 Content API for Shopping Merchant API
商品 ID コロン(:)で区切られたセグメントで構成される文字列。
形式: channel:contentLanguage:targetCountry:offerId または channel:contentLanguage:feedLabel:offerId
例: online:en:US:sku123
REST リソース name 文字列。
形式: accounts/{account}/products/{product}{product}contentLanguage~feedLabel~offerId)。
例: accounts/12345/products/en~US~sku123
エンコード: Merchant API または URL 予約文字で使用される文字を含む商品 ID の場合は、パディングなしの base64url エンコードが推奨され、必須です。

メソッド

次の表に、Content API for Shopping のメソッドと、Merchant API での同等のメソッドを示します。

Content API for Shopping メソッド Merchant API メソッド 提供状況と注意事項
products.get products.get 処理済みの最終的な商品を取得します。
products.list products.list 最終的な処理済み商品を一覧表示します。
products.insert productInputs.insert 商品入力を挿入します。dataSource が必要です。
products.update productInputs.update 動作は大きく異なります。特定の商品入力を更新し、永続的です。
products.delete productInputs.delete 特定の商品入力を削除します。dataSource が必要です。
products.custombatch 利用不可 非同期リクエストまたは HTTP バッチ処理を使用します。
productstatuses.get products.get productstatuses サービスが削除されます。ステータス情報が Product リソースの一部になりました。
productstatuses.list products.list productstatuses サービスが削除されます。ステータス情報が Product リソースの一部になりました。
productstatuses.custombatch 利用不可 非同期リクエストまたは HTTP バッチ処理を使用します。

フィールドの変更の詳細

次の表に、Merchant API で変更、追加、削除された重要なフィールドを示します。

Content API for Shopping Merchant API 説明
id name プロダクトのプライマリ識別子は、REST リソース name になりました。Merchant API または URL 予約文字で使用される文字を含む商品名の場合は、パディングなしの base64url エンコードが推奨され、必須となります。
最上位の商品データ仕様属性(titlepricelink productAttributes オブジェクト titlepricelink などの商品属性は、トップレベル フィールドではなくなりました。これらは、Product リソースと ProductInput リソースの両方で productAttributes オブジェクト内にグループ化されています。これにより、よりクリーンで整理されたリソース構造が実現します。
targetCountry feedLabel Merchant Center の機能に合わせて、リソース名で targetCountry ではなく feedLabel が使用されるようになりました。
feedId dataSource(クエリ パラメータ) dataSource 名が、すべての productInputs 書き込みメソッド(insertupdatedelete)の必須クエリ パラメータになりました。
channel 利用できません。ローカルのみの商品には legacy_local を使用します。 channel フィールドが Merchant API から削除されました。Content API for Shopping で LOCAL チャネルを使用している商品は、代わりに legacy_local フィールドを true に設定する必要があります。
利用不可 versionNumber ProductInput の新しいオプション フィールド。プライマリ データソースへの順不同の挿入を防ぐために使用できます。
定義された値のセットを持つ string 型のフィールド 定義された値のセットを持つ enum 型のフィールド 値のセットが定義されている商品属性内のフィールド(excluded_destinationsavailability など)が enum 型になりました。