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

# Avertissements de localisation et codes LOCATION_

> Avertissements LOCATION_ de Didit : géorepérage, précision, usurpation, VPN, distance et autorisations, avec déclencheur et action par défaut.

## Vue d'ensemble

Les avertissements du rapport de localisation signalent chaque condition constatée par Didit lors d'une étape de vérification de localisation.
Ils figurent dans le tableau `warnings[]` de chaque élément de `geolocation_checks[]` (voir le [rapport de localisation](https://docs.didit.me/fr/core-technology/location-verification/report-location-verification.md)).

Chaque avertissement comprend trois niveaux :

1. **Le code `risk`** : un identifiant stable sur lequel vous pouvez effectuer des correspondances, commençant toujours par `LOCATION_`.
2. **Le `log_type`** : `information`, `warning` ou `error`. Pour les risques configurables, il suit l'action configurée : `NO_ACTION` donne `information`, `REVIEW` donne `warning`, `DECLINE` donne `error`.
3. **L'impact décisionnel** : l'action la plus stricte parmi les avertissements détermine le `status` de l'étape. `REVIEW` donne `In Review`, `DECLINE` donne `Declined`, et `NO_ACTION` le laisse inchangé.

L'incertitude et le refus ont pour valeur par défaut `REVIEW`, jamais `DECLINE` : une autorisation refusée, une position en intérieur ou un large rayon ne constituent pas une preuve de fraude.
Les avertissements concernant la précision, la fraîcheur, les zones, la distance et les anonymiseurs ne sont émis que lors de la dernière tentative, de sorte qu'une personne qui réussit au deuxième essai ne conserve aucun avertissement.
Des `status_rules` personnalisées sur le nœud peuvent maintenir ou augmenter le statut, mais jamais le diminuer.

## Conditions de refus automatique

Celles-ci refusent systématiquement l'étape, avec `log_type: "error"`, et n'ont pas de clé d'action.

| Risque | Déclencheur |
| - | - |
| `LOCATION_REPLAY_DETECTED` | La soumission comportait un challenge appartenant à une autre session. Chaque tentative reçoit un challenge à usage unique lié à sa session ; le présenter ailleurs constitue donc un rejeu. |
| `LOCATION_INTEGRITY_FAILED` | Une attestation d'appareil accompagnait la position et a échoué à la vérification. |

## Avertissements générés

Par défaut, il s'agit des actions d'une étape sans `geolocation_preset`.
Sous `licensing`, `LOCATION_VPN_DETECTED`, `LOCATION_TOR_DETECTED` et `LOCATION_EMULATOR_DETECTED` adoptent par défaut `DECLINE` et `LOCATION_PROXY_DETECTED` adopte `REVIEW`.
Sous `fraud_screening`, chaque valeur par défaut valant `DECLINE` devient `REVIEW`, et ces quatre constats d'anonymisation deviennent `REVIEW`.
Une action que vous définissez explicitement prévaut toujours.

### Autorisation et disponibilité

| Risque | Déclencheur | Clé de configuration | Par défaut |
| - | - | - | - |
| `LOCATION_PERMISSION_DENIED` | La personne a refusé ou fermé l'invite de localisation à chaque tentative autorisée. Un choix, pas une preuve de fraude. | `geolocation_permission_denied_action` | `REVIEW` |
| `LOCATION_RESTRICTED` | Le système d'exploitation a refusé avant que la personne ne puisse répondre : les services de localisation sont désactivés au niveau de l'appareil, ou une politique de gestion des appareils ou de contrôle parental les bloque. | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_UNAVAILABLE` | L'appareil a accepté la requête mais son système de positionnement n'a renvoyé aucune position à chaque tentative autorisée. Courant en intérieur et sous terre. | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_TIMEOUT` | Aucune position n'est parvenue dans le délai de `geolocation_timeout_seconds` lors de toutes les tentatives autorisées. | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_SKIPPED` | Le workflow autorise l'omission et la personne a poursuivi sans partager de localisation. | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_UNSUPPORTED_CLIENT` | La session a atteint une version d'application ou de SDK qui n'implémente pas l'étape. Didit a clôturé l'étape plutôt que de laisser la session en attente. Mettez à niveau le SDK. | `geolocation_unavailable_action` | `REVIEW` |

### Précision et récence

| Risque | Déclencheur | Clé de configuration | Par défaut |
| - | - | - | - |
| `LOCATION_LOW_ACCURACY` | La meilleure position avait un rayon plus large que `geolocation_max_accuracy_radius_m`. Une mesure de confiance, pas d'honnêteté. | `geolocation_low_accuracy_action` | `REVIEW` |
| `LOCATION_ACCURACY_UNDETERMINED` | La position n'indiquait aucun rayon lors de toutes les tentatives autorisées, rien n'indique donc qu'elle respecte la limite. Elle n'est jamais considérée comme l'ayant respectée. | `geolocation_low_accuracy_action` | `REVIEW` |
| `LOCATION_STALE_FIX` | La position a été mesurée plus de `geolocation_max_age_seconds` avant que Didit ne la reçoive. | `geolocation_stale_fix_action` | `REVIEW` |
| `LOCATION_APPROXIMATE_ONLY` | Une localisation précise était requise et la personne a autorisé une localisation approximative (précision réduite sur iOS, « Approximative » sur Android). Jamais émis sur le Web, qui ne peut pas le déterminer. | `geolocation_approximate_action` | `REVIEW` |
| `LOCATION_CLOCK_SKEW` | L'appareil a indiqué avoir mesuré la position dans le futur par rapport à l'horloge de Didit. Informatif uniquement : la récence utilise l'heure de réception par Didit. | aucune | information |

### Usurpation et intégrité

| Risque | Déclencheur | Clé de configuration | Par défaut |
| - | - | - | - |
| `LOCATION_MOCK_PROVIDER_DETECTED` | Android a signalé que la position provenait d'un fournisseur de localisation fictive. Les outils de test et d'accessibilité le définissent également, l'action est donc configurable. | `geolocation_mock_location_action` | `REVIEW` |
| `LOCATION_SIMULATED_BY_SOFTWARE` | iOS a signalé que la position a été simulée par un logiciel. | `geolocation_mock_location_action` | `REVIEW` |
| `LOCATION_INTEGRITY_MISSING` | Une application native a envoyé une position sans attestation d'appareil. Le Web est enregistré comme non pris en charge, et non comme manquant. | `geolocation_integrity_missing_action` | `NO_ACTION` |
| `LOCATION_EMULATOR_DETECTED` | L'application a signalé s'exécuter sur un émulateur ou une machine virtuelle. Les navigateurs ne peuvent pas le signaler. À moins que l'action ne soit `NO_ACTION`, elle met fin à l'étape lors de cette tentative. | `geolocation_emulator_action` | `NO_ACTION` |
| `LOCATION_VPN_DETECTED` | La connexion qui a transmis la localisation passe par un VPN commercial. À moins que l'action ne soit `NO_ACTION`, il est demandé à la personne de le désactiver et de réessayer. | `geolocation_vpn_action` | `NO_ACTION` |
| `LOCATION_PROXY_DETECTED` | La connexion passe par un proxy ouvert, anonyme ou relais privé. | `geolocation_proxy_action` | `NO_ACTION` |
| `LOCATION_TOR_DETECTED` | La connexion est un nœud de sortie Tor. | `geolocation_tor_action` | `NO_ACTION` |

### Zones

| Risque | Déclencheur | Clé de configuration | Par défaut |
| - | - | - | - |
| `LOCATION_OUTSIDE_GEOFENCE` | La position et l'ensemble de son cercle de précision se situent en dehors de toute zone autorisée. | `geolocation_geofencing_action` | `DECLINE` |
| `LOCATION_GEOFENCE_UNDETERMINED` | Le cercle de précision atteint une limite déterminante pour la décision, ou la position ne correspond à aucun pays. L'incertitude n'est jamais signalée comme étant à l'extérieur. | `geolocation_geofence_undetermined_action` | `REVIEW` |
| `LOCATION_IN_BLOCKED_AREA` | La position et l'ensemble de son cercle de précision se situent à l'intérieur d'une zone bloquée. Ce résultat s'ajoute au verdict de zone autorisée, sans jamais s'y substituer, et l'action la plus stricte l'emporte. | `geolocation_blocked_area_action` | `DECLINE` |

### Distance et historique

| Risque | Déclencheur | Clé de configuration | Par défaut |
| - | - | - | - |
| `LOCATION_IP_DISTANCE_MISMATCH` | La position de l'appareil et la localisation de l'IP sont séparées par une distance supérieure à `geolocation_ip_distance_km`, après soustraction des deux rayons. Un VPN, un proxy d'entreprise ou la sortie centrale d'un opérateur téléphonique peuvent générer cela légitimement. | `geolocation_ip_distance_action` | `REVIEW` |
| `LOCATION_DOCUMENT_DISTANCE_MISMATCH` | La position se trouve à plus de `geolocation_document_distance_km` de l'adresse du document. Un signal faible, car les adresses sont géocodées de manière approximative et les personnes se déplacent. | `geolocation_document_distance_action` | `REVIEW` |
| `LOCATION_CONSECUTIVE_MISMATCHES` | Cette vérification et les vérifications antérieures de la même personne (même `vendor_data`) étaient hors d'une zone autorisée, dans une zone bloquée ou trop éloignées de l'adresse au moins `geolocation_consecutive_mismatch_count` fois de suite. | `geolocation_consecutive_mismatch_action` | `REVIEW` |

## Ce que voit la personne

Certains constats ne sont jamais expliqués à la personne, car nommer le signal indiquerait au fraudeur ce qu'il doit modifier.
`LOCATION_EMULATOR_DETECTED`, `LOCATION_MOCK_PROVIDER_DETECTED`, `LOCATION_SIMULATED_BY_SOFTWARE`, `LOCATION_REPLAY_DETECTED`, `LOCATION_INTEGRITY_FAILED` et `LOCATION_IP_DISTANCE_MISMATCH` font partie de ce groupe : si un réviseur renvoie la vérification, la personne voit un motif générique, tandis que le payload de décision et vos webhooks conservent l'avertissement complet.
Un VPN n'est présenté à la personne que sous la forme d'une demande de désactiver tout VPN et de réessayer, et une zone bloquée n'est présentée que sous la forme de la liste des lieux où le service est disponible.

## Exemple

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

## Types d'avertissements

Chaque risque se voit attribuer une gravité en fonction de la configuration de votre application. Les trois niveaux de gravité sont :

## Pages connexes

* [Rapport de vérification de localisation](https://docs.didit.me/fr/core-technology/location-verification/report-location-verification.md) - les champs situés aux côtés de `warnings[]`.
* [Vérification de localisation](https://docs.didit.me/fr/core-technology/location-verification/overview.md) - fonctionnement de l'étape.
* [Configurations des fonctionnalités de workflow](https://docs.didit.me/fr/management-api/workflows/feature-configs.md#vérification-de-la-localisation) - toutes les clés d'action.
* [Modèles de données - Objet Warning](https://docs.didit.me/fr/reference/data-models.md#objet-d’avertissement) - la structure de chaque entrée de `warnings[]`.


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