> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kameleoon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 概要

> Product Recommendation API のどのエンドポイントでカタログをインポートし、レコメンデーションと検索結果を返すか、また Postman でのテスト方法を確認します。

Product Recommendation APIは、商品カタログを Kameleoon にインポートし、パーソナライズされた商品レコメンデーションと検索結果を独自のコードに返す REST API です。このAPIは、Product Recommendation および Search Personalization アドオンを使用しているプロジェクト向けです。各商品の表示方法は独自のコードで制御でき、各呼び出しは独自のツールでログに記録してデバッグできます。

## APIの機能

このAPIには 4 つのエンドポイントグループがあります。各グループは、連携の 1 つの部分を担当します。

* **初期化:** レコメンデーションと検索のリクエストで使用するデバイス ID とセッション ID を取得するために、セッションを開始します。
* **インポート:** カテゴリ、商品、注文をアップロードし、商品の在庫状況を更新し、商品を削除します。
* **おすすめ:** レコメンダーブロックのパーソナライズされたレコメンデーションを取得したり、商品コレクションを取得したり、絞り込んだ商品リストをリクエストしたりします。
* **検索:** 訪問者のクエリに対する即時検索結果または完全な検索結果を取得します。

## 始める前に

* **アドオン:** このAPIは、Product Recommendation および Search Personalization アドオンを使用しているプロジェクト向けです。
* **Store Key:** Kameleoon アプリの **Recommendations** > **Settings** > **Store settings** で確認できます。リクエストでは`shop_id`として送信します。
* **Secret Key:** 同じ場所で確認できます。インポートのリクエストでは`shop_secret`として送信します。

必要に応じて、いずれかのキーについてカスタマーサクセスマネージャーにお問い合わせください。

## カタログをインポートする

レコメンデーションは商品カタログ内の商品から生成されるため、レコメンデーションをリクエストする前に、データをインポートしてください。商品のインポートで最新のカテゴリを使用できるよう、商品をアップロードする前にカテゴリをインポートします。

商品数が 50,000 件を超えるカタログでは **Import and update products** エンドポイントを使用し、カタログ全体を毎日再インポートしないようにしてください。軽い変更の場合は、**Update available products** エンドポイントを使用して既存商品の在庫状況を変更します。

インポートのリクエストには本文に Secret Keyが含まれるため、インポートのリクエストはブラウザやアプリからではなく、バックエンドから送信してください。

