イベント API
概要
Roktのイベント API は、購入、アプリを開く、または店舗訪問など、あらゆるタイプのクライアントイベントをサポートできる柔軟で堅牢なインターフェースです。また、メールアドレス、購入額、クレジットカード BIN など、関連する属性もサポートします。
Rokt Ecommerce のパートナーは、異常検出のために Web SDK と併用してイベント API を使用でき、配置の挙動における不整合を検出するのに役立ちます。
Rokt Ads のクライアントは、イベント API を使用して Rokt と変換データを統合し、キャンペーンのパフォーマンスと最適化を向上させることができます。
認証
変換イベントを送信したいアカウントのために公開鍵と秘密鍵のペアを作成するには、Rokt アカウントマネージャーに連絡してください。受け取るキーは以下の通りです:
名称 | 値 |
---|---|
Rokt 公開鍵 | rpub-*****-* |
Rokt 秘密鍵 | rsec-*****-* |
API エンドポイント
POST イベント
イベント API を使用すると、クライアントは Rokt プラットフォームと 1 つ以上のイベントを統合できます。イベント は通常、コンバージョンまたはトランザクションイベントを指しますが、使用方法は柔軟です。
イベント API には 2 つの主要なユースケースがあります: 異常検出(パートナー向け)および コンバージョン報告(広告主向け)。
POST /v2/events
リクエスト
ヘッダー
名前 | 値 | 必須 | 説明 |
---|---|---|---|
Content-Type | application/json | はい | 該当なし |
Charset | utf-8 | はい | 該当なし |
Rokt-Version | 2020-05-21 | はい | Rokt の API バージョン。現在の最新バージョンは 2020-05-21 です。 注: このヘッダーを空のままにすると、最新バージョンが適用され、後方互換性がない可能性があります。無効な値は 400 bad request を返します。 |
Authorization | Basic base64(rpub-...:rsec-...) | はい | 標準の 基本認証 ヘッダーで、資格情報の値はコロンで結合された rpub- と rsec- の base64 エンコーディングです。 |
パラメータ
リクエストには、イベントと関連する詳細がJSON形式で含まれています。
レベル1 | レベル2 | レベル3 | 必須 | タイプ | 説明 |
---|---|---|---|---|---|
accountId | はい | 文字列; 最大64文字 | Rokt アカウント ID | ||
events | はい | List[EventObject]; コールあたり最大100項目 | 含めるイベントのリスト | ||
clientEventId | はい | 文字列; 最大36文字 | イベントを一意に識別するための識別子 | ||
eventType | はい | 文字列; 最大128文字 | イベントの種類 | ||
eventTime | はい | 文字列 | イベントの時間はUTCおよびRFC 3339である必要があります。リクエストには、18か月以上前のタイムスタンプまたはイベントAPIが受信した時刻から5分以上未来のタイムスタンプを持つイベントが含まれている場合、拒否されます。この範囲外のタイムスタンプを持つイベントは処理されません。 | ||
metaData | いいえ | List[metaData] | イベントに関する非ビジネスクリティカルな情報を提供します | ||
name | はい | 文字列; 最大256文字 | フィールド名; プレフィックス rokt. (大文字小文字を区別しない) はRoktの使用のために保持されます | ||
value | はい | 文字列; 最大65536文字 | フィールド値; バイナリ値の場合はBase64でエンコード | ||
objectData | いいえ | List[objectData] | イベントの文脈的詳細を含みます | ||
name | はい | 文字列; 最大256文字 | プレフィックス rokt. (大文字小文字を区別しない) はRoktの使用のために保持されます | ||
value | はい | 文字列; 最大65536文字 | フィールド値; バイナリ値の場合はBase64でエンコード |
標準 objectData
フィールド
以下は、Rokt が Event API を通じて受け入れる標準の objectData
フィールドのリストです。あなたの使用例に基づいて、いくつかのフィールドは他のフィールドよりも関連性が高くなります。あなたの使用例に基づく特定のペイロードサンプルについては、異常検出 または コンバージョン報告 を参照してください。
追加のデータフィールドを追加したり、特定のフィールドに異なる名前を使用したい場合は、アカウントマネージャーに知らせてください。
名称 | 説明 | 例の値 |
---|---|---|
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。 | ABC789 |
confirmationref | 確認参照ID。ユニークな取引を識別したり、注文の確認を追跡するために使用できる別の識別子。 注意: 提供されている場合、Roktはこの識別子を使用して変換イベントを重複排除します。 | 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 | デバイスタイプ | Desktop , Mobile , Tablet |
os | デバイスのオペレーティングシステム | iOS |
osversion | オペレーティングシステムのバージョン | 8.1 |
browser | ブラウザ | Safari |
browserversion | ブラウザのバージョン | 11.1 |
title | 顧客の肩書き | Mr , Mrs , Ms , Miss |
gender | 顧客の性別 | M , Male , F , Female |
dob | yyyymmdd 形式 | 19851220 |
age | 顧客の年齢 | 33 |
language | 購入に関連する言語 | en , en-US |
unitno | 住所に関連するユニット番号 | Unit A |
address1 | 住所の最初の行 | 123 Sesame St |
address2 | 住所の第二行 (アパート番号、階数など) | Alphabet Boulevard |
zipcode | 顧客の郵便番号 | 90210 , SW1W 0DT |
city | 顧客の都市 | San Francisco |
state | 顧客の州 | CA , California , NY , New York |
country | 顧客の国 | US , United States , AU , Australia |
サンプル
これは、2つの予約イベントを含むJSONペイロードを持つサンプルEvent API呼び出しです。
POST /v2/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"
}
]
}
]
}
応答
ヘッダー
名前 | 説明 |
---|---|
X-Rokt-Trace-Id | リクエストに関連付けられた一意の識別子で、トラブルシューティングの目的に使用されます。 |
本文
イベント API への成功した呼び出しは、200 ステータスを返します。 unprocessedRecords
オブジェクトは空であるべきであり、すべてのイベントが正常に処理されたことを示します。
サンプル
以下のコードサンプルは、イベント API への成功した呼び出しを表しています。
{
"data": {
"unprocessedRecords": []
}
}
:::注 200 レスポンスと潜在的なエラー
200 レスポンスを検証する際は、unprocessedRecords
にイベントが返されていないことを確認してください。unprocessedRecords
にレコードがある場合、一つ以上のイベントが正しく処理されていない可能性があります。
:::
レスポンス
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
は通常、成功した呼び出しを示します。ただし、Event 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"
}
]
}
}
]
}
}
レガシー認証 (v1)
既存のユーザーおよび特定のカスタマーデータプラットフォーム (CDP) にオンボーディングされているユーザー (具体的には、Census、Hightouch、mParticle、Segment、Tealium) Event API の新しいユーザーは、よりシンプルな認証体験のために /v2/events を使用する必要があります。
Event API は、OAuth 2.0 アプローチをクライアント統合に利用しています。詳細については OAuth 2.0 Credentials Flow を参照してください。Rokt Event API にアクセスするには、Rokt App ID と App Secret が必要です。
これらの手順を使用して、Rokt Reporting API の認証情報を生成できます。
Rokt Event API の任意のエンドポイントを呼び出すには、アクセストークンが必要です。アクセストークンにより、Rokt はクライアントアプリを特定し、各クライアントアプリがアクセスしているデータの種類を識別し、悪意のあるアプリがアクセスを持たないデータにアクセスすることを防ぎます。
アプリ ID とアプリシークレットの生成
One Platform にサインインします。
左下のアカウントアイコンの下の プロフィール設定 に移動します。
個人 API 認証情報の生成 セクションまでスクロールします。
アプリの名前を入力します。
生成 をクリックします。
Event API と Reporting API の両方の認証情報がすぐに生成され、次のように表示されます:
AppId: "40svbin0d194subpohl079rhck"
AppSecret: "1dimhvr1v6skae9uhvtgs3chs2astnjf0469df6ul9hurubtoovn"App ID と App Secret を安全な場所に保管します。このセッションの後は App Secret にアクセスできなくなります。
すぐにこれらの認証情報を使用できます。
アカウントを保護するために認証情報を機密として保持し、メールで送信してはいけません。他の組織と共有しないでください。たとえ Rokt からの問い合わせのように見えても、正当な Rokt の代表者は決してあなたに App Secret を尋ねることはありません。
呼び出すタイミング
このエンドポイントを呼び出して、Event APIと1時間対話するためのアクセストークンを生成します。APIとの対話を1時間以上続ける必要がある場合は、このエンドポイントを再度呼び出して新しいアクセストークンを取得してください。
リクエスト
サンプル
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 認証を通じて認証ヘッダーに渡す必要があり、One Platform のProfile Settingsで生成できます。ヘッダーの内容はBasic base64encode(app_id:app_secret) です。 | はい | Basic base64encocde(12345:abcde) |
Content-Type | header | リクエストのメディアタイプは常にapplication/x-www-form-urlencoded でなければなりません。 | はい | application/x-www-form-urlencoded |
grant_type | body | client_credentials である必要があります。 | はい | client_credentials |
応答
例
{
"access_token":
"eyJraWQiOiJPVUpHT1RjM09FWXROakkzUlMwME5UUkJMVGxCTkRrdFJqWXdOVVV3UkRNNE1FTTJDZz09IiwiYWxnIjoiSFMyNTYifQ.eyJzdWIiOiJkZW1vIiwidG9rZW5fdXNlIjoiYWNjZXNzIiwic2NvcGUiOiJyZXBvcnQtYXBpL3JlYWQtcmVwb3J0LWFwaSIsImF1dGhfdGltZSI6MTU4NTExMDA0MSwiaXNzIjoiaHR0cHM6Ly9jb2duaXRvLWlkcC51cy13ZXN0LTIuYW1hem9uYXdzLmNvbS91cy13ZXN0LTJfZG93Tlp1elRYIiwiZXhwIjoxNTg1MTEzNjQxLCJpYXQiOjE1ODUxMTAwNDEsInZlcnNpb24iOjIsImp0aSI6IkYwNzY5RDVDLTRDNTAtNDVDOC04OTcyLTI4MkUwODlDMkFFOSIsImNsaWVudF9pZCI6ImRlbW8ifQ.NOJIx7qLHFVXqKNZfJKsJlwitOvbHOLdknQ\_D33WjYe8O9ZE08t7LFgs7ANiwBicN5ejmdS7iND0cth5ViUWK5MKZxvLKI6dPG5RljegfpZJtGKqDT\_MFfpayvcOlkkZc5yRw9Bcgz\_fW2ha7q6BGRsUb-e9DZ0Pcb5zL\_HbRLbnvlhYCYi9rPmYOYG6BronvLwB8sg2kVubLQGn\_ASbK\_FW8bKPhqH4BL2\_JunGBzUKJPL9yNvOnFy7VKwlvH1OKUqKlCYbewOtUd1utcMNIb\_AbSGRtzJKslbE5VwQtL5bZ34kOCNH07gSolSGvqqw4dyxU4l0QSVXVmqgVYdKfA"
"expires_in": 3600,
"token_type": "Bearer"
}
POST /v1/events
リクエスト
リクエストは、ヘッダーを除いて/v2/events
のPOSTとすべての点で同じです。ヘッダーは次の形式を取ります:
ヘッダー
名前 | 値 | 必須 | 説明 |
---|---|---|---|
Content-Type | application/json | はい | N/A |
Charset | utf-8 | はい | N/A |
Authorization | Bearer ${access-token} | はい | /auth/oauth2/token エンドポイントから取得したアクセストークン |
Rokt-Version | 2020-05-21 | はい | RoktのAPIバージョン。現在の最新バージョンは2020-05-21です。 注意:このヘッダーを空にすると最新バージョンが適用され、後方互換性がない可能性があります。無効な値は 400 bad request を返します。 |