أمثلة على واجهة برمجة تطبيقات REST API

يحتوي القسم التالي على أمثلة للبرامج النصية للباش حول كيفية تنفيذ الإجراءات باستخدام واجهة برمجة تطبيقات SKOOR REST مع الأداة المساعدة curl. يتم تنسيق معظم المدخلات والمخرجات في JSON. ولسهولة القراءة، استُخدم محلل JSON jq في بعض الأمثلة التي يمكن تثبيتها من مستودعات Redhat أو CentOS الشائعة.

رأس البرنامج النصي لباش

معلمات شائعة لتعيينها كرأس برنامج نصي لباش لأمثلة البرامج النصية أدناه (يجب تكييف USER وPASSWORD مع مستخدم SKOOR حقيقي):

#!/bin/bash
HOST=reltest
USER=admin
PASSWORD=admin

أمثلة الطلبات

يمكن نسخ الطلبات وأجسام الطلبات في الأمثلة أدناه ولصقها كما هي باستثناء معرّفات الكائنات التي يجب استبدالها بأخرى موجودة على النظام الذي يتم تنفيذ الطلبات فيه. يجب توفير أجزاء من أجسام الطلبات على الرغم من عدم احتوائها على قيم ذات معنى لإنشاء الكائن أو تحديثه.

يجب توفير معظم معلومات التاريخ والوقت في الطلبات بصيغة ISO 8601 وتنسيق المدة

جلسة SKOOR

تسجيل الدخول إلى SKOOR:

SESSION_ID=$(curl --silent -k "https://$HOST/skoor-webservice/session/login?username=$USER&password=$PASSWORD" | jq -r '.sessionId') >/dev/null

يرجى تسجيل الخروج دائمًا بعد الانتهاء من جميع الطلبات. تبقى الجلسات مفتوحة لمدة 24 ساعة وإلا

تسجيل الخروج:

curl -k "https://$HOST/skoor-webservice/session/logout?sessionId=$SESSION_ID"

المستخدمون

الاستعلام عن جميع مستخدمي SKOOR وتحليل الأسماء والأدوار باستخدام jq:

curl --silent -k "https://$HOST/skoor-webservice/users?&sessionId=$SESSION_ID" | jq -r '.[] | "\(.name) \(.role)"'

المجموعات

الاستعلام عن مجموعة محددة بمعرف 495:

curl -k -X GET "https://$HOST/skoor-webservice/groups/495?sessionId=$SESSION_ID"

الاستعلام عن مجموعة باستخدام فلتر بحث مشفّر بعناوين URL. يجب أن تحتوي النتيجة على جميع المجموعات التي تقل عن معرّف المجموعة الأصلية 207.

مرشح البحث الأصلي: المجموعات التي تحتوي على معرف لا يساوي 207:

{"type":"group","mode": "and","conditions": [{"item":"id","operator": "ne","expression":"207"}]}

عامل تصفية البحث المشفر لعنوان URL (يمكن إجراء الترميز/فك الترميز باستخدام مهمة SKOOR HTTP أو إحدى الخدمات العديدة على الإنترنت):

%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

استعلام:

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"

الأجهزة

استعلام عن جهاز بمعرف 383:

curl -k -X GET "https://$HOST/skoor-webservice/devices/383?sessionId=$SESSION_ID"

إنشاء جهاز أسفل المجموعة ذات المعرف 308:

طلب هيئة الطلب لجهاز من النوع الفرعي الخادم باسم SKOOR Server. تعيين المُجمّع الافتراضي إلى المعرف 2 وهو المُجمّع المحلي:

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
}'

طلب:

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"

إنشاء مثيل جهاز من قالب أسفل المجموعة بالمعرف 332. لتحقيق ذلك، سيتم استخدام طريقة النسخ في واجهة برمجة تطبيقات REST. يجب تعيين معرف الجهاز (180 في المثال) إلى معرف قالب الجهاز :

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"

حذف الجهاز ذي المعرف 558:

لا يمكن استعادة الكائنات المحذوفة إلا من النسخة الاحتياطية للتكوين!

curl -k -X DELETE "https://localhost/skoor-webservice/devices/558?recursive=true&sessionId=$SESSION_ID"

الوظائف

استعلام معرفالوظيفة 1675 مع العتبات والقيم:

curl -ks -X GET "https://$HOST/skoor-webservice/jobs/1675?thresholds=true&values=true&sessionId=$SESSION_ID"

البحث عن وظيفة باستخدام فلتر بحث.

عامل تصفية البحث المشفر لعنوان URL للبحث عن وظائف أسفل المجموعة ذات المعرف 216 التي تحتوي على خاصية مخصصة مع تعيين خاصية test_property على قيمة 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"

