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

# SDKから取引を送信：クライアントサイドKYT

> Diditのスコープ付きSDKトークンで、エンドユーザーの端末から監視対象の取引を送信できます。デバイスインテリジェンスを自動で取得し、ウォレットの所有確認が必要な場合はaction_requiredを返します。



取引送信 (SDKトークン) APIプロンプト
        プロンプトをクリップボードにコピー



      
      

\<pre>

\`Submit a monitored transaction from an end-user device using a scoped SDK token instead of an API key. This is the wire endpoint behind the Didit SDKs' submitTransaction methods - call it directly only when not using an SDK.

Endpoint:
POST https://verification.didit.me/v1/transactions/

Authentication:
X-Transaction-Token header carrying an sdk_token minted by your backend via POST /v3/transactions/sdk-token/. No API key on the device, ever.

Payload (camelCase wire shape - each field maps onto its POST /v3/transactions/ equivalent):
\{
"txnId": "wd-2026-07-07-0042",              // -> transaction_id (required)
"type": "travelRule",                        // -> transaction_category (required)
"info": {                                    // -> transaction_details (required)
"direction": "out", "amount": "0.25", "currency": "ETH",
"currencyType": "crypto", "cryptoParams": {"crypto_chain": "ETH"}   // -> currency_kind, crypto_params
},
"subject": { "fullName": "Jane Doe" },       // externalUserId is IGNORED - identity comes from the token
"counterparty": {
"fullName": "Ana Diaz",
"paymentMethod": {"type": "unhosted_wallet", "accountId": "0x8ba1f109551bD432803012645Ac136ddd64DBA72"}  // type -> method_type; declares a self-hosted wallet
},
"travelRule": {                              // -> travel_rule_details
"status": "AWAITING_COUNTERPARTY",         // required (400 if missing); ignored when Travel Rule is enabled
"beneficiaryData": {"wallet_address": "0x8ba1f109551bD432803012645Ac136ddd64DBA72", "name": "Ana Diaz"}
},
"props": { "channel": "mobile_app" },        // -> custom_properties
"includeCryptoScreening": true
}

Three things are always decided by the token, never the payload:
\- the application the transaction is created under
\- the subject identity (token's vendor_data)
\- server-derived device context (IP, user agent) - it wins on conflict.

What to read from the response (same snake_case detail as /v3/, plus):
\- status - APPROVED | IN_REVIEW | DECLINED | AWAITING_USER.
\- travel_rule.status - the Travel Rule exchange state, when applicable.
\- action_required - when the end user must act: type "wallet_ownership" (open the url in a real browser, never a webview) or "verification_session" (launch with your Didit verification integration). null when nothing is pending.

Failure modes:
\- 401 - token missing, unknown, revoked, over max_uses, or expired ("expired" appears in the detail for expired tokens).
\- 400 - validation errors, with per-field details keyed by the canonical field names (a missing info.currency is reported as {"transaction_details": {"currency": [...]}}), including a txnId that already exists.
\- 409 - a concurrent request with the same txnId was created first.

Afterwards:
\- Re-read with GET /v1/transactions/{transaction_id}/ (same token) after the user completes an action.
\- Your backend also receives transaction.created / transaction.status.updated webhooks with the same action_required block.

Full guide: /transaction-monitoring/sdk-transaction-submission.`

\</pre>



      
      

貼り付け先



## OpenAPI