インポートの全手順については、[商品カタログのインポートチュートリアル](https://docs.kameleoon.com/ja/developer-docs/apis/product-recommendation-api-rest/tutorials/import-a-product-catalog-into-kameleoon-using-the-product-recommendation-api.md)を参照してください。

## レコメンデーションリクエストの仕組み

レコメンデーションと検索のリクエストでは、2 つの ID を使用します。デバイス ID(`did`)とセッション ID(`sid`)です。他のエンドポイントを呼び出す前に、**Initialize session** を呼び出して両方の ID を取得してください。

### セッションを初期化する

他のリクエストで必要なデバイス ID とセッション ID を取得するために、セッションを開始します。`https://api.products.kameleoon.com/init` に`GET`リクエストを送信し、Store Keyを`shop_id`のクエリパラメータとして指定します。

**Initialize session** を呼び出すタイミングは、プラットフォームごとに次のとおりです。

* **cURL:** サーバーがページをレンダリングするたびに。
* **Web:** シングルページアプリケーションを含め、ユーザーがページを開くたびに。
* **iOS and Android:** アプリを起動するたびに。

新しいデバイスで初めて起動するときは、デバイス IDを指定せずに **Initialize session** を呼び出します。APIがデバイス IDを生成するので、以降のすべてのリクエストでそれを使用します。

Web Experimentationと組み合わせてバックエンドからAPIを呼び出す場合は、セッション IDを`KameleoonProducts_session_code`クッキーに、デバイス IDを`KameleoonProducts_device_id`クッキーに保存してください。

## Postman で API を試す

Postman の Kameleoon Product Recommendation API コレクションを使用すると、コードを書かずに Product Recommendation APIのリクエストをテストできます。コレクションには、エンドポイントごとに 1 つのリクエストが含まれています。

1. [Kameleoon Product Recommendation API コレクション](https://storage.googleapis.com/kameleoon-storage-documentation/developer-docs/downloads/apis/product-recommendation-api-rest/kameleoon-product-recommendation-api.postman_collection.zip)を ZIP アーカイブとしてダウンロードし、JSON ファイルを展開して Postman にインポートします。
2. コレクションの **Variables** タブで、`shopId`にStore Keyを、`shopSecret`にSecret Keyを設定します。どちらも Kameleoon アプリの **Recommendations** > **Settings** > **Store settings** で確認できます。
3. **Initialize session** を送信します。このリクエストは、デバイス ID とセッション ID を`did`と`sid`変数に保存します。他のリクエストは、`did`と`sid`変数を使用します。
4. テストするリクエストに`recommenderCode`または`collectionId`を設定してから送信します。

インポートのリクエストは商品カタログを変更するため、送信する前にリクエストボディを確認してください。

## APIリファレンス

各エンドポイントには、パラメータと例を記載したリファレンスページがあります。

| エンドポイント | 目的 | リファレンス |
| - | - | - |
| `GET /init` | セッションを開始し、デバイス ID とセッション ID を返します。 | [セッションの初期化](https://docs.kameleoon.com/ja/developer-docs/apis/product-recommendation-api-rest/all-endpoints/Initialize/init.md) |
| `POST /import/categories` | 商品カテゴリの階層をインポートします。 | [カテゴリのインポート](https://docs.kameleoon.com/ja/developer-docs/apis/product-recommendation-api-rest/all-endpoints/Import/import-categories.md) |
| `POST /sync/orders` | 取引の注文と明細をインポートまたは更新します。 | [注文のインポート](https://docs.kameleoon.com/ja/developer-docs/apis/product-recommendation-api-rest/all-endpoints/Import/import-orders.md) |
| `PUT /import/products` | 商品カタログをインポートまたは更新します。 | [商品のインポートと更新](https://docs.kameleoon.com/ja/developer-docs/apis/product-recommendation-api-rest/all-endpoints/Import/import-product.md) |
| `PATCH /import/products` | 在庫のある商品のリストを更新します。 | [利用可能な商品の更新](https://docs.kameleoon.com/ja/developer-docs/apis/product-recommendation-api-rest/all-endpoints/Import/update-products.md) |
| `DELETE /import/products` | ID で商品を削除します。 | [商品の削除](https://docs.kameleoon.com/ja/developer-docs/apis/product-recommendation-api-rest/all-endpoints/Import/remove-products.md) |
| `GET /recommend/{recommender_code}` | レコメンダーブロックのパーソナライズされた商品レコメンデーションを返します。 | [商品レコメンデーションの取得](https://docs.kameleoon.com/ja/developer-docs/apis/product-recommendation-api-rest/all-endpoints/Recommend/get-recommend.md) |
| `GET /collection/{collection_id}` | 設定済みの商品コレクションとその HTML テンプレートを返します。 | [コレクションの取得](https://docs.kameleoon.com/ja/developer-docs/apis/product-recommendation-api-rest/all-endpoints/Recommend/get-collection.md) |
| `GET /products` | 絞り込んだ商品リストを返します。 | [商品リストのリクエスト](https://docs.kameleoon.com/ja/developer-docs/apis/product-recommendation-api-rest/all-endpoints/Recommend/get-product-list.md) |
| `GET /search` | 即時または完全な商品検索結果を返します。 | [検索結果の取得](https://docs.kameleoon.com/ja/developer-docs/apis/product-recommendation-api-rest/all-endpoints/Search/get-search.md) |

## ガイド

各ガイドでは、これらのエンドポイントを使用する 1 つのタスクを順を追って説明します。

* [商品カタログをインポートする](https://docs.kameleoon.com/ja/developer-docs/apis/product-recommendation-api-rest/tutorials/import-a-product-catalog-into-kameleoon-using-the-product-recommendation-api.md): カテゴリ、商品、在庫状況の更新をインポートします。
* [商品カタログ内の商品を変更する](https://docs.kameleoon.com/ja/developer-docs/apis/product-recommendation-api-rest/tutorials/modifying-products-in-the-products-catalog.md): 商品を削除し、その在庫状況を更新します。
* [商品レコメンデーションを取得する](https://docs.kameleoon.com/ja/developer-docs/apis/product-recommendation-api-rest/tutorials/retrieving-product-recommendations.md): Web アプリまたはモバイルアプリにレコメンデーションを表示します。
* [商品コレクションを取得する](https://docs.kameleoon.com/ja/developer-docs/apis/product-recommendation-api-rest/tutorials/retrieving-product-collections.md): Web アプリまたはモバイルアプリに商品コレクションを表示します。
* [検索ロジックを実装する](https://docs.kameleoon.com/ja/developer-docs/apis/product-recommendation-api-rest/tutorials/implement-search-logic-in-your-backend-or-mobile-app.md): バックエンドまたはモバイルアプリに、即時の検索結果と完全な検索結果を表示します。
