このガイドでは、Merchant API を既存の Content API for Shopping 実装と統合する方法について説明します。
使ってみる
Merchant API とその サブ API の詳細については、Merchant API の設計をご覧ください。
Merchant API の使用を開始するには、リクエスト URL を次の形式に変更します。
https://merchantapi.googleapis.com/{sub-API}/{version}/{resource name}:{method}…
詳しくは、クイックスタート ガイドと Merchant API のリファレンスをご覧ください。
gRPC のサポート
Merchant API は gRPC と REST をサポートしています。Merchant API には gRPC を、Content API for Shopping には REST を同時に使用できます。
Merchant API のクライアント ライブラリには gRPC が必要です。
詳細については、gRPC を使用するをご覧ください。
互換性
このガイドでは、Merchant API 全体に適用される一般的な変更について説明します。特定の機能の変更については、次のガイドをご覧ください。
- アカウント管理を移行する
- 送料設定を移行する
- 商品管理を移行する
- データソースの管理を移行する
- 広告枠管理を移行する
- プロモーション管理を移行する
- レポート管理を移行する
- コンバージョンの発生元の管理を移行する
- ローカル フィード パートナーシップ管理を移行する
Merchant API は、既存の Content API for Shopping v2.1 機能と連携するように設計されています。
たとえば、既存の Content API for Shopping v2.1 products
実装とともに Merchant Inventories API を使用できます。Content API for Shopping を使用して新しいローカル商品(ローカル店舗で販売する商品)をアップロードし、Merchant Inventories API LocalInventory
リソースを使用して、その商品の店舗情報を管理できます。
バッチ リクエスト
Merchant API は、Content API for Shopping の customBatch
メソッドをサポートしていません。代わりに、複数のリクエストを一括で送信するか、呼び出しを非同期で実行してください。
次のサンプルは、商品入力を挿入する方法を示しています。
Java
public static void asyncInsertProductInput(Config config, String dataSource) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the credentials retrieved above.
ProductInputsServiceSettings productInputsServiceSettings =
ProductInputsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates parent to identify where to insert the product.
String parent = getParent(config.getAccountId().toString());
// Calls the API and catches and prints any network failures/errors.
try (ProductInputsServiceClient productInputsServiceClient =
ProductInputsServiceClient.create(productInputsServiceSettings)) {
// Creates five insert product input requests with random product IDs.
List<InsertProductInputRequest> requests = new ArrayList<>(5);
for (int i = 0; i < 5; i++) {
InsertProductInputRequest request =
InsertProductInputRequest.newBuilder()
.setParent(parent)
// You can only insert products into datasource types of Input "API" and "FILE", and
// of Type "Primary" or "Supplemental."
// This field takes the `name` field of the datasource.
.setDataSource(dataSource)
// If this product is already owned by another datasource, when re-inserting, the
// new datasource will take ownership of the product.
.setProductInput(createRandomProduct())
.build();
requests.add(request);
}
System.out.println("Sending insert product input requests");
List<ApiFuture<ProductInput>> futures =
requests.stream()
.map(
request ->
productInputsServiceClient.insertProductInputCallable().futureCall(request))
.collect(Collectors.toList());
// Creates callback to handle the responses when all are ready.
ApiFuture<List<ProductInput>> responses = ApiFutures.allAsList(futures);
ApiFutures.addCallback(
responses,
new ApiFutureCallback<List<ProductInput>>() {
@Override
public void onSuccess(List<ProductInput> results) {
System.out.println("Inserted products below");
System.out.println(results);
}
@Override
public void onFailure(Throwable throwable) {
System.out.println(throwable);
}
},
MoreExecutors.directExecutor());
} catch (Exception e) {
System.out.println(e);
}
}
Content API で customBatch
を使用していて、Merchant API でもこの機能が必要な場合は、その理由をフィードバックでお知らせください。
識別子
Google の API 改善の原則に沿って、Merchant API リソースの ID に変更を加えました。
name が Id に置き換えられます
すべての Merchant API リソースは、name
フィールドを一意の識別子として使用します。
呼び出しで name
フィールドを使用する方法の例を次に示します。
POST https://merchantapi.googleapis.com/inventories/v1beta/{parent}/regionalInventories:insert
この新しい name
フィールドは、Merchant API のすべての読み取り / 書き込み呼び出しのリソース ID として返されます。
たとえば、getName()
メソッドを実装してリソースから name
を取得し、販売者とリソース ID から name
を自分で作成するのではなく、出力を変数として保存します。
子リソースの親フィールド
Merchant API では、すべての子リソースに parent
フィールドがあります。parent
フィールドを使用すると、親リソース全体を渡す代わりに、子を挿入するリソースの name
を指定できます。list
メソッドで parent
フィールドを使用して、その parent
の子リソースを一覧表示することもできます。
たとえば、特定の商品のローカル在庫を一覧表示するには、list
メソッドの parent
フィールドに商品の name
を指定します。この場合、指定された product
は、返された LocalInventory
リソースの parent
です。
型
Merchant API のサブ API で共有される一般的なタイプをいくつか示します。
価格
Merchant Common パッケージの Price
の変更点は次のとおりです。
Content API | Merchant API | |
---|---|---|
金額フィールド | value:string |
amountMicros:int64 |
通貨フィールド | currency:string
|
currencyCode:string |
Price
の金額はマイクロ単位で記録されます。100 万マイクロが通貨の標準単位に相当します。
Content API for Shopping では、Price
は文字列形式の小数点数でした。
金額フィールド名が value
から amountMicros
に変更されました
通貨フィールド名が currency
から currencyCode
に変更されました。形式は ISO 4217 のままです。