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

# API de verificació d'ubicació: geofencing i distància IP

> Didit confirma on és una persona durant la verificació: posició, geofencing, distància d'IP i document, i suplantació. $0.05 per comprovació.

El pas de verificació d'ubicació de Didit confirma on es troba una persona mentre es verifica, llegint la posició del dispositiu una vegada (navegador o SDK natiu) o la ubicació de la IP de la connexió, i comprovant-la amb les àrees permeses i bloquejades, la ubicació de la IP i l'adreça que consta als seus documents.
Als fluxos de treball i a l'API és la funcionalitat `GEOLOCATION`, la seva configuració són les claus `geolocation_*` i el seu resultat és `geolocation_checks[]` a la decisió de la sessió.

## Quan utilitzar-lo

* Tens llicència només per a certes jurisdiccions (joc, intermediació financera, préstecs) i has de demostrar que la persona es trobava dins d'una d'elles quan va fer la sol·licitud.
* Has de mantenir les persones fora de llocs bloquejats, com ara una regió sancionada o un estat on no prestes servei.
* Vols un senyal de frau addicional: una posició del dispositiu allunyada de la ubicació de la IP o de l'adreça del document d'identitat, una posició simulada, una VPN o un emulador.
* No necessites els moviments ni l'historial de la persona, només una lectura presa durant la sessió.

## Com funciona

**1. Avís i permís**

La persona veu per què es necessita la seva ubicació i que es llegeix una sola vegada, per a aquesta verificació.
A continuació, el seu navegador o telèfon sol·licita permís.
Didit registra l'avís que ha acceptat (versió, idioma i hora) com a `consent` al resultat.

**2. Una posició per intent**

El client manté la millor lectura fins que és prou precisa o s'esgota el temps d'espera per intent (per defecte 20 segons).
Cada intent conté un repte d'un sol ús que és vàlid durant 5 minuts i està vinculat a la sessió, de manera que un enviament capturat no es pot reproduir.

**3. Comprovacions**

Didit avalua la precisió, l'actualitat, els permisos d'ubicació aproximada, els senyals de suplantació, les àrees, la distància a la ubicació de la IP i a l'adreça d'un document, les troballes de VPN, proxy, Tor i emulador, i les comprovacions anteriors de la persona.

**4. Resultat**

