カタログ・アップデートAPI
カタログに変更が生じた際にカタログ・アップデートAPIを使いカタログ・アップデート・リクエストを送信することができます。本番環境に使用されているカタログは即座に又は直接更新されるわけではありません。更新内容は、クライアントのカタログ・モデルの構築と展開に要する時間に基づき決められたスケジュールに従って本番環境に展開されます。
重要: 必要なパラメーターのみコールしてください。弊社は、多くのアプリケーションやクライアントを同時にサポートするAPIのセットを使用しています。これらのAPIは随時更新または改善される場合があります。
カタログ・アップデートAPIを最初から使用する、またはカタログ・アップデートAPIを使用して変更適用のテストを行う場合は、以下のステージング環境のAPIのインスタンスにリクエストを送信してください。
https://staging-gateway.richrelevance.com/catalogupdate/v1
その後、本番環境にリクエストを送信する際にはベースURLの「staging-」を削除してください。
https://gateway.richrelevance.com/catalogupdate/v1
このURLのエンドポイントを変えることで、以下を実行することができます。
- {baseUrl}/oauth2/token : 他のエンドポイントの承認とコール
- {baseUrl}/products : 商品の作成と更新
- {baseUrl}/categories : カテゴリーの作成と更新
- {baseUrl}/regions : リージョンの作成と更新
用語集
overrides(オーバーライド): オーバーライドを使用し、ある条件と一致した際に特定のプロパティの値を無効にすることができます。現在サポートされているオーバーライドはリージョンと商品のSKUです。
properties(プロパティ): 属性とも呼ばれています。商品、カテゴリー、コンテンツ、又はリージョンを定義するキーとなる一対の値です。
language_tag: ロケールとも呼ばれます。形式は「language-TERRITORY(言語-地域)」で、例えば米国英語であれば「en-US」となります。このコードはリージョン定義の一部として、またプロパティ・オーバーライドを言語と紐づけるために使用されます。
セキュリティについて
POST {baseUrl}/oauth2/token
カタログ・アップデートAPIはクライアントの認証にOAuth2 Client Credentials Grant Typeを使用しています。Oauth 2の本人証明(client_id及びclient_secret)の取得については弊社担当者までお問い合わせください。client_secretは安全に保管してください。絶対に他者と共有せず、HTTPSでのみ使用してください。
提供されたクライアン証明書を使用して認証を行い、Authorization Bearer Tokenをリクエストしてください。他のエンドポイントへのアクセスを可能にするトークンを得るためには/oauth2/tokenエンドポイントを最初にコールしてください。弊社サイドからはclient_idとclient_secretを使用して送られます。このAPIからのレスポンスにはクライアントのトークンが含まれます。このトークンはマニュアルで無効にしない限り有効です。レスポンスはJSONとして提供されます。
商品APIおよびカタログAPIへのすべてのリクエストで「Authorization: bearer MY_TOKEN」を送信してください。トークンの有効期限が切れた場合は、client_idとclient_securityを使用して新しいトークンを再取得してください。
リクエストの凡例
名称 | 必須 / オプション | 説明 |
---|---|---|
grant_type | 必須(文字列) | アクセス用のトークン・タイプです。常にclient_credentialsです。 |
client_id | 必須(文字列) | クライアントのIDです。 |
client_secret | 必須(文字列) |
正しいレスポンス
{ "token_type": "bearer", "access_token": "AABBCCDD" }
エラー・レスポンス
{ "error_description": "Invalid client authentication", "error": "invalid_client" }
{ "error_description": "Invalid grant_type", "error": "unsupported_grant_type" }
カタログ・アップデート
商品プロパティ(属性)の更新
カタログ内の商品の更新にはPUTとPATCHの両方を使用できます。
PUT {baseUrl}/products
PATCH {baseUrl}/products
DELETE {baseUrl}/products
POST {baseUrl}/products
PUT: 新しい商品群をカタログに挿入するか、又はカタログ内のIDが一致する商品をすべて入れ替えます。PUTを使用して商品を更新すると、PUTに含まれていないプロパティやオーバーライドは商品から削除されるか、既定値にリセットされます。
PATCH: 商品のプロパティを更新します。ここに含まれないプロパティは変更されません。更新したいプロパティだけを入れてください。商品を「レコメンド不可」に変更する場合は、その商品のIDだけを追加し「recommendable(レコメンド可)」をfalseに設定してください。
リクエストの凡例
注記: プロパティ名はすべて大文字小文字を区別します。
名称 |
必須 / |
入力 | 説明 |
---|---|---|---|
id | 必須 | 文字列 文字数制限: 100 |
商品のIDです。 |
name | オプション | 文字列 - 既定値: "{id}" 文字数制限: 255 |
ECサイト上のレコメンデーションや弊社ダッシュボードに表示される商品の名称です。 |
categories | オプション | 文字配列 | 商品が属するカテゴリーのIDです。IDの文字数は最大400文字までです。カテゴリーが存在しない場合は、任意のIDでカテゴリーが作成されますが名称は割り当てられません。 |
recommendable | オプション | ブール 既定値: true |
商品がレコメンド可であるかどうかを表します(true/false)。 |
link_url | オプション | 文字列 既定値: "" |
|
image_url | オプション | 文字列 既定値: "" |
|
price | オプション | 数値 既定値: -0.01 日本円の場合は-1 |
|
sale_price | オプション | 数値 既定値: -0.01 日本円の場合は-1 |
|
list_price_min | オプション | 数値 既定値: -0.01 日本円の場合は-1 |
|
list_price_max | オプション | 数値 既定値: -0.01 日本円の場合は-1 |
|
sale_price_min | オプション | 数値 既定値: -0.01 日本円の場合は-1 |
|
sale_price_max | オプション | 数値 既定値: -0.01 日本円の場合は-1 |
|
brand | オプション | 文字列 文字数制限: 255 |
|
start_date | オプション | date-only | |
rating | オプション | 数値 既定値: 1 |
|
num_reviews | オプション |
数値 |
|
{property_name} | オプション | 文字配列 | 商品のプロパティは追加が可能ですが、上記の「標準的な」プロパティの名称と相反していないこと、あるいは「overrides」という言葉が使用されていないことが条件です。HTMLのエンティティ・エンコードでは、名称や値は引用符または二重引用符で囲まれています。 |
リクエスト例
[ { "id": "123", "name": "Playstation 4", "categories": ["E495", "VG555"], "brand": "Sony", "price": 299.99, "recommendable": true, "image_url": "http://my.cdn.com/path/to/my/image/123.jpg", "link_url": "http://my.domain.com/path/to/my/product/detail/123.html", "start_date": 2016-02-28 }, { "id": "124", "name": "XBox One", "categories": ["E495", "VG555"], "brand": "Microsoft", "price": 249.99, "recommendable": true, "image_url": "http://my.cdn.com/path/to/my/image/124.jpg", "link_url": "http://my.domain.com/path/to/my/product/detail/124.html", "start_date": 2016-07-28, "included_games": ["Destiny", "Final Fantasy XV"] } ]
リージョン・オーバーライドによる商品プロパティの更新
PUTやPATCHリクエストで商品を更新する場合はリージョン・ベースのオーバーライドを追加することができます。
注記: 現時点では同一カタログでのリージョン・オーバーライドとSKUオーバーライドの組み合わせはサポートされていません。
リージョン・オーバーライドを追加する場合は、まずリージョンが設定されている必要があります。後述の「リージョン・プロパティの更新」を参照して下さい。
リクエスト例
[ { "id": "123", "name": "Playstation 4", "categories": ["E495", "VG555"], "brand": "Sony", "price": 299.99, "recommendable": true, "image_url": "http://my.cdn.com/path/to/my/image/123.jpg", "link_url": "http://my.domain.com/path/to/my/product/detail/123.html", "start_date": 2016-02-28, "overrides": { "region": { "CA": { "properties": { "in_stock": true } }, "WA": { "properties": { "in_stock": false } } } } }, { "id": "124", "name": "XBox One", "categories": ["E495", "VG555"], "brand": "Microsoft", "price": 249.99, "recommendable": true, "image_url": "http://my.cdn.com/path/to/my/image/124.jpg", "link_url": "http://my.domain.com/path/to/my/product/detail/124.html", "start_date": 2016-07-28, "included_games": ["Destiny", "Final Fantasy XV"] "overrides": { "region": { "CA": { "properties": { "in_stock": true } }, "WA": { "properties": { "in_stock": false } } } } } ]
リクエストの凡例
名称 | 必須 / オプション | 入力 | 説明 |
---|---|---|---|
overrides | -- | JSONオブジェクト | 他のプロパティのコンテキストのオーバーライドを定義するカテゴリー・プロパティのセクションです。 |
region | -- | JSONオブジェクト | オーバーライドの下に記述され、他のプロパティのリージョン・ベースのオーバーライドを定義します。 |
{region_id} | -- | JSONオブジェクト | リージョンの下に記述され、各rision_idは事前定義されているリージョンのIDと一致している必要があります。一致していないと無視されます。特定のリージョンのプロパティのオーバーライドを定義します。 |
properties | -- | JSONオブジェクト | region_idの下に記述され、プロパティのオーバーライドの値を定義します。 |
in_stock | 必須 | ブール | in_stockがfalseの場合、この商品はレコメンドされません。この商品の「recommendable」がtrueに、またリージョン・オーバーライドのここでin_stockがtrueに設定されていないと、この商品はレコメンドされません。商品の「recommendable」がfalseに設定されていると、in_stockの設定に関わらず、その商品はレコメンドされません。 |
price | オプション | 数値 既定値: -0.01 日本円の場合は-1 |
特定のリージョンでの商品の価格です。 |
sale_price | オプション | 数値 既定値: -0.01 日本円の場合は-1 |
特定のリージョンでの商品のセール価格です。 |
price_description | オプション | 文字列 文字数制限: 1024 |
必要に応じレイアウトに送ることができる説明文です。 例: "閉店セール" |
margin | オプション | 文字列 文字数制限: 50 |
SKUオーバーライドによる商品プロパティの更新
PUTやPATCHリクエストで商品を更新する場合はSKUベースのオーバーライドを追加することができます。SKUプロパティ・オーバーライドは、SKU機能の弊社プログラムに参加している場合のみ必要です。本機能をサポートするためには、SKUプロパティ・オーバーライドに加え、インスツルメンテーションにSKUを追加する必要があります。
注記: 現時点では同一カタログでのリージョン・オーバーライドとSKUオーバーライドの組み合わせはサポートされていません。
リクエスト例
[ { "id": "123", "name": "Playstation 4", "categories": ["E495", "VG555"], "brand": "Sony", "price": 299.99, "recommendable": true, "image_url": "http://my.cdn.com/path/to/my/image/123.jpg", "link_url": "http://my.domain.com/path/to/my/product/detail/123.html", "start_date": 2016-02-28, "overrides": { "sku": { "123A": { "properties": { "color": "black" } }, "123B": { "properties": { "color": "red } } } } }, { "id": "124", "name": "XBox One", "categories": ["E495", "VG555"], "brand": "Microsoft", "price": 249.99, "recommendable": true, "image_url": "http://my.cdn.com/path/to/my/image/124.jpg", "link_url": "http://my.domain.com/path/to/my/product/detail/124.html", "start_date": 2016-07-28, "included_games": ["Destiny", "Final Fantasy XV"] "overrides": { "sku": { "124A": { "properties": { "size": "small", "color": "black" } }, "124B": { "properties": { "size": "large", "color": ["black", "gold"] } } } } } ]
リクエストの凡例
名称 | 必須 / オプション | 入力 | 説明 |
---|---|---|---|
overrides | -- | JSONオブジェクト | 他のプロパティのコンテキストのオーバーライドを定義するカテゴリー・プロパティのセクションです。 |
sku | -- | JSONオブジェクト | オーバーライドの下に記述され、他のプロパティのSKUベースのオーバーライドを定義します。 |
{sku_id} | -- | JSONオブジェクト | SKUの下に記述され、この商品のSKUのIDです。特定のSKUのプロパティのオーバーライドを定義します。 |
properties | -- | JSONオブジェクト | sku_idの下に記述され、プロパティのオーバーライド値を定義します。 |
{property_name} | 必須 | 文字列または文字配列 | {property_name} は定義するプロパティ名のプレースホルダーです。このSKU特有のプロパティの値です。複数の値を文字配列として送ることができます。SKU特有の画像やリンクURLはプロパティ名をそれぞれ「image_url」、「link_url」としてください。「available」は、特定のSKUをレコメンデーションやセールに使用可能な場合に、そのことを表すオプションのSKU属性です。使用をおすすめします。 |
SKUのサイズ・タイプ
買物客のサイズのプリファレンスを考慮するのであれば、様々なタイプのサイズを区別しなければなりません。ある買物客のサイズが、靴は24cm、ワンピースが9号、パンツは11号であるとします。ここでサイズ情報としてその数値だけをシステムに提供すると混乱が生じます。
例えば、この買物客がパンツを購入した場合、サイズが11号であるということだけを記録しても不十分です。これがパンツのサイズであるということを記録しないと、他のものを購入する際に適切なサイズをレコメンドできません。
サイズをshirt_size、hat_size、あるいはus_women_shoe_sizeなどのように固有の属性として送信すれば、何のサイズであるかが明確となり余計な作業が必要なくなります。
このような属性の使用が不可能な場合でも対応策があります。SizeTypeという属性を作成し、カタログ何サイズのタイプを区別します。SKUフィード内でこれらの属性を各商品と紐付け、買物客がサイズのプリファレンスを示すたびに、ログを取ることができます。
カテゴリー・プロパティの更新
カタログ内のカテゴリーの更新にはPUTとPUSHの両方を使用できます。
PUT {baseUrl}/categories
PATCH {baseUrl}/categories
PUT: 新しいカテゴリー群をカタログに挿入するか、又はカタログ内のIDが一致するカテゴリーを全て入れ替えます。PUTを使用してカテゴリーを更新すると、PUTに含まれていないプロパティやオーバーライドはカテゴリーから削除されるか、既定値にリセットされます。
PATCH: カテゴリーを更新します。ここに含まれないプロパティは変更されません。更新したいプロパティだけを入れてください。
リクエストの凡例
注記: プロパティ名はすべて大文字小文字を区別します。
名称 | 必須 / オプション | 入力 | 説明 |
---|---|---|---|
id | 必須 | 文字列 文字数制限: 400 |
このカテゴリーのIDです。 |
parent_id | オプション | 文字列 文字数制限: 400 |
|
name | オプション | 文字列 | レコメンデーションや弊社ダッシュボードに表示されるカテゴリーの名称です。この名称は買物客にわかりやすいものにしてください。引用符および二重引用符によるHTMLのエンティティ・エンコードです。 |
link_url | オプション | 文字列 | |
image_url | オプション | 文字列 |
リクエスト例
[ { "id": "E495", "name": "Electronics", }, { "id": "VG555", "parent_id": "E495", "name": "Video Games" } ]
言語のオーバーライドによるカテゴリー・プロパティの更新
PUTやPATCHリクエストで商品を更新する場合は言語ベースのオーバーライドを追加することができます。これによりユーザーに言語によって異なるカテゴリー名やカテゴリー・リンク、カテゴリー画像などが適切な名称が表示することができます。
リクエスト例
[ { "id": "E495", "name": "Electronics", "link_url": "/Electronics.html", "image_url": "/Electronics.jpg", "overrides": { "language": { "en-US": { "properties": { "name": "Electronics", "link_url": "/en-US/Electronics.html", "image_url": "/en-US/Electronics.jpg" } }, "fr-CA": { "properties": { "name": "Électronique", "link_url": "/fr-CA/Electronics.html", "image_url": "/fr-CA/Electronics.jpg" } } } } }, { "id": "VG555", "parent_id": "E495", "name": "Video Games" "overrides": { ... } } ]
リクエストの凡例
名称 | 必須 / オプション | 入力 | 説明 |
---|---|---|---|
overrides | -- | JSONオブジェクト | 他のプロパティのコンテキストのオーバーライドを定義するカテゴリー・プロパティのセクションです。 |
language | -- | JSONオブジェクト | オーバーライドの下に記述され、他のプロパティの言語ベースのオーバーライドを定義します。 |
{language_tag} | -- | JSONオブジェクト | 言語の下に記述されます。各language_tagの形式は「language-TERRITORY(言語-地域)」です(例: 米国の場合は「en-US」)。特定の言語のプロパティのオーバーライドを定義します。 |
properties | -- | JSONオブジェクト | language_tagの下に記述され、プロパティのオーバーライドの値を定義します。 |
name | オプション | 文字列 | 指定された言語に合わせたカテゴリー名のオーバーライドの値です。 |
image_url | オプション | 文字列 | 指定された言語に合わせたカテゴリー画像のオーバーライドの値です。 |
link_url | オプション | 文字列 | 指定された言語に合わせたカテゴリー・リンクのオーバーライドの値です。 |
リージョン・プロパティの更新
カタログ内のリージョンの更新にはPUTとPUSHの両方を使用できます。
PUT {baseUrl}/regions
PATCH {baseUrl}/regions
PUT: 新しいリージョン群をカタログに挿入するか、又はカタログ内のIDが一致するリージョンを全て入れ替えます。PUTを使用してリージョンを更新すると、PUTに含まれていないプロパティやオーバーライドはリージョンから削除されるか、既定値にリセットされます。
PATCH: リージョンを更新します。ここに含まれないプロパティは変更されません。更新したいプロパティだけを入れてください。プロパティを削除する場合はプロパティの値をNULLに設定してください。
リージョンのペイロードは商品やカテゴリーとは形式が異なるので注意してください。
商品およびカテゴリー(配列ベース):
[ {"id": "myId1", ... other properties ... }, {"id": "myId2", ... other properties ...} ]
リージョン(パス・ベース):
{ "myId1": { ... other properties ... }, "myId2": { ... other properties ...} }
カタログ・アップデートAPIのV2では、すべてのペイロードの形式は以下のとおりとなります。
リクエストの凡例
注記: プロパティ名はすべて大文字小文字を区別します。
名称 | 必須 / オプション | 入力 | 説明 |
---|---|---|---|
id | 必須 | 文字列 文字数制限: 100 |
リージョンのIDです。大文字小文字を区別します。 |
name | オプション | 文字列 文字数制限: 100 |
リージョンの名称です。 |
description | オプション | 文字列 文字数制限: 500 |
リージョンの説明です。 |
currency_code | オプション | 文字列 文字数制限: 3 |
ISO 4217通貨コードです。 |
language_tag | 定義を参照 | 文字列 文字数制限: 8 |
ローカライズされた商品/カテゴリー・フィードを使用していない場合は必要ありません。またインスツルメンテーションによるレコメンデーションのリクエストがlanguage_tagを送信している場合も必要ありません。リージョン・フィードでlanguage_tagが定義されていない場合は、region_idからlanguage_tagへのマッピングが不可能となりローカライズされた商品/化カテゴリー・フィードにあるローカライズされた値を使用できません。 国と言語を含むロケールの内容です。例: en-US、sv-SE、de-DE等。正しい句読点(カンマ、ピリオド、スペース等)を使用した文字列として価格をフォーマットするために使用されます。文字数は最大8に制限されています。 重要: このような「言語-国」の組み合わせを使用する際は、ISOの言語コードと国コードを使用し間にハイフンを入れてください。例: en-US, en-GB, en-CA |
price_multiplier | オプション | 数値 既定値: 100 |
ベース通貨の下の単位の数です。例: 1ドルは100セントなのでUSDの場合は100となります。日本円は1円が最小単位なのでJPYの値は1になります。 注記: 通貨の正しい乗数を指定するよう注意してください。この値はマーチャンダイジング・ルールの価格情報の計算に使用されます。各通貨の正しい価格乗数を決定する際使用できる参照ファイルをダウンロードするころができます。有効な乗数は10の乗数のみです: 1、10、100、1000… |
price_prefix | オプション | 文字列 文字数制限: 16 |
使用する通貨の前に表記されるテキスト(通貨記号)です。例: "$"、"¥" |
price_suffix | オプション | 文字列 文字数制限: 16 |
使用する通貨の後に表記されるテキストです。例: "CAD" |
リクエスト例
{ "myRegion1": { "name": "Name of region 1", "description": "Description of region 1", "currency_code": "USD", "language_tag": "en-US", "price_multiplier": 100, "price_prefix": "$", "price_suffix": "" }, "myRegion2": { ... }, ... }
ヒント: 新規のブラウズ・ブースト・ルール作成画面を開いて、このリージョン情報が正しく追加されているかどうかを確認できます。作成画面のコンテキストでリージョンを選択しドロップダウン・メニューから該当するリージョンをクリックしてください。フィードが正しく読み込まれていれば追加したすべてのリージョンのタイトルが表示されます。
カタログ・アップデート・リクエストへのリスポンス
リクエストの処理:
{ "trackingId": "YOUR_TRACKING_ID" }
お使いのoath 2トークンが無効または期限切れの場合:
{ "error_description": "The access token is invalid or has expired", "error": "invalid_token" }
jsonに誤りがある場合:
{ "code": 500, "details": "{meaningful parsing exception}", "message": "Internal Server Error", "status": "error" }
jsonにエレメントのIDがない場合:
{ "code": 400, "details": "{}", "message": "Bad Request", "status": "error" }
ステータスのトラッキング
PUTやPATCH処理のステータスをトラッキングにはGETコマンドでapiKeyが必要です。以下のような2つの方法があります。
過去100件のトラッキングIDのステータスを取り出す
GET {baseUrl}/status
レスポンスの凡例
名称 | 必須 / オプション | タイプ | 説明 |
---|---|---|---|
trackingID | 必須 | 文字列 | カタログ・アップデート・リクエストのトラッキングIDです。 |
submitted | 必須 | datetime | カタログ・アップデート・リクエストが送信されたタイムスタンプです。 |
statusMessage
|
必須 | オブジェクト | カタログ・アップデート・リクエストの現在のステータスです。
|
レスポンス例
[
{
"trackingId": "YOUR_TRACKING_ID",
"submitted": "2016-02-28T16:41:41.090Z",
"statusMessage": {
"status": "FINISHED",
"notes": "Additional notes to explain status."
}
}
]
トラッキングIDのステータスの入手
GET {baseUrl}/status/{trackingId}
レスポンスの凡例
名称 | 必須 / オプション | タイプ | 説明 |
---|---|---|---|
status | 必須 | オブジェクト | カタログ・アップデート・リクエストの結果です。(FINISHED、FAILED、NEVER_PROCESSED、JSON_EXCEPTION, GENERIC_EXCEPTIONのいずれか) |
notes | 必須 | 文字列 | ステータスに関する追加の説明です。 |
レスポンス例
{
"status": "FINISHED",
"notes": "Additional notes to explain status."
}