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

# Informe de verificació de la ubicació: geolocation_checks

> Interpreta geolocation_checks i geolocation_attempts de Didit: posició, precisió, àrees, distàncies, anonimitzadors, consentiment i advertències.

## Visió general

La decisió de la sessió retorna el resultat de cada pas de verificació d'ubicació en dues llistes: `geolocation_checks[]` conté l'intent acceptat de cada pas, i `geolocation_attempts[]` llista cada intent en ordre.
Totes dues es troben a `GET /v3/session/{sessionId}/decision/` (consulta [Recuperar sessió](https://docs.didit.me/ca/sessions-api/retrieve-session.md)) i al webhook `status.updated`.
Un flux de treball sense cap pas d'ubicació retorna `null` o una llista buida per a totes dues.

```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 element per pas d'ubicació (`node_id`), extret del seu intent més recent.

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

| Camp | Tipus | Descripció |
| - | - | - |
| `node_id` | string | El node del flux de treball que ha generat el resultat, de manera que un flux de treball amb dos passos d'ubicació continuï sent comprensible. |
| `status` | string | `Approved`, `In Review`, `Declined` o `Not Finished`, resolt a partir de les advertències. |
| `outcome` | string | Què ha passat en l'intent acceptat. Consulta els [resultats](https://docs.didit.me/ca/core-technology/location-verification/overview.md#resultats). |
| `permission` | string | El que ha concedit el sistema: `granted_precise`, `granted_approximate`, `denied`, `restricted`, `unavailable`, `timeout`, `dismissed` o `not_requested` (pas només d'IP). |
| `latitude`, `longitude` | number o null | Posició WGS84. `null` quan no hi ha cap posició. |
| `accuracy_m` | number o null | Radi d'incertesa en metres. |
| `accuracy_confidence` | string o null | Nivell de confiança del radi: `p95` (web), `p68` (Android) o `unspecified` (iOS). Com que les plataformes difereixen, es registra en lloc de normalitzar-se. |
| `measured_at` | datetime o null | Quan el dispositiu ha mesurat la posició, segons el rellotge del dispositiu. |
| `age_seconds` | integer o null | Temps entre la mesura i el moment en què Didit l'ha rebut. |
| `source` | string o null | `gps`, `fused`, `network`, `wifi`, `cell`, `browser`, `unknown`, o `ip` en un pas només d'IP. |
| `platform` | string o null | `web`, `ios`, `android`, `react_native` o `flutter`. |
| `sdk_version` | string o null | La versió de l'SDK que ha generat la posició. |
| `is_mock` | boolean o null | El sistema ha notificat una posició simulada. `null` significa que la plataforma no ho pot determinar (web), no `false`. |
| `produced_by_accessory` | boolean o null | Només per a iOS: la posició provenia d'un accessori extern. |
| `integrity` | string | Atestació del dispositiu: `attested`, `not_attested`, `failed`, `unsupported` (web) o `not_determined`. |
| `country_code`, `region_code`, `city` | string o null | El lloc al qual es resol la posició, calculat fora de línia: ISO 3166-1 alpha-2, ISO 3166-2 i el nucli de població més proper. La ciutat és una etiqueta per als revisors, mai una entrada per a regles. |
| `geofence` | object | `enabled`, i `result`: `inside`, `outside` o `undetermined`. `result` és `null` quan el geofencing està desactivat. |
| `inside_geofence` | boolean o null | `true` o `false`, i `null` quan el geofencing està desactivat o el cercle de precisió cavalca un límit. |
| `geofence_basis` | string o null | Quina posició ha utilitzat el veredicte d'àrea: `device` o `ip`. |
| `inside_areas`, `blocked_areas` | array | `id` de les àrees permeses on el cercle de precisió complet queda a l'interior, i de les àrees bloquejades on queda a l'interior. |
| `position_source` | string o null | El camp `geolocation_position_source` del node quan es va executar l'intent. |
| `anonymizers` | object o null | `vpn`, `proxy`, `tor`, `spoofing` i `emulator`, cadascun `true`, `false` o `null` quan la font no ho pot determinar. |
| `ip_distance_km` | number o null | Distància fins a la ubicació de la IP després de restar ambdós radis d'incertesa. 0 significa que se superposen. |
| `ip_distance_uncertainty_km` | number o null | El radi combinat que s'ha restat. |
| `ip_consistent` | boolean o null | `ip_distance_km` està dins de `geolocation_ip_distance_km`. `null` quan algun dels dos costats és desconegut. |
| `document_distance_km` | number o null | Distància fins a l'adreça geocodificada del document. `null` quan no hi ha cap adreça registrada. |
| `travel_excused` | boolean o null | La tolerància de viatge ha dispensat la distància. `null` quan la tolerància està desactivada. |
| `consecutive_mismatches` | integer o null | En un intent final, aquesta comprovació més les discrepàncies consecutives anteriors de la mateixa persona. |
| `attempts` | integer | El número de l'intent. |
| `consent` | object o null | `accepted_at`, `version` i `locale` de l'avís d'ubicació que la persona ha acceptat. |
| `warnings` | array | Les [advertències](https://docs.didit.me/ca/core-technology/location-verification/warnings-location-verification.md) del pas. |

## `geolocation_attempts[]`

Cada intent de cada pas d'ubicació, del més antic al més recent, amb els mateixos camps de mesura, incertesa, àrea i distància que `geolocation_checks[]` excepte `warnings`, a més de:

| Camp | Tipus | Descripció |
| - | - | - |
| `received_at` | datetime | Quan Didit ha rebut l'intent. |
| `created_at` | datetime | Quan s'ha registrat l'intent. |

S'exclouen els intents que un reenviament ha retirat.
L'enviament en brut del client i el repte no es retornen mai.

## Camps per a regles d'estat i branques

Les `status_rules` personalitzades i les regles de branca poden llegir aquests camps:
`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`) i `geolocation.consecutive_mismatches`.
Un valor absent només coincideix amb `is_empty`, de manera que una regla dissenyada per a un senyal de frau mai s'activa amb dades absents.

## Relacionat

* [Verificació d'ubicació](https://docs.didit.me/ca/core-technology/location-verification/overview.md) - com funciona el pas i quant costa.
* [Advertències de verificació d'ubicació](https://docs.didit.me/ca/core-technology/location-verification/warnings-location-verification.md) - tots els codis `LOCATION_*`.
* [Webhooks](https://docs.didit.me/ca/integration/webhooks.md) - `status.updated` inclou les llistes.
* [Models de dades - Objecte d'advertència](https://docs.didit.me/ca/reference/data-models.md#objecte-d’advertència) - l'estructura de cada entrada a `warnings[]`.


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