メインコンテンツへスキップ
Data API は、Kameleoon のリモートサーバーに保存されたデータを取得または書き込むための REST API です。利用可能なエンドポイントを使用して、次のことができます。
  • 特定の訪問者の訪問イベントを取得する。
  • オフラインコンバージョンイベントなど、特定の訪問者の追加の訪問イベントを送信する。
  • 特定のサイトコードの商品データを送受信する。
  • CRM やセグメンテーションデータなど、特定の訪問者の追加データを保存する。

Data API エンドポイント

エンドポイントは大きく分けて 3 つのデータカテゴリーに分類されます。

Visit エンドポイント

Visit エンドポイントは、指定された訪問者コードに対するイベント(コンバージョン、カスタムデータ、セグメントなど)を取得および送信します。これらのエンドポイントを使用して、実店舗での購入などのオフライン購入データを Kameleoon にインポートできます。
  • GET /visit/visitor: このエンドポイントは、ユーザーに対してトリガーされた実験やパーソナライゼーション、ターゲットセグメントなど、Kameleoon が収集した訪問データを取得します。
このエンドポイントへのアクセスには、Kameleoon Feature Experimentation ソリューションが必要です。詳細については、カスタマーサクセスマネージャーにお問い合わせください。
  • POST /visit/forget: このエンドポイントは、複数の訪問者のデータを削除します。
  • POST /visit/events: このエンドポイントは、コンバージョンやページビューイベントなど、特定の訪問者のデータを送信します。

Product エンドポイント

Product エンドポイントは、特定のサイトコードの商品データを取得および送信します。これらのエンドポイントを使用して、ビュー、カートへの追加、購入などの商品イベントを登録したり、特定の商品の過去の購入数やビュー数などの統計情報を取得したりできます。
  • POST /product/events: このエンドポイントは、複数の商品の属性やイベント(ビュー、カートへの追加、購入)を送信します。Activation API は、obtainProductData および obtainProductInteractions メソッドを使用して、このデータを取得し、ターゲティングやレコメンデーションに利用します。
  • GET /product/productCounters: このエンドポイントは、複数の商品のカウント(ビュー数、カート追加数、トランザクション数)を取得します。
  • GET /product/productData: このエンドポイントは、複数の商品の属性を取得します。
これらのエンドポイントを使用するには、Product Recommendation モジュールまたは Product Targeting アドオンへのアクセスが必要です。両方とも Web Experimentation ソリューションと統合されます。詳細については、カスタマーサクセスマネージャーにお問い合わせください。

Map エンドポイント

Map エンドポイントは、特定のキー(通常は訪問者コードまたは内部ユーザー ID)に対する追加データを保存します。Activation API およびすべての SDK は、retrieveDataFromRemoteSource メソッドを使用して、このデータを取得し、ターゲティングおよびセグメンテーションに利用します。map エンドポイントを使用して、特定のキーに保存されたデータを取得します。
  • GET /map/map: このエンドポイントは、指定されたキーのデータを取得します。
  • GET /map/maps: このエンドポイントは、複数のキーのデータを取得します。
  • POST /map/maps: このエンドポイントは、複数のキーのデータを送信します。

認証とレート制限

認証

Data API は、JSON Web トークンを利用した Automation API と同じ認証フローを使用します。 セキュリティを維持し、API 認証情報を保護するため、特定のタイプのリクエストには認証を使用してください。
  • サーバーサイドのソース: サーバーから発信されるリクエストには、Kameleoon は認証を強く推奨します。これにより レート制限 が引き上げられます。Feature Experimentation でサーバーサイド SDK を使用する場合は認証してください。
  • クライアントサイドのソース: Web ブラウザなどのクライアントアプリケーションから発信され、API 認証情報が公開される可能性のあるリクエストでは、認証しないでください。Kameleoon は、Kameleoon Web Experimentation を使用する場合にはこの構成を推奨しません。
不正な形式の API トークン、期限切れのトークン、または無効な署名を提供するリクエストはすべて、HTTP 401「Unauthorized」応答となります。 認証プロセスの詳細については、Automation API 認証フロー のドキュメントを参照してください。
Data API は Web Experimentation エンジンによる過去のデータ取得をサポートするため、デフォルトでは Data API は認証を必要としません。Feature Experimentation とサーバーサイド SDK のみを使用している場合は、カスタマーサクセスマネージャーに連絡して、特定のエンドポイントに対する認証を有効化してください。Kameleoon は、エンドポイントを保護し、GET または POST リクエストに認証を制限する柔軟なセットアップを提供しています。

レート制限

Data API は、契約上の月間ユニーク訪問者数 (MUV)お客様の IP アドレス に基づいてレート制限を適用します。アプリケーションがこれらの制限を超えた場合、API は HTTP 429 - “Too Many Requests” 応答を返します。 これらのレート制限により、すべての顧客に対して Kameleoon サービスの安定した高いパフォーマンスが確保されます。 サーバーサイドのソースの IP ベースの制限を解除するには、認証 を行います。 multiplier の値はご契約内容によって異なります:
  • 1 — Web Experimentation のみ
  • 2 — Web Experimentation および Feature Experimentation
