Eofferix accepte les fichiers JSON et les réponses JSON. Vous pouvez charger un fichier ponctuel, le recevoir automatiquement depuis une pièce jointe email, le récupérer par lien direct, par lien avec autorisation, via FTP/FTPS/SFTP ou depuis l’API du fournisseur.
Après réception, le JSON peut être converti en XML, en tableaux CSV/XLSX, en un autre JSON avec paramètres et valeurs modifiés, ou importé dans les applications prises en charge par le service.

Fonctionnement du snapshot
Le service analyse le fichier et le transforme en un court snapshot avec des noeuds uniques. Si un tableau contient mille produits, le snapshot montre la structure d’un élément type et les champs trouvés dans les données, pas mille répétitions.
Dans le snapshot, vous pouvez renommer les noeuds, modifier la structure, supprimer les champs inutiles, créer de nouveaux noeuds et configurer les règles de transformation. À l’exécution suivante, ces règles sont appliquées à tout le JSON reçu de la source.
Ce qui peut être transformé
- Renommage de champs. Par exemple transformer
idenexternal_id,nameentitleetprices.baseenprice. - Filtrage d’enregistrements. Garder seulement les produits où
flags.active = true, ou exporter uniquement les produits avec stock supérieur à zéro. - Changement d’imbrication. Déplier
stock[]en liste d’entrepôts, collecterattributes[]en propriétés et déplacer les images dans un noeudmedia. - Calcul de valeurs. Construire un chemin de catégorie, calculer un prix remisé, normaliser la devise ou remplir la date d’import.
- Transformation d’images. Convertir les images en
jpg,pngouwebp, les redimensionner et appliquer un filigrane. - Import applicatif. Lier les noeuds JSON aux champs d’un catalogue, CRM, CMS ou autre destination compatible.

Exemples de transformations
Les règles de transformation permettent de modifier fortement l’export final : filtrer les éléments inutiles, renommer des noeuds, créer une nouvelle structure, calculer des valeurs, remplir de nouveaux champs depuis d’autres parties du document et préparer le résultat pour une marketplace, un site, un PIM ou un système interne.
Ce que fait l’exemple de prix
Les mêmes règles sont détaillées ci-dessous. Chaque capture montre uniquement la ligne de règle responsable de l’étape.
1. Les espaces sont d’abord supprimés dans la valeur du prix. C’est utile lorsque le fournisseur envoie le prix sous forme de chaîne, par exemple 12 990.

2. Si le prix n’est pas vide, le service l’augmente de 15 %. Cela ajoute une marge sans modifier le JSON source.

3. Ensuite, la règle vérifie un autre noeud du document : /catalog/items/stock/qty. Si le stock est inférieur à 5, le prix est remplacé par 0.

4. Une autre règle utilise /catalog/items/brand : pour TestBrand, le prix est aussi multiplié par 1,5.

5. Enfin, le résultat est arrondi à une décimale selon les règles standard.

Exemple simple : renommer les champs et garder les produits actifs
Cet exemple prend les éléments de catalog.items[], garde seulement les produits actifs et adapte les noms des champs au format cible.
{
"id": "A-100",
"sku": "ITEM-100",
"name": "Nordic armchair",
"prices": {
"base": 129.90,
"discount": 119.90
},
"flags": {
"active": true
}
}{
"external_id": "A-100",
"sku": "ITEM-100",
"title": "Nordic armchair",
"price": 119.90,
"old_price": 129.90
}Règles :
- Le JSON source contient un produit avec
id = A-100. Les autres produits ont la même structure, mais le snapshot affiche un représentant du tableau répétécatalog.items[]. Cliquez sur la valeurtruedans l’objetflags, champactive, puis dans Conditions d’export choisissez Condition pour tout l’élément. Cela permet d’exporter seulement les éléments àtrue, ou d’exclure les éléments àfalse.
La condition s’applique à l’élément complet : le produit est exporté si flags.active vaut true ; la deuxième règle peut servir de contrôle inverse pour false. - Renommez le noeud
idenexternal_id: cliquez sur le nom du noeud et saisissez le nouveau nom.
Paramètres du noeud : external_id est saisi dans le champ Nom du noeud. - Renommez
nameentitlede la même façon. Aucune capture séparée n’est nécessaire : l’action est identique à celle deid. - Deux scénarios fonctionnent pour les prix. Si le conteneur
pricesconvient, renommezprices.discountenpriceetprices.baseenold_price. Sipriceetold_pricedoivent être au niveau du produit, créez de nouveaux noeuds à côté deidetname, remplissez-les depuis/catalog/items/prices/discountet/catalog/items/prices/base, puis n’exportez pas l’ancien conteneurprices.
Pour le nouveau champ price, utilisez l’action remplacer : la valeur vient d’un autre noeud du document.
Nouveaux noeuds
Un nouveau noeud est nécessaire lorsque le résultat doit contenir un champ absent du JSON source, ou lorsque les données source doivent être réorganisées.

Un noeud peut être rempli avec :
- une valeur venant d’une autre partie du fichier source, par exemple le nom, le SKU, la marque, ou plusieurs valeurs réunies dans un champ unique comme
Nom SKU Marque; - une valeur système, comme la date d’exécution ou le nom de la source;
- une expression, par exemple assembler le chemin de catégorie ou calculer le pourcentage de remise;
- il peut aussi être transformé en variable.
Variables : pourquoi elles sont utiles
Une variable stocke un résultat intermédiaire. Elle est pratique quand une valeur doit être utilisée dans plusieurs champs ou conditions.
Important : les variables n’apparaissent pas dans l’export final. Elles servent uniquement à aider les autres transformations : vous pouvez stocker un résultat intermédiaire puis l’utiliser dans des règles, conditions ou calculs.

Par exemple, final_price est calculée une seule fois :
final_price = prices.discount si prices.discount est rempli, sinon prices.base
Elle peut ensuite être utilisée dans plusieurs règles :
product.prices.price = final_price;product.prices.old_price = prices.base, sifinal_priceest inférieur au prix de base ;product.prices.discount_percentest calculé depuisprices.baseetfinal_price;- la condition d’export vérifie que
final_priceest supérieure à zéro.
Les règles restent ainsi plus courtes et le prix ne diverge pas entre plusieurs parties du résultat à cause de calculs manuels répétés.