Cada troballa genera una [advertència](https://docs.didit.me/ca/core-technology/location-verification/warnings-location-verification.md), l'acció configurada (`NO_ACTION`, `REVIEW` o `DECLINE`) de la qual estableix l'estat del pas.
L'acció més estricta és la que preval.

## Fonts de la posició

Pots triar d'on prové la posició amb `geolocation_position_source`.

| Valor | Què passa |
| - | - |
| `device_and_ip` | La posició del dispositiu es comprova respecte a la ubicació de la IP de la connexió des d'on s'ha enviat. |
| `device_only` | Només la posició del dispositiu. Mai es compara amb la ubicació de la IP. |
| `ip_only` | Mai es demana permís a la persona. En lloc d'això, s'avalua la ubicació de la IP de la connexió (nivell de ciutat, radi de 50 km), sense regles de precisió, d'actualitat ni de permís d'ubicació aproximada. |
| no definit | Es demana al dispositiu i la posició es compara amb la ubicació de la IP que ha observat el pas d'Anàlisi de dispositiu i IP de la sessió. Un node que actua sobre una troballa de VPN, proxy o Tor consulta la connexió i es comporta com `device_and_ip`. |

En un node que demana la informació al dispositiu, un intent sense posició s'avalua com el rebuig o l'error que és: la ubicació de la IP mai no la substitueix.

## Valors per defecte i límits de configuració

Totes les claus són opcionals.
La llista completa es troba a la [referència de configuració de funcionalitats del flux de treball](https://docs.didit.me/ca/management-api/workflows/feature-configs.md#verificació-de-la-ubicació).

| Configuració | Per defecte | Límits |
| - | - | - |
| `geolocation_max_accuracy_radius_m` | 250 m | De 10 a 50,000 m |
| `geolocation_max_age_seconds` | 120 s | De 5 a 3,600 s |
| `geolocation_timeout_seconds` | 20 s | De 5 a 120 s |
| `geolocation_max_attempts` | 3 | D'1 a 5 |
| `geolocation_accuracy_mode` | `precise` | `precise` o `approximate_allowed` |
| `geolocation_low_accuracy_behavior` | `ask_again` | `ask_again` o `fail` |
| `geolocation_allow_qr_handoff` | activat | activat o desactivat |
| `geolocation_allow_skip` | desactivat | activat o desactivat |
| `geolocation_refusal_path` | `retry_then_handoff` | `retry_then_handoff`, `continue_without_location`, `end_session` |
| `is_geolocation_geofencing_enabled` | desactivat | activat o desactivat |
| `geolocation_ip_distance_km` | 200 km | 0 o més, `null` desactiva la comparació |
| `geolocation_document_distance_km` | desactivat | 0 o més |
| `geolocation_travel_tolerance_enabled` | desactivat | àrea habitual de 10 a 500 km (per defecte 100), d'1 a 90 dies (per defecte 14) |
| `geolocation_consecutive_mismatch_count` | desactivat | De 2 a 10 |

### Presets

`geolocation_preset` defineix el valor per defecte de cada acció que deixis sense configurar.
`licensing` rebutja una posició que estigui fora de les àrees permeses, dins d'una àrea bloquejada, darrere d'una VPN o Tor, o en un emulador, i envia a revisió un proxy.
`fraud_screening` aplica les mateixes troballes però envia a revisió tot el que `licensing` rebutjaria.
Una acció que configuris explícitament sempre preval.

## Geofencing

Activa `is_geolocation_geofencing_enabled` i indica `geolocation_areas`.
Una àrea és un país sencer, regions (ISO 3166-2) d'un país, un cercle (d'1 a 500 km) o un polígon (de 3 a 200 punts).
Només és vàlida una posició dins d'una àrea permesa, i una àrea bloquejada sempre preval sobre una de permesa.
Una llista admet fins a 50 àrees i requereix com a mínim una àrea permesa.

Didit avalua tot el cercle de precisió de la posició, no només el seu centre:

* Un cercle completament fora de qualsevol àrea permesa és `LOCATION_OUTSIDE_GEOFENCE`.
* Un cercle que travessa un límit decisiu per a la resposta és `LOCATION_GEOFENCE_UNDETERMINED`, mai "fora".
* Un cercle completament dins d'una àrea bloquejada és `LOCATION_IN_BLOCKED_AREA`, i es genera a més del veredicte de l'àrea permesa.

Un país o regió acaba on comencen altres terres, no a la seva línia de costa.
A la persona se li mostra on està disponible el servei, però mai quines àrees estan bloquejades.
Les regles d'àrees també funcionen en un pas `ip_only`, avaluades a partir de la ubicació de la IP.
La configuració anterior `geolocation_geofencing_by_country` continua funcionant, però no es pot combinar amb `geolocation_areas`.

## Comprovacions de distància

| Comprovació | Mesurada entre | Configuració |
| - | - | - |
| Distància IP | La posició del dispositiu i la ubicació de la IP, després de restar ambdós radis d'incertesa (0 significa que se superposen). | `geolocation_ip_distance_km`, `geolocation_ip_distance_action` |
| Distància del document | La posició i una adreça, geocodificada de forma aproximada, per la qual cosa és un senyal feble. | `geolocation_document_distance_km`, `geolocation_document_distance_basis`, `geolocation_document_distance_action` |
| Ratxa | Les comprovacions anteriors de la persona (mateix `vendor_data`) que estaven fora d'una àrea permesa, en una àrea bloquejada o massa lluny de l'adreça. | `geolocation_consecutive_mismatch_count` |

`geolocation_document_distance_basis` selecciona l'adreça: `document` (el document d'identitat, després el comprovant de domicili), `proof_of_address` o `declared` (`expected_details.address` de la creació de la sessió).
Amb `geolocation_travel_tolerance_enabled`, una persona vista a prop de la seva adreça en els darrers `geolocation_travel_max_days` dies no es marca per estar lluny d'ella ara.
La tolerància de viatge mai no excusa una VPN, una posició suplantada, una àrea bloquejada o una posició fora de les àrees permeses.

