API watcherng

L'API watcherng permet de consulter, créer et supprimer des observateurs.

Pour plus d'informations sur ce qu'est un observateur, consulter la documentation sur les observateurs.

Création d'un observateur

Crée un nouvel observateur à partir du corps de la requête.

URL : /api/v2/watcherng

Méthode : POST

Authentification requise : Oui

Permissions requise : Aucune

Exemple de corps de requête :

{
    "_id": "h4z25rzg6rt-64rge354-5re4g",
    "name": "Client Capensis",
    "type": "watcher",
    "entities": [{
        "infos": {
            "customer": {
                "value": "capensis"
            }
        }
    }, {
        "_id": {"regex_match": ".+/comp"}
    }],
    "state": {
        "method": "worst"
    },
    "output_template": "Alarmes critiques : {{.State.Critical}}"
}

Exemple de requête curl pour utilisateur root avec mot de passe root qui veut ajouter le JSON ci-dessus :

curl -X POST -u root:root -H "Content-Type: application/json" -d '{
    "_id": "h4z25rzg6rt-64rge354-5re4g",
    "name": "Client Capensis",
    "type": "watcher",
    "entities": [{
        "infos": {
            "customer": {
                "value": "capensis"
            }
        }
    }, {
        "_id": {"regex_match": ".+/comp"}
    }],
    "state": {
        "method": "worst"
    },
    "output_template": "Alarmes critiques : {{.State.Critical}}"
}' 'http://<Canopsis_URL>/api/v2/watcherng'

Réponse en cas de réussite

Condition : l'observateur est créé

Code : 200 OK

Exemple du corps de la réponse :

"h4z25rzg6rt-64rge354-5re4g"

Réponse en cas d'erreur

Condition : Si le corps de la requête n'est pas valide.

Code : 400 BAD REQUEST

Exemple du corps de la réponse :

{
    "name": "",
    "description": "Invalid JSON"
}

Condition : Si un observateur similaire existe déjà en base.

Code : 400 BAD REQUEST

Exemple du corps de la réponse :

{
    "name": "",
    "description": "Error while creating a watcher"
}

Condition : En cas d'erreur avec la base de données.

Code : 400 BAD REQUEST

Exemple du corps de la réponse :

{
  "name": "",
  "description": "Error while creating a watcher"
}

Modification d'un observateur

Modifie un nouvel observateur à partir du corps de la requête.

URL : /api/v2/watcherng/<watcher_id>

Méthode : PUT

Authentification requise : Oui

Permissions requise : Aucune

Exemple de corps de requête :

{
    "_id": "h4z25rzg6rt-64rge354-5re4g",
    "name": "Client Capensis",
    "type": "watcher",
    "entities": [{
        "infos": {
            "customer": {
                "value": "capensis"
            }
        }
    }, {
        "_id": {"regex_match": ".+/comp"}
    }],
    "state": {
        "method": "worst"
    },
    "output_template": "Alarmes Majeures : {{.State.Major}}"
}

Exemple de requête curl pour utilisateur root avec mot de passe root qui veut ajouter le JSON ci-dessus :

curl -X PUT -u root:root -H "Content-Type: application/json" -d '{
    "_id": "h4z25rzg6rt-64rge354-5re4g",
    "name": "Client Capensis",
    "type": "watcher",
    "entities": [{
        "infos": {
            "customer": {
                "value": "capensis"
            }
        }
    }, {
        "_id": {"regex_match": ".+/comp"}
    }],
    "state": {
        "method": "worst"
    },
    "output_template": "Alarmes Majeures : {{.State.Major}}"
}' 'http://<Canopsis_URL>/api/v2/watcherng/h4z25rzg6rt-64rge354-5re4g'

Réponse en cas de réussite

Condition : l'observateur est créé

Code : 200 OK

Exemple du corps de la réponse :

{
}

Suppression d'un observateur

Supprime un observateur en fonction de son id.

URL : /api/v2/watcherng/<watcher>

Méthode : DELETE

Authentification requise : Oui

Permissions requise : Aucune

Exemple de requête curl pour utilisateur root avec mot de passe root qui veut supprimer l'observateur avec l'id h4z25rzg6rt-64rge354-5re4g :

curl -X DELETE -u root:root 'http://<Canopsis_URL>/api/v2/watcherng/h4z25rzg6rt-64rge354-5re4g'

Réponse en cas de réussite

Condition : La suppression de l'observateur a réussi.

Code : 200 OK

Exemple du corps de la réponse :

{
    "status": true
}

Réponse en cas d'erreur

Condition : En cas d'erreur avec la base de données.

Code : 400 BAD REQUEST

Exemple du corps de la réponse :

{
  "name": "",
  "description": "Can not retrieve the watcher data from database, contact your administrator."
}

Récupération des observateurs

Récupère un ou plusieurs observateurs présents en base.

Récupération d'un observateur par id

URL : /api/v2/watcherng/<watcher_id>

Méthode : GET

