取引カテゴリー
すべての取引にはtransaction_categoryがあり、ルールと分析での取引の扱いを決定します。
取引の詳細
transaction_detailsオブジェクトには金融データが含まれます。
対象者と取引相手
各取引には対象者(必須)と、任意の取引相手があります。どちらも同じ当事者モデルを使用します。addressがオブジェクトの場合、Diditはaddress.countryから当事者のcountry_codeを導出します。addressが文字列の場合、その当事者のcountry_codeはnullで返されます。
vendor_dataが既存のユーザーまたは企業と一致すると、Diditは取引をそのエンティティのプロファイルに自動的に紐付け、セッションをまたいだルール評価やベロシティチェックが可能になります。
レスポンスでは、両方の当事者がparties配列にAPPLICANTとCOUNTERPARTYの役割で返されます。
支払い方法
各当事者にpayment_methodを指定して、その当事者側の支払い手段を記述します。
travelRule取引では、method_type: "unhosted_wallet"(エイリアスtype)を取引相手の支払い方法に指定すると、取引相手のウォレットがセルフホスト型であることを宣言します。
トラベルルールが有効で、アプリケーションのデフォルト通貨での金額がthreshold_amountを下回らない場合、送金は直接UNCONFIRMED_OWNERSHIPに移行し、所有証明フローに入ります。詳しくは宣言されたセルフホスト型ウォレットを参照してください。
暗号資産取引では、ブロックチェーンスクリーニングが自動的に実行されるように、account_idにアドレスを含め、currency_kindをcryptoに設定してください。スクリーニング対象のウォレットは方向によって決まります。入金の送金前スクリーニングではcounterparty.payment_method.account_idの送金元ウォレットを使用し、出金のスクリーニングではcounterparty.payment_method.account_idの送金先ウォレットを使用します。transaction_details.payment_reference_idでブロックチェーンハッシュを送信する場合、入金の取引スクリーニングにはsubject.payment_method.account_idにお客様のサービスの入金アドレスが必要であり、出金の取引スクリーニングにはcounterparty.payment_method.account_idに送金先ウォレットが必要です。
暗号資産スクリーニングの上書き
リクエストのトップレベルでinclude_crypto_screeningを使用すると、Consoleの取引 > 設定で設定されているデフォルトを上書きできます。
デバイスコンテキスト
デバイスインテリジェンスのルールを機能させるには、サブジェクト(および必要に応じて取引相手)に該当する当事者にデバイス情報を含めます。リクエストのフィールドは各当事者のdevice_contextです。camelCaseのエイリアスdeviceも使用でき、SDKの送信形式ではこちらが使われます。レスポンスでは、parties配列内の各当事者にdeviceとして返されます。
browser_familyとplatformはuser_agentから導出されません。デバイスインテリジェンスのルールを発動させるには、device_context内のトップレベルのキーとして明示的に送信する必要があります。Didit SDKを利用している場合、これらのフィールドは自動的に収集されます。userAgent、browserFamily、browserVersion、osFamily、osVersion、acceptLang、sessionId、sessionAgeMs。network_contextサブオブジェクトではip / countryCode3 / lat / lonのエイリアスを使用でき、トップレベルのipInfoブロックもnetwork_contextに統合されます。
デバイスコンテキストを使うと、複数アカウント利用の検知(異なるサブジェクト間で同じフィンガープリント)、新しいブラウザと新しいIPの組み合わせの検知、セッション経過時間が短い状態での高額送金の検知、位置情報に基づくリスクスコアリングといったルールが利用できます。
カスタムプロパティ
追加のキーと値のペアをcustom_propertiesオブジェクトに自由に追加できます。ルールの条件ではこれらのフィールドを参照できるため、商品カテゴリー、加盟店ID、チャネルなど、ビジネス固有のコンテキストを渡すのに便利です。
custom_values.<key>で参照します。たとえば上記のペイロードはcustom_values.product_category eq "electronics"に一致します。Consoleのルールビルダーでは、最近取り込まれた取引で確認されたキーが、条件のフィールド選択のCustom Propertiesの下に表示されます。同じグループ内のEnter custom propertyを使うと、任意のキーを手動で入力できます(大文字と小文字は区別されます)。詳しくはルールとスコアリングを参照してください。
リクエスト例
レスポンス
APIは、作成された取引を初回の評価結果とともに返します。
リクエストとレスポンスの完全なスキーマはAPIリファレンスを、注釈付きのペイロード解説は専用のレスポンススキーマリファレンスを参照してください。
取引をレビュアーに割り当てる
write:transactions権限を持つAPIキーを使って、保留中の取引をアプリケーションのメンバーに割り当てたり、割り当てを解除したりできます。
変更はそれぞれTRANSACTION_ASSIGNEDとして取引のタイムラインに記録されます。
どちらの呼び出しも
assignee_emailを受け取ります。これは、Diditにサインインしたことのあるアプリケーションメンバーのメールアドレスです。
割り当てを解除するには、nullまたは空文字列を送信します。
一括呼び出しでは、1件から500件の取引UUIDのリストであるtransaction_idsも受け取ります。
uuid、transaction_number、assignee、changed(取引にすでにこの担当者が割り当てられていた場合はfalse)を返します。アプリケーション内に取引が存在しない場合は404を返します。
一括呼び出しは、transactions(上記と同じ形式のエントリーが1件ずつ)、updated_count、not_found_transaction_idsを返します。
取引一覧はassigneeでフィルターできます。には次のいずれかの値をカンマ区切りで指定できます:me、unassigned、rules(レビュアーを介さずルールのみで判定されたもの)、またはメンバーのメールアドレス。
冪等性
txn_id(送信するtransaction_id)はアプリケーションごとに一意です。
既に存在するtransaction_idを再送信すると、transaction_idフィールドにA transaction with this transaction_id already exists.が設定された400が返されます。また、同一のリクエストが2件同時に競合した場合は、2件目に409が返されます。
どちらのレスポンスにも既存の取引は含まれません。
安全に再試行するには、重複したtransaction_idに対する400または409を「作成済み」として扱い、再送信せずに既存の取引を照会してください。最初のレスポンスのuuidを使ってGET /v3/transactions/{uuid}/で取得するか、transaction.created Webhookがtxn_idとともに渡すtransaction_id(Diditのuuid)を使用します。
txn_idは必ず自社側で生成してください(例: 自社の取引DBのID、UUID、決定論的ハッシュ)。
過去データのバックフィル
txn_dateに過去の日付を指定すると、過去の取引を取り込めます。デフォルトではルールは引き続き評価されます。大量の過去データを一括で読み込む際にルール評価をスキップしたい場合は、コンソールのCSVインポートをドライインジェストモードで使用してください。詳しくは連携ガイドを参照してください。
次のステップ
ルールとスコアリング
送信された取引がルールに照らしてどのように評価されるかを説明します。
レスポンススキーマ
注釈付きのレスポンスペイロード全体です。
暗号資産スクリーニング
暗号資産取引に対するウォレットと取引の自動スクリーニングです。
トラベルルール
暗号資産の移転にトラベルルールのコンプライアンスデータを添付します。
IPエンリッチメント
ルールで利用できる、IPから導出されたコンテキストです。
APIリファレンス
Create Transactionエンドポイントのリクエストスキーマ全体です。