مرشح بحث بنص عادي عن وظائف من النوع الفرعي webcollector أسفل المجموعة 310 مع تحليل النتيجة باستخدام 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)"'

إنشاء مهمة أسفل معرف الجهاز 555:

نص الطلب لمهمة من النوع الفرعي webcollector مع إنشاء اسم TEST وثلاث قيم إرجاع. إنشاء المهمة تحت الجهاز بالمعرف 555. سيتم تعيين الفاصل الزمني للتنفيذ على 0 ثانية (PT0S: لا يوجد فاصل زمني):

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
}'

طلب

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"

تحديث المهمة ذات المعرف 1608:

طلب هيئة الطلب للمهمة ذات المعرف 1608 على معرف الجهاز 555. تعيين العتبات لهذه المهمة :

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
}'

طلب:

echo $JOB_BODY_UPDATE | curl -s -k -X PUT -H "Content-Type: application/json" -d @- "https://$HOST/skoor-webservice/jobs/1608?sessionId=$SESSION_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"

سجل قيمة الاستعلام عن تاريخ قيمة المهمة ذات المعرف 1326:

يجب توفير معلومات التاريخ والوقت بصيغة ISO 8601 وتنسيق المدة

curl -ks -X GET "https://$HOST/skoor-webservice/jobs/1326/value-history?timestamp_begin=2018-04-16T08%3A00%3A00Z&timestamp_end=2018-04-16T10%3A00%3A00Z&scale=PT10M&key=returnValue1&mode=avg&values=true&sessionId=$SESSION_ID"

SLC

الاستعلام عن سجل حالة SLC بالمعرف 6:

curl -k -X GET "https://$HOST/skoor-webservice/slcs/6/state-history?timestamp_begin=2017-10-01T00:00%2B01:00&timestamp_end=2017-12-12T23:59%2B01:00&recalc=true&sessionId=$SESSION_ID"

SLO

استعلام تاريخ حالةSLO بالمعرف 116:

curl -k -X GET "https://$HOST/skoor-webservice/slos/116?sessionId=$SESSION_ID"

الاستعلام عن محفوظات الحالة لمعرف SLO بالمعرف 116:

curl -k -X GET "https://$HOST/skoor-webservice/slos/116/state-history?timestamp_begin=2018-01-01T00:00%2B01:00&timestamp_end=2018-12-12T23:59%2B01:00&recalc=true&sessionId=$SESSION_ID"

الاستعلام عن الكائنات التابعة لمعرف SLO المعرف 176:

curl -k -X GET "https://$HOST/skoor-webservice/slos/176/children?sessionId=$SESSION_ID"

إنشاء معرّفSLO أدناه معرف المجموعة 296:

طلب الجسم لـ SLO من النوع الفرعي العلوي باسم 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"
}'

طلب:

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"

إنشاء مثيلSLO من قالب SLO بالمعرف 179. سيكون اسم SLO هو rest-test-slo وسيكون الكائن الأصل هو slo بالمعرف 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"

الانقطاعات

الاستعلام عن الانقطاعات بين 2019-02-21T09:00+01:00 و 2019-03-21T23:59+01:00 (تم ترميز عنوان URL). الافتراضي هو مدة لا تقل عن 10 دقائق (PT10M) والحالة الرئيسية فقط:

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"

عمليات إعادة التقييم

الاستعلام عن عمليات إعادة التقييم للمجموعة 207 من 2019-04-01T00:00:00:00Z:

curl -k -X GET "https://$HOST/skoor-webservice/groups/207/revaluations?begin=2019-04-01T00:00:00Z&sessionId=$SESSION_ID"

إضافة إعادة تقييم إلى معرف المجموعة 207:

يجب تعيين معلمات البداية والنهاية بالتوقيت العالمي المنسق متبوعًا بالمنطقة الزمنية Z أو +00:00:00 أو بالتوقيت المحلي متبوعًا بالمنطقة الزمنية (على سبيل المثال +02:00:00). تؤثر معلمة المنطقة الزمنية على مصفوفة الأوقات فقط

إذا كان وقت معلمة البداية لا يتطابق مع وقت بداية مصفوفة الأوقات، سيتم عرض الصيانة فقط في وضع التحرير (تحرير إعادة التقييم). يرجى ملاحظة أن MET سيميز تلقائيًا بين التوقيت الصيفي والشتوي. اضبط وقت البدء على التوقيت المحلي في هذه الحالة

هيئة الطلب لإعادة التقييم لمرة واحدة من 2019-04-13T07:20:00:00Z إلى 2019-04-13T08:20:00: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
		}
	]
}'

طلب

echo $REVALUATION_BODY | curl -k -X POST -H "Content-Type: application/json" -d @- "https://$HOST/skoor-webservice/groups/207/revaluations?sessionId=$SESSION_ID"