## Senyals de suplantació i integritat

* **Proveïdors simulats**: Android i iOS informen quan una posició és simulada en comptes de mesurada.
* **Atestació del dispositiu**: els SDKs natius poden adjuntar una atestació del dispositiu. Una atestació fallida sempre provoca un rebuig. L'absència d'atestació es registra i, per defecte, no s'hi aplica cap acció. Els navegadors no poden fer atestacions i es registren com a `unsupported`, no pas com a fallada.
* **VPN, proxy i Tor**: detectats a la connexió que ha compartit la ubicació. Quan la teva acció per a un d'ells no és `NO_ACTION`, es demana a la persona que el desactivi i torni a comprovar-ho mentre quedin intents.
* **Emuladors**: notificats només per aplicacions natives. Un emulador finalitza el pas en aquest intent perquè cap reintent no canviarà el dispositiu.
* **Reproducció**: un repte presentat en una altra sessió sempre es rebutja.

## Resultats

L'intent acceptat del pas té un `outcome`:

| Resultat | Significat |
| - | - |
| `verified` | Una posició que ha complert totes les regles. |
| `low_accuracy` / `accuracy_undetermined` | El radi era més ampli que el límit, o el dispositiu no en va indicar cap. |
| `stale` | La posició era més antiga que `geolocation_max_age_seconds`. |
| `approximate` | Només es va concedir una posició aproximada quan se'n requeria una de precisa. |
| `denied` / `restricted` | La persona ho va rebutjar, o el sistema bloqueja la ubicació. |
| `unavailable` / `timeout` | El dispositiu no va trobar cap posició, o no ho va fer a temps. |
| `mock_detected` | El sistema va informar que la posició era simulada. |
| `outside_geofence` / `in_blocked_area` | La posició està fora de totes les àrees permeses, o en una de bloquejada. |
| `anonymizer_detected` | S'ha detectat una VPN, un proxy, un node de sortida de Tor o un emulador i el teu flux de treball hi actua en conseqüència. |
| `skipped` | La persona ha continuat sense compartir. |
| `replay_rejected` | El repte pertanyia a una altra sessió. |
| `unsupported_client` | L'aplicació o l'SDK és massa antic per mostrar el pas. |

Mentre quedin intents, un resultat que indiqui un radi massa ampli, una posició antiga o aproximada, un rebuig o un problema d'àrea demana a la persona que ho torni a provar, i només l'últim intent genera advertències.
Una posició simulada, o un emulador sobre el qual actuï el teu flux de treball, finalitza el pas en l'intent que l'ha informat.

## Experiència de la persona

### Consentiment i permís

No es llegeix res abans que la persona accepti l'avís i respongui a la sol·licitud del sistema.
L'avís indica que la ubicació es llegeix un sol cop, per a aquesta verificació, i no és un registre dels seus moviments.
Una persona que la rebutja es tracta segons `geolocation_refusal_path`:

* `retry_then_handoff` torna a demanar-ho mentre quedin intents i després ofereix continuar en un telèfon.
* `continue_without_location` ofereix continuar sense ubicació, i registra el rebuig com a resultat.
* `end_session` finalitza el pas i la sessió al primer rebuig. Requereix que `geolocation_permission_denied_action` sigui `REVIEW` o `DECLINE`, i la sessió mai no s'aprova.

Amb `geolocation_allow_skip` activat, la persona pot continuar sense ubicació en qualsevol moment, i el pas es valora segons `geolocation_unavailable_action`.

### Navegador

