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

# Enrichissement IP des transactions : pays, ASN, VPN

> Didit enrichit chaque transaction de données IP : pays, ASN, VPN, Tor, data center, opérateur. 1,000 par mois inclus, puis $0.001 chacun.

Chaque transaction qui comporte une adresse IP d'appareil est enrichie côté serveur, en temps réel, avant que les règles ne l'évaluent. L'enrichissement ajoute le pays, la ville, les indicateurs VPN, Tor et centre de données, l'ASN et l'opérateur, qui sont tous utilisables comme conditions de règle.

## Quand l'enrichissement s'exécute

Intégré à la création de la transaction :

1. Vous envoyez `POST /v3/transactions/` avec `subject.device_context.network_context.ip_address` (ou l'adresse IP de l'appareil de n'importe quelle partie).
2. Didit recherche l'IP dans un cache en mémoire (TTL de 24 heures).
3. Si elle n'est pas en cache, Didit consulte la table d'enrichissement IP partagée (fraîcheur d'environ 30 jours).
4. Si la donnée est périmée ou absente, Didit résout l'IP via son pipeline d'enrichissement, avec basculement entre plusieurs fournisseurs.
5. Les champs enrichis sont écrits dans l'enregistrement de la transaction et mis à disposition des règles.

L'enrichissement est **intégré** : il se termine avant l'exécution des règles, mais il **n'est pas bloquant en cas d'échec**. Si l'enrichissement ne peut pas aboutir, la transaction est tout de même traitée, et l'IP apparaît simplement sans données d'enrichissement.

## Champs enrichis

| Champ | Description |
| - | - |
| `ip_country` | Nom du pays |
| `ip_country_code` | Code ISO 3166-1 alpha-2 lorsqu'il est résolu par Didit (une valeur que vous avez envoyée est conservée telle quelle) ; les conditions de règle normalisent les deux formes |
| `ip_state` | Subdivision (état, région) |
| `ip_city` | Nom de la ville |
| `latitude`, `longitude` | Coordonnées géographiques |
| `isp` | Nom du fournisseur d'accès à Internet |
| `organization` | Nom de l'organisation d'enregistrement |
| `is_vpn_or_tor` | Booléen : l'IP est un nœud de sortie VPN ou Tor connu |
| `is_data_center` | Booléen : l'IP appartient à une plage d'hébergement ou de centre de données |
| `time_zone` | Fuseau horaire IANA (par exemple `America/New_York`) |
| `time_zone_offset` | Décalage par rapport à UTC |
| `asn_number` | Numéro de système autonome (ASN) |
| `asn_organization` | Organisation d'enregistrement de l'ASN |
| `connection_type` | `mobile`, `broadband`, `dialup`, `corporate`, ... |
| `carrier` | Opérateur mobile (pour les IP mobiles) |
| `proxy_type` | `VPN`, `TOR`, `PUBLIC_PROXY`, ou null |

## Utiliser les champs enrichis dans les règles

Chacun des champs enrichis peut servir de [condition de règle](https://docs.didit.me/fr/transaction-monitoring/rules.md). Voici les schémas courants :

**Juridiction à haut risque selon l'IP**

```
condition: applicant.ip_country_code IN ['IRN', 'PRK', 'SYR']
action: add_score(35), add_tags(['high_risk_ip_country'])
```

**Usage de VPN ou Tor**

```
condition: applicant.is_vpn_or_tor == true
action: change_status('IN_REVIEW'), add_tags(['anonymization'])
```

**Centre de données ou origine non résidentielle**

```
condition: applicant.is_data_center == true AND amount > 10000
action: add_score(30)
```

**Pays de l'IP différent du pays KYC**

```
condition: applicant.ip_country_code != applicant.country_code
action: add_score(15), add_tags(['geo_mismatch'])
```

## Couches de cache

| Couche | TTL | Rôle |
| - | - | - |
| Cache en mémoire | 24 heures | Recherche en moins d'une milliseconde pour les IP fréquentes |
| Table d'enrichissement IP partagée | environ 30 jours | Partagée entre les instances ; moins coûteuse qu'une nouvelle résolution |
| Pipeline d'enrichissement | n/a | Données à jour lorsque aucune autre source ne les possède |

Les résultats trouvés dans les deux premières couches ne vous coûtent rien de plus. Les résolutions à jour peuvent être facturées : consultez votre console de facturation.

## Comportement en cas d'échec

* La création de la transaction **n'échoue jamais** parce que l'enrichissement a échoué.
* Les champs d'enrichissement manquants ne correspondent simplement à aucune condition de règle qui les référence.
* Les alertes concernant un enrichissement bloqué sont remontées à votre équipe d'exploitation via la surveillance interne ; cela n'a aucun impact côté client.

## Filtrage de validité

Les IP non routables sont ignorées avant l'enrichissement :

* Privées (10/8, 172.16/12, 192.168/16)
* Boucle locale (127/8)
* Liaison locale (169.254/16)
* Adresses de multidiffusion et adresses non spécifiées

Ce filtrage permet d'économiser le quota des fournisseurs et évite des données d'enrichissement incohérentes.

## Consulter l'enrichissement d'une transaction

**Via l'API.** Il n'existe pas de bloc d'enrichissement distinct. Les champs enrichis sont écrits dans l'objet `device.network_context` de la partie elle-même, à côté de l'`ip_address` que vous avez envoyé, dans l'entrée correspondante du tableau `parties` :

```json theme={null}
"parties": [
  {
    "role": "APPLICANT",
    "vendor_data": "user-42",
    "device": {
      "network_context": {
        "ip_address": "203.0.113.5",
        "ip_country": "United States",
        "ip_country_code": "US",
        "ip_state": "California",
        "ip_city": "San Francisco",
        "is_vpn_or_tor": false,
        "is_data_center": false,
        "asn_number": 64496,
        "asn_organization": "Example ISP",
        "proxy_type": null
      }
    }
  }
]
```

Les champs que vous avez fournis dans la requête sont conservés ; l'enrichissement ne remplit que les clés que vous avez omises, et les clés pour lesquelles le résolveur a renvoyé une valeur vide sont omises. Consultez le [schéma de réponse](https://docs.didit.me/fr/transaction-monitoring/response-schema.md#device) pour la structure complète de `device`.

**Dans la console.** La page de détail de la transaction affiche l'enrichissement IP dans l'onglet **IP et appareil**, avec un repère sur la carte.

## Considérations relatives à la confidentialité

* Les adresses IP brutes sont stockées avec la transaction.
* Les données d'enrichissement sont conservées dans une table partagée indexée par IP, et non par utilisateur.
* La suppression au titre du droit à l'effacement retire les IP de la transaction ; l'entrée de cache partagée est conservée, car elle n'identifie pas personnellement quelqu'un.

## Étapes suivantes

> [card] [Règles](https://docs.didit.me/fr/transaction-monitoring/rules.md)
>
> Utilisez les champs enrichis dans les conditions.

> [card] [Bibliothèque de règles](https://docs.didit.me/fr/transaction-monitoring/rules-library.md)
>
> Règles prédéfinies basées sur l'IP.

> [card] [Schéma de réponse](https://docs.didit.me/fr/transaction-monitoring/response-schema.md)
>
> Emplacement de l'enrichissement IP.


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