````yaml ja/openapi-25.json POST /v1/transactions/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: 本人確認API。x-api-keyヘッダーで認証します。
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v1/transactions/:
    post:
      tags:
        - Transactions
      summary: SDKから取引を送信する
      description: >-
        DiditのSDKがエンドユーザーのデバイスから取引を直接送信するために呼び出す、デバイス向けのエンドポイントです。認証にはAPIキーではなく、`POST
        /v3/transactions/sdk-token/`で取得したスコープ付きトークンを`X-Transaction-Token`ヘッダーで送信します。このエンドポイントはCORSに対応しているため、ブラウザからクロスオリジンで呼び出せます。ペイロードには以下に示すcamelCaseのワイヤーエイリアスを使用します（SDKの`submitTransaction`メソッドが自動で構築します）。サーバー側では次の3点が保証されます。アプリケーションは常にトークンから取得されます。対象者のID（`externalUserId`）は常にトークンの`vendor_data`に基づいて強制されるため、なりすましによるペイロードの値は無視されます。デバイスインテリジェンス（SDKのデバイスフィンガープリントと、サーバー側で導出したIPおよびユーザーエージェント）は対象者に自動的に付与されます。
      operationId: submitTransactionFromSdk
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                txnId:
                  type: string
                  description: この取引に対するお客様独自の識別子です（`transaction_id`に対応、最大128文字）。
                  example: wd-2026-07-07-0042
                txnDate:
                  type: string
                  format: date-time
                  description: 取引が発生した日時（`transaction_at`に対応）。省略した場合は現在日時になります。
                zoneId:
                  type: string
                  description: 'IANAタイムゾーン識別子（`time_zone`に対応）。例: `Europe/Madrid`。'
                type:
                  type: string
                  description: >-
                    取引カテゴリー（`transaction_category`に対応）。例:
                    `finance`、`kyc`、`travelRule`、`userPlatformEvent`、`gamblingBet`。
                  example: travelRule
                info:
                  type: object
                  description: 取引の主要な金融情報（`transaction_details`に対応）。
                  required:
                    - direction
                    - amount
                    - currency
                  properties:
                    direction:
                      type: string
                      description: >-
                        対象者から見た方向です。大文字と小文字は区別されず、`in`/`out`もエイリアスとして受け付けます。大文字（`INBOUND`/`OUTBOUND`）で返されます。
                      example: out
                    amount:
                      type: number
                      description: >-
                        取引金額（小数点以下最大18桁）。10進数の文字列も受け付けられ、有効桁数約15桁を超える精度を保持する唯一の方法です。JSONの数値はまずバイナリ浮動小数点数として解析されるため、`0.123456789012345678`は`0.12345678901234568`として保存されます。
                      example: 0.25
                    currency:
                      type: string
                      description: >-
                        通貨コード。ISO
                        4217のアルファベットコード（例：`EUR`、`USD`、`NGN`）と暗号資産シンボル（例：`BTC`）を受け付けます。現在流通しているコードを推奨します。受け付けるすべてのコードに為替レートがあるわけではありません。コードに利用可能な為替レートがない場合（例：ISOの会計単位`XSU`や、Diditが価格を算出していない暗号資産シンボル）、自動換算は失敗し、リクエストで換算済みの`amountInDefaultCurrency`を指定していない限り、`preferred_currency_amount`はnullで返されます。
                      example: ETH
                    currencyType:
                      type: string
                      description: 通貨が`fiat`と`crypto`のどちらか(`currency_kind`に対応)。
                    amountInDefaultCurrency:
                      type: number
                      nullable: true
                      description: >-
                        デフォルト通貨に事前換算した金額(`amount_in_default_currency`に対応)。省略した場合は、自動で為替換算が試行されます。
                    defaultCurrencyCode:
                      type: string
                      description: >-
                        換算額のデフォルト通貨コードです（`default_currency`に対応）。現在流通している任意のISO
                        4217コードを指定できます。
                    paymentDetails:
                      type: string
                      nullable: true
                      description: 自由記述の支払い参照情報またはメモ（`payment_details`に対応）。
                    paymentTxnId:
                      type: string
                      nullable: true
                      description: >-
                        外部の決済参照番号です（`payment_reference_id`に対応）。暗号資産取引の場合はオンチェーンの取引ハッシュです。
                    type:
                      type: string
                      nullable: true
                      description: >-
                        取引のサブタイプ（`action_type`に対応）。例:
                        `deposit`、`withdrawal`、`transfer`。
                    cryptoParams:
                      type: object
                      description: '暗号資産固有のパラメーター（例: `{"crypto_chain": "ETH"}`）。'
                subject:
                  type: object
                  description: >-
                    取引の対象者（申請者）。ここでは`externalUserId`は無視されます。対象者の身元は常にトークンの`vendor_data`に基づいて強制されます。
                  required:
                    - fullName
                  properties:
                    type:
                      type: string
                      description: >-
                        エンティティの種類（`entity_type`に対応）：`individual`（デフォルト）または`company`。
                    externalUserId:
                      type: string
                      description: subjectでは無視されます。トークンの`vendor_data`に基づき、サーバー側で強制的に適用されます。
                    fullName:
                      type: string
                      example: Jane Doe
                    firstName:
                      type: string
                    lastName:
                      type: string
                    dob:
                      type: string
                      format: date
                      description: 生年月日（YYYY-MM-DD、`date_of_birth`に対応）。
                    address:
                      type: object
                      description: >-
                        `country`（ISO 3166-1
                        alpha-3）、`town`、`state`、`street`、`post_code`を含む住所オブジェクト。
                    institutionInfo:
                      type: object
                      description: 機関である参加者の機関の詳細（`institution_details`に対応）。
                    device:
                      type: object
                      description: >-
                        任意で指定する明示的なデバイスコンテキストです。自動的に取得されるデバイスインテリジェンスと統合され、競合した場合はサーバー側で導出されたフィールドが優先されます。
                    paymentMethod:
                      type: object
                      description: 対象者が使用した支払い方法（`payment_method`に対応）。
                      properties:
                        type:
                          type: string
                          description: >-
                            支払い方法の種類（`method_type`に対応）。例：`bank_card`、`bank_account`、`crypto_wallet`、`ewallet`、`unhosted_wallet`、`other`。
                        accountId:
                          type: string
                          description: >-
                            口座識別子（`account_id`に対応）：IBAN、カードフィンガープリント、またはウォレットアドレス。
                        issuingCountry:
                          type: string
                          description: 発行者の国を示すISO 3166-1 alpha-3コード(`issuing_country`に対応)。
                counterparty:
                  type: object
                  description: 取引の取引相手(任意)。`subject`と同じ形式です。ここでは`externalUserId`が意味を持ちます。
                  properties:
                    type:
                      type: string
                      description: エンティティの種類（`entity_type`に対応）：`individual`または`company`。
                    externalUserId:
                      type: string
                      description: 取引相手に対するお客様の内部識別子です（`vendor_data`に対応します）。
                    fullName:
                      type: string
                    firstName:
                      type: string
                    lastName:
                      type: string
                    dob:
                      type: string
                      format: date
                    address:
                      type: object
                    institutionInfo:
                      type: object
                    device:
                      type: object
                    paymentMethod:
                      type: object
                      description: >-
                        取引相手が使用した支払い方法（`payment_method`に対応）。travelRule取引では、`type:
                        "unhosted_wallet"`を指定すると取引相手のウォレットがセルフホスト型として申告されます。この場合、送金は取引相手VASPへのルーティングをスキップして直接`UNCONFIRMED_OWNERSHIP`で作成され、（`auto_wallet_verification`が有効な場合）ウォレット所有権ウィジェットのセッションが自動発行され、SDKが起動できるよう`action_required`で返されます。
                      properties:
                        type:
                          type: string
                          description: >-
                            支払い方法の種類（`method_type`に対応）。例：`bank_card`、`bank_account`、`crypto_wallet`、`ewallet`、`unhosted_wallet`、`other`。トラベルルールのためにセルフホスト型ウォレットを申告するには`unhosted_wallet`を使用します。
                        accountId:
                          type: string
                          description: >-
                            口座識別子（`account_id`に対応）：IBAN、カードフィンガープリント、またはウォレットアドレス。
                        issuingCountry:
                          type: string
                props:
                  type: object
                  additionalProperties: true
                  description: >-
                    カスタムのキーと値のペア（`custom_properties`に対応）。各キーはルール条件で`custom_values.<key>`として参照できます。
                travelRule:
                  type: object
                  description: >-
                    トラベルルールの詳細（`travel_rule_details`に対応）。アプリケーションでトラベルルールが有効な場合、Diditは送信された`status`を無視し、交換を自ら進めます。
                  required:
                    - status
                  properties:
                    status:
                      type: string
                    protocol:
                      type: string
                    required:
                      type: boolean
                    obligationsCount:
                      type: integer
                    originatorData:
                      type: object
                    beneficiaryData:
                      type: object
                    metadata:
                      type: object
                includeCryptoScreening:
                  type: boolean
                  nullable: true
                  description: >-
                    暗号資産のブロックチェーン分析スクリーニングに対する取引ごとの上書き設定です（`include_crypto_screening`に対応します）。
                fingerprint_v2:
                  type: object
                  description: >-
                    `didit-fp-v2`デバイスフィンガープリントのペイロードです。SDKが自動的に挿入します。ワイヤーAPIを直接呼び出す場合にのみ関係します。
              required:
                - txnId
                - type
                - info
                - subject
            example:
              txnId: wd-2026-07-07-0042
              type: travelRule
              info:
                direction: out
                amount: '0.25'
                currency: ETH
                currencyType: crypto
                cryptoParams:
                  crypto_chain: ETH
              subject:
                fullName: Jane Doe
              counterparty:
                fullName: Ana Diaz
                paymentMethod:
                  type: unhosted_wallet
                  accountId: 0xBeneficiaryWallet01
              travelRule:
                status: AWAITING_COUNTERPARTY
                beneficiaryData:
                  wallet_address: 0xBeneficiaryWallet01
                  name: Ana Diaz
              includeCryptoScreening: true
      responses:
        '201':
          description: >-
            取引が送信され、モニタリングされています。詳細の形式は`GET
            /v3/transactions/{transaction_id}/`と同じで、エンドユーザーがフォローアップのアクションを完了する必要がある場合は`action_required`ブロックを含みます（SDKはデフォルトでこれを自動的に起動します）。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionDetail'
              examples:
                Wallet ownership required:
                  value:
                    uuid: 22222222-3333-4444-5555-666666666666
                    txn_id: wd-2026-07-07-0042
                    transaction_type: travelRule
                    direction: OUTBOUND
                    status: APPROVED
                    amount: '0.25'
                    currency: ETH
                    travel_rule:
                      uuid: 33333333-4444-5555-6666-777777777777
                      status: UNCONFIRMED_OWNERSHIP
                      required: true
                    action_required:
                      type: wallet_ownership
                      url: https://verify.didit.me/wallet-ownership/3s9x...urlsafe
                      widget_session_id: 77777777-8888-9999-aaaa-bbbbbbbbbbbb
                      expires_at: '2026-07-07T13:00:00Z'
        '400':
          description: バリデーションに失敗しました（必須フィールドの欠落、`txnId`の重複、不明なカテゴリー）。
          content:
            application/json:
              examples:
                Missing fields:
                  value:
                    transaction_details:
                      currency:
                        - This field is required.
                Duplicate txnId:
                  value:
                    transaction_id:
                      - A transaction with this transaction_id already exists.
        '401':
          description: >-
            取引トークンが拒否されました。トークンがない、不明、失効済み、`max_uses`を超過している、または期限切れのいずれかです。期限切れトークンのレスポンスでは、detailに必ず`expired`という語が含まれます。SDKはこれによって`expired_token`エラーと`invalid_token`エラーを区別します。
          content:
            application/json:
              examples:
                Invalid token:
                  value:
                    detail: Invalid transaction token.
                Expired token:
                  value:
                    detail: Transaction token expired.
        '409':
          description: >-
            このリクエストの処理中に、同じ`txnId`を持つ別のリクエストが取引を作成したため、同時に送信された2件のうち1件のみが成功します。再送信せずに、既存の取引を参照してください。
          content:
            application/json:
              examples:
                Concurrent duplicate:
                  value:
                    detail: A transaction with this transaction_id already exists.
      security:
        - TransactionTokenAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST https://verification.didit.me/v1/transactions/ \
              -H 'X-Transaction-Token: SDK_TOKEN' -H 'Content-Type: application/json' \
              -d '{"txnId": "wd-2026-07-07-0042", "type": "travelRule", "info": {"direction": "out", "amount": "0.25", "currency": "ETH", "currencyType": "crypto"}, "subject": {"fullName": "Jane Doe"}, "counterparty": {"fullName": "Ana Diaz", "paymentMethod": {"type": "unhosted_wallet", "accountId": "0xBeneficiaryWallet01"}}, "travelRule": {"status": "AWAITING_COUNTERPARTY", "beneficiaryData": {"wallet_address": "0xBeneficiaryWallet01", "name": "Ana Diaz"}}, "includeCryptoScreening": true}'
        - lang: javascript
          label: Web SDK
          source: |-
            import { DiditSdk } from '@didit-protocol/sdk-web';

            const result = await DiditSdk.shared.submitTransaction({
              transactionToken: sdkToken,
              transaction: {
                txnId: 'wd-2026-07-07-0042',
                category: 'travelRule',
                details: { direction: 'out', amount: '0.25', currency: 'ETH', currencyType: 'crypto' },
                subject: { fullName: 'Jane Doe' },
                counterparty: { fullName: 'Ana Diaz', paymentMethod: { type: 'unhosted_wallet', accountId: '0xBeneficiaryWallet01' } },
                travelRule: { status: 'AWAITING_COUNTERPARTY', beneficiaryData: { wallet_address: '0xBeneficiaryWallet01', name: 'Ana Diaz' } },
                includeCryptoScreening: true
              },
              onActionCompleted: (refreshed) => console.log(refreshed.status)
            });
