イベントAPI
概要
RoktのイベントAPIは、購入、アプリの起動、店舗の訪問など、任意の種類のクライアントイベントをサポートする柔軟で堅牢なインターフェースです。関連する属性(例:メールアドレス、購入金額、クレジットカードBIN)と共に使用できます。
Rokt Ecommerceのパートナーは、Web SDKと組み合わせてイベントAPIを使用して異常検出を行い、配置の振る舞いの不一致を検出するのに役立てることができます。
Rokt Adsのクライアントは、イベントAPIを使用して変換データをRoktと統合し、キャンペーンのパフォーマンスと最適化を向上させることができます。
認証
イベントAPIは、クライアントの統合にOAuth 2.0アプローチを利用しています。詳細については、OAuth 2.0クレデンシャルフローを参照してください。RoktイベントAPIにアクセスするには、RoktアプリIDとアプリシークレットが必要です。
同じ手順でRokt Reporting APIの資格情報を生成することもできます。
RoktイベントAPIの任意のエンドポイントを呼び出すには、アクセストークンが必要です。アクセストークンにより、Roktはクライアントアプリを識別し、各クライアントアプリがアクセスしているデータの種類を把握し、悪意のあるアプリがアクセス権限のないデータにアクセスするのを防ぎます。
アプリIDとアプリシークレットの生成
One Platformにサインインします。
アカウントアイコンの下部左側にあるプロファイル設定に移動します。
個人用API資格情報の生成セクションまでスクロールします。
アプリの名前を入力します。
生成をクリックします。
イベントAPIとレポートAPIの両方の資格情報がすぐに生成され、次のような形式になります:
AppId: "40svbin0d194subpohl079rhck"
AppSecret: "1dimhvr1v6skae9uhvtgs3chs2astnjf0469df6ul9hurubtoovn"アプリIDとアプリシークレットを安全な場所に保存します。このセッションの後には再びアプリシークレットにアクセスできません。
これらの資格情報をすぐに使用することができます。
アカウントを保護するために、資格情報は機密に保つ必要があります。メールで送信しないでください。組織外で共有しないでください。Roktからの問い合わせであっても、正当なRoktの代表者はアプリシークレットを求めることはありません。
いつ呼び出すべきか
このエンドポイントを呼び出して、1時間有効なアクセストークンを生成し、Event APIとのやり取りを行うことができます。1時間以上APIとのやり取りを続ける必要がある場合は、再度このエンドポイントを呼び出して新しいアクセストークンを取得してください。
リクエスト
サンプル
curl -vX POST https://api.rokt.com/auth/oauth2/token \
-H 'Authorization: Basic ${AuthToken}' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=client_credentials'
フィールド
Key | In | Description | Required? | Example |
---|---|---|---|---|
Authorization | header | app_id とapp_secret はBasic HTTP認証を通じてAuthorizationヘッダーに渡す必要があります。これらはOne Platformのプロファイル設定で生成できます。ヘッダーの内容はBasic base64encode(app_id:app_secret) です。 | Yes | Basic base64encocde(12345:abcde) |
Content-Type | header | リクエストのメディアタイプは常にapplication/x-www-form-urlencoded である必要があります。 | Yes | application/x-www-form-urlencoded |
grant_type | body | client_credentials である必要があります。 | Yes | client_credentials |
応答
例
{
"access_token":
"eyJraWQiOiJPVUpHT1RjM09FWXROakkzUlMwME5UUkJMVGxCTkRrdFJqWXdOVVV3UkRNNE1FTTJDZz09IiwiYWxnIjoiSFMyNTYifQ.eyJzdWIiOiJkZW1vIiwidG9rZW5fdXNlIjoiYWNjZXNzIiwic2NvcGUiOiJyZXBvcnQtYXBpL3JlYWQtcmVwb3J0LWFwaSIsImF1dGhfdGltZSI6MTU4NTExMDA0MSwiaXNzIjoiaHR0cHM6Ly9jb2duaXRvLWlkcC51cy13ZXN0LTIuYW1hem9uYXdzLmNvbS91cy13ZXN0LTJfZG93Tlp1elRYIiwiZXhwIjoxNTg1MTEzNjQxLCJpYXQiOjE1ODUxMTAwNDEsInZlcnNpb24iOjIsImp0aSI6IkYwNzY5RDVDLTRDNTAtNDVDOC04OTcyLTI4MkUwODlDMkFFOSIsImNsaWVudF9pZCI6ImRlbW8ifQ.NOJIx7qLHFVXqKNZfJKsJlwitOvbHOLdknQ\_D33WjYe8O9ZE08t7LFgs7ANiwBicN5ejmdS7iND0cth5ViUWK5MKZxvLKI6dPG5RljegfpZJtGKqDT\_MFfpayvcOlkkZc5yRw9Bcgz\_fW2ha7q6BGRsUb-e9DZ0Pcb5zL\_HbRLbnvlhYCYi9rPmYOYG6BronvLwB8sg2kVubLQGn\_ASbK\_FW8bKPhqH4BL2\_JunGBzUKJPL9yNvOnFy7VKwlvH1OKUqKlCYbewOtUd1utcMNIb\_AbSGRtzJKslbE5VwQtL5bZ34kOCNH07gSolSGvqqw4dyxU4l0QSVXVmqgVYdKfA"
"expires_in": 3600,
"token_type": "Bearer"
}
API エンドポイント
POST イベント
イベントAPIを使用すると、クライアントは1つまたは複数のイベントをRoktプラットフォームに統合することができます。イベントは通常、コンバージョンやトランザクションのイベントを指しますが、使用方法は柔軟です。
イベントAPIには、主に2つのユースケースがあります:異常検出(パートナー向け)とコンバージョンレポート(広告主向け)。
POST /v1/events
リクエスト
ヘッダー
名前 | 値 | 必須 | 説明 |
---|---|---|---|
Content-Type | application/json | Yes | N/A |
Charset | utf-8 | Yes | N/A |
Authorization | Bearer ${access-token} | Yes | /auth/oauth2/token エンドポイントから取得したアクセストークン |
Rokt-Version | 2020-05-21 | Yes | RoktのAPIバージョン。現在の最新バージョンは2020-05-21です。 注意: このヘッダーを空にすると、最新バージョンが適用され、互換性のないバージョンになる可能性があります。無効な値は 400 bad request を返します。 |
Idempotency-Key | ${uuid-v4} | Yes | クライアントからの一意の識別子。イベントの安全な再試行を許可するために使用されます。同じidempotency-key を持つ後続のリクエストはHTTP 409 を返します。キーは3時間後に削除されることができます。キーが期限切れになった後に同じキーが再利用されると、新しいリクエストが受け入れられます。 |
パラメータ
リクエストは、JSON形式でイベントと関連する詳細を含んでいます。
レベル1 | レベル2 | レベル3 | 必須 | タイプ | 説明 |
---|---|---|---|---|---|
accountId | Yes | 文字列; 最大64文字 | RoktアカウントID | ||
events | Yes | List[EventObject]; 1回の呼び出しで最大100個のアイテム | インジェストするイベントのリスト | ||
clientEventId | Yes | 文字列; 最大36文字 | イベントを一意に識別するための識別子 | ||
eventType | Yes | 文字列; 最大128文字 | イベントのタイプ | ||
eventTime | Yes | 文字列 | イベントの時刻はUTCとRFC 3339形式である必要があります。イベントAPIが受け取った時点から18ヶ月以上前または5分以上未来のタイムスタンプを持つイベントを含むリクエストは拒否されます。この範囲外のタイムスタンプを持つイベントは処理されません。 | ||
metaData | No | List[metaData] | イベントについての非ビジネスクリティカルな情報を提供します | ||
name | Yes | 文字列; 最大256文字 | フィールド名; rokt. の接頭辞(大文字小文字を区別しない)はRokt専用です | ||
value | Yes | 文字列; 最大65536文字 | フィールドの値; バイナリ値はBase64でエンコードします | ||
objectData | No | List[objectData] | イベントの文脈に関する詳細を含みます | ||
name | Yes | 文字列; 最大256文字 | rokt. の接頭辞(大文字小文字を区別しない)はRokt専用です | ||
value | Yes | 文字列; 最大65536文字 | フィールドの値; バイナリ値はBase64でエンコードします |
標準の objectData
フィールド
以下は、RoktがイベントAPIを介して受け入れる標準の objectData
フィールドのリストです。使用ケースに応じて、一部のフィールドが他よりも関連性が高い場合があります。使用ケースに基づいた特定のペイロードのサンプルについては、異常検出または変換レポートを参照してください。
追加のデータフィールドを追加したい場合や、特定のフィールドに異なる名前を使用したい場合は、アカウントマネージャーにお知らせください。
Name | Description | Example value |
---|---|---|
email | プレーンテキストとして渡されたメールアドレス。小文字で、末尾のスペースなし | john@email.com |
emailsha256 | メールアドレスのSHA-256ハッシュ。ハッシュ化する前に、小文字で、末尾のスペースなし | fab1e2e699b3b927cbf875046a64f222 5df02d5cb306f3857424c2bbb87be61f |
passbackconversiontrackingid | 変換イベントを元のクリックにマッチさせるために使用される、Roktが生成したID。別の統合が必要です。 | 1bc29b36f623ba82aaf6724fd3b16718 |
amount | トランザクション金額(小数点を許可) | 100.25 |
currency | 通貨コード | USD |
quantity | 特定の変換内のアイテムの数量(整数) | 4 |
conversiontype | 異なる変換イベントを区別するために使用されます。 注意: デフォルトの変換イベントタイプが提供されている場合にのみ適用されます。 | ticketpurchase , seatupgrade , signup |
productname | 購入した商品の名前。複数のアイテムをカンマで区切ることができます。 | Maroon 5 t-shirt , Warriors vs. Raptors |
sku | 購入した商品の識別子(注: 1つのSKUのみ受け入れます) | 230847 , tshirt-blue-39487 , 398fhdnff |
paymenttype | トランザクション中に使用された支払い方法 | VISA , American Express |
ccbin | 変換支払いのクレジットカードBIN | 123456 |
margin | 変換の利益率 | 10 |
transactionid | 一意のトランザクションを識別するために使用されるトランザクションID。 注意: 提供された場合、Roktはこの識別子を使用してチャネル間での変換イベントの重複を排除します。 | ABC789 |
confirmationref | 確認参照ID。一意のトランザクションを識別したり、注文の確認を追跡するために使用される代替識別子。 注意: 提供された場合、Roktはこの識別子を使用して変換イベントの重複を排除し、 transactionid は利用できません。 | XYZ123 |
firstname | 顧客の名前 | John |
firstnamesha256 | 名前のSHA-256ハッシュ。ハッシュ化する前に、すべての末尾のスペースを小文字に変換してトリムします。 | fab1e2e699b3b927cbf875046a64f222 5df02d5cb306f3857424c2bbb87be61f |
lastname | 顧客の姓 | Smith |
lastnamesha256 | 姓のSHA-256ハッシュ。ハッシュ化する前に、すべての末尾のスペースを小文字に変換してトリムします。 | fab1e2e699b3b927cbf875046a64f222 5df02d5cb306f3857424c2bbb87be61f |
mobile | 変換顧客の携帯電話番号 | 3053211654 , +1 (323) 867-5309 |
mobilesha256 | 携帯電話番号のSHA-256ハッシュ。 注意: ハッシュ化する前に、携帯電話番号を次の形式に整形する必要があります: 5551234567 (ダッシュやスペースは含まれていません)。 | fab1e2e699b3b927cbf875046a64f222 5df02d5cb306f3857424c2bbb87be61f |
ipaddress | 顧客のIPアドレス | 172.3.51.182 |
ipaddresssha256 | IPアドレスのSHA-256ハッシュ。 | fab1e2e699b3b927cbf875046a64f222 5df02d5cb306f3857424c2bbb87be61f |
useragent | 変換する顧客のブラウザユーザーエージェント | Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0 |
DeviceType | デバイスのタイプ | デスクトップ , モバイル , タブレット |
os | デバイスのオペレーティングシステム | iOS |
osversion | オペレーティングシステムのバージョン | 8.1 |
browser | ブラウザ | Safari |
browserversion | ブラウザのバージョン | 11.1 |
title | 顧客の敬称 | 氏 , 夫人 , さん , 未婚 |
gender | 顧客の性別 | 男性 , 男 , 女性 , 女 |
dob | yyyymmdd の形式での顧客の誕生日 | 19851220 |
age | 顧客の年齢 | 33 |
language | 購入に関連する言語 | en , en-US |
unitno | 住所に関連するユニット番号 | Unit A |
address1 | 住所の1行目 | 123 Sesame St |
address2 | 住所の2行目(アパート番号、階層など) | Alphabet Boulevard |
zipcode | 顧客の郵便番号 | 90210 , SW1W 0DT |
city | 顧客の都市 | San Francisco |
state | 顧客の州 | CA , California , NY , New York |
country | 顧客の国 | US , United States , AU , Australia |
サンプル
これは、2つの予約イベントを含むJSONペイロードを使用したサンプルのイベントAPI呼び出しです。
POST /v1/events
{
"accountId": "12345",
"events": [
{
"clientEventId": "ff3bd69c-ca74-4337-af91-4d5d0bd00e38",
"eventType": "booking",
"eventTime": "2020-05-22T10:21:29.339Z",
"metaData": [
{
"name": "sourceServer",
"value": "192.0.0.1"
}
],
"objectData": [
{
"name": "email",
"value": "email123@emailserver.com"
},
{
"name": "amount",
"value": "85.00"
}
]
},
{
"clientEventId": "fff4deeb-cdee-49ff-9aad-61b1c4256ca6",
"eventType": "booking",
"eventTime": "2020-05-22T10:21:29.339Z",
"metaData": [
{
"name": "sourceServer",
"value": "192.0.0.1"
}
],
"objectData": [
{
"name": "email",
"value": "email456@emailserver.com"
},
{
"name": "amount",
"value": "99.99"
}
]
}
]
}
レスポンス
ヘッダー
Name | Description |
---|---|
X-Rokt-Trace-Id | リクエストに関連する一意の識別子で、トラブルシューティングの目的で使用されます。 |
ボディ
イベントAPIへの成功した呼び出しは、200のステータスを返します。unprocessedRecords
オブジェクトが空であることを示し、すべてのイベントが正常に処理されたことを示します。
サンプル
以下のコードサンプルは、イベントAPIへの成功した呼び出しを表しています。
{
"data": {
"unprocessedRecords": []
}
}
200のレスポンスを検証する際には、unprocessedRecords
にイベントが返されていないことを確認してください。もしunprocessedRecords
にレコードがある場合、1つ以上のイベントが正しく処理されていない可能性があります。
レスポンス
HTTPレスポンスコード | エラーコード | 説明 |
---|---|---|
200 | N/A | 通常はOKですが、以下の例のような200エラーシナリオも参照してください。 |
400 | RequestBodyReadError | リクエストボディの読み取り中にエラーが発生しました。 |
400 | RequestJsonUnmarshalError | イベントAPIがリクエストボディをアンマーシャルできませんでした。 |
400 | RequestValidationError | リクエストボディの内容がバリデーションチェックに失敗しました。パラメータの要件を正しく遵守しているか確認してください。 |
401 | UnauthorizedError | 認証トークンが無効または不正です。 |
403 | Forbidden | 提供されたアクセストークンはアカウントで認可されていません。 |
500, 502, 503 | InternalServerError, ServiceUnavailableError | Rokt側で予期しないエラーが発生しました。指数バックオフを使用して再試行するか、Roktサポートチームに連絡してください。 |
サンプル
{
"data": {
"code": "RequestJsonUnmarshalError",
"message": "リクエストボディをアンマーシャルできませんでした"
}
}
200エラーシナリオ
HTTPステータス200
は通常、成功した呼び出しを示します。ただし、イベントAPIはバッチAPIであるため、200
の応答は必ずしもリクエスト全体が正しく処理されたことを意味しません。開発者は応答ペイロードを検査して、すべてのレコードが正しく処理されたことを確認する必要があります。応答ペイロードにはエラーメッセージと失敗した特定のイベントオブジェクトが含まれています。
レベル1 | レベル2 | レベル3 | レベル4 | タイプ | 説明 |
---|---|---|---|---|---|
data | BulkResponseItemObject | ||||
unprocessedRecords | List[BulkResponseItemObject] | 処理に失敗したレコードを含むオブジェクトのリスト。 | |||
error | ErrorObject | レコードに関連するエラーを説明します。 | |||
code | String | エラーコード | |||
message | String | 詳細なエラーメッセージ | |||
record | EventObject | 失敗した元のレコードが含まれるフィールド。 |
{
"data": {
"unprocessedRecords": [
{
"error": {
"code": "ValidationError",
"message": "無効なコンテンツ"
},
"record": {
"clientEventId": "fff4deeb-cdee-49ff-9aad-61b1c4256ca6",
"eventType": "conversion",
"eventTime": "2020-05-22T10:21:29.339Z",
"objectData": [
{
"name": "firstname",
"value": "john"
}
]
}
}
]
}
}