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

# Report verifica della posizione: campi geolocation_checks

> Analizza geolocation_checks e geolocation_attempts nella decisione Didit: posizione, accuratezza, aree, distanze, anonimizzatori e avvisi.

## Panoramica

La decisione della sessione restituisce il risultato di ogni passaggio di Verifica della posizione in due elenchi: `geolocation_checks[]` contiene il tentativo accettato di ciascun passaggio, mentre `geolocation_attempts[]` elenca ogni tentativo in ordine.
Entrambi sono presenti su `GET /v3/session/{sessionId}/decision/` (vedi [Recupera sessione](https://docs.didit.me/it/sessions-api/retrieve-session.md)) e nel webhook `status.updated`.
Un workflow privo di passaggi di Posizione restituisce `null` o un elenco vuoto per entrambi.

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

Un elemento per ogni passaggio di Posizione (`node_id`), tratto dal suo tentativo più recente.

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

| Campo | Tipo | Descrizione |
| - | - | - |
| `node_id` | string | Il nodo del workflow che ha prodotto il risultato, in modo che un workflow con due passaggi di Posizione rimanga leggibile. |
| `status` | string | `Approved`, `In Review`, `Declined` o `Not Finished`, determinato dagli avvisi. |
| `outcome` | string | Cosa è successo nel tentativo accettato. Vedi gli [esiti](https://docs.didit.me/it/core-technology/location-verification/overview.md#risultati). |
| `permission` | string | Cosa ha concesso il sistema: `granted_precise`, `granted_approximate`, `denied`, `restricted`, `unavailable`, `timeout`, `dismissed` o `not_requested` (passaggio solo IP). |
| `latitude`, `longitude` | number or null | Posizione WGS84. `null` quando non è presente alcuna posizione. |
| `accuracy_m` | number or null | Raggio di incertezza in metri. |
| `accuracy_confidence` | string or null | Livello di confidenza del raggio: `p95` (web), `p68` (Android) o `unspecified` (iOS). Le piattaforme differiscono, pertanto viene registrato anziché normalizzato. |
| `measured_at` | datetime or null | Quando il dispositivo ha misurato la posizione, in base all'orologio del dispositivo. |
| `age_seconds` | integer or null | Tempo intercorso tra la misurazione e il momento in cui Didit l'ha ricevuta. |
| `source` | string or null | `gps`, `fused`, `network`, `wifi`, `cell`, `browser`, `unknown` oppure `ip` in un passaggio solo IP. |
| `platform` | string or null | `web`, `ios`, `android`, `react_native` o `flutter`. |
| `sdk_version` | string or null | La versione dell'SDK che ha generato la posizione. |
| `is_mock` | boolean or null | Il sistema ha segnalato una posizione simulata. `null` indica che la piattaforma non è in grado di stabilirlo (web), non `false`. |
| `produced_by_accessory` | boolean or null | Solo iOS: la posizione proviene da un accessorio esterno. |
| `integrity` | string | Attestazione del dispositivo: `attested`, `not_attested`, `failed`, `unsupported` (web) o `not_determined`. |
| `country_code`, `region_code`, `city` | string or null | Il luogo a cui la posizione corrisponde, calcolato offline: ISO 3166-1 alpha-2, ISO 3166-2 e il centro abitato più vicino. La città è un'etichetta per i revisori, mai un input per le regole. |
| `geofence` | object | `enabled` e `result`: `inside`, `outside` o `undetermined`. `result` è `null` quando il geofencing è disattivato. |
| `inside_geofence` | boolean or null | `true` o `false`, e `null` quando il geofencing è disattivato o il raggio di precisione attraversa un confine. |
| `geofence_basis` | string or null | Quale posizione è stata utilizzata per il verdetto dell'area: `device` o `ip`. |
| `inside_areas`, `blocked_areas` | array | Gli `id` delle aree consentite all'interno delle quali ricade l'intero cerchio di precisione e delle aree bloccate all'interno delle quali ricade. |
| `position_source` | string or null | Il valore di `geolocation_position_source` del nodo al momento dell'esecuzione del tentativo. |
| `anonymizers` | object or null | `vpn`, `proxy`, `tor`, `spoofing` ed `emulator`, ciascuno `true`, `false` o `null` quando la sorgente non è in grado di determinarlo. |
| `ip_distance_km` | number or null | Distanza dalla posizione IP dopo aver sottratto entrambi i raggi di incertezza. 0 indica che si sovrappongono. |
| `ip_distance_uncertainty_km` | number or null | Il raggio combinato che è stato sottratto. |
| `ip_consistent` | boolean or null | `ip_distance_km` rientra in `geolocation_ip_distance_km`. `null` quando uno dei due lati è sconosciuto. |
| `document_distance_km` | number or null | Distanza dall'indirizzo del documento geocodificato. `null` quando non è presente alcun indirizzo registrato. |
| `travel_excused` | boolean or null | La tolleranza di spostamento ha giustificato la distanza. `null` quando la tolleranza è disattivata. |
| `consecutive_mismatches` | integer or null | In un tentativo finale, questo controllo più le discrepanze consecutive precedenti della stessa persona. |
| `attempts` | integer | Il numero del tentativo. |
| `consent` | object or null | `accepted_at`, `version` e `locale` dell'informativa sulla posizione accettata dalla persona. |
| `warnings` | array | Gli [avvisi](https://docs.didit.me/it/core-technology/location-verification/warnings-location-verification.md) del passaggio. |

## `geolocation_attempts[]`

Ogni tentativo di ciascun passaggio di Posizione, dal più vecchio al più recente, con gli stessi campi di misurazione, incertezza, area e distanza di `geolocation_checks[]` ad eccezione di `warnings`, oltre a:

| Campo | Tipo | Descrizione |
| - | - | - |
| `received_at` | datetime | Quando Didit ha ricevuto il tentativo. |
| `created_at` | datetime | Quando il tentativo è stato registrato. |

I tentativi ritirati da un nuovo invio vengono omessi.
L'invio grezzo del client e la sfida non vengono mai restituiti.

## Campi per le regole di stato e i rami

Le `status_rules` personalizzate e le regole dei rami possono leggere questi campi:
`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`) e `geolocation.consecutive_mismatches`.
Un valore mancante corrisponde solo a `is_empty`, pertanto una regola scritta per un segnale di frode non si attiva mai su dati mancanti.

## Risorse correlate

* [Verifica della posizione](https://docs.didit.me/it/core-technology/location-verification/overview.md) - come funziona il passaggio e quanto costa.
* [Avvisi sulla verifica della posizione](https://docs.didit.me/it/core-technology/location-verification/warnings-location-verification.md) - tutti i codici `LOCATION_*`.
* [Webhook](https://docs.didit.me/it/integration/webhooks.md) - `status.updated` trasporta gli elenchi.
* [Modelli di dati - Oggetto avviso](https://docs.didit.me/it/reference/data-models.md#oggetto-avviso) - la struttura di ciascuna voce in `warnings[]`.


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