تخطَّ إلى المحتوى

مرجع API

يمتلك CSD واجهة API مخصصة على /api/shape/csd/ لإدارة النطاقات والسكريبتات والتخفيف والمراقبة. يمكن أيضاً تفعيل CSD على موازنات تحميل HTTP عبر واجهة API لتهيئة موازن التحميل.

تستلزم جميع استدعاءات API رمز API. قم بإنشاء رمز في وحدة تحكم XC ضمن الإدارةبيانات الاعتمادبيانات اعتماد API.

قم بإعداد متغيرات البيئة الخاصة بك كما هو موضح في أتمتة API — إعداد البيئة:

Terminal window
set -a && source .env && set +a

تستخدم جميع أمثلة curl صيغة العنصر النائب xTOKENx. استبدلها بمتغيرات البيئة الخاصة بك أو استخدم النموذج التفاعلي في أعلى الصفحة. على سبيل المثال، xF5XC_API_TOKENx يقابل $F5XC_API_TOKEN.

Terminal window
-H "Authorization: APIToken xF5XC_API_TOKENx"
  • POST يُعيد الكائن المُنشأ بصيغة JSON.
  • PUT وDELETE يُعيدان \{\} فارغاً عند HTTP 200 — وهذا أمر طبيعي وليس خطأ. لا تعتبر هيكل الاستجابة الفارغ إخفاقاً.

نقاط نهاية القائمة مقابل GET

Section titled “نقاط نهاية القائمة مقابل GET”

نقاط نهاية القائمة (مثل /healthchecks و/origin_pools و/protected_domains) ونقاط نهاية GET الفردية (مثل /healthchecks/\{name\}) تُعيد هياكل استجابة مختلفة:

نوع نقطة النهايةمسال المسارهيكل الاستجابة
قائمة/origin_poolsالعناصر تحتوي على .name و.namespace و.tenant على المستوى الأعلى مع metadata: null وget_spec: null
GET فردي/origin_pools/\{name\}الكائن يحتوي على .metadata.name و.spec.* مع التهيئة الكاملة

استخدم مسارات jq الصحيحة لكل منهما. على سبيل المثال، لاستخراج الأسماء من نقطة نهاية القائمة استخدم .items[].name وليس .items[].metadata.name.

بالنسبة لعمليات GET وDELETE للنطاق المحمي، فإن معامل المسار \{name\} هو قيمة النطاق نفسها (مثل bankexample.com)، وليس اسماً اعتباطياً للكائن. يختلف هذا عن كائنات F5 XC الأخرى حيث يكون الاسم معرّفاً يختاره المستخدم.

المسار الأساسي: /api/shape/csd/namespaces/\{namespace\}/

الحالة والتهيئة الأولية

Section titled “الحالة والتهيئة الأولية”
العمليةالطريقةالمسار
تفعيل CSDPOST/api/shape/csd/namespaces/system/init
الحصول على الحالةGET/api/shape/csd/namespaces/\{namespace\}/status
الحصول على تهيئة JSGET/api/shape/csd/namespaces/\{namespace\}/js_configuration
اختبار JSPOST/api/shape/csd/namespaces/\{namespace\}/testjs
تحديث النطاقاتPOST/api/shape/csd/namespaces/\{namespace\}/update_domains
العمليةالطريقةالمسار
قائمةGET/api/shape/csd/namespaces/\{namespace\}/protected_domains
الحصول علىGET/api/shape/csd/namespaces/\{namespace\}/protected_domains/\{name\}
إنشاءPOST/api/shape/csd/namespaces/\{namespace\}/protected_domains
حذفDELETE/api/shape/csd/namespaces/\{namespace\}/protected_domains/\{name\}
العمليةالطريقةالمسار
قائمة المكتشفةGET/api/shape/csd/namespaces/\{namespace\}/detected_domains
الحصول على التفاصيلGET/api/shape/csd/namespaces/\{namespace\}/domain_details
العمليةالطريقةالمسار
قائمةGET/api/shape/csd/namespaces/\{namespace\}/allowed_domains
الحصول علىGET/api/shape/csd/namespaces/\{namespace\}/allowed_domains/\{name\}
إنشاءPOST/api/shape/csd/namespaces/\{namespace\}/allowed_domains
حذفDELETE/api/shape/csd/namespaces/\{namespace\}/allowed_domains/\{name\}
العمليةالطريقةالمسار
قائمةGET/api/shape/csd/namespaces/\{namespace\}/mitigated_domains
الحصول علىGET/api/shape/csd/namespaces/\{namespace\}/mitigated_domains/\{name\}
إنشاءPOST/api/shape/csd/namespaces/\{namespace\}/mitigated_domains
حذفDELETE/api/shape/csd/namespaces/\{namespace\}/mitigated_domains/\{name\}
العمليةالطريقةالمسار
قائمة السكريبتاتPOST/api/shape/csd/namespaces/\{namespace\}/scripts
قائمة السكريبتات (قديم)GET/api/shape/csd/namespaces/\{namespace\}/scripts
الحصول على نظرة عامة على السكريبتGET/api/shape/csd/namespaces/\{namespace\}/scripts/\{id\}/dashboard
قائمة السلوكياتGET/api/shape/csd/namespaces/\{namespace\}/scripts/\{id\}/behaviors
قائمة تفاعلات الشبكةGET/api/shape/csd/namespaces/\{namespace\}/scripts/\{id\}/networkInteractions
تحديث المبررPOST/api/shape/csd/namespaces/\{namespace\}/scripts/\{script_id\}/justification
حذف المبررDELETE/api/shape/csd/namespaces/\{namespace\}/script/justification/\{justification_id\}
تحديث حالة القراءةPOST/api/shape/csd/namespaces/\{namespace\}/scripts/\{id\}/readStatus
قائمة المستخدمين المتأثرينPOST/api/shape/csd/namespaces/\{namespace\}/scripts/\{script_id\}/affectedUsers
العمليةالطريقةالمسار
قائمة حقول النماذجGET/api/shape/csd/namespaces/\{namespace\}/formFields
قائمة حقول النماذج (POST)POST/api/shape/csd/namespaces/\{namespace\}/formFields
الحصول على حقل نموذجGET/api/shape/csd/namespaces/\{namespace\}/formFields/\{id\}
قائمة حسب السكريبتGET/api/shape/csd/namespaces/\{namespace\}/scripts/\{id\}/formFields
تحديث تحليل الحقلPOST/api/shape/csd/namespaces/\{namespace\}/formFields/analysis

