Exemples d'API REST
La section suivante contient des exemples de script bash sur la façon d'effectuer des actions à l'aide de l'API SKOOR REST avec l'utilitaire curl . La plupart des entrées et sorties sont formatées en JSON. Pour des raisons de lisibilité, l'analyseur JSON jq a été utilisé dans certains des exemples qui peuvent être installés à partir des référentiels Redhat ou CentOS communs.
En-tête du script Bash
Paramètres communs à définir comme en-tête de script bash pour les exemples de script ci-dessous (USER et PASSWORD doivent être adaptés à un réel utilisateur SKOOR) :
#!/bin/bash HOST=reltest USER=admin PASSWORD=admin
Demander des exemples
Les requêtes et les corps de requête dans les exemples ci-dessous peuvent être copiés et collés tels quels, à l'exception des identifiants d'objet qui doivent être remplacés par ceux existants. sur le système, les requêtes sont exécutées. Certaines parties des corps de la demande doivent être fournies, même si elles ne contiennent pas de valeurs significatives pour la création ou la mise à jour d'objets.
La plupart des informations de date et d'heure contenues dans les demandes doivent être fournies au format ISO 8601 et au format de durée.
Séance SKOOR
Connectez-vous à SKOOR :
SESSION_ID=$(curl --silent -k "https://$HOST/skoor-webservice/session/login?username=$USER&password=$PASSWORD" | jq -r '.sessionId') >/dev/null
Veuillez toujours vous déconnecter une fois que toutes les demandes ont été effectuées. Les séances restent ouvertes 24 heures sinon
Se déconnecter:
curl -k "https://$HOST/skoor-webservice/session/logout?sessionId=$SESSION_ID"
Utilisateurs
Interrogez tous les utilisateurs SKOOR et analysez les noms et les rôles à l'aide de jq :
curl --silent -k "https://$HOST/skoor-webservice/users?&sessionId=$SESSION_ID" | jq -r '.[] | "\(.name) \(.role)"'
Groupes
Interrogez un groupe spécifique avec l'ID 495 :
curl -k -X GET "https://$HOST/skoor-webservice/groups/495?sessionId=$SESSION_ID"
Interrogez un groupe à l'aide d'un filtre de recherche codé en URL. Le résultat doit contenir tous les groupes inférieurs à l'ID de groupe parent 207.
Filtre de recherche d'origine : groupes avec un identifiant différent de 207 :
{"type":"group","mode": "and","conditions": [{"item":"id","operator": "ne","expression":"207"}]}
Filtre de recherche encodé par URL (l'encodage/décodage peut être effectué à l'aide d'une tâche HTTP SKOOR ou de l'un des nombreux services sur Internet) :
%7B%22type%22%3A%22group%22%2C%22mode%22%3A%20%22and%22%2C%22conditions%22%3A%20%5B%7B%22item%22%3A%22id%22%2C%22operator%22%3A%20%22ne%22%2C%22expression%22%3A%22207%22%7D%5D%7D
Requête:
curl -k -X GET "https://$HOST/skoor-webservice/groups/207/search?filterDefinition=%7B%22type%22%3A%22group%22%2C%22mode%22%3A%20%22and%22%2C%22conditions%22%3A%20%5B%7B%22item%22%3A%22id%22%2C%22operator%22%3A%20%22ne%22%2C%22expression%22%3A%22207%22%7D%5D%7D&sessionId=$SESSION_ID"
Dispositifs
Appareil de requête avec l'ID 383 :
curl -k -X GET "https://$HOST/skoor-webservice/devices/383?sessionId=$SESSION_ID"
Créez un appareil sous le groupe avec l'identifiant 308 :
Corps de la requête pour un appareil de sous-type server portant le nom SKOOR Server . Définissez le collecteur par défaut sur l'Id 2 qui est le collecteur local :
DEVICE_BODY='{ "type": "device", "subType": "server", "name": "SKOOR Server", "address": "", "netmask": "", "deviceName": "localhost", "properties": [], "parameter": {}, "permissions": { "read": true, "write": true, "execute": true }, "isTemplate": false, "instanceType": "sub", "collectorId": 2, "hasChildren": false }'
Demande:
echo $DEVICE_BODY | curl -s -k -X POST -H "Content-Type: application/json" -d @- "https://$HOST/skoor-webservice/devices?parentType="group"&parentId="308"&sessionId=$SESSION_ID"
Créez une instance de périphérique à partir d'un modèle situé sous le groupe avec l'ID 332 . Pour y parvenir, la méthode de copie de l'API REST sera utilisée. L'identifiant de l'appareil (180 dans l'exemple) doit être défini sur l' identifiant du modèle d'appareil :
curl -k -X POST "https://$HOST/skoor-webservice/devices/180/copy?destinationName="rest-test"&destinationAddress="localhost"&parentType="group"&parentId=332&destinationType="instance"&collectorId=2&jobsStopped=false&sessionId=$SESSION_ID"
Supprimez l' appareil avec l'ID 558 :
Les objets supprimés ne peuvent être restaurés qu'à partir de la sauvegarde de la configuration !
curl -k -X DELETE "https://localhost/skoor-webservice/devices/558?recursive=true&sessionId=$SESSION_ID"
Emplois
Interrogez l'ID de tâche 1675 avec des seuils et des valeurs :
curl -ks -X GET "https://$HOST/skoor-webservice/jobs/1675?thresholds=true&values=true&sessionId=$SESSION_ID"
Recherchez un emploi à l'aide d'un filtre de recherche.
Filtre de recherche codé en URL pour rechercher des emplois sous le groupe avec l'ID 216 ayant une propriété personnalisée avec la clé test_property définie sur la valeur abc :
curl -ks -X GET "https://$HOST/skoor-webservice/groups/216/search?filterDefinition=%7B%22type%22%3A%22job%22%2C%22mode%22%3A%22and%22%2C%22conditions%22%3A%5B%7B%22item%22%3A%22property_key%22%2C%22operator%22%3A%22eq%22%2C%22expression%22%3A%22abc%22%2C%22propertyKey%22%3A%22test_property%22%7D%5D%7D&sessionId=$SESSION_ID"
Filtre de recherche en texte brut pour les tâches du sous-type webcollector inférieur au groupe 310 avec résultat analysé à l'aide de jq :
curl -ks -X GET -G "https://$HOST/skoor-webservice/groups/310/search?sessionId=$SESSION_ID" --data-urlencode "filterDefinition={\"type\":\"job\",\"mode\":\"and\",\"conditions\":[{\"item\":\"subType\",\"operator\":\"eq\",\"expression\":\"webcollector\"}]}" | jq -r '.items[] | "\(.deviceName) \(.name) \(.id)"'
Créez une tâche sous l'ID de périphérique 555 :
Corps de la requête pour un travail de sous-type webcollector avec le nom TEST généré et trois valeurs de retour. Créez le travail sous l'appareil avec l'ID 555 . L'intervalle d'exécution sera fixé à 0 seconde (PT0S : pas d'intervalle) :
JOB_BODY='{ "type": "job", "name": "TEST generated", "deviceId": 555, "subType": "webcollector", "interval": "PT0S", "stopped": false, "parameters": { "intervalMode": 0, "filename": "", "returnValue": [ { "valueName": "Return value 1" }, { "valueName": "Return value 2" }, { "valueName": "Return value 3" } ] }, "isTemplate": false, "properties": [], "permissions": { "read": true, "write": true, "execute": true }, "instanceType": "none", "stateForced": false, "thresholds": null, "values": null, "message": null }'
Demande:
echo $JOB_BODY | curl -s -k -X POST -H "Content-Type: application/json" -d @- "https://$HOST/skoor-webservice/jobs?parentType="device"&parentId="555"&sessionId=$SESSION_ID"
Mise à jour du travail avec l'ID 1608 :
Corps de la demande pour la tâche portant l'ID 1608 sur l'ID de périphérique 555. Définissez des seuils pour cette tâche :
JOB_BODY_UPDATE='{ "type": "job", "id": 1608, "name": "Richmond", "deviceId": 555, "deviceName": "TEST generated device", "subType": "webcollector", "interval": "PT0S", "stopped": false, "parameters": { "intervalMode": 0, "filename": "", "returnValue": [ { "valuePrecision": 3, "valueName": "myValue" } ] }, "isTemplate": false, "properties": [], "permissions": { "read": true, "write": true, "execute": true }, "instanceType": "none", "currentState": "ok", "stateForced": false, "thresholds": { "major": { "mode": "or", "conditions": [ { "key": "returnValue1", "operator": ">", "value": 60.0, "repetition": 1, "inFuture": null, "adaptiveValues": null } ] } }, "values": {}, "message": null, "collectorId": 2 }'
Demande:
echo $JOB_BODY_UPDATE | curl -s -k -X PUT -H "Content-Type: application/json" -d @- "https://$HOST/skoor-webservice/jobs/1608?sessionId=$SESSION_ID"
Arrêter/démarrer le travail avec l'ID 1605 :
curl -ks -X GET -G "https://$HOST/skoor-webservice/jobs/1605?sessionId=$SESSION_ID" | jq -r '.stopped = false' | curl -s -k -X PUT -H "Content-Type: application/json" -d @- "https://$HOST/skoor-webservice/jobs/1605?sessionId=$SESSION_ID"
Historique des valeurs de requête de l'ID de travail 1326 :
Les informations de date et d'heure doivent être fournies au format ISO 8601 et au format de durée.
curl -ks -X GET "https://$HOST/skoor-webservice/jobs/1326/value-history?timestamp_begin=2018-04-16T08%3A00%3A00Z×tamp_end=2018-04-16T10%3A00%3A00Z&scale=PT10M&key=returnValue1&mode=avg&values=true&sessionId=$SESSION_ID"
SLC
Interrogez l'historique de l'état SLC avec l'identifiant 6 :
curl -k -X GET "https://$HOST/skoor-webservice/slcs/6/state-history?timestamp_begin=2017-10-01T00:00%2B01:00×tamp_end=2017-12-12T23:59%2B01:00&recalc=true&sessionId=$SESSION_ID"
SLO
Interrogez le SLO avec l'ID 116 :
curl -k -X GET "https://$HOST/skoor-webservice/slos/116?sessionId=$SESSION_ID"
Historique de l'état de la requête de l'ID SLO 116 :
curl -k -X GET "https://$HOST/skoor-webservice/slos/116/state-history?timestamp_begin=2018-01-01T00:00%2B01:00×tamp_end=2018-12-12T23:59%2B01:00&recalc=true&sessionId=$SESSION_ID"
Interrogez les objets enfants de l'ID SLO 176 :
curl -k -X GET "https://$HOST/skoor-webservice/slos/176/children?sessionId=$SESSION_ID"
Créez un SLO sous l'ID de groupe 296 :
Corps de la demande pour un SLO de sous-type top portant le nom TEST SLO :
SLO_BODY='{ "type": "slo", "subType": "top", "name": "TEST SLO", "deviceId": 0, "deviceName": "", "stateOperation": "and", "pushState": "any", "sortMode": "link", "warning": 0, "minor": 0, "major": 0, "minorWarning": 0, "minorMinor": 0, "warningWarning": 0, "isTemplate": false, "ignoreMaintenance": true, "isReason": true, "properties": [], "parameters": { "children": 0, "costsPerMin": 0, "currency": "", "riskFactor": 0 }, "permissions": { "read": true, "write": true, "execute": true }, "instanceType": "none" }'
Demande:
echo $SLO_BODY | curl -s -k -X POST -H "Content-Type: application/json" -d @- "https://$HOST/skoor-webservice/slos?parentType=group&parentId=296&sessionId=$SESSION_ID"
Créez une instance SLO à partir du modèle SLO avec l'ID 179 . Le nom du SLO sera rest-test-slo et l'objet parent sera le slo avec l'identifiant 177 :
curl -k -X POST "https://$HOST/skoor-webservice/slos/179/copy?destinationName=rest-test-slo_1&parentType=slo&parentId=177&destinationType=instance&sessionId=$SESSION_ID"
Pannes
Pannes de requête entre le 2019-02-21T09:00+01:00 et le 2019-03-21T23:59+01:00 (URL codée). La durée par défaut est une durée minimale de 10 minutes (PT10M) et un état majeur uniquement :
curl -k -X GET "https://$HOST/skoor-webservice/devices/383/outages?begin=2019-02-21T09:00%2B01:00&end=2019-03-21T23:59%2B01:00&recalc=false&sessionId=$SESSION_ID"
Réévaluations
Requête des réévaluations du groupe 207 du 2019-04-01T00:00:00Z :
curl -k -X GET "https://$HOST/skoor-webservice/groups/207/revaluations?begin=2019-04-01T00:00:00Z&sessionId=$SESSION_ID"
Ajouter une réévaluation au groupe ID 207 :
Les paramètres de début et de fin doivent être définis en UTC suivi du fuseau horaire Z ou +00:00 ou de l'heure locale suivie du fuseau horaire (par exemple +02:00 ). Le paramètre timezone affecte uniquement le tableau times
Si l'heure du paramètre de début ne correspond pas à l'heure de début du tableau times , la maintenance ne sera affichée qu'en mode édition (Editer réévaluation). Veuillez noter que MET fera automatiquement la distinction entre l'heure d'été et l'heure d'hiver. Dans ce cas, réglez l'heure de début sur l'heure locale
Corps de demande pour une réévaluation unique du 2019-04-13T07:20:00Z au 2019-04-13T08:20:00Z :
REVALUATION_BODY='{ "begin": "2019-04-13T07:20:00Z", "end": "2019-04-13T08:20:00Z", "created": null, "type": "maintenance", "adjustTo": "undefined", "inPast": null, "incident": null, "name": "Test-Maintenance", "active": [ { "type": "one_time", "name": null, "timezone": "UTC", "times": [ { "begin": "07:20", "duration": "PT1H", "date": "2019-04-13" } ], "exception": false } ] }'
Demande:
echo $REVALUATION_BODY | curl -k -X POST -H "Content-Type: application/json" -d @- "https://$HOST/skoor-webservice/groups/207/revaluations?sessionId=$SESSION_ID"