Package Information
Documentation
n8n-nodes-canopsis
Node communautaire n8n pour l'hypervision Canopsis.
Fournit deux nodes :
- Canopsis - node d'action pour piloter les alarmes, entités, événements et pbehaviors.
- Canopsis Trigger - node déclencheur qui s'abonne automatiquement aux événements Canopsis via un scénario webhook (édition Pro requise).
Installation
Le projet embarque son propre Dockerfile et docker-compose.yml. La commande habituelle suffit :
docker compose build
docker compose up -d
n8n démarre avec la variable N8N_CUSTOM_EXTENSIONS=/opt/n8n-custom, ce qui lui fait charger le node sans passer par le registre de packages communautaires.
Mise à jour
Après toute modification du code source :
docker compose build --no-cache
docker compose up -d
Authentification - Credential "Canopsis API"
Créer un credential de type Canopsis API avec les champs suivants :
| Champ | Description |
|---|---|
| Base URL | Racine de l'instance, sans /api/v4 (ex : https://canopsis.example.com) |
| Auth Type | Méthode d'authentification (voir ci-dessous) |
| Ignore SSL Issues | Cocher pour les instances avec certificat auto-signé |
Méthodes d'authentification
API Key - méthode recommandée
Sélectionner API Key et renseigner la clé. Elle est transmise dans l'en-tête HTTP x-canopsis-authkey à chaque requête.
La clé se génère dans Canopsis : Profil -> Auth key.
Basic Auth
Sélectionner Basic Auth et renseigner username / password.
Node Canopsis - actions disponibles
Alarm
| Action | Appel API | Description |
|---|---|---|
| Get Many | GET /api/v4/alarms |
Liste les alarmes avec pagination automatique. Filtres : search, opened, paramètres libres en JSON. |
| Acknowledge | PUT /api/v4/alarms/{id}/ack |
Acquitte une alarme. Option : acquitter aussi les ressources du composant. |
| Add Comment | PUT /api/v4/alarms/{id}/comment |
Ajoute un commentaire à une alarme. |
| Snooze | PUT /api/v4/alarms/{id}/snooze |
Met en veille une alarme pour une durée (valeur + unité : s, m, h, d, w, M, y). |
| Associate Ticket | PUT /api/v4/alarms/{id}/assocticket |
Associe un ticket (numéro, URL, système tiers, données libres). |
| Ack Remove | PUT /api/v4/alarms/{id}/ackremove |
Retire l'acquittement d'une alarme. |
| Cancel | PUT /api/v4/alarms/{id}/cancel |
Annule une alarme. |
| Uncancel | PUT /api/v4/alarms/{id}/uncancel |
Restaure une alarme annulée. |
| Change State | PUT /api/v4/alarms/{id}/changestate |
Modifie le criticité (0 OK, 1 Minor, 2 Major, 3 Critical). |
| Remove Ticket | PUT /api/v4/alarms/{id}/ticketremove |
Retire le ticket associé à une alarme. |
Pour les actions sur alarme, le champ Alarm ID attend le
_idretourné par Get Many. Utiliser l'expression{{ $json._id }}pour le mapper depuis un node précédent.
Entity
| Opération | Appel API | Description |
|---|---|---|
| Get Many | GET /api/v4/entities |
Liste les entités avec pagination automatique. Filtres : search, paramètres libres en JSON. |
Event
| Opération | Appel API | Description |
|---|---|---|
| Send | POST /api/v4/event |
Envoie un événement check. Champs requis : Connector, Connector Name, Source Type, Component, State. Champs optionnels : Resource, Output, Long Output, Timestamp, champs libres en JSON. |
Pbehavior
| Opération | Appel API | Description |
|---|---|---|
| Create | POST /api/v4/pbehaviors |
Crée une période de comportement. Champs requis : Name, Start Date, End Date, Type UUID. Optionnel : Reason UUID, RRule iCal, Entity Pattern. |
| Get Many | GET /api/v4/pbehaviors |
Liste les pbehaviors avec pagination automatique. |
| Update | PUT /api/v4/pbehaviors/{id} |
Remplace entièrement un pbehavior (PUT complet). Corps JSON à fournir. |
| Delete | DELETE /api/v4/pbehaviors/{id} |
Supprime un pbehavior. |
Node Canopsis Trigger
Nécessite l'édition Pro de Canopsis (API Scénarios).
Ce node se comporte comme un déclencheur n8n classique avec auto-wiring :
- À l'activation du workflow : crée automatiquement un scénario dans Canopsis (
POST /api/v4/scenarios) qui pointe vers le webhook n8n. - À la désactivation : supprime le scénario (
DELETE /api/v4/scenarios/{id}). - À la réactivation : vérifie d'abord l'existence du scénario (
GET /api/v4/scenarios/{id}) avant d'en créer un nouveau — idempotent.
L'identifiant du scénario est déterministe : n8n-wf-{workflowId}, ce qui évite les doublons.
Paramètres
| Paramètre | Description |
|---|---|
| Trigger Events | Événements Canopsis à surveiller (multi-sélection). Voir liste ci-dessous. |
| Go Payload Template | Template Go envoyé par Canopsis dans le corps du webhook. {{ . | json_unquote }} est un bon début |
| HTTP Headers | Headers du webhook. Content-Type: application/json pré-rempli. Supports : Accept, Authorization, Content-Type (avec liste de MIME types), ou header personnalisé. |
| Options -> Priority | Priorité du scénario Canopsis (0 = la plus haute). |
| Options -> Alarm Pattern | Filtre JSON sur les alarmes au format OR/AND Canopsis. |
| Options -> Entity Pattern | Filtre JSON sur les entités au format OR/AND Canopsis. |
| Options -> Skip TLS Verification | Désactive la vérification du certificat TLS du webhook n8n. |
Événements disponibles
| Valeur | Description |
|---|---|
create |
Alarme créée |
resolve |
Alarme résolue |
activate |
Alarme activée |
stateinc |
Criticité augmentée |
statedec |
Criticité diminuée |
changestate |
Criticité modifiée manuellement |
ack |
Acquittement posé |
ackremove |
Acquittement retiré |
cancel |
Alarme annulée |
uncancel |
Annulation levée |
comment |
Commentaire ajouté |
assocticket |
Ticket associé |
snooze |
Alarme mise en veille |
unsnooze |
Veille levée |
pbhenter |
Entrée dans un pbehavior |
pbhleave |
Sortie d'un pbehavior |
Variables Go template (payload)
{{ .Alarm.ID }} - identifiant de l'alarme
{{ .Alarm.Value.Component }} - composant
{{ .Alarm.Value.Resource }} - ressource
{{ .Alarm.Value.State.Value }} - criticité (0/1/2/3)
{{ .TriggerType }} - type d'événement déclencheur
{{ . }} - contexte complet (alarme + entité)
Exemple de payload personnalisé
{
"alarm_id": "{{ .Alarm.ID }}",
"component": "{{ .Alarm.Value.Component }}",
"resource": "{{ .Alarm.Value.Resource }}",
"state": "{{ .Alarm.Value.State.Value }}",
"trigger": "{{ .Trigger }}"
}
Exemple de filtre Alarm Pattern
[[{"field": "v.display_name", "cond": {"type": "regexp", "value": ".+"}}]]
Développement
npm install
npm run build # compile TypeScript + copie les icônes dans dist/
Le build est exécuté automatiquement par le Dockerfile (stage builder). Il n'est pas nécessaire de builder localement avant un docker compose build.