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

# Pengayaan IP Transaksi: Negara, ASN, VPN

> Didit memperkaya setiap transaksi dengan konteks IP: negara, ASN, VPN, Tor, data center, dan operator. 1.000 per bulan gratis, lalu $0.001 per panggilan.

Setiap transaksi yang menyertakan alamat IP perangkat akan diperkaya di sisi server secara real-time sebelum aturan mengevaluasinya. Pengayaan menambahkan negara, kota, flag VPN/Tor/pusat data, ASN, dan operator seluler, yang semuanya tersedia sebagai kondisi aturan.

## Kapan pengayaan dijalankan

Secara inline selama pembuatan transaksi:

1. Anda mengirim `POST /v3/transactions/` dengan `subject.device_context.network_context.ip_address` (atau alamat IP perangkat pihak mana pun).
2. Didit mencari IP tersebut di cache dalam memori (TTL 24 jam).
3. Jika tidak ada di cache, sistem memeriksa tabel pengayaan IP bersama (kesegaran data sekitar 30 hari).
4. Jika data sudah usang atau tidak ada, sistem mengambil data IP melalui pipeline pengayaan Didit dengan failover multi-penyedia.
5. Kolom hasil pengayaan dituliskan kembali ke catatan transaksi dan tersedia untuk aturan.

Pengayaan bersifat **inline**, yaitu selesai sebelum aturan dijalankan, tetapi **tidak memblokir jika terjadi kegagalan**. Jika pengayaan tidak dapat diselesaikan, transaksi tetap diproses; IP tersebut hanya muncul tanpa data pengayaan.

## Kolom hasil pengayaan

| Kolom | Deskripsi |
| - | - |
| `ip_country` | Nama negara |
| `ip_country_code` | ISO 3166-1 alpha-2 jika diselesaikan oleh Didit (nilai yang Anda kirim tetap dipertahankan seperti yang dikirim); kondisi aturan menormalisasi kedua bentuk tersebut |
| `ip_state` | Subdivisi (negara bagian, wilayah) |
| `ip_city` | Nama kota |
| `latitude`, `longitude` | Koordinat geografis |
| `isp` | Nama penyedia layanan internet |
| `organization` | Nama organisasi yang terdaftar |
| `is_vpn_or_tor` | Boolean: IP tersebut merupakan titik keluar VPN atau Tor yang diketahui |
| `is_data_center` | Boolean: IP tersebut termasuk dalam rentang hosting/pusat data |
| `time_zone` | Zona waktu IANA (misalnya `America/New_York`) |
| `time_zone_offset` | Selisih dari UTC |
| `asn_number` | Nomor Sistem Otonom |
| `asn_organization` | Organisasi terdaftar dari ASN |
| `connection_type` | `mobile`, `broadband`, `dialup`, `corporate`, ... |
| `carrier` | Operator seluler (untuk IP seluler) |
| `proxy_type` | `VPN`, `TOR`, `PUBLIC_PROXY`, atau null |

## Menggunakan kolom hasil pengayaan dalam aturan

Setiap kolom hasil pengayaan dapat menjadi [kondisi aturan](https://docs.didit.me/id/transaction-monitoring/rules.md). Pola umum:

**Yurisdiksi berisiko tinggi berdasarkan IP**

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

**Penggunaan VPN / Tor**

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

**Pusat data / asal non-residensial**

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

**Negara IP ≠ negara KYC**

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

## Lapisan cache

| Lapisan | TTL | Tujuan |
| - | - | - |
| Cache dalam memori | 24 jam | Pencarian dalam waktu kurang dari satu milidetik untuk IP yang sering diakses |
| Tabel pengayaan IP bersama | \~30 hari | Dibagikan antar-instance; lebih murah daripada mengambil ulang data |
| Pipeline pengayaan | tidak berlaku | Data terbaru jika tidak ada sumber lain |

Hit pada dua lapisan pertama tidak dikenakan biaya tambahan. Pengambilan data baru dapat dikenai biaya berdasarkan penggunaan; lihat konsol penagihan Anda.

## Perilaku saat gagal

* Pembuatan transaksi **tidak pernah gagal** karena pengayaan gagal.
* Kolom pengayaan yang hilang tidak cocok dengan kondisi aturan mana pun yang merujuknya.
* Peringatan tentang pengayaan yang macet diteruskan ke tim operasional Anda melalui pemantauan internal; tidak ada dampak bagi pelanggan.

## Pemfilteran validitas

IP yang tidak dapat dirutekan dilewati sebelum pengayaan:

* Privat (10/8, 172.16/12, 192.168/16)
* Loopback (127/8)
* Link-local (169.254/16)
* Multicast, tidak ditentukan

Langkah ini menghemat kuota penyedia dan mencegah data pengayaan yang tidak masuk akal.

## Memeriksa pengayaan untuk sebuah transaksi

**Melalui API.** Tidak ada blok pengayaan terpisah. Kolom hasil pengayaan dituliskan ke objek `device.network_context` milik pihak tersebut, di samping `ip_address` yang Anda kirim, pada entri yang sesuai dalam array `parties`:

```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
      }
    }
  }
]
```

Kolom yang Anda sertakan dalam permintaan tetap dipertahankan; pengayaan hanya mengisi kunci yang tidak Anda sertakan, dan kunci yang dikembalikan kosong oleh resolver akan dihilangkan. Lihat [skema respons](https://docs.didit.me/id/transaction-monitoring/response-schema.md#device) untuk bentuk `device` lengkap.

**Di konsol.** Halaman detail transaksi menampilkan pengayaan IP pada tab **IP & Perangkat** dengan pin peta geografis.

## Pertimbangan privasi

* IP mentah disimpan bersama transaksi.
* Data pengayaan berada pada tabel bersama yang diindeks berdasarkan IP, bukan per pengguna.
* Penghapusan berdasarkan hak untuk dilupakan menghapus IP dari transaksi; entri cache bersama tetap ada karena tidak mengidentifikasi seseorang secara pribadi.

## Langkah selanjutnya

> [card] [Aturan](https://docs.didit.me/id/transaction-monitoring/rules.md)
>
> Gunakan kolom hasil pengayaan dalam kondisi.

> [card] [Pustaka aturan](https://docs.didit.me/id/transaction-monitoring/rules-library.md)
>
> Aturan berbasis IP yang sudah disiapkan.

> [card] [Skema respons](https://docs.didit.me/id/transaction-monitoring/response-schema.md)
>
> Tempat hasil pengayaan IP muncul.


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