El flux allotjat demana la posició al navegador i mostra ajuda pas a pas per a Chrome i Safari quan la ubicació està desactivada per al lloc web.
Un navegador no pot distingir una concessió precisa d'una d'aproximada, de manera que els resultats web mai no generen `LOCATION_APPROXIMATE_ONLY`, i mai no informa d'un proveïdor simulat, un emulador o una atestació.
Un ordinador no pot compartir una posició precisa, per la qual cosa el flux ofereix un codi QR que continua la mateixa verificació al telèfon de la persona (`geolocation_allow_qr_handoff`, activat per defecte), i l'ordinador avança automàticament quan el telèfon acaba.
Quan incrustis el flux en un iframe, inclou `geolocation` a l'atribut `allow`, consulta [iframe en context](https://docs.didit.me/ca/integration/web-sdks/incontext-iframe.md).
Una pàgina que bloqueja la política de permisos de geolocalització es tracta com una decisió del lloc web, no pas com un rebuig de la persona.

### SDKs natius

Els SDKs per a iOS i Android ho sol·liciten al sistema operatiu i poden adjuntar l'atestació del dispositiu i indicadors d'ubicació simulada.
A l'iOS, afegeix `NSLocationWhenInUseUsageDescription` a `Info.plist`, i a l'Android l'SDK declara `ACCESS_FINE_LOCATION` i `ACCESS_COARSE_LOCATION` i ho demana en temps d'execució només quan un flux de treball té aquest pas.
Consulta els [SDKs natius](https://docs.didit.me/ca/integration/native-sdks/overview.md).
Una concessió aproximada a iOS o Android genera `LOCATION_APPROXIMATE_ONLY` tret que `geolocation_accuracy_mode` sigui `approximate_allowed`.
Una versió de l'aplicació o de l'SDK anterior a aquest pas es tanca amb `unsupported_client` en comptes de deixar la sessió bloquejada.

## Què retorna la decisió

La [decisió de la sessió](https://docs.didit.me/ca/sessions-api/retrieve-session.md) i el webhook `status.updated` contenen dues llistes:

* `geolocation_checks[]`: un element per pas de Location, que conté l'intent acceptat d'aquest pas, amb els seus `warnings`.
* `geolocation_attempts[]`: cada intent de cada pas de Location, començant pel més antic.

Consulta l'[informe de verificació d'ubicació](https://docs.didit.me/ca/core-technology/location-verification/report-location-verification.md) per veure tots els camps.
Les coordenades, la precisió, la ciutat i el país són dades personals de l'usuari final, de manera que els atributs de resposta d'un flux de treball poden restringir quins camps de `geolocation_checks` retorna la teva decisió.

## Preus

La verificació d'ubicació costa **\$0.05 per comprovació**, i no forma part del pla gratuït.
Didit cobra un cop per pas de Location en una sessió, sigui quin sigui el seu resultat, perquè la comprovació s'ha executat i ha retornat una resposta.
Els reintents dins del mateix pas són gratuïts.
Un reenviament que completa el pas una altra vegada es cobra de nou.

## Sandbox

Les sessions de sandbox executen el mateix pas en el mateix flux allotjat, i el dispositiu o navegador continua informant d'una posició real.
Les sessions de sandbox mai no arriben al servei de cerca d'IP, de manera que la comparació d'IP només utilitza el que la sessió ja conté.
L'ús es registra amb un preu de 0, de manera que una sessió de sandbox mai no es cobra.
No hi ha entrades màgiques per a aquest pas.

## Relacionat

* [Informe de verificació d'ubicació](https://docs.didit.me/ca/core-technology/location-verification/report-location-verification.md) - tots els camps de `geolocation_checks[]` i `geolocation_attempts[]`.
* [Advertències de verificació d'ubicació](https://docs.didit.me/ca/core-technology/location-verification/warnings-location-verification.md) - cada codi `LOCATION_*` i la seva acció.
* [Configuració de funcionalitats del flux de treball](https://docs.didit.me/ca/management-api/workflows/feature-configs.md#verificació-de-la-ubicació) - cada clau `geolocation_*`.
* [Anàlisi de dispositiu i IP](https://docs.didit.me/ca/core-technology/ip-analysis/overview.md) - geolocalització per IP i comprovacions de VPN per a la sessió.


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