Authentification requise : Oui

Permissions requise : Aucune

Exemple de requête curl pour utilisateur root avec mot de passe root pour récupérer l'observateur avec l'id h4z25rzg6rt-64rge354-5re4g :

curl -X GET -u root:root 'http://<Canopsis_URL>/api/v2/watcherng/h4z25rzg6rt-64rge354-5re4g'
Réponse en cas de réussite

Condition : Un observateur correspondant à l'id est trouvé.

Code : 200 OK

Exemple du corps de la réponse :

{
    "_id": "h4z25rzg6rt-64rge354-5re4g",
    "name": "Client Capensis",
    "type": "watcher",
    "entities": [{
        "infos": {
            "customer": {
                "value": "capensis"
            }
        }
    }, {
        "_id": {"regex_match": ".+/comp"}
    }],
    "state": {
        "method": "worst"
    },
    "output_template": "Alarmes critiques : {{.State.Critical}}"
}
Réponse en cas d'erreur

Condition : Aucun observateur correspondant à l'id n'est trouvé.

Code : 404 NOT FOUND

Exemple du corps de la réponse :

{
    "name": "",
    "description": "No watcher found with ID declare_external_ticket"
}

Condition : En cas d'erreur avec la base de données.

Code : 400 BAD REQUEST

Exemple du corps de la réponse :

{
  "description": "Can not retrieve the watcher data from database, contact your administrator."
}

Récupération de tous les observateurs en base de données

Récupère tous les observateurs stockés en base

URL : /api/v2/watcherng

Méthode : GET

Authentification requise : Oui

Permissions requise : Aucune

Exemple de requête curl pour utilisateur root avec mot de passe root pour récupérer tous les webhooks :

curl -X GET -u root:root 'http://<Canopsis_URL>/api/v2/watcherng'
Réponse en cas de réussite

Condition : aucune.

Code : 200 OK

Exemple du corps de la réponse :

[
    {
      "_id": "h4z25rzg6rt-64rge354-5re4g",
      // ...
    },
    {
      "_id": "aa481acfb2d6d932c0654e5a23e20019",
      // ...
    },
    {
      "_id": "yet-another-watcher",
      // ...
    }
]
Réponse en cas d'erreur

Condition : En cas d'erreur avec la base de données.

Code : 400 BAD REQUEST

Exemple du corps de la réponse :

{
  "description": "Can not retrieve the watchers list from database, contact your administrator."
}

Recalcul du context-graph d'un observateur

Force un observateur à recalculer ses impact/depends.

URL : /api/v2/watcherng/<watcher_id>

Méthode : PUT

Authentification requise : Oui

Permissions requise : Aucune

Exemple de requête curl pour utilisateur root avec mot de passe root pour récupérer l'observateur avec l'id h4z25rzg6rt-64rge354-5re4g :

curl -X PUT -u root:root 'http://<Canopsis_URL>/api/v2/watcherng/h4z25rzg6rt-64rge354-5re4g'

Réponse en cas de réussite

Condition : le context-graph de l'observateur a été recalculé

Code : 200 OK

Exemple du corps de la réponse :

{
    "impact": ["watcher/watcher"],
    "name": "Ticketing",
    "enable_history": [],
    "measurements": null,
    "enabled": true,
    "state": {
        "method": "worst"
    },
    "entities": [{
        "infos": {
            "scenario_parent_app_name": {
                "value": "tick01"
            }
        }
    }],
    "depends": ["creation_ticket/serveur_tickets", "maj_ticket/serveur_tickets", "suppression_ticket/serveur_tickets"],
    "output_template": "Alarmes critiques : {{.State.Critical}}",
    "infos": {
        "sicode": {
            "name": "",
            "value": "DEM",
            "description": "Code SI"
        },
        "statutlabel": {
            "name": "",
            "value": "Production",
            "description": "Statut"
        },
        "description": {
            "name": "",
            "value": "Gestion des tickets",
            "description": "Libell\u00e9 application"
        },
        "typecode": {
            "name": "",
            "value": "T",
            "description": "Code Type Application"
        },
        "type": {
            "name": "",
            "value": "Technique",
            "description": "Type Application"
        },
        "statut": {
            "name": "",
            "value": "PR",
            "description": "Code Statut"
        },
        "criticity": {
            "name": "",
            "value": "1",
            "description": "Code Criticit\u00e9"
        },
        "si": {
            "name": "",
            "value": "Demo",
            "description": "SI"
        },
        "criticitylabel": {
            "name": "",
            "value": "Standard",
            "description": "Criticit\u00e9"
        }
    },
    "_id": "tick01",
    "type": "watcher"
}

Réponse en cas d'erreur

Condition : Si l'_id de l'observateur n'existe pas.

Code : 400 BAD REQUEST

Exemple du corps de la réponse :

{
  "name": "",
  "description": "No watcher found with ID h4z25rzg6rt-64rge354-5re4g"
}

Dernière mise à jour: 2020-04-30