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

# Laporan Verifikasi Lokasi: Kolom geolocation_checks

> Baca geolocation_checks dan geolocation_attempts di keputusan sesi Didit: posisi, akurasi, area, jarak, anonimizer, persetujuan, dan peringatan.

## Gambaran umum

Keputusan sesi mengembalikan hasil dari setiap langkah verifikasi Lokasi dalam dua daftar: `geolocation_checks[]` menyimpan percobaan yang diterima untuk setiap langkah, dan `geolocation_attempts[]` mencantumkan setiap percobaan secara berurutan.
Keduanya tersedia di `GET /v3/session/{sessionId}/decision/` (lihat [Ambil sesi](https://docs.didit.me/id/sessions-api/retrieve-session.md)) dan dalam webhook `status.updated`.
Alur kerja tanpa langkah Lokasi akan mengembalikan `null` atau daftar kosong untuk keduanya.

```text theme={null}
GET /v3/session/{sessionId}/decision/
  --> { "geolocation_checks": [ { node_id, status, outcome, permission, latitude, longitude, accuracy_m, ... } ],
        "geolocation_attempts": [ { node_id, outcome, attempts, received_at, ... } ] }
```

## `geolocation_checks[]`

Satu item per langkah Lokasi (`node_id`), diambil dari percobaan terbarunya.

```json theme={null}
{
  "node_id": "geolocation_1",
  "status": "Declined",
  "outcome": "outside_geofence",
  "permission": "granted_precise",
  "latitude": 48.8566,
  "longitude": 2.3522,
  "accuracy_m": 35.0,
  "accuracy_confidence": "p95",
  "measured_at": "2026-11-03T10:15:02Z",
  "age_seconds": 2,
  "source": "browser",
  "platform": "web",
  "sdk_version": null,
  "is_mock": null,
  "produced_by_accessory": null,
  "integrity": "unsupported",
  "country_code": "FR",
  "region_code": "FR-IDF",
  "city": "Paris",
  "geofence": { "enabled": true, "result": "outside" },
  "inside_geofence": false,
  "geofence_basis": "device",
  "inside_areas": [],
  "blocked_areas": [],
  "position_source": "device_and_ip",
  "anonymizers": { "vpn": false, "proxy": false, "tor": false, "spoofing": null, "emulator": null },
  "ip_distance_km": 0,
  "ip_distance_uncertainty_km": 12.4,
  "ip_consistent": true,
  "document_distance_km": null,
  "travel_excused": null,
  "consecutive_mismatches": 1,
  "attempts": 3,
  "consent": { "accepted_at": "2026-11-03T10:14:55Z", "version": "hosted-web-1", "locale": "en" },
  "warnings": [
    {
      "risk": "LOCATION_OUTSIDE_GEOFENCE",
      "log_type": "error",
      "short_description": "Device location outside the allowed area",
      "node_id": "geolocation_1"
    }
  ]
}
```

| Kolom | Tipe | Deskripsi |
| - | - | - |
| `node_id` | string | Node alur kerja yang menghasilkan output ini, sehingga alur kerja dengan dua langkah Lokasi tetap mudah dibaca. |
| `status` | string | `Approved`, `In Review`, `Declined`, atau `Not Finished`, ditentukan dari peringatan. |
| `outcome` | string | Apa yang terjadi pada percobaan yang diterima. Lihat [hasil](https://docs.didit.me/id/core-technology/location-verification/overview.md#hasil). |
| `permission` | string | Izin yang diberikan sistem: `granted_precise`, `granted_approximate`, `denied`, `restricted`, `unavailable`, `timeout`, `dismissed`, atau `not_requested` (langkah khusus IP). |
| `latitude`, `longitude` | number or null | Posisi WGS84. `null` jika tidak ada posisi. |
| `accuracy_m` | number or null | Radius ketidakpastian dalam meter. |
| `accuracy_confidence` | string or null | Tingkat keyakinan radius: `p95` (web), `p68` (Android), atau `unspecified` (iOS). Platform berbeda-beda, sehingga dicatat apa adanya daripada dinormalisasi. |
| `measured_at` | datetime or null | Waktu saat perangkat mengukur posisi, berdasarkan jam perangkat. |
| `age_seconds` | integer or null | Selang waktu antara pengukuran dan saat Didit menerimanya. |
| `source` | string or null | `gps`, `fused`, `network`, `wifi`, `cell`, `browser`, `unknown`, atau `ip` pada langkah khusus IP. |
| `platform` | string or null | `web`, `ios`, `android`, `react_native`, atau `flutter`. |
| `sdk_version` | string or null | Versi SDK yang menghasilkan posisi. |
| `is_mock` | boolean or null | Sistem melaporkan posisi yang disimulasikan. `null` berarti platform tidak dapat menentukannya (web), bukan `false`. |
| `produced_by_accessory` | boolean or null | Hanya iOS: posisi berasal dari aksesori eksternal. |
| `integrity` | string | Atestasi perangkat: `attested`, `not_attested`, `failed`, `unsupported` (web), atau `not_determined`. |
| `country_code`, `region_code`, `city` | string or null | Tempat yang diperoleh dari resolusi posisi, yang ditentukan secara offline: ISO 3166-1 alpha-2, ISO 3166-2, dan tempat berpenduduk terdekat. Kota adalah label bagi peninjau, bukan input aturan. |
| `geofence` | object | `enabled`, dan `result`: `inside`, `outside`, atau `undetermined`. `result` bernilai `null` saat geofencing nonaktif. |
| `inside_geofence` | boolean or null | `true` atau `false`, dan `null` saat geofencing nonaktif atau lingkaran akurasi melintasi batas. |
| `geofence_basis` | string or null | Posisi mana yang digunakan untuk vonis area: `device` atau `ip`. |
| `inside_areas`, `blocked_areas` | array | `id` dari area yang diizinkan tempat seluruh lingkaran akurasi berada di dalamnya, dan dari area yang diblokir tempat lingkaran tersebut berada di dalamnya. |
| `position_source` | string or null | `geolocation_position_source` pada node saat percobaan dijalankan. |
| `anonymizers` | object or null | `vpn`, `proxy`, `tor`, `spoofing`, dan `emulator`, masing-masing bernilai `true`, `false`, atau `null` jika sumber tidak dapat menentukannya. |
| `ip_distance_km` | number or null | Jarak ke lokasi IP setelah kedua radius ketidakpastian dikurangkan. 0 berarti keduanya tumpang tindih. |
| `ip_distance_uncertainty_km` | number or null | Gabungan radius yang dikurangkan. |
| `ip_consistent` | boolean or null | `ip_distance_km` berada dalam rentang `geolocation_ip_distance_km`. `null` jika salah satu sisi tidak diketahui. |
| `document_distance_km` | number or null | Jarak ke alamat dokumen yang di-geocode. `null` jika tidak ada alamat yang tercatat. |
| `travel_excused` | boolean or null | Toleransi perjalanan memaklumi jarak tersebut. `null` saat toleransi nonaktif. |
| `consecutive_mismatches` | integer or null | Pada percobaan terakhir, jumlah ketidakcocokan ini ditambah ketidakcocokan beruntun sebelumnya dari orang yang sama. |
| `attempts` | integer | Nomor urut percobaan. |
| `consent` | object or null | `accepted_at`, `version`, dan `locale` dari pemberitahuan lokasi yang disetujui orang tersebut. |
| `warnings` | array | [Peringatan](https://docs.didit.me/id/core-technology/location-verification/warnings-location-verification.md) dari langkah tersebut. |

## `geolocation_attempts[]`

Setiap percobaan dari setiap langkah Lokasi, yang terlama terlebih dahulu, dengan kolom pengukuran, ketidakpastian, area, dan jarak yang sama seperti `geolocation_checks[]` kecuali `warnings`, ditambah:

| Kolom | Tipe | Deskripsi |
| - | - | - |
| `received_at` | datetime | Waktu saat Didit menerima percobaan. |
| `created_at` | datetime | Waktu saat percobaan dicatat. |

Percobaan yang dihentikan oleh pengiriman ulang tidak disertakan.
Pengiriman mentah dari klien dan tantangan tidak pernah dikembalikan.

## Kolom untuk aturan status dan cabang

`status_rules` khusus dan aturan cabang dapat membaca kolom-kolom ini:
`geolocation.status`, `geolocation.outcome`, `geolocation.permission`, `geolocation.latitude`, `geolocation.longitude`, `geolocation.accuracy_m`, `geolocation.accuracy_confidence`, `geolocation.age_seconds`, `geolocation.measured_at`, `geolocation.source`, `geolocation.platform`, `geolocation.country` (ISO 3166-1 alpha-3), `geolocation.region`, `geolocation.city`, `geolocation.is_mock`, `geolocation.integrity`, `geolocation.inside_geofence`, `geolocation.ip_distance_km`, `geolocation.ip_consistent`, `geolocation.document_distance_km`, `geolocation.attempts`, `geolocation.consent_at`, `geolocation.inside_areas`, `geolocation.blocked_areas`, `geolocation.anonymizers` (`vpn`, `proxy`, `tor`, `spoofing`, `emulator`), dan `geolocation.consecutive_mismatches`.
Nilai yang hilang hanya cocok dengan `is_empty`, sehingga aturan yang dibuat untuk sinyal penipuan tidak akan pernah terpicu pada data yang hilang.

## Terkait

* [Verifikasi lokasi](https://docs.didit.me/id/core-technology/location-verification/overview.md) - cara kerja langkah ini dan biayanya.
* [Peringatan verifikasi lokasi](https://docs.didit.me/id/core-technology/location-verification/warnings-location-verification.md) - setiap kode `LOCATION_*`.
* [Webhook](https://docs.didit.me/id/integration/webhooks.md) - `status.updated` memuat daftar tersebut.
* [Model data - Objek peringatan](https://docs.didit.me/id/reference/data-models.md#objek-peringatan) - bentuk setiap entri dalam `warnings[]`.


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