ユースケースで上記より高いレート制限が必要な場合は、アカウントマネージャーにお問い合わせください。

リクエストを生成するもの

どの操作が GET リクエストと POST リクエストを生成するかを理解することで、レート制限の消費量を見積もり、管理するのに役立ちます。以下の詳細は主にクライアントサイドのテクノロジー(engine.js、JavaScript SDK、モバイル SDK)に適用されます。これらでは各デバイスが独自のリクエストを発行します。POST トラッキングリクエストの場合、サーバーサイド SDK は複数の訪問者のデータを 1 つのリクエストにまとめることができるため、大規模な環境でより効率的です。GET リクエストは常に単一の訪問者を対象とします。 アプリケーションが以下のいずれかの操作を明示的に呼び出した場合にのみ、GET リクエストをトリガーします。SDK とエンジンは自動ポーリングを行いません:
  • 訪問者データのフェッチgetRemoteVisitorData()(SDK)または performRemoteSynchronization()(engine.js)は、特定の訪問者のリモート訪問者データをオンデマンドで読み込みます。
  • リモートデータとウェアハウスオーディエンスのフェッチgetVisitorWarehouseAudience()(SDK)または retrieveDataFromRemoteSource()(SDK および engine.js)は、データウェアハウスまたはリモートマップデータをオンデマンドで読み込みます。
POST リクエストは、訪問者データを送信前にまとめるトラッキングメカニズムから生成されます:
  • トラッキングリクエスト:主要な定期的な POST 呼び出しです。SDK またはエンジンは保留中の訪問者データをまとめ、保留データがある場合にのみトラッキングインターバルごとに最大 1 回送信します。デフォルトのインターバルは 1 秒です。SDK では、trackingIntervalMillisecond / tracking_interval_millisecond設定パラメータを使用して、インターバルを 1〜5 秒の範囲で設定できます。engine.js のインターバルは 500 ミリ秒に固定されています。コンバージョン、追跡されたフィーチャーフラグの評価、明示的な flush() 呼び出しがすべて次のインターバルのデータをキューに追加します。インスタントフラッシュをトリガーした場合は即時送信されます。
  • アクティビティトラッキング:訪問者のアクティビティデータ(クリック、スクロール、マウス移動)を次のトラッキング送信に組み込むサブメカニズムです。SDK は、ユーザーがアクティブなタブで操作しているときのみアクティビティデータを収集します。デフォルトのインターバルは 60 秒です。SDK では、activityTrackingIntervalMillisecond / activity_tracking_interval_millisecond設定パラメータを使用してインターバルを設定できます。engine.js のインターバルは 60 秒に固定されています。
モバイル SDK の場合:アプリがバックグラウンドに移行すると、定期的なトラッキングは自動的に一時停止されます。アプリの状態に関わらず、明示的な即時フラッシュを使用して保留中のデータを送信できます。 JavaScript SDK の場合:前回のインターバルティック以降に訪問者がページと実際にインタラクション(マウス移動またはスクロール)した場合にのみトラッキングリクエストが送信され、非表示またはバックグラウンドのタブが訪問数を水増しするのを防ぎます。ページが非アクティブな状態でもデータを送信し続けるには、flush({instant: true}) を明示的に呼び出してください。Kameleoon エンジン(window.Kameleoon)がページに存在する場合、SDK はアクティビティトラッキングの重複を防ぎます。

アカウントレベルの制限

レート制限はプロジェクト単位ではなく、顧客アカウント全体に適用されます。1つのプロジェクトが過剰なリクエストを生成した場合(例えば、実装の誤りによりカスタムデータイベントを繰り返し送信するループが発生した場合)、そのプロジェクトがアカウント全体で共有されている制限を消費し、他のすべてのプロジェクトで HTTP 429 エラーが発生する可能性があります。

過剰なリクエスト量の診断

Live events ページ(Insights > Live events)を使用して、予期しないトラフィックを生成しているプロジェクトを特定してください。
  1. プロジェクト別のイベント量を確認する: 各プロジェクトを順番に選択し、過去1時間または24時間のイベント数を確認します。訪問者数に比べてイベント数が著しく多いプロジェクト(例えば、100,000 MUV 契約に対して数千万のイベント)が原因である可能性が高いです。
  2. イベントタイプでフィルタリングする: 疑わしいプロジェクトを特定したら、イベントをタイプでフィルタリングしてください。カスタムデータイベントが予期しない量の最も一般的な原因です。設定が誤った実装は、ページの読み込みごとに同じカスタムデータ変数、またはすべてのカスタムデータ変数を送信するループを作成し、短時間で大量のイベントを生成することがあります。