> ## 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.

# 取引のIPエンリッチメント：国・ASN・VPN検出

> Diditはすべての取引に国、ASN、VPN、Tor、データセンター、通信キャリアなどのIP情報を付与します。毎月1,000件まで含まれ、以降は1件あたり$0.001です。

デバイスのIPアドレスを含むすべての取引は、ルールによる評価の前に、サーバー側でリアルタイムにエンリッチメントされます。エンリッチメントでは国、都市、VPN/Tor/データセンターのフラグ、ASN、通信キャリアが付加され、これらはすべてルールの条件として使用できます。

## エンリッチメントの実行タイミング

取引の作成中にインラインで実行されます。

1. `subject.device_context.network_context.ip_address`（またはいずれかの当事者のデバイスIP）を指定して`POST /v3/transactions/`を送信します。
2. DiditがインメモリキャッシュでIPを検索します（TTLは24時間）。
3. キャッシュにない場合は、共有IPエンリッチメントテーブルを確認します（鮮度は約30日）。
4. データが古いか存在しない場合は、複数プロバイダーによるフェイルオーバーを備えたDiditのエンリッチメントパイプラインを通じてIPを照会します。
5. エンリッチメントされたフィールドは取引レコードに書き戻され、ルールで利用できるようになります。

エンリッチメントは**インライン**で実行され、ルールの実行前に完了しますが、**失敗しても処理をブロックしません**。エンリッチメントを完了できない場合でも取引は処理され、IPがエンリッチメントデータなしで表示されるだけです。

## エンリッチされたフィールド

| フィールド | 説明 |
| - | - |
| `ip_country` | 国名 |
| `ip_country_code` | Diditが解決した場合はISO 3166-1 alpha-2（送信した値は送信したまま保持されます）。ルールの条件は両方の形式を正規化します |
| `ip_state` | 地域区分（州、地域） |
| `ip_city` | 都市名 |
| `latitude`, `longitude` | 地理座標 |
| `isp` | インターネットサービスプロバイダー名 |
| `organization` | 登録組織名 |
| `is_vpn_or_tor` | ブール値。既知のVPNまたはTor出口ノードのIPであるかどうか |
| `is_data_center` | ブール値。ホスティング/データセンターのIPアドレス範囲に属するIPであるかどうか |
| `time_zone` | IANAタイムゾーン（例: `America/New_York`） |
| `time_zone_offset` | UTCからのオフセット |
| `asn_number` | 自律システム番号 |
| `asn_organization` | ASNの登録組織 |
| `connection_type` | `mobile`, `broadband`, `dialup`, `corporate`, ... |
| `carrier` | モバイルキャリア（モバイルIPの場合） |
| `proxy_type` | `VPN`、`TOR`、`PUBLIC_PROXY`、またはnull |

## ルールでのエンリッチメントフィールドの使用

エンリッチメントフィールドはいずれも[ルールの条件](https://docs.didit.me/ja/transaction-monitoring/rules.md)として使用できます。よく使われるパターンは次のとおりです。

**IPによる高リスク法域**

```
condition: applicant.ip_country_code IN ['IRN', 'PRK', 'SYR']
action: add_score(35), add_tags(['high_risk_ip_country'])
```

**VPN/Torの使用**

```
condition: applicant.is_vpn_or_tor == true
action: change_status('IN_REVIEW'), add_tags(['anonymization'])
```

**データセンター/非住宅からのアクセス**

```
condition: applicant.is_data_center == true AND amount > 10000
action: add_score(30)
```

**IPアドレスの国 ≠ KYCの国**

```
condition: applicant.ip_country_code != applicant.country_code
action: add_score(15), add_tags(['geo_mismatch'])
```

## キャッシュレイヤー

| レイヤー | TTL | 目的 |
| - | - | - |
| インメモリキャッシュ | 24時間 | アクセスの多いIPをミリ秒未満で検索 |
| 共有IPエンリッチメントテーブル | 約30日 | インスタンス間で共有。再解決より低コスト |
| エンリッチメントパイプライン | n/a | 他のレイヤーにデータがない場合に最新データを取得 |

最初の2つのレイヤーでヒットした場合、追加料金は発生しません。新規の解決処理は従量課金の対象となる場合があります。請求コンソールをご確認ください。

## 失敗時の動作

* エンリッチメントの失敗が原因で取引の作成が**失敗することはありません**。
* 欠落しているエンリッチメントフィールドは、それを参照するルールの条件には一致しません。
* 処理が滞っているエンリッチメントに関するアラートは、内部モニタリングを通じてお客様の運用チームに通知されます。顧客への影響はありません。

## 有効性によるフィルタリング

ルーティングできないIPアドレスはエンリッチメントの前にスキップされます。

* プライベート（10/8、172.16/12、192.168/16）
* ループバック（127/8）
* リンクローカル（169.254/16）
* マルチキャスト、未指定

これにより、プロバイダーのクォータを節約し、無意味なエンリッチメントデータを避けられます。

## 取引のエンリッチメント内容の確認

**APIで確認する。** 独立したエンリッチメントブロックはありません。エンリッチメントされたフィールドは、`parties`配列の該当するエントリにある当事者自身の`device.network_context`オブジェクト内に、送信した`ip_address`と並んで書き込まれます。

```json theme={null}
"parties": [
  {
    "role": "APPLICANT",
    "vendor_data": "user-42",
    "device": {
      "network_context": {
        "ip_address": "203.0.113.5",
        "ip_country": "United States",
        "ip_country_code": "US",
        "ip_state": "California",
        "ip_city": "San Francisco",
        "is_vpn_or_tor": false,
        "is_data_center": false,
        "asn_number": 64496,
        "asn_organization": "Example ISP",
        "proxy_type": null
      }
    }
  }
]
```

リクエストで指定したフィールドは保持されます。エンリッチメントは省略したキーのみを補完し、リゾルバーが空で返したキーは省略されます。`device`の完全な構造については[レスポンススキーマ](https://docs.didit.me/ja/transaction-monitoring/response-schema.md#device)を参照してください。

**コンソールで確認する。** 取引の詳細ページでは、**IPとデバイス**タブにIPエンリッチメントが地図上のピンとともに表示されます。

## プライバシーに関する考慮事項

* 生のIPアドレスは取引とともに保存されます。
* エンリッチメントデータはIPをキーとする共有テーブルに保存され、ユーザーごとには保存されません。
* 忘れられる権利に基づく削除では取引からIPが削除されますが、共有キャッシュのエントリは残ります（個人を特定する情報ではないため）。

## 次のステップ

> [card] [ルール](https://docs.didit.me/ja/transaction-monitoring/rules.md)
>
> 条件でエンリッチされたフィールドを使用します。

> [card] [ルールライブラリ](https://docs.didit.me/ja/transaction-monitoring/rules-library.md)
>
> IPベースのプリセットルール。

> [card] [レスポンススキーマ](https://docs.didit.me/ja/transaction-monitoring/response-schema.md)
>
> IPエンリッチメントが表示される場所。


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