> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kameleoon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Kameleoon.API.Data

> Référence des méthodes Kameleoon.API.Data qui définissent des données personnalisées et lisent ou écrivent des données dans le LocalStorage de Kameleoon.

Ce module fournit des méthodes pour définir les **données personnalisées** pour le suivi des caractéristiques du client ou de la visite. Il comprend également des méthodes de gestion des données pour récupérer et écrire des données dans le LocalStorage unifié de Kameleoon.

## readLocalData

La méthode `readLocalData()` lit les données locales que vous avez précédemment stockées via `writeLocalData()`. Le moteur récupère ces données à partir du Local Storage unifié, qui contourne les limitations du stockage standard.

```javascript theme={null}
var userId = Kameleoon.API.Data.readLocalData("myUserId");

if (userId) {
  Kameleoon.API.Data.retrieveDataFromRemoteSource(userId, function (data) {
    console.log(data.returningVisitor);
  });
}
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| key | String | Clé des données à récupérer. Ce champ est obligatoire. |

**Valeur de retour**

| Name | Type | Description |
| - | - | - |
| value | String | Valeur de la donnée. |

## performRemoteSynchronization

La méthode `performRemoteSynchronization()` déclenche un appel de synchronisation serveur (SSC) vers l'API Data. Cet appel récupère l'historique des visites stocké sur les serveurs backend de Kameleoon pour le visiteur actuel et l'écrit dans le LocalStorage. Les données sont ainsi accessibles via l'Activation API et disponibles pour le ciblage. Cette méthode s'exécute généralement automatiquement pour la réconciliation multi-appareils ou pour Safari ITP ; elle ne nécessite pas d'appel manuel.

```javascript theme={null}
Kameleoon.API.Data.performRemoteSynchronization("customDataName", "customDataValue", false);
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| key | String | Clé de la donnée personnalisée servant d'identifiant de mappage (par exemple, ID de compte ou email). Si omis, la méthode utilise l'identifiant par défaut configuré pour la réconciliation multi-appareil dans Kameleoon App. |
| value | String | Valeur actuelle de l'identifiant du visiteur utilisée pour l'appel de l'API Data. Si omis, la méthode utilise la valeur actuelle de la donnée personnalisée fournie dans le premier argument. |
| currentVisitOnly | Boolean | Lorsque actif, la demande SSC ne récupère les données que pour la visite. Utilisez cette optimisation pour actualiser les valeurs de donnée personnalisée acquises via l'API Data ou l'intégration serveur à serveur. Si omis, la méthode utilise par défaut **false**. |

## resetCustomData

The `resetCustomData()` method resets a custom data value.

```javascript theme={null}
Kameleoon.API.Data.resetCustomData("MyCustomDataName");
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| name | String | Nom de la donnée personnalisée tel que défini dans Kameleoon App. Ce champ est obligatoire. |

## retrieveDataFromRemoteSource

La méthode `retrieveDataFromRemoteSource()` récupère les données stockées sur un serveur Kameleoon distant avec la **clé** spécifiée. Cette méthode supporte la récupération de données stockées précédemment via l'API Data. Utilisez-la pour un stockage et une récupération rapides de gros volumes de données pour les visiteurs.

Ce mécanisme asynchrone nécessite une fonction **callback** lorsque l'appel au serveur se termine.

```javascript theme={null}
if (location.href.indexOf("loginPage") != -1) {
  Kameleoon.API.Core.runWhenConditionTrue(function () {
    return typeof dataLayer != null;
  }, function () {
    dataLayer.forEach(function (map) {
      if (map.userId) {
        Kameleoon.API.Data.retrieveDataFromRemoteSource(userId, function (data) {
          Kameleoon.API.Data.setCustomData("known_user", data.knownUser);
        });
      }
    });
  }, 200);
}
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| key | String | La clé de recherche. Ce champ est obligatoire. |
| callback | Function | Fonction exécutée après la récupération des données par la méthode. Elle reçoit un argument **data**, qui est un objet JS. Ce champ est obligatoire. |

## setCustomData

La méthode `setCustomData()` définit une valeur de custom data.

```javascript theme={null}

// Single Type Custom Data
Kameleoon.API.Data.setCustomData("mySingleCustomDataName", "myNewValue"); // --> "myNewValue"

// List Type Custom Data
Kameleoon.API.Data.setCustomData("myListCustomDataName", "myFirstValue"); // --> ["myFirstValue"]
Kameleoon.API.Data.setCustomData("myListCustomDataName", "mySecondValue"); // --> ["myFirstValue", "mySecondValue"]
Kameleoon.API.Data.setCustomData("myListCustomDataName", ["myThirdValue", "myFourthValue"]); // --> ["myFirstValue", "mySecondValue", "myThirdValue", "myFourthValue"]
Kameleoon.API.Data.setCustomData("myListCustomDataName", ["myThirdValue", "myFourthValue"], true); // --> ["myThirdValue", "myFourthValue"]

// Count List Type Custom Data
Kameleoon.API.Data.setCustomData("myCountListCustomDataName", "myFirstValue"); // --> {value: 'myFirstValue', count: 1}
Kameleoon.API.Data.setCustomData("myCountListCustomDataName", "myFirstValue"); // --> {value: 'myFirstValue', count: 2}
Kameleoon.API.Data.setCustomData("myCountListCustomDataName", "mySecondValue"); // --> {value: 'myFirstValue', count: 2}, {value: 'mySecondValue', count: 1}
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| CustomDataNameOrIndex | String or Number | Nom ou index des données personnalisées telles que définies dans l'application Kameleoon. (l'index apparaît dans la colonne « INDEX » du tableau de bord des données personnalisées). Ce champ est obligatoire. |
| value | String, Number, Boolean, Array | Valeur des données personnalisées. La valeur fournie doit correspondre au type déclaré pour ces données dans l'application Kameleoon. Ce champ est obligatoire. **Notez que `setCustomData()` accepte String, Number et Boolean lorsque vous définissez le `Type` sur `Single`. Si vous le définissez sur `List` ou `Count List`, il accepte un tableau de String ou de Number.** |
| overwrite | Boolean | **Booléen facultatif**. Lorsque `true`, la nouvelle valeur remplace la donnée personnalisée existante. Lorsque `false` ou omis : **Les listes/listes de comptage** ajoutent les valeurs (toutes les valeurs apparaissent dans les rapports); **Les types uniques** remplacent (seule la dernière valeur apparaît); **La donnée personnalisée avec portée page** (tous les types) ajoutent les valeurs. |

## writeLocalData

La méthode `writeLocalData()` enregistre les données locales dans le navigateur du visiteur pour une récupération ultérieure via `readLocalData()`. Le moteur stocke cela comme des données de session unifiées dans le stockage local, contournant les limitations de stockage standard. Les données deviennent immédiatement disponibles pour la récupération dans le même onglet via la mise en cache RAM, tandis que l'écriture physique se fait de manière asynchrone.

```javascript theme={null}
Kameleoon.API.Data.writeLocalData("myData", "myDataValue", true);
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| key | String | Clé (nom) des données à écrire. Ce champ est obligatoire. |
| value | String | Valeur des données à écrire. Ce champ est obligatoire. |
| persistent | Boolean | Basculer la persistance des données. Les données non persistantes expirent après 1 heure, tandis que les données persistantes restent 30 jours. Si omis, la méthode par défaut est **false**. |
