プロダクトを移行する

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

このガイドでは、統合を Content API for Shopping から移行する際に役立つ主な違いについて説明します。新機能の使用方法について詳しくは、 商品を管理するをご覧ください。

主な違い

Merchant API での商品管理は、Content API for Shopping と比べて次のような点が大きく異なります。

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

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

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

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

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

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

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

をご覧ください。

移行時のデータソースのガイドライン

データソースを移行する前に、データソース戦略を 選択することを強くおすすめします。

スムーズな移行を実現し、オファーの盗用などの問題を回避するには、次の推奨事項に従ってください。

  • データベースのバックフィル: 商品オペレーションのたびに dataSources.list を呼び出すのではなく、ローカル データベースのバックフィルを 1 回だけ行うことを強くおすすめします。各商品レコードに dataSource 名フィールドを追加すると、リクエストで正しい ID を直接指定できます。

  • ラベルと言語に関係なくデータソースを統合して使用する: Merchant API では、ラベルと言語を指定せずにデータソースを作成できるため、任意のデータソース ラベルと言語で商品を挿入できます。ラベルと言語に関係なく、単一のデータソースを使用することを検討してください。

  • 商品を保護する: データソースのルールを使用する場合は、 products.get を呼び出して、商品を更新または 削除する前に、商品に関連付けられている正確な dataSource を確認します。これにより、目的のソースを変更し、誤ってオファーを盗用することを防ぐことができます。

リクエスト

このセクションでは、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。エンコード: パディングなしの base64url エンコード をおすすめします。商品 ID に Merchant API で使用される文字や URL 予約文字が含まれている場合は必須 です。


メソッド

次の表に、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.patch 動作が大幅に異なります。特定の商品入力を更新し、永続化します。
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 商品のプライマリ ID は、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 型になりました。