components:
  schemas:
    TransactionDetail:
      type: object
      description: >-
        1件の取引に関する完全なモニタリング記録。`GET /v3/transactions/{transaction_id}/`および`POST
        /v3/transactions/`から返されます。
      properties:
        uuid:
          type: string
          format: uuid
          description: Diditの安定した取引識別子です。後続の呼び出しで`{transaction_id}`として使用します。
        environment:
          type: string
          enum:
            - live
            - sandbox
          description: >-
            取引を所有するアプリケーションの環境。`sandbox`の取引は保存されますが、評価、スクリーニング、通知、請求は一切行われません。そのため、空の`rule_runs`は「未評価」を意味します。
        transaction_number:
          type: integer
          description: 'Consoleに表示される、アプリケーション単位の取引の連番（例: `4123`）。'
        txn_id:
          type: string
          description: 作成時に指定した`transaction_id`（最大128文字）。アプリケーションごとに一意です。
        txn_date:
          type: string
          format: date-time
          description: 取引が発生した日時（`transaction_at`の値。デフォルトは送信日時）。
        zone_id:
          type: string
          nullable: true
          description: 作成時に指定されたIANAタイムゾーン識別子。
        transaction_type:
          type: string
          description: >-
            保存されている最上位カテゴリー:
            `finance`、`kyc`、`travelRule`、`userPlatformEvent`、`gamblingBet`、`gamblingLimitChange`、`gamblingBonusChange`、`auditTrailEvent`。複数語の値は、snake_caseで送信した場合でもcamelCaseで返される点に注意してください。
        action_type:
          type: string
          description: >-
            カテゴリ内のサブタイプ（例:
            `deposit`、`withdrawal`、`transfer`）。指定しない場合はカテゴリがデフォルトになります。
        direction:
          type: string
          enum:
            - INBOUND
            - OUTBOUND
          description: >-
            対象者から見た方向です。送信時の大文字・小文字にかかわらず大文字で保存されます（入力では`in`/`out`/`inbound`/`outbound`を受け付けます）。
        status:
          type: string
          enum:
            - APPROVED
            - IN_REVIEW
            - DECLINED
            - AWAITING_USER
          description: >-
            現在のモニタリング判定。取引は`APPROVED`で作成され、ルールによって同期的に`IN_REVIEW`/`DECLINED`に変更される場合があります。
        source:
          type: string
          enum:
            - LIVE
            - IMPORTED
          description: レコードの発生元：APIまたはSDKで送信された取引は`LIVE`、コンソールのインポートで読み込まれた取引は`IMPORTED`。
        amount:
          type: string
          description: >-
            末尾のゼロを除去した10進数文字列で表した取引金額（例:
            `"1500"`、`"0.5"`、`"0.123456789012345678"`）。小数点以下最大18桁です。
        currency:
          type: string
          description: >-
            `amount`の通貨コード。ISO 4217の任意のアルファベットコード（例:
            `EUR`、`USD`、`NGN`）と暗号資産シンボル（例:
            `BTC`）を受け付けます。現在流通しているコードを推奨します。受け付けられるすべてのコードに為替レートがあるわけではありません。コードに為替レートがない場合（たとえばISOの会計単位`XSU`や、Diditが価格を付けていない暗号資産シンボル）、自動換算は失敗し、リクエストで換算済みの`amount_in_default_currency`を指定していない限り`preferred_currency_amount`はnullで返されます。
        currency_type:
          type: string
          nullable: true
          description: '`currency_kind`で送信されたとおりの`fiat`または`crypto`。'
        amount_in_default_currency:
          type: string
          nullable: true
          description: 指定された事前換算済みの金額。末尾のゼロを除いた10進数の文字列です。
        default_currency_code:
          type: string
          nullable: true
        preferred_currency_amount:
          type: string
          nullable: true
          description: 利用可能な場合に、アプリケーションの優先通貨に換算した`amount`です。
        preferred_currency_code:
          type: string
          nullable: true
        payment_details:
          type: string
          nullable: true
          description: 送信内容に含まれる自由記述の支払い参照情報またはメモ。
        payment_txn_id:
          type: string
          nullable: true
          description: '`payment_reference_id`から取得した外部決済システムの参照番号です（例: ブロックチェーンの取引ハッシュ）。'
        score:
          type: integer
          description: ルールによって累積されたリスクスコア(通常0~100)。値が高いほどリスクが高くなります。
        severity:
          type: string
          nullable: true
          enum:
            - UNKNOWN
            - LOW
            - MEDIUM
            - HIGH
            - CRITICAL
          description: >-
            ルールまたはプロバイダーが設定するカテゴリ別のリスク重大度（`UNKNOWN`、`LOW`、`MEDIUM`、`HIGH`、`CRITICAL`）。いずれかによって設定されるまでは`null`です。
        decision_reason_code:
          type: string
          nullable: true
          description: 現在の`status`の機械可読な理由。
        decision_reason_label:
          type: string
          nullable: true
          description: '`decision_reason_code`の人が読めるラベル。'
        vendor_data:
          type: string
          nullable: true
          description: 申請者の`vendor_data`の便宜上のコピー。
        metadata:
          type: object
          description: 作成時に送信された`subject`および`counterparty`ペイロードのスナップショット。
        props:
          type: object
          description: >-
            作成時に指定した`custom_properties`です。各キーはルールの条件内で`custom_values.<key>`として参照できます。
        tags:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              name:
                type: string
              color:
                type: string
              description:
                type: string
                nullable: true
              source:
                type: string
                enum:
                  - didit
                  - custom
                description: タグがDiditのプリセットかカスタムタグか。
          description: 取引に付与されたタグ(手動またはルールによる)。
        parties:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              role:
                type: string
                enum:
                  - APPLICANT
                  - REMITTER
                  - BENEFICIARY
                  - COUNTERPARTY
                description: 関係者の役割。作成エンドポイントは`APPLICANT`（対象者）と`COUNTERPARTY`を割り当てます。
              entity_type:
                type: string
                enum:
                  - individual
                  - company
                  - external
                  - unhostedWallet
              kind:
                type: string
                enum:
                  - USER
                  - BUSINESS
                  - EXTERNAL
                description: >-
                  `USER`/`BUSINESS`の当事者は、`vendor_data`を介してDiditが所有するエンティティに紐付きます。`EXTERNAL`の当事者には、背後にDiditのエンティティがありません。
              vendor_data:
                type: string
                nullable: true
                description: お客様の内部ユーザー/企業識別子です。
              full_name:
                type: string
                nullable: true
              first_name:
                type: string
                nullable: true
              last_name:
                type: string
                nullable: true
              country_code:
                type: string
                nullable: true
                description: 送信された`address.country`から取得した国コード(通常はISO 3166-1 alpha-3)。
              dob:
                type: string
                format: date
                nullable: true
                description: 送信された`date_of_birth`の生年月日。
              address:
                type: object
                description: 送信されたとおりの住所オブジェクト。省略された場合は`{}`です。
              institution_info:
                type: object
                description: 送信されたとおりの機関の詳細。省略した場合は`{}`です。
              device:
                type: object
                description: >-
                  正規化されたデバイスコンテキスト。IPが指定された場合は、network_context配下にサーバー側のIPエンリッチメント（位置情報、VPN/データセンターのフラグ）が含まれます。
                properties:
                  fingerprint:
                    type: string
                    description: 一意のデバイスフィンガープリント。
                  persistent_device_id:
                    type: string
                    description: セッションをまたいで不変のデバイス識別子(v2フィンガープリントスキーマ)。
                  user_agent:
                    type: string
                    description: ブラウザまたはアプリのユーザーエージェント文字列。
                  browser_family:
                    type: string
                    description: ブラウザーファミリー（例：Chrome、Firefox、Safari）。
                  browser_version:
                    type: string
                    description: ブラウザのバージョン文字列。
                  platform:
                    type: string
                    description: プラットフォーム識別子(web、ios、android、macos、windows、linux)。
                  os_family:
                    type: string
                    description: 'オペレーティングシステムのファミリー（例: iOS、Android、Windows）。'
                  os_version:
                    type: string
                    description: オペレーティングシステムのバージョン文字列です。
                  accept_language:
                    type: string
                    description: Accept-Languageヘッダーの値。
                  session_id:
                    type: string
                    description: セッション識別子（メタデータに保存）。
                  session_age_ms:
                    type: number
                    description: セッションの経過時間（ミリ秒）。
                  network_context:
                    type: object
                    description: IPアドレスと位置情報を含むネットワークコンテキスト。
                    properties:
                      ip_address:
                        type: string
                        description: クライアントのIPアドレス。
                      ip_country_code:
                        type: string
                        description: IPアドレスの位置情報から特定された国（ISO 3166-1 alpha-3）。
                      latitude:
                        type: number
                        description: IPの地理的な緯度。
                      longitude:
                        type: number
                        description: IPの地理的な経度。
              external_party_snapshot:
                type: object
                nullable: true
                description: >-
                  `EXTERNAL`当事者の当事者データの固定コピー。当事者がDiditのユーザーまたは企業にリンクされている間は`null`です。
          description: 取引の当事者（申請者、取引相手）。
        payment_methods:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              payment_method_type:
                type: string
                enum:
                  - bank_card
                  - bank_account
                  - e_wallet
                  - crypto_wallet
                  - unhosted_wallet
                  - other
              label:
                type: string
                nullable: true
              fingerprint:
                type: string
                nullable: true
                description: >-
                  `type:account_id:issuing_country`に対するSHA-256。同一の手段の再利用を関連付けるための安定した識別子です。
              account_id:
                type: string
                nullable: true
                description: 口座識別子（IBAN、ウォレットアドレス、カードトークンなど）。
              issuing_country:
                type: string
                nullable: true
              owner_kind:
                type: string
                enum:
                  - USER
                  - BUSINESS
                  - EXTERNAL
              vendor_data:
                type: string
                nullable: true
                description: 所有するユーザー/企業に対するお客様の識別子です。
              owner_name:
                type: string
                nullable: true
              institution_info:
                type: object
              details:
                type: object
                description: 送信されたままの生の`payment_method`オブジェクト。
              external_owner_snapshot:
                type: object
                nullable: true
              role:
                type: string
                enum:
                  - SOURCE
                  - DESTINATION
                  - FUNDING
                  - BENEFICIARY
                description: >-
                  この手段が取引でどのように使われたか。作成エンドポイントは方向に基づいて`SOURCE`/`DESTINATION`を割り当てます（送信：対象者
                  = SOURCE、受信：対象者 = DESTINATION）。
          description: 取引に紐づく支払い方法。
        documents:
          type: array
          description: コンソールから取引に添付されたファイル。ない場合は`[]`です。
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              label:
                type: string
                nullable: true
              note:
                type: string
                nullable: true
              uploaded_by:
                type: string
                nullable: true
              created_at:
                type: string
                format: date-time
              files:
                type: array
                items:
                  type: object
                  properties:
                    uuid:
                      type: string
                      format: uuid
                    file_url:
                      type: string
                      format: uri
                      nullable: true
                      description: 有効期間の短い署名付きダウンロードURL。保存せず、必要なときに取得してください。
                    original_filename:
                      type: string
                      nullable: true
                    file_size:
                      type: integer
                      nullable: true
        activities:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              activity_type:
                type: string
                description: >-
                  例：`TRANSACTION_CREATED`、`TRANSACTION_NOTE_ADDED`、`TRANSACTION_STATUS_CHANGED`。
              source:
                type: string
              status:
                type: string
                nullable: true
              title:
                type: string
                nullable: true
              description:
                type: string
                nullable: true
              metadata:
                type: object
              occurred_at:
                type: string
                format: date-time
          description: アクティビティログのエントリ（作成、メモ、手動レビュー、ステータスの変更）。
        alerts:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              title:
                type: string
              description:
                type: string
                nullable: true
              severity:
                type: string
                enum:
                  - UNKNOWN
                  - LOW
                  - MEDIUM
                  - HIGH
                  - CRITICAL
              status:
                type: string
                enum:
                  - OPEN
                  - INVESTIGATING
                  - AWAITING_USER
                  - PENDING_SAR
                  - SAR_FILED
                  - RESOLVED
                  - DISMISSED
              source:
                type: string
                enum:
                  - RULE
                  - PROVIDER
                  - MANUAL
              metadata:
                type: object
              created_at:
                type: string
                format: date-time
              due_at:
                type: string
                format: date-time
                nullable: true
          description: 現在は常に空です。未対応のアラートとは、ステータスが`IN_REVIEW`または`AWAITING_USER`の取引です。
        rule_runs:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              rule:
                type: string
                format: uuid
                description: 実行されたルールのUUID。
              rule_title:
                type: string
              rule_description:
                type: string
                nullable: true
              rule_category:
                type: string
              matched:
                type: boolean
                description: >-
                  ルールの条件がこの取引に一致したかどうか。実行記録は一致したルールについてのみ残るため、本番の評価では常に`true`になります。
              is_test:
                type: boolean
                description: ルールがTESTモードで実行された場合はtrue（ステータス/スコアには影響しません）。
              mode:
                type: string
                enum:
                  - ACTIVE
                  - DISABLED
                  - TEST
              severity:
                type: string
                nullable: true
              score_delta:
                type: integer
                description: このルールの`add_score`アクションによって加算されたスコア。
              status_target:
                type: string
                nullable: true
                description: '`change_status`アクションで設定されたステータス（設定された場合）。'
              action_summary:
                type: string
                nullable: true
                description: >-
                  ルールが実行したアクションの概要で、`; `で連結されます（例：`score +30;
                  change_status:IN_REVIEW;
                  add_tag:high_risk_country`）。構成要素：`score
                  +N`、`change_status:<STATUS>`、`add_tag:<name>`、`add_note`、`add_to_list`、`open_case`。ルールがアクションを実行しなかった場合は`null`です。
              metadata:
                type: object
                description: >-
                  評価の詳細:`scope_match`、`conditions[]`、`aggregations[]`。各条件エントリには、`field`、`operator`、`expected_value`、取引から読み取った`current_value`、`matched`、`group_index`、`group_logic`が含まれます。各集計エントリ(velocity
                  / count /
                  sum)には、`metric`、`field`、`operator`、`expected_value`、集計の評価結果である`computed_value`、`window`、`filters`、`matched`、`sample_references`が含まれます。遅延された非同期集計では`computed_value:
                  null`および`deferred:
                  true`となります。ネストされた条件グループは、`operator`が`any_of`または`all_of`で`field`がnullの1つの`conditions[]`エントリであり、メンバーの結果はそのエントリ自身の`conditions`の下に格納されます。
              created_at:
                type: string
                format: date-time
          description: ルールごとの実行結果です。どのルールが発動し、スコアにどのような影響を与えたかを示します。
        provider_results:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              provider:
                type: string
              result_type:
                type: string
                enum:
                  - FIAT_MONITORING
                  - WALLET_SCREENING
                  - TRANSACTION_SCREENING
                  - TRAVEL_RULE
                  - NETWORK_GRAPH
                  - CUSTOM
              status:
                type: string
              severity:
                type: string
                nullable: true
              score:
                type: integer
              summary:
                type: string
                nullable: true
              payload:
                type: object
                description: プロバイダーの生のレスポンスペイロード。
              created_at:
                type: string
                format: date-time
          description: プロバイダーの生のペイロード（AMLスクリーニング、ブロックチェーン分析など）。
        travel_rule:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/TransactionTravelRule'
          description: >-
            トラベルルールの送金またはチェック。`travel_rule_details`が送信された場合に設定されるほか、トラベルルールが有効で、取引が`transaction_category:
            travelRule`で作成された場合にも設定されます（`travel_rule_details`がなくても、Didit自身が交換を開始します）。送金やチェックが存在しない場合は`null`です。インバウンド送金では、ウォレットの所有権が確認されるまで、取引相手の`originator_data`と`beneficiary_data`はマスクされたまま（`data_masked:
            true`）になります。
        network_snapshot:
          type: object
          nullable: true
          description: >-
            ルールエンジンが使用する、関連する取引と当事者のグラフスナップショット。取引とともに送信された`network_snapshot`、またはAMLウォレットスクリーニングが成功した際にDiditが構築するグラフ(送信されたものを置き換えます)のいずれかです。どちらも存在しない場合は`null`です。
          properties:
            uuid:
              type: string
              format: uuid
            nodes:
              type: array
              items:
                type: object
            edges:
              type: array
              items:
                type: object
            metrics:
              type: object
        remediation:
          type: object
          nullable: true
          description: >-
            再検証が必要な場合にユーザーに提示される是正用のセッションです。正規のブロックである`action_required`に置き換えられました。後方互換性のために残されています。
          properties:
            session_id:
              type: string
            session_token:
              type: string
            url:
              type: string
              format: uri
            status:
              type: string
        action_required:
          type: object
          nullable: true
          description: >-
            この取引を完了するために必要な保留中のエンドユーザーアクション。存在しない場合はnull。Didit
            SDKはデフォルトでこのアクションを自動的に起動し、完了時に取引を更新します。`type`で区別される2つのバリアントがあります。`verification_session`（ルールのアクションによって作成されたホスト型認証セッション）と`wallet_ownership`（ウォレット管理の証明が必要なトラベルルール送金のために自動発行されるウォレット所有権ウィジェットセッションで、トラベルルール設定の`auto_wallet_verification`によって制御されます）です。両方が該当しうる場合は、トラベルルールの交換をブロックするため`wallet_ownership`が優先されます。
          oneOf:
            - $ref: '#/components/schemas/TransactionVerificationSessionAction'
            - $ref: '#/components/schemas/TransactionWalletOwnershipAction'
          discriminator:
            propertyName: type
            mapping:
              verification_session: '#/components/schemas/TransactionVerificationSessionAction'
              wallet_ownership: '#/components/schemas/TransactionWalletOwnershipAction'
        cost_breakdown:
          type: object
          nullable: true
          description: >-
            この取引の費用。`total_price`と`items`で構成され、itemsは請求ごとに1件で、それぞれ`usage_type`、`price`、`details`、`created_at`を含みます。同じ取引を再スクリーニングすると新しい項目になります。
    TransactionTravelRule:
      type: object
      description: >-
        取引のトラベルルール送金です。`GET /v3/transactions/{transaction_id}/`、`POST
        /v3/transactions/`の`201`、および`GET
        /v3/transactions/`の各行で返されます。`direction`、`rail`、`counterparty_vasp`、`delivery`、`discovery`、`reason`、`next_actions`は`PATCH
        /v3/transactions/{transaction_id}/travel-rule/`と同じ形式のため、取引を1回読み取るだけで、送金が停滞している理由と、先へ進めるための操作がわかります。
      properties:
        uuid:
          type: string
          format: uuid
        status:
          type: string
        protocol:
          type: string
          nullable: true
        required:
          type: boolean
        obligations_count:
          type: integer
        originator_data:
          type: object
          description: 送金人当事者です。受信する送金の場合、取引相手の値は所有権が確認されるまでマスクされます。
        beneficiary_data:
          type: object
          description: 受取人の当事者情報。受信側の送金では、所有権が確認されるまで取引相手の値はマスクされます。
        name_match:
          type: object
          nullable: true
          description: 送金の判定を決めた氏名比較(スコアと厳格度)です。比較が実行されるまではnullです。比較された名前は当事者とともにマスクされます。
        data_match:
          $ref: '#/components/schemas/TravelRuleDataMatch'
        mismatched_fields:
          type: array
          items:
            type: string
          description: '`data_match.mismatched_fields`のショートカット。相違がない場合は空です。'
        data_unmasked:
          $ref: '#/components/schemas/TravelRuleDataUnmasked'
        data_masked:
          type: boolean
          description: このレスポンスで取引相手の個人データがマスクされている間はtrueです。
        metadata:
          type: object
        direction:
          type: string
          enum:
            - INBOUND
            - OUTBOUND
          description: この送金がやり取りのどちら側にあたるか。
        rail:
          type: string
          nullable: true
          description: >-
            送金に使われたレール:
            `INTERNAL`、`TRP`、`GTR`、`TRUST`、`VERIFYVASP`、`SYGNA`または`EMAIL`（サンドボックスのアプリケーションでDidit
            Test VASPが応答した場合は`TEST_VASP`）。レールが選択されるまでは`null`です。
        counterparty_vasp:
          type: object
          nullable: true
          properties:
            name:
              type: string
            lei:
              type: string
            dd_score:
              type: integer
              description: 0から100までのデューデリジェンススコアで、値が高いほど良好です。VASPディレクトリと同じ尺度です。
            dd_score_breakdown:
              type: object
              description: >-
                dd_scoreへのコンポーネントごとの寄与。VASPディレクトリと同様に、コンポーネント（jurisdiction、verification、protocol、lei、history、essentials、responsiveness）ごとに1つのオブジェクトがあり、それぞれ{points,
                max, reason, detail}を含みます。取引相手が評価されるまでは{}です。
              additionalProperties:
                type: object
                properties:
                  points:
                    type: number
                    description: このコンポーネントに付与されるポイント。
                  max:
                    type: integer
                    description: このコンポーネントが付与できる最大ポイントです。
                  reason:
                    type: string
                    description: コンポーネントの判定を示す機械可読コード。
                  detail:
                    type: string
                    description: 付与されたポイントの理由を示す、人が読める形式の説明。
            dd_assessed_at:
              type: string
              format: date-time
              nullable: true
              description: デューデリジェンス評価が最後に実行された日時。取引相手が評価されるまではnull。
          description: 取引相手のディレクトリエントリ。送金に紐付けられたものがない場合は`null`です。
        delivery:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/TravelRuleDelivery'
          description: >-
            この送金が他の当事者に送信する義務を負う最新のメッセージ。一度も義務が生じていない場合（例:
            `threshold_amount`未満の場合や、申告済みのセルフホスト型ウォレットの場合）は`null`です。
        discovery:
          type: array
          description: >-
            Diditが取引相手をどのように探索したかを示します。実行されたステップごとに1エントリです。受信送金など、探索が実行されなかった場合は空です。
          items:
            $ref: '#/components/schemas/TravelRuleDiscoveryStep'
        reason:
          type: string
          description: >-
            `COUNTERPARTY_VASP_NOT_FOUND`または`COUNTERPARTY_VASP_NOT_REACHABLE`の送金が停止している理由です。その他のステータスでは`""`です。`COUNTERPARTY_VASP_NOT_REACHABLE`の場合に限り、配信の失敗がまず理由を決定します：`email_undeliverable`（メールプロバイダーがコンプライアンスメールを拒否し、試行できるアドレスが残っていない。送信時、リマインダー時、または後から報告された恒久的なバウンスのいずれか）または`delivery_failed`（配信中のレールが完全に失敗した。ネットワークレールがメッセージを拒否したか再試行回数を使い切った、`TRP`のIDホストが応答しなかった、または取引相手の`TRP`ホストが照会を受け付けなかった）。それ以外の場合は`discovery`トレースが理由を決定します：`awaiting_end_user`（Diditが到達できる取引相手を指定したステップがない）、`directory_match_no_route`（ステップが経路のないディレクトリ上のVASPを指定した）、`picked_member_without_proven_wallet`（エンドユーザーが、ウォレットの管理を証明していないDiditの顧客を選択した）、またはトレースが他の理由を示さない場合は`no_directory_match`です。再送すると送金が先に進むため、理由はクリアされます。[送金が停止する理由](/ja/transaction-monitoring/travel-rule#送金が停止している理由)を参照してください。
        next_actions:
          type: array
          description: >-
            送金を先に進めるためのアクションです。`COUNTERPARTY_VASP_NOT_FOUND`または`COUNTERPARTY_VASP_NOT_REACHABLE`以外のステータスでは`[]`です。`email_undeliverable`では`update_compliance_email`、次に`resend`が提示されます。`delivery_failed`では`resend`が提示されます。検出に関する理由では`select_counterparty_vasp`、`declare_self_hosted`、`add_vasp_hint`、`resend`が提示されます。
          items:
            $ref: '#/components/schemas/TravelRuleNextAction'
        chain_details:
          $ref: '#/components/schemas/TravelRuleChainDetails'
    TransactionVerificationSessionAction:
      title: Verification session
      type: object
      properties:
        type:
          type: string
          enum:
            - verification_session
        url:
          type: string
          format: uri
          description: エンドユーザー向けに開くホスト型検証URLです。
        session_id:
          type: string
          format: uuid
          description: 認証セッションID。
        session_token:
          type: string
          description: セッショントークン。モバイルSDKがフローをネイティブに起動する際に使用します。
        status:
          type: string
          description: 認証セッションのステータス。
      required:
        - type
        - url
    TransactionWalletOwnershipAction:
      title: Wallet ownership
      type: object
      properties:
        type:
          type: string
          enum:
            - wallet_ownership
        url:
          type: string
          format: uri
          description: >-
            ホスト型ウォレット所有権ウィジェットのURLです。実際のブラウザ画面で開いてください。モバイルではSFSafariViewControllerまたはChrome
            Custom Tabを使用し、埋め込みWebViewは決して使用しないでください。
        widget_session_id:
          type: string
          format: uuid
          description: ウォレット所有権ウィジェットのセッションID。
        expires_at:
          type: string
          format: date-time
          description: ウィジェットセッションの有効期限。
      required:
        - type
        - url
    TravelRuleDataMatch:
      type: object
      nullable: true
      description: >-
        送金の当事者データと、相手側がウォレット保有者について把握している情報とのフィールドごとの比較。フィールド名と結果のみを示し、値は一切含まないため、取引相手のデータがマスクされている間も読み取ることができます。比較が実行されるまではnullです。
      properties:
        matched:
          type: boolean
          description: 比較したフィールドに差異がない場合はtrue。
        mismatched_fields:
          type: array
          items:
            type: string
            enum:
              - name
              - date_of_birth
              - address
              - account
          description: 差異のあるフィールドです。
        fields:
          type: object
          description: >-
            当事者のエンティティ種別について比較されたフィールドごとに1エントリー（`name`、`date_of_birth`、`address`、`account`。企業には`date_of_birth`はありません）。
          additionalProperties:
            type: object
            properties:
              result:
                type: string
                enum:
                  - matched
                  - mismatched
                  - not_compared
                description: ルールが`NONE`の場合、またはいずれかの側にそのフィールドの値がない場合は`not_compared`。
              strictness:
                type: string
                enum:
                  - NONE
                  - STRICT
                  - CONTAINS
                  - DEFAULT
                  - FUZZY
    TravelRuleDataUnmasked:
      type: object
      nullable: true
      description: 取引相手のデータのマスクが解除された時点の監査記録です。データがまだマスクされている間、および外部への送金の場合はnullです。
      properties:
        at:
          type: string
          format: date-time
        reason:
          type: string
          enum:
            - ownership_confirmed
            - wallet_proof
            - address_book_match
            - own_verified_wallet
            - inquiry_approved
            - known_payment_method
            - travel_address
          description: >-
            所有を確認した根拠:
            ownership_confirmed（コンソールまたはAPIを通じたお客様による確認）、wallet_proof（ウィジェットでのウォレット証明、またはINTERNALの受信送金。作成時に設定されます）、address_book_match（検証済みのアドレス帳ウォレット）、own_verified_wallet（ユーザー自身の検証済みウォレット）、inquiry_approved（受信したTRP照会、またはGTRもしくはSygnaメッセージをお客様が承認したこと）、known_payment_method（ユーザーがすでに支払いに使用したウォレット）、travel_address（ウォレットごとのトラベルアドレスがそのウォレットを指定したこと）のいずれかです。
        actor:
          type: string
          description: 確認した主体：コンソールユーザーのメールアドレス、またはAPIキーのラベル。自動判定の場合は空欄です。
    TravelRuleDelivery:
      type: object
      description: >-
        移転が相手側に送るべき最新メッセージの状況です。Diditは、移転を作成または変更したリクエストがレスポンスを返した後に取引相手に連絡するため、このオブジェクトはそのメッセージが届いたかどうかを示します。キュー待ち、送信中、エラー後の再試行待ち、配信済み、または失敗のいずれかです。ネットワークが回復する可能性のある失敗（時間内に応答がない、接続の失敗、HTTP
        `408`、`429`、`5xx`）は、30秒後、2分後、10分後、30分後、1時間後に再試行されます。最初のメッセージ（`kind:
        SEND`）が、ネットワークに拒否された、または6回目の試行も失敗したために最終的に失敗した場合、移転は`COUNTERPARTY_VASP_NOT_REACHABLE`に移行し、その`timeline`に`last_error`が記録されます。それ以外のメッセージが最終的に失敗した場合は、`timeline`に記録されます。やり取りそのものについては、引き続き移転の`status`が信頼できる情報源です。
      required:
        - kind
        - status
        - rail
        - attempts
        - last_error
        - next_attempt_at
        - delivered_at
      properties:
        kind:
          type: string
          enum:
            - SEND
            - ANSWER
            - TXID
            - CANCEL
            - POLL
          description: >-
            メッセージが運ぶ内容です。`SEND`:
            送金における取引相手への最初のメッセージです（送信。経路は送信時に選択されます）。`ANSWER`:
            お客様の承認または拒否で、問い合わせてきたネットワークに返す必要があります（受信）。`TXID`:
            お客様が送金を完了した後の、オンチェーンの取引ハッシュです。`CANCEL`:
            お客様が送金をキャンセルした後の、キャンセル通知です。`POLL`:
            ステータス照会を提供するネットワークへの照会で、送金が取引相手を待っている間、5分ごとに繰り返されます。
        status:
          type: string
          enum:
            - QUEUED
            - SENDING
            - RETRYING
            - DELIVERED
            - FAILED
          description: >-
            `QUEUED`：送信待ちです。`SENDING`：送信を試行中です。`RETRYING`：試行が失敗し、次の試行は`next_attempt_at`に実行されます。`DELIVERED`：相手側がメッセージを受け取りました。`FAILED`：相手側がメッセージを拒否したか、最後の試行が失敗しました。
        rail:
          type: string
          enum:
            - INTERNAL
            - TRP
            - GTR
            - TRUST
            - VERIFYVASP
            - SYGNA
            - EMAIL
            - ''
          description: メッセージを運ぶレール。最初のメッセージについてDiditがレールを選択するまでは空です。
        attempts:
          type: integer
          minimum: 0
          description: このメッセージでこれまでに行われた試行回数。ステータスポーリング以外のメッセージは最大6回まで試行されます。
        last_error:
          type: string
          description: >-
            最後の試行で発生した失敗の種類です。失敗がない場合は`""`です。例：`email undeliverable`、`trp
            identity endpoint unreachable`、`trp transfer inquiry delivery
            failed`。取引相手自身の回答が含まれることはなく、その回答は送金の`timeline`に残ります。

            GTRがエラーを返した場合は、GTR自身のステータスコードとメッセージが含まれます。レスポンス本文が含まれることはありません。
          example: email undeliverable
        next_attempt_at:
          type: string
          format: date-time
          nullable: true
          description: メッセージが`QUEUED`または`RETRYING`の間に、次の試行が実行される日時。
        delivered_at:
          type: string
          format: date-time
          nullable: true
          description: 相手側がメッセージを受け取った日時。
    TravelRuleDiscoveryStep:
      type: object
      description: >-
        Diditがアウトバウンド送金のために実行した取引相手探索の1ステップで、実行された順に並びます。ルートを持つVASPを特定した最初のステップでチェーンが終了します。
      properties:
        step:
          type: string
          enum:
            - internal_address_book
            - wallet_attribution
            - network_lookup
            - customer_hint
            - end_user
          description: >-
            `internal_address_book`:
            送付先ウォレットの管理権を証明した別のDidit顧客。`wallet_attribution`:
            ウォレットのブロックチェーン分析による帰属情報。`network_lookup`:
            どのVASPがそのアドレスを保有しているかを回答できるネットワーク。`customer_hint`:
            `beneficiary_data`で送信したVASP名、LEIまたは法域。`end_user`:
            エンドユーザー（またはお客様）が選択した取引相手、または選択の依頼。
        outcome:
          type: string
          enum:
            - match
            - miss
            - skipped
          description: >-
            `match`: ステップが取引相手を特定しました。`miss`: 実行されましたが見つかりませんでした。`skipped`:
            実行できず、`reason`に理由が示されます。
        reason:
          type: string
          description: >-
            機械可読な理由です。一致した場合は`""`になります。値は`no_proven_internal_wallet`、`attribution_disabled`、`already_attributed`、`no_attributed_entity`、`directory_match_no_route`、`gtr_address_lookup_runs_on_dispatch`、`no_membership`、`network_switched_off`、`no_network_address_lookup`、`no_directory_match`、`awaiting_end_user`、`picked_member_without_proven_wallet`のいずれかです。
        vasp:
          type: string
          format: uuid
          nullable: true
          description: ステップでVASPが指定された場合の、そのディレクトリ上のVASPです。
        rail:
          type: string
          nullable: true
          description: ステップで取引相手が見つかった場合に、その取引相手に届くレール。
        at:
          type: string
          format: date-time
    TravelRuleNextAction:
      type: object
      description: >-
        `COUNTERPARTY_VASP_NOT_FOUND`または`COUNTERPARTY_VASP_NOT_REACHABLE`の送金を先に進める要素1つです。[送金が停止している理由](/ja/transaction-monitoring/travel-rule#送金が停止している理由)を参照してください。
      properties:
        action:
          type: string
          enum:
            - select_counterparty_vasp
            - declare_self_hosted
            - add_vasp_hint
            - update_compliance_email
            - resend
          description: >-
            `select_counterparty_vasp`:
            エンドユーザーがウォレット所有権ウィジェットで送金先のVASPを選択するか、お客様が`action=beneficiary_vasp`でPATCHします。`declare_self_hosted`:
            エンドユーザーがウィジェットでウォレットをセルフホスト型として申告します。`add_vasp_hint`:
            VASP名、LEI、またはトラベルアドレス（例:
            送金先ウォレットのアドレス帳エントリーの`travel_address`）で取引相手をDiditに伝え、再送信します。`update_compliance_email`と`resend`は`PATCH
            /v3/transactions/{transaction_id}/travel-rule/`の`action`値で、それぞれ取引相手のコンプライアンス用メールアドレスを再度指定し、ルーティングを再実行します。
        url:
          type: string
          format: uri
          description: >-
            ウォレット所有権ウィジェットのリンク。取引にウィジェットセッションが開いている間、`select_counterparty_vasp`と`declare_self_hosted`で返されます。
      required:
        - action
    TravelRuleChainDetails:
      type: object
      description: >-
        送金のチェーンが2つのウォレットをどのように示すか（1つのアドレスが別のアドレスに支払う形態にとどまらない場合）。アカウント型チェーンの送金（EVM、Solana、Tron）では2つのアドレスがそのままウォレットとなるため、空（`{}`）になります。照合、ルーティング、アドレス帳は、まずここからウォレットを読み取ります。
      properties:
        chain:
          type: string
          description: 正規チェーン(例:`BTC`、`XRP`、Lightning送金の場合は`LIGHTNING`)。
        shape:
          type: string
          enum:
            - utxo
            - memo
            - lightning
        originator:
          $ref: '#/components/schemas/TravelRuleChainSide'
        beneficiary:
          $ref: '#/components/schemas/TravelRuleChainSide'
        utxo:
          type: object
          description: 'UTXO送金の場合: 保存されている入力と出力(金額は10進数の文字列)、およびDiditが各出力を何として解釈したか。'
          properties:
            inputs:
              type: array
              items:
                $ref: '#/components/schemas/TravelRuleUtxoEntry'
            outputs:
              type: array
              items:
                $ref: '#/components/schemas/TravelRuleUtxoEntry'
            change_output_indexes:
              type: array
              items:
                type: integer
              description: 入力アドレスへ資金を戻す出力。
            beneficiary_output_index:
              type: integer
              nullable: true
              description: 受取人に支払うアウトプット。判別できなかった場合はnullです。
        lightning:
          type: object
          description: >-
            Lightning送金の場合:
            支払いリクエストの内容。常に`kind`(`bolt11`、`bolt12_offer`、`bolt12_invoice`、`bolt12_invoice_request`、`lnurl`、`lightning_address`、`node_id`または`unknown`)を含みます。BOLT11インボイスでは`network`、`payee_node_id`、`payment_hash`、`amount_msat`、`created_at`、`expires_at`が加わり、BOLT12文字列では`blinded_paths`と`payee_node_id`が、LNURLまたはLightning
            Addressではその`domain`が加わります。ネットワーク経由での解決は一切行わず、リクエストをデコードするだけです。
          additionalProperties: true
        warnings:
          type: array
          items:
            type: string
            enum:
              - declared_originator_not_an_input
              - declared_beneficiary_not_an_output
              - beneficiary_output_ambiguous
              - beneficiary_output_amount_differs
          description: >-
            確認が必要なUTXOの不整合です。申告された送金人が入力に含まれていない、申告された受取人が出力に含まれていない、受取人の出力を1つに特定できない、または受取人の出力の支払額が取引に記載された金額と異なる場合が該当します。
        not_applicable_reason:
          type: string
          enum:
            - LIGHTNING_NO_PAYEE_IDENTIFIER
            - LIGHTNING_BOLT12_BLINDED_PAYEE
            - LIGHTNING_LNURL_NAMES_NO_PAYEE
          description: >-
            支払いリクエストに受取人が指定されていないアウトバウンドのLightning送金の場合:
            送金が`NOT_APPLICABLE`となる理由。`LIGHTNING_NO_PAYEE_IDENTIFIER`(リクエストに受取人ノードが指定されていない、またはデコードできなかった)、`LIGHTNING_BOLT12_BLINDED_PAYEE`(オファーが受取人をブラインドパスの背後に隠している)、`LIGHTNING_LNURL_NAMES_NO_PAYEE`(LNURLが受取人ではなくサービスを指定している)のいずれかです。同じコードが送金の最後の`timeline`エントリの冒頭にも記載されます。
    TravelRuleChainSide:
      type: object
      description: Diditがチェーンデータから解決した、一方の当事者のウォレットです。
      properties:
        address:
          type: string
          description: >-
            ウォレット。メモ型ネットワークではクラシックアドレス(XRPのXアドレスはクラシックアドレスとタグに分割されます)、Lightningでは受取人のノードIDまたはLightning
            Addressです。
        memo:
          type: string
          description: ウォレットの一部となる宛先タグまたはメモです。ない場合は`""`です。
        source:
          type: string
          enum:
            - declared
            - x_address
            - largest_input
            - only_non_change_output
            - amount_match
            - invoice_payee
            - updated
          description: >-
            ウォレットの取得元です。`declared`（リクエストで指定）、`x_address`（XRPのX-addressから分割）、`largest_input`（最も多く拠出したUTXO入力アドレス）、`only_non_change_output`（おつりではない唯一のUTXO出力）、`amount_match`（送金額を支払う唯一のUTXO出力）、`invoice_payee`（Lightningの支払いリクエストが指定する受取人）、`updated`（後から`action:
            update_originator_wallet`で設定）。
    TravelRuleUtxoEntry:
      type: object
      description: UTXO取引の入力または出力1件。チェーンに記録されたとおりの内容です。
      required:
        - address
      properties:
        address:
          type: string
          maxLength: 128
        amount:
          type: string
          nullable: true
          description: その通貨自体の単位（satoshiではなくBTC）での10進数文字列。任意。
          example: '0.0125'
        txid:
          type: string
          maxLength: 128
          description: 任意。入力が使用する取引です。
        vout:
          type: integer
          nullable: true
          minimum: 0
          description: 任意。入力が使用する出力のインデックスです。
  securitySchemes:
    TransactionTokenAuth:
      type: apiKey
      in: header
      name: X-Transaction-Token
      description: >-
        バックエンドがPOST /v3/transactions/sdk-token/で発行する有効期間の短いスコープ付きトークン。Didit
        SDKがデバイス向けの/v1/transactions/エンドポイントで使用します。

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.