تهيئة CSD للمستأجر:

Terminal window
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
"xF5XC_API_URLx/api/shape/csd/namespaces/system/init"
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/status" \
| jq .

قائمة النطاقات المحمية

Section titled “قائمة النطاقات المحمية”
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/protected_domains" \
| jq .
Terminal window
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{
"metadata": {
"name": "my-app",
"namespace": "xF5XC_NAMESPACEx"
},
"spec": {}
}' \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/protected_domains" \
| jq .
Terminal window
curl -s -X DELETE \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/protected_domains/my-app"

قائمة النطاقات المكتشفة

Section titled “قائمة النطاقات المكتشفة”

معاملات الاستعلام: locations (تصفية حسب الموقع)، risk (تصفية حسب مستوى الخطر).

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/detected_domains" \
| jq .

التصفية حسب الخطر العالي:

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/detected_domains?risk=high" \
| jq .

الحصول على تفاصيل النطاق

Section titled “الحصول على تفاصيل النطاق”
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/domain_details?name=suspicious.example.com" \
| jq .
Terminal window
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{}' \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts" \
| jq .

الحصول على نظرة عامة على السكريبت

Section titled “الحصول على نظرة عامة على السكريبت”
Terminal window
SCRIPT_ID="your-script-id"
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts/${SCRIPT_ID}/dashboard" \
| jq .

قائمة سلوكيات السكريبت

Section titled “قائمة سلوكيات السكريبت”
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts/${SCRIPT_ID}/behaviors" \
| jq .
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts/${SCRIPT_ID}/networkInteractions" \
| jq .
Terminal window
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{
"metadata": {
"name": "blocked-domain",
"namespace": "xF5XC_NAMESPACEx"
},
"spec": {}
}' \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \
| jq .

قائمة النطاقات المخففة

Section titled “قائمة النطاقات المخففة”
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \
| jq .
Terminal window
curl -s -X DELETE \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains/blocked-domain"
Terminal window
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{
"metadata": {
"name": "trusted-cdn",
"namespace": "xF5XC_NAMESPACEx"
},
"spec": {}
}' \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/allowed_domains" \
| jq .

قائمة النطاقات المسموح بها

Section titled “قائمة النطاقات المسموح بها”
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/allowed_domains" \
| jq .
Terminal window
curl -s -X DELETE \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/allowed_domains/trusted-cdn"

الحصول على التهيئة الحالية

Section titled “الحصول على التهيئة الحالية”
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/js_configuration" \
| jq .

تهيئة CSD على موازن تحميل HTTP

Section titled “تهيئة CSD على موازن تحميل HTTP”

يمكن أيضاً تفعيل حقن JavaScript الخاص بـ CSD مباشرةً على موازن تحميل HTTP عبر واجهة API للتهيئة على /api/config/namespaces/\{namespace\}/http_loadbalancers/\{name\}.

يتحكم الحقل client_side_defense ضمن مواصفات موازن التحميل في عملية الحقن:

{
"client_side_defense": {
"policy": {
"js_insert_all_pages": {}
}
}
}

يقبل policy أحد الخيارات التالية:

الحقلالوصف
js_insert_all_pagesالحقن في جميع الصفحات
js_insert_all_pages_exceptالحقن في جميع الصفحات باستثناء قواعد الاستثناء
js_insertion_rulesالحقن فقط في الصفحات المطابقة للقواعد
disable_js_insertعدم الحقن

لتعطيل CSD على موازن تحميل، استبدل client_side_defense بـ disable_client_side_defense: \{\}.

قراءة تهيئة CSD من موازن التحميل

Section titled “قراءة تهيئة CSD من موازن التحميل”
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx" \
| jq '.spec.client_side_defense'

تفعيل CSD على موازن تحميل

Section titled “تفعيل CSD على موازن تحميل”

الاسترداد والتعديل والتطبيق:

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx" \
> lb-config.json
jq '.spec |= (
del(.disable_client_side_defense) |
.client_side_defense = {
"policy": {
"js_insert_all_pages": {}
}
}
)' lb-config.json > lb-config-updated.json
curl -s -X PUT \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d @lb-config-updated.json \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx" \
| jq '.spec.client_side_defense'

مطابقة النطاق والمسار لقواعد الاستثناء

Section titled “مطابقة النطاق والمسار لقواعد الاستثناء”

عند استخدام js_insert_all_pages_except أو js_insertion_rules، تُطابق كل قاعدة مجموعة نطاق ومسار.

النطاق (اختر أحدها):

الحقلمثال
any_domain: \{\}جميع النطاقات
domain.exact_value"app.example.com"
domain.suffix_value".example.com"
domain.regex_value".*\\.example\\.com"

المسار (اختر أحدها):

الحقلمثال
path.path"/login"
path.prefix"/checkout"
path.regex"/user/[0-9]+"