@rderet/n8n-nodes-format-template
v0.1.2
Published
n8n node for formatting and transforming data using customizable templates - supports phone numbers, text case, country codes, and more
Maintainers
Readme
Documentation complète du nœud n8n FormatTemplate
Table des matières
- Introduction et vue d'ensemble
- Statistiques du code
- Architecture générale
- Composants clés
- Système de transformation modulaire
- Types de formatage intégrés
- Guide d'extension
- Guide d'installation et déploiement
- Guide de débogage
- Bonnes pratiques
Introduction et vue d'ensemble
Le nœud FormatTemplate est un composant d'extension pour n8n qui permet de formater et transformer des données selon des modèles prédéfinis ou personnalisés. Il a été conçu avec une architecture modulaire et extensible pour faciliter l'ajout de nouveaux types de formatage.
Ce nœud résout un problème courant dans les workflows d'automatisation : la nécessité de standardiser les formats de données (numéros de téléphone, codes pays, casse de texte, etc.) sans avoir à utiliser de multiples nœuds de fonction ou de code JavaScript complexe.
Architecture du nœud FormatTemplate
graph TB
subgraph "Interface utilisateur n8n"
UI[Interface Utilisateur<br/>Dynamique]
end
subgraph "Nœud FormatTemplate"
Node[FormatTemplate.node.ts<br/>INodeType]
Registry[TransformHandlerRegistry<br/>Registre Central]
AutoDisc[AutoDiscovery<br/>Découverte Automatique]
end
subgraph "Handlers de Transformation"
IHandler[ITransformHandler<br/>Interface]
Phone[PhoneHandler<br/>Numéros de téléphone]
Text[TextCaseHandler<br/>Casse de texte]
Country[CountryHandler<br/>Codes pays]
Custom[CustomHandler<br/>Extension future...]
end
subgraph "Système de Fichiers"
HandlerDir[handlers/<br/>Répertoire des handlers]
end
subgraph "Flux de Données"
Input[Données d'entrée<br/>Items]
Output[Données de sortie<br/>Items formatés]
end
subgraph "APIs Externes"
RestAPI[REST Countries API<br/>Codes pays]
end
%% Relations de découverte et enregistrement
HandlerDir -->|Scan| AutoDisc
AutoDisc -->|Charge| Phone
AutoDisc -->|Charge| Text
AutoDisc -->|Charge| Country
AutoDisc -->|Charge| Custom
%% Implémentation de l'interface
IHandler -.->|implémente| Phone
IHandler -.->|implémente| Text
IHandler -.->|implémente| Country
IHandler -.->|implémente| Custom
%% Enregistrement dans le registre
Phone -->|register| Registry
Text -->|register| Registry
Country -->|register| Registry
Custom -->|register| Registry
%% Génération de l'UI
Registry -->|génère options| UI
Phone -->|fournit propriétés| UI
Text -->|fournit propriétés| UI
Country -->|fournit propriétés| UI
%% Coordination par le nœud
Node -->|utilise| Registry
Node -->|orchestre| AutoDisc
%% Flux de transformation
Input -->|reçoit| Node
Node -->|sélectionne handler| Registry
Registry -->|retourne| Phone
Registry -->|retourne| Text
Registry -->|retourne| Country
Phone -->|transform| Output
Text -->|transform| Output
Country -->|transform| Output
%% Appels API externes
Country -->|requête| RestAPI
RestAPI -->|code ISO2| Country
%% Styles
classDef nodeClass fill:#e1f5ff,stroke:#01579b,stroke-width:2px
classDef handlerClass fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef interfaceClass fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,stroke-dasharray: 5 5
classDef dataClass fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px
classDef systemClass fill:#fce4ec,stroke:#880e4f,stroke-width:2px
classDef apiClass fill:#fff9c4,stroke:#f57f17,stroke-width:2px
class Node,Registry,AutoDisc nodeClass
class Phone,Text,Country,Custom handlerClass
class IHandler interfaceClass
class Input,Output dataClass
class UI,HandlerDir systemClass
class RestAPI apiClassLégende :
- 🔵 Bleu : Composants principaux du nœud
- 🟠 Orange : Handlers de transformation
- 🟣 Violet : Interface et contrats
- 🟢 Vert : Flux de données
- 🔴 Rose : Système et UI
- 🟡 Jaune : APIs externes
Le nœud utilise un système de handlers spécialisés qui peuvent être facilement étendus pour prendre en charge de nouveaux types de transformation, tout en maintenant une interface utilisateur cohérente et intuitive.
Statistiques du code
| Métrique | Valeur | | ----------------------------- | ----------------------------------------- | | Nombre total de fichiers | 7 fichiers | | Lignes de code (TypeScript) | ~500 lignes | | Nombre de classes principales | 5 | | Types de formatage intégrés | 3 (téléphone, casse de texte, code pays) | | Architecture | Modulaire avec handlers extensibles | | Interface utilisateur | Dynamiquement générée depuis les handlers | | Support multilingue | Oui (fr-FR) |
Architecture générale
Structure des fichiers
FormatTemplate/
├── FormatTemplate.node.ts # Point d'entrée principal du nœud
├── FormatTemplate.svg # Icône du nœud
├── TransformHandlerRegistry.ts # Registre des handlers de transformation
├── AutoDiscovery.ts # Découverte automatique des handlers
├── interfaces/
│ └── TransformHandler.ts # Interface pour les handlers de transformation
├── handlers/
│ ├── PhoneHandler.ts # Handler pour les numéros de téléphone
│ ├── TextCaseHandler.ts # Handler pour la casse de texte
│ └── CountryHandler.ts # Handler pour les codes pays
└── README.md # Documentation du nœudFlux de données
- Entrée : Le nœud reçoit des données à transformer (items)
- Configuration : L'utilisateur spécifie les champs à formater et le type de formatage
- Traitement : Pour chaque champ, le nœud:
- Récupère la valeur actuelle du champ
- Identifie le handler approprié pour le type de formatage
- Applique la transformation via le handler
- Met à jour la valeur dans l'objet de sortie
- Sortie : Le nœud renvoie les données avec les valeurs formatées
Hiérarchie des classes
FormatTemplate (INodeType)
├── TransformHandlerRegistry
│ └── Registre centralisé des handlers
├── Handlers (implémentent ITransformHandler)
│ ├── PhoneHandler
│ ├── TextCaseHandler
│ └── CountryHandler
└── AutoDiscovery
└── Découverte dynamique des handlersComposants clés
FormatTemplate (Nœud principal)
La classe principale qui implémente l'interface INodeType de n8n :
- Définit l'interface utilisateur du nœud
- Génère dynamiquement les propriétés d'UI en fonction des handlers disponibles
- Gère le cycle de vie de l'exécution
- Coordonne la validation et la transformation des données
export class FormatTemplate implements INodeType {
// Définition de l'interface utilisateur
description: INodeTypeDescription = {
// Propriétés du nœud
// ...
properties: [
// Collection de champs à formater
// ...
// Propriétés dynamiques générées depuis les handlers
...this.generateDynamicProperties(),
],
};
// Exécution du nœud
async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
// Pour chaque élément d'entrée
// Traiter chaque champ à formater
// Appliquer les transformations via les handlers appropriés
// Retourner les données transformées
}
}TransformHandlerRegistry
Registre central qui gère l'ensemble des handlers de transformation disponibles :
- Maintient une collection de handlers indexés par type
- Fournit des méthodes pour enregistrer et récupérer les handlers
- Génère les options UI pour le sélecteur de type
- Initialise les handlers au démarrage
export class TransformHandlerRegistry {
private static handlers: Map<string, ITransformHandler> = new Map();
// Enregistrer un nouveau handler
static register(handler: ITransformHandler): void {
this.handlers.set(handler.type, handler);
}
// Récupérer un handler par type
static getHandler(type: string): ITransformHandler | undefined {
return this.handlers.get(type);
}
// Récupérer tous les handlers
static getAllHandlers(): ITransformHandler[] {
return Array.from(this.handlers.values());
}
// Générer les options pour l'UI
static getTypeOptions(): INodePropertyOptions[] {
return Array.from(this.handlers.values()).map((handler) => ({
name: handler.displayName,
value: handler.type,
description: handler.description,
}));
}
}Interface ITransformHandler
Interface commune implémentée par tous les handlers de transformation :
- Définit la structure et le comportement des handlers
- Garantit la cohérence entre les différents types de transformation
- Facilite l'extension avec de nouveaux handlers
export interface ITransformHandler {
// Identifiant unique du handler
type: string;
// Nom d'affichage dans l'UI
displayName: string;
// Description de la fonctionnalité
description: string;
// Propriétés spécifiques pour la configuration
properties: INodeProperties[];
// Méthode de transformation
transform(
executionContext: IExecuteFunctions,
value: string,
params: Record<string, any>,
): Promise<string>;
}AutoDiscovery
Composant pour la découverte automatique et le chargement des handlers :
- Scanne le répertoire des handlers
- Instancie et enregistre les handlers compatibles
- Facilite l'extension sans modifier le code principal
export class AutoDiscovery {
static loadHandlersFromDirectory(dirPath: string): void {
// Lire les fichiers du répertoire
// Charger les modules potentiels
// Vérifier si ce sont des handlers valides
// Enregistrer les handlers trouvés
}
}Système de transformation modulaire
Le nœud FormatTemplate utilise une architecture de plugins (handlers) pour la transformation des données. Chaque handler:
- Spécialisation : Se concentre sur un type spécifique de transformation
- Auto-description : Fournit ses métadonnées (nom, description, propriétés)
- Auto-enregistrement : Est automatiquement découvert et ajouté au registre
- Isolation : Contient sa propre logique sans affecter les autres handlers
Cycle de vie d'une transformation
- Découverte : Au démarrage, les handlers sont découverts et enregistrés
- Configuration : L'UI est générée dynamiquement en fonction des handlers disponibles
- Exécution : À l'exécution, le handler approprié est sélectionné selon le type
- Transformation : La méthode
transform()du handler est appelée avec la valeur - Application : Le résultat est inséré dans les données de sortie
Mécanisme d'extension UI dynamique
Le nœud utilise un mécanisme intelligent pour montrer uniquement les propriétés pertinentes en fonction du type sélectionné :
private generateDynamicProperties() {
const dynamicProperties: INodeProperties[] = [];
// Pour chaque handler enregistré
for (const handler of TransformHandlerRegistry.getAllHandlers()) {
// Pour chaque propriété du handler
for (const prop of handler.properties) {
// Copier la propriété et ajouter la condition d'affichage
const dynamicProp = { ...prop };
// Afficher seulement quand le type correspond
dynamicProp.displayOptions = {
show: {
type: [handler.type],
},
};
dynamicProperties.push(dynamicProp);
}
}
return dynamicProperties;
}Types de formatage intégrés
PhoneHandler
Formatage des numéros de téléphone selon différents modèles :
Fonctionnalités :
- Formats prédéfinis (international, national, US)
- Support des formats personnalisés
- Conversion automatique international → national
- Détection intelligente des préfixes (0033, 33)
Exemple :
- Entrée :
0033252200210 - Format :
0# ## ## ## ##(FR National) - Sortie :
02 52 20 02 10
- Entrée :
private applyPattern(raw: string, pattern: string): string {
// Nettoyage du modèle
const cleanPattern = pattern.replace(/^\{0:/, '').replace(/\}$/, '');
// Extraction des chiffres
let digits = raw.replace(/\D/g, '');
// Conversion international → national
if ((digits.startsWith('0033') || digits.startsWith('33'))) {
digits = digits.startsWith('0033') ? digits.substring(4) : digits.substring(2);
}
// Application du format
// ...
}TextCaseHandler
Transformation de la casse des textes :
Fonctionnalités :
- MAJUSCULES
- minuscules
- Première Lettre En Majuscule
- Support multilingue (accents français)
Exemple :
- Entrée :
deret - Format :
capitalize - Sortie :
Deret
- Entrée :
switch (caseType.toLowerCase()) {
case 'uppercase':
return value.toLocaleUpperCase('fr-FR');
case 'lowercase':
return value.toLocaleLowerCase('fr-FR');
case 'capitalize':
return value.charAt(0).toLocaleUpperCase('fr-FR') + value.slice(1).toLocaleLowerCase('fr-FR');
}CountryHandler
Conversion et normalisation des codes pays :
Fonctionnalités :
- Validation des codes ISO2 existants
- Conversion des noms de pays en codes ISO2
- Recherche via l'API REST Countries
- Gestion des erreurs avec messages explicites
Exemple :
- Entrée :
france - Sortie :
FR
- Entrée :
// Vérifier si c'est déjà un code ISO2 valide
if (/^[A-Z]{2}$/i.test(value)) {
return value.toUpperCase();
}
// Sinon, appeler l'API REST Countries
const response = await executionContext.helpers.request({
method: 'GET',
url: `https://restcountries.com/v3.1/name/${encodeURIComponent(value)}`,
qs: { fields: 'cca2' },
json: true,
});
// Récupérer et retourner le code pays
if (Array.isArray(response) && response.length > 0 && response[0].cca2) {
return response[0].cca2;
}Guide d'extension
Ajout d'un nouveau handler de transformation
- Créer un nouveau fichier handler dans le répertoire
handlers/:
// handlers/MonNouveauHandler.ts
import { ITransformHandler } from '../interfaces/TransformHandler';
import { INodeProperties, IExecuteFunctions } from 'n8n-workflow';
export class MonNouveauHandler implements ITransformHandler {
type = 'monType'; // Identifiant unique
displayName = 'Mon Type'; // Nom affiché dans l'UI
description = 'Description de mon handler'; // Description
// Propriétés spécifiques à ce handler
properties: INodeProperties[] = [
{
displayName: 'Ma Propriété',
name: 'maPropriete',
type: 'string', // ou un autre type (number, boolean, options...)
default: '',
// ...autres options
},
// Autres propriétés si nécessaire
];
// Méthode de transformation
async transform(
executionContext: IExecuteFunctions,
value: string,
params: Record<string, any>,
): Promise<string> {
// Récupérer les paramètres
const monParam = params.maPropriete;
// Logique de transformation
// ...
// Retourner la valeur transformée
return valeurTransformee;
}
}- Le handler sera automatiquement découvert et ajouté aux options du nœud sans autre modification requise.
Personnalisation avancée de l'UI
Pour des propriétés plus complexes ou des comportements spécifiques :
properties: INodeProperties[] = [
{
displayName: 'Mode',
name: 'mode',
type: 'options',
options: [
{ name: 'Simple', value: 'simple' },
{ name: 'Avancé', value: 'advanced' },
],
default: 'simple',
},
{
displayName: 'Options avancées',
name: 'advancedOptions',
type: 'fixedCollection',
displayOptions: {
show: {
mode: ['advanced'],
},
},
default: {},
options: [
{
name: 'options',
displayName: 'Options',
values: [
// Propriétés imbriquées
],
},
],
},
];Guide d'installation et déploiement
Installation locale (développement)
Préparer l'environnement :
# Créer un répertoire pour les nœuds personnalisés mkdir -p ~/.n8n/custom cd ~/.n8n/custom # Cloner le dépôt git clone https://github.com/votre-utilisateur/n8n_nodes_FormatTemplate.git cd n8n_nodes_FormatTemplate # Installer les dépendances npm install # Compiler le code npm run buildDémarrer n8n avec les nœuds personnalisés :
n8n start
Installation en production
Sur un serveur n8n existant :
# Accéder au répertoire des nœuds personnalisés cd /root/.n8n/custom # Cloner et installer git clone https://github.com/votre-utilisateur/n8n_nodes_FormatTemplate.git cd n8n_nodes_FormatTemplate npm install npm run build # Redémarrer n8n systemctl restart n8nDans un conteneur Docker :
Créer un Dockerfile personnalisé :
FROM n8nio/n8n:latest # Installer git et outils de compilation USER root RUN apk add --update git # Cloner et installer le nœud personnalisé RUN mkdir -p /root/.n8n/custom WORKDIR /root/.n8n/custom RUN git clone https://github.com/votre-utilisateur/n8n_nodes_FormatTemplate.git WORKDIR /root/.n8n/custom/n8n_nodes_FormatTemplate RUN npm install RUN npm run build # Revenir à l'utilisateur node USER node WORKDIR /data
Guide de débogage
Comprendre les logs
Le nœud FormatTemplate inclut un système de logging détaillé :
[FormatTemplate] Processing item 0, fields to format: 1
[FormatTemplate] Current value for phone: 0033252200210
[PhoneHandler] Digits: 252200210, Pattern: 0# ## ## ## ##, Format length: 10
[PhoneHandler] Formatted result: 0033252200210 -> 02 52 20 02 10
[FormatTemplate] Setting phone to: 02 52 20 02 10
[FormatTemplate] Value after update: 02 52 20 02 10Pour activer le débogage avancé, vous pouvez:
Ajouter des logs supplémentaires :
console.log(`[CustomDebug] Valeur: ${maValeur}, Paramètres:`, JSON.stringify(mesParams));Utiliser les outils de débogage de n8n :
# Démarrer n8n avec débogage n8n start --inspect
Erreurs courantes et solutions
| Erreur | Cause | Solution |
| ------------------------------------- | ------------------------------------------------ | -------------------------------------------------------------- |
| Format de chemin invalide | Le chemin du champ ne suit pas le format attendu | Utiliser des chemins de propriété valides (ex: client.phone) |
| Cannot read properties of undefined | Propriété manquante dans la configuration | Vérifier les noms de paramètres dans les handlers |
| Handler non trouvé pour le type | Type de handler inexistant | Vérifier l'orthographe du type ou créer le handler manquant |
| Impossible de trouver le code pays | Le pays ne peut pas être résolu via l'API | Vérifier le nom du pays ou utiliser directement le code ISO2 |
Bonnes pratiques
Conception des handlers
- Spécialisation : Un handler doit avoir une responsabilité unique et clairement définie
- Robustesse : Gérer les cas d'erreur et les valeurs nulles ou invalides
- Journalisation : Fournir des logs utiles pour le débogage
- Paramétrage : Offrir des options de configuration pertinentes et utiles
- Internationalisation : Utiliser les méthodes localisées pour le formatage de texte
Performance
- Traitement léger : Éviter les opérations lourdes pendant la transformation
- Mise en cache : Pour les handlers utilisant des API externes, considérer la mise en cache des résultats
- Validation précoce : Valider les entrées au plus tôt pour éviter les traitements inutiles
Extensibilité
Le nœud est conçu pour être facilement étendu :
- L'auto-découverte permet d'ajouter de nouveaux handlers sans modifier le code principal
- L'interface
ITransformHandlerassure la compatibilité des nouveaux handlers - Le registre centralise la gestion des handlers et leur utilisation
Suggestions de nouveaux handlers
- DateFormatHandler : Formatage de dates selon différents standards
- NumberFormatHandler : Formatage de nombres (arrondi, séparateurs, devises)
- AddressFormatHandler : Normalisation des adresses postales
- EmailFormatHandler : Normalisation et validation des adresses email
- ColorFormatHandler : Conversion entre formats de couleur (HEX, RGB, HSL)
Conclusion
Le nœud FormatTemplate offre une solution modulaire et extensible pour le formatage et la transformation des données dans n8n. Sa conception orientée plugin permet une grande flexibilité tout en maintenant une interface utilisateur cohérente et intuitive.
Que vous souhaitiez standardiser des numéros de téléphone, normaliser la casse de texte ou convertir des noms de pays en codes ISO, FormatTemplate simplifie ces tâches sans nécessiter de code JavaScript complexe.
Sa capacité d'extension en fait un outil évolutif qui peut s'adapter à vos besoins spécifiques en matière de transformation de données.
Scripts de compilation et déploiement
Le nœud FormatTemplate dispose de scripts npm pour faciliter le développement et le déploiement :
Commandes disponibles
# Compiler le TypeScript en JavaScript
npm run build
# Créer un bundle webpack autonome
npm run bundle:formattemplate
# Build + Bundle + Déploiement vers ~/.n8n/custom/
npm run deploy:formattemplateArchitecture de déploiement
Le script de déploiement effectue les opérations suivantes :
- Build : Compilation TypeScript → JavaScript (dossier
dist/) - Bundle : Création d'un bundle webpack avec tous les handlers intégrés
- Déploiement : Copie vers
C:\Users\[USER]\.n8n\custom\FormatTemplate\
Fichiers déployés :
FormatTemplate.node.js- Bundle webpack complet (~20 KB)FormatTemplate.node.json- Configuration du nœudFormatTemplate.node.d.ts- Déclarations TypeScriptFormatTemplate.node.js.map- Source map pour débogageFormatTemplate.svg- Icône du nœud
Particularités du bundle
Le bundle webpack inclut automatiquement tous les handlers :
PhoneHandler: Formatage de numéros de téléphoneTextCaseHandler: Conversion de casseCountryHandler: Conversion de codes pays
Les handlers sont chargés via deux mécanismes :
- Découverte automatique : Charge depuis le système de fichiers (mode développement)
- Import explicite : Fallback intégré dans le bundle (mode production)
Développement et test
Après modification du code :
# Redéployer rapidement
npm run deploy:formattemplate
# Redémarrer n8n pour voir les changementsNote : n8n doit être redémarré complètement (pas seulement reload) pour charger les modifications.
Ajouter un nouveau handler
- Créer le fichier dans
handlers/(ex:MyHandler.ts) - Implémenter l'interface
ITransformHandler - Ajouter l'import dans
TransformHandlerRegistry.ts:import { MyHandler } from './handlers/MyHandler'; // ... this.register(new MyHandler()); - Redéployer avec
npm run deploy:formattemplate
Pour plus de détails, consultez README-DEPLOYMENT.md à la racine du projet.
À propos
Développé par Pure Mans Web
Ce nœud n8n FormatTemplate a été développé par Pure Mans Web, filiale développement web et applications métiers du Groupe Mixtrio.
Pure Mans Web est spécialisée dans :
- La conception et réalisation de solutions digitales sur-mesure
- Le développement d'applications métiers connectées pour l'automatisation des processus
- La Tierce Maintenance Applicative (TMA) pour la pérennité des solutions
- L'intégration d'écosystèmes technologiques complets
Groupe Mixtrio
Mixtrio est un groupe français spécialisé dans les solutions IT et services numériques, structuré autour de filiales complémentaires :
- XITHI : Infrastructure, cloud, infogérance et services managés
- Pure Mans Web : Développement web, applications métiers, TMA et e-commerce
- Senetel : Téléphonie IP, connectivité et solutions de communication
Le groupe incarne des valeurs fortes :
- Proximité & Conseil : Accompagnement personnalisé et sur-mesure
- Fiabilité des Services : Infrastructure robuste et support réactif
- Innovation & Évolutivité : Solutions scalables et technologies de pointe
- Maîtrise des Coûts : Tarification transparente et prévisible
Contact & Support
Pour toute question, suggestion d'amélioration ou demande de support concernant ce nœud :
Pure Mans Web
Filiale du Groupe Mixtrio
Web : www.puremans-web.fr
Email : [email protected]
Licence & Copyright
Licence MIT
Copyright (c) 2025 Pure Mans Web - Groupe Mixtrio
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Contribution
Les contributions à ce projet sont les bienvenues ! Si vous souhaitez proposer des améliorations, de nouveaux handlers ou corriger des bugs :
- Fork le projet
- Créez une branche pour votre fonctionnalité (
git checkout -b feature/AmazingFeature) - Committez vos changements (
git commit -m 'Add some AmazingFeature') - Poussez vers la branche (
git push origin feature/AmazingFeature) - Ouvrez une Pull Request
Remerciements
Ce projet a été rendu possible grâce à :
- L'équipe de développement Pure Mans Web
- La communauté n8n pour leur plateforme d'automatisation exceptionnelle
- Tous les contributeurs et utilisateurs qui participent à l'amélioration continue de ce nœud
Version de la documentation : 1.0.0
Dernière mise à jour : Novembre 2025
Développé avec ❤️ par Pure Mans Web - Groupe Mixtrio
