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

# Advertencias de ubicación y códigos LOCATION_

> Advertencias LOCATION_ de Didit al verificar la ubicación: geovalla, precisión, suplantación, VPN, distancia y permisos, con disparador y acción.

## Descripción general

Las advertencias del informe de ubicación señalan cada condición que Didit encontró en un paso de verificación de ubicación.
Aparecen en el array `warnings[]` de cada elemento de `geolocation_checks[]` (consulta el [informe de ubicación](https://docs.didit.me/es/core-technology/location-verification/report-location-verification.md)).

Cada advertencia tiene tres capas:

1. **El código `risk`**: un identificador estable con el que puedes hacer coincidencias; todos empiezan por `LOCATION_`.
2. **El `log_type`**: `information`, `warning` o `error`. En los riesgos configurables sigue la acción configurada: `NO_ACTION` da `information`, `REVIEW` da `warning` y `DECLINE` da `error`.
3. **El impacto en la decisión**: la acción más fuerte entre las advertencias establece el `status` del paso. `REVIEW` da `In Review`, `DECLINE` da `Declined` y `NO_ACTION` lo deja sin cambios.

La incertidumbre y la denegación tienen `REVIEW` como valor predeterminado, nunca `DECLINE`: un permiso denegado, una posición en interiores o un radio amplio no son prueba de fraude.
Las advertencias sobre precisión, antigüedad, zonas, distancia y anonimizadores solo se generan en el último intento, de modo que una persona que lo consigue en el segundo intento no arrastra ninguna advertencia.
Las `status_rules` personalizadas del nodo pueden mantener o elevar el estado, pero nunca reducirlo.

## Condiciones de rechazo automático

Estas condiciones siempre rechazan el paso, con `log_type: "error"`, y no tienen clave de acción.

| Riesgo | Disparador |
| - | - |
| `LOCATION_REPLAY_DETECTED` | El envío incluía un desafío que pertenece a otra sesión. Cada intento recibe un único desafío de un solo uso vinculado a su sesión, por lo que presentarlo en otra sesión es un ataque de repetición. |
| `LOCATION_INTEGRITY_FAILED` | La posición venía acompañada de una atestación del dispositivo que no superó la verificación. |

## Advertencias generadas

Los valores predeterminados son las acciones de un paso sin `geolocation_preset`.
Con `licensing`, `LOCATION_VPN_DETECTED`, `LOCATION_TOR_DETECTED` y `LOCATION_EMULATOR_DETECTED` tienen `DECLINE` como valor predeterminado, y `LOCATION_PROXY_DETECTED` tiene `REVIEW`.
Con `fraud_screening`, todo valor predeterminado `DECLINE` pasa a ser `REVIEW`, y esos cuatro hallazgos de anonimización pasan a ser `REVIEW`.
Una acción que configures explícitamente siempre prevalece.

### Permiso y disponibilidad

| Riesgo | Disparador | Clave de configuración | Predeterminado |
| - | - | - | - |
| `LOCATION_PERMISSION_DENIED` | La persona rechazó o cerró la solicitud de ubicación en todos los intentos permitidos. Es una elección, no una prueba de fraude. | `geolocation_permission_denied_action` | `REVIEW` |
| `LOCATION_RESTRICTED` | El sistema operativo denegó la solicitud antes de que la persona pudiera responder: los servicios de ubicación están desactivados en todo el dispositivo, o una política de gestión de dispositivos o de control parental los bloquea. | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_UNAVAILABLE` | El dispositivo aceptó la solicitud, pero su sistema de posicionamiento no devolvió ninguna posición en todos los intentos permitidos. Es habitual en interiores y bajo tierra. | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_TIMEOUT` | No llegó ninguna posición dentro de `geolocation_timeout_seconds` en ninguno de los intentos permitidos. | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_SKIPPED` | El flujo permite omitir el paso y la persona continuó sin compartir una ubicación. | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_UNSUPPORTED_CLIENT` | La sesión llegó a una versión de la app o del SDK que no implementa el paso. Didit cerró el paso en lugar de dejar la sesión en espera. Actualiza el SDK. | `geolocation_unavailable_action` | `REVIEW` |

### Precisión y vigencia

| Riesgo | Disparador | Clave de configuración | Predeterminado |
| - | - | - | - |
| `LOCATION_LOW_ACCURACY` | La mejor posición tenía un radio mayor que `geolocation_max_accuracy_radius_m`. Mide la confianza, no la honestidad. | `geolocation_low_accuracy_action` | `REVIEW` |
| `LOCATION_ACCURACY_UNDETERMINED` | La posición no incluía radio en ninguno de los intentos permitidos, por lo que nada demuestra que cumpla el límite. Nunca se considera que lo haya cumplido. | `geolocation_low_accuracy_action` | `REVIEW` |
| `LOCATION_STALE_FIX` | La posición se midió más de `geolocation_max_age_seconds` antes de que Didit la recibiera. | `geolocation_stale_fix_action` | `REVIEW` |
| `LOCATION_APPROXIMATE_ONLY` | Se requería una ubicación precisa y la persona concedió una aproximada (precisión reducida en iOS, "Aproximada" en Android). Nunca se genera en la web, que no puede distinguirlo. | `geolocation_approximate_action` | `REVIEW` |
| `LOCATION_CLOCK_SKEW` | El dispositivo indicó que midió la posición en el futuro respecto del reloj de Didit. Solo informativo: la vigencia usa la hora de recepción de Didit. | ninguna | información |

### Suplantación e integridad

| Riesgo | Disparador | Clave de configuración | Predeterminado |
| - | - | - | - |
| `LOCATION_MOCK_PROVIDER_DETECTED` | Android informó que la posición provenía de un proveedor de ubicación simulada. Las herramientas de pruebas y de accesibilidad también lo activan, por lo que la acción es configurable. | `geolocation_mock_location_action` | `REVIEW` |
| `LOCATION_SIMULATED_BY_SOFTWARE` | iOS informó que la posición fue simulada por software. | `geolocation_mock_location_action` | `REVIEW` |
| `LOCATION_INTEGRITY_MISSING` | Una app nativa envió una posición sin atestación del dispositivo. En la web se registra como no compatible, no como ausente. | `geolocation_integrity_missing_action` | `NO_ACTION` |
| `LOCATION_EMULATOR_DETECTED` | La app informó que se ejecuta en un emulador o una máquina virtual. Los navegadores no pueden informarlo. Salvo que la acción sea `NO_ACTION`, finaliza el paso en ese intento. | `geolocation_emulator_action` | `NO_ACTION` |
| `LOCATION_VPN_DETECTED` | La conexión que compartió la ubicación sale a través de una VPN comercial. Salvo que la acción sea `NO_ACTION`, se le pide a la persona que la desactive y vuelva a intentarlo. | `geolocation_vpn_action` | `NO_ACTION` |
| `LOCATION_PROXY_DETECTED` | La conexión pasa por un proxy abierto, anónimo o de retransmisión privada. | `geolocation_proxy_action` | `NO_ACTION` |
| `LOCATION_TOR_DETECTED` | La conexión es un nodo de salida de Tor. | `geolocation_tor_action` | `NO_ACTION` |

### Áreas

| Riesgo | Disparador | Clave de configuración | Predeterminado |
| - | - | - | - |
| `LOCATION_OUTSIDE_GEOFENCE` | La posición y todo su círculo de precisión están fuera de todas las áreas permitidas. | `geolocation_geofencing_action` | `DECLINE` |
| `LOCATION_GEOFENCE_UNDETERMINED` | El círculo de precisión alcanza un límite que determina la respuesta, o la posición no corresponde a ningún país. La incertidumbre nunca se informa como fuera. | `geolocation_geofence_undetermined_action` | `REVIEW` |
| `LOCATION_IN_BLOCKED_AREA` | La posición y todo su círculo de precisión están dentro de un área bloqueada. Se suma al veredicto de áreas permitidas, nunca lo sustituye, y decide la acción más estricta. | `geolocation_blocked_area_action` | `DECLINE` |

### Distancia e historial

| Riesgo | Disparador | Clave de configuración | Predeterminado |
| - | - | - | - |
| `LOCATION_IP_DISTANCE_MISMATCH` | La posición del dispositivo y la ubicación de la IP están más alejadas que `geolocation_ip_distance_km`, después de restar ambos radios. Una VPN, un proxy corporativo o la salida central de un operador lo producen de forma legítima. | `geolocation_ip_distance_action` | `REVIEW` |
| `LOCATION_DOCUMENT_DISTANCE_MISMATCH` | La posición está a más de `geolocation_document_distance_km` de la dirección del documento. Es una señal débil, porque las direcciones se geocodifican de forma aproximada y las personas viajan. | `geolocation_document_distance_action` | `REVIEW` |
| `LOCATION_CONSECUTIVE_MISMATCHES` | Esta comprobación y las comprobaciones anteriores de la misma persona (mismo `vendor_data`) estuvieron fuera de un área permitida, en un área bloqueada o demasiado lejos de la dirección al menos `geolocation_consecutive_mismatch_count` veces seguidas. | `geolocation_consecutive_mismatch_action` | `REVIEW` |

## Qué ve la persona

Algunos hallazgos nunca se le explican a la persona, porque nombrar la señal le indica a un estafador qué debe cambiar.
`LOCATION_EMULATOR_DETECTED`, `LOCATION_MOCK_PROVIDER_DETECTED`, `LOCATION_SIMULATED_BY_SOFTWARE`, `LOCATION_REPLAY_DETECTED`, `LOCATION_INTEGRITY_FAILED` y `LOCATION_IP_DISTANCE_MISMATCH` forman parte de ese grupo: si un revisor devuelve la verificación, la persona lee un motivo genérico, mientras que el payload de la decisión y tus webhooks conservan la advertencia completa.
Una VPN solo se le muestra a la persona como una solicitud para que desactive cualquier VPN y vuelva a intentarlo, y una zona bloqueada solo se muestra como la lista de lugares donde el servicio está disponible.

## Ejemplo

```json theme={null}
{
  "risk": "LOCATION_LOW_ACCURACY",
  "log_type": "warning",
  "short_description": "Device location accuracy below the configured limit",
  "additional_data": {
    "accuracy_m": 1200.0,
    "accuracy_confidence": "p95",
    "max_accuracy_radius_m": 250
  },
  "node_id": "geolocation_1"
}
```

## Tipos de advertencia

A cada riesgo se le asigna una gravedad según la configuración de tu aplicación. Los tres niveles de gravedad son:

## Relacionado

* [Informe de verificación de ubicación](https://docs.didit.me/es/core-technology/location-verification/report-location-verification.md): los campos junto a `warnings[]`.
* [Verificación de ubicación](https://docs.didit.me/es/core-technology/location-verification/overview.md): cómo funciona el paso.
* [Configuración de funciones del flujo](https://docs.didit.me/es/management-api/workflows/feature-configs.md#verificación-de-ubicación): cada clave de acción.
* [Modelos de datos: objeto Warning](https://docs.didit.me/es/reference/data-models.md#objeto-de-advertencia): la estructura de cada entrada de `warnings[]`.


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