مزودو الخدمات المدمجين في بوابة القرار
تحميل: providers.json (22 كيلوبايت)
هذا المستند يلخص مقدمي الخدمات المدمجين. المخططات الكاملة موجودة في providers.json.
الوقت
تحقق حتمي مستمد من الطابع الزمني للتفعيل المقدم من المتصل.
عقد المزود
- الاسم: مزود الوقت
- النقل: مدمج
ملاحظات
- حتمي: لا توجد قراءات للساعة الحائطية، فقط طوابع زمنية للتفعيل.
- يدعم unix_millis وطوابع زمنية للمشغلات المنطقية.
مخطط التكوين
حقول التكوين:
allow_logical(اختياري): السماح بتوقيتات المشغلات المنطقية في المقارنات. الافتراضي: صحيح.
{
"additionalProperties": false,
"properties": {
"allow_logical": {
"default": true,
"description": "Allow logical trigger timestamps in comparisons.",
"type": "boolean"
}
},
"type": "object"
}
الفحوصات
الآن
إرجاع الطابع الزمني للمشغل كرقم JSON.
- الحتمية: تعتمد على الوقت
- المعلمات المطلوبة: لا
- المقارنات المسموح بها: equals، not_equals، greater_than، greater_than_or_equal، less_than، less_than_or_equal، in_set، exists، not_exists
- أنواع النقاط: trigger_time_unix_millis، trigger_time_logical
- أنواع المحتوى: application/json
حقول المعلمات:
لا توجد حقول.
مخطط المعلمات:
{
"additionalProperties": false,
"description": "No parameters required.",
"properties": {},
"type": "object"
}
نموذج النتيجة:
{
"type": "integer"
}
أمثلة:
وقت تفعيل العودة.
المعلمات:
{}
نتيجة:
1710000000000
بعد
ارجع صحيحًا إذا كان وقت الزناد بعد العتبة.
- الحتمية: تعتمد على الوقت
- Params required: نعم
- المقارنات المسموح بها: equals, not_equals, in_set, exists, not_exists
- أنواع النقاط: trigger_time_unix_millis، trigger_time_logical
- أنواع المحتوى: application/json
حقول المعلمات:
- timestamp (مطلوب): رقم Unix millis أو سلسلة توقيت RFC3339.
مخطط المعلمات:
{
"additionalProperties": false,
"properties": {
"timestamp": {
"description": "Unix millis number or RFC3339 timestamp string.",
"oneOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
}
},
"required": [
"timestamp"
],
"type": "object"
}
نموذج النتيجة:
{
"type": "boolean"
}
أمثلة:
وقت التفعيل بعد العتبة.
المعلمات:
{
"timestamp": 1710000000000
}
نتيجة:
true
قبل
ارجع صحيحًا إذا كان وقت الزناد قبل العتبة.
- الحتمية: تعتمد على الوقت
- Params required: نعم
- المقارنات المسموح بها: equals, not_equals, in_set, exists, not_exists
- أنواع النقاط: trigger_time_unix_millis، trigger_time_logical
- أنواع المحتوى: application/json
حقول المعلمات:
- timestamp (مطلوب): رقم Unix millis أو سلسلة توقيت RFC3339.
مخطط المعلمات:
{
"additionalProperties": false,
"properties": {
"timestamp": {
"description": "Unix millis number or RFC3339 timestamp string.",
"oneOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
}
},
"required": [
"timestamp"
],
"type": "object"
}
نموذج النتيجة:
{
"type": "boolean"
}
أمثلة:
وقت الزناد قبل العتبة.
المعلمات:
{
"timestamp": "2024-01-01T00:00:00Z"
}
نتيجة:
false
env
يقرأ متغيرات بيئة العملية مع سياسة السماح/الرفض وحدود الحجم.
عقد المزود
- الاسم: مزود البيئة
- النقل: مدمج
ملاحظات
- يُرجع قيمة فارغة عندما يكون المفتاح مفقودًا أو محجوزًا بواسطة السياسة.
- تنطبق حدود الحجم على كل من المفتاح والقيمة.
مخطط التكوين
حقول التكوين:
allowlist(اختياري): قائمة السماح الاختيارية لمفاتيح البيئة.denylist(اختياري): قائمة رفض صريحة لمفاتيح البيئة. الافتراضي: [].max_key_bytes(اختياري): الحد الأقصى من البايتات المسموح بها لمفتاح البيئة. الافتراضي: 255.max_value_bytes(اختياري): الحد الأقصى من البايتات المسموح بها لقيمة البيئة. الافتراضي: 65536.overrides(اختياري): خريطة تجاوز حتمية اختيارية لعمليات البحث في البيئة.
{
"additionalProperties": false,
"properties": {
"allowlist": {
"description": "Optional allowlist of environment keys.",
"items": {
"type": "string"
},
"type": "array"
},
"denylist": {
"default": [],
"description": "Explicit denylist of environment keys.",
"items": {
"type": "string"
},
"type": "array"
},
"max_key_bytes": {
"default": 255,
"description": "Maximum bytes allowed for an environment key.",
"minimum": 0,
"type": "integer"
},
"max_value_bytes": {
"default": 65536,
"description": "Maximum bytes allowed for an environment value.",
"minimum": 0,
"type": "integer"
},
"overrides": {
"additionalProperties": {
"type": "string"
},
"description": "Optional deterministic override map for env lookups.",
"type": "object"
}
},
"type": "object"
}
الفحوصات
الحصول على
استرجاع متغير بيئي بواسطة المفتاح.
- الحتمية: خارجية
- Params required: نعم
- المقارنات المسموح بها: equals, not_equals, contains, in_set, exists, not_exists
- أنواع المراسي: env
- أنواع المحتوى: نص عادي
حقول المعلمات:
key(مطلوب): مفتاح متغير البيئة.
مخطط المعلمات:
{
"additionalProperties": false,
"properties": {
"key": {
"description": "Environment variable key.",
"type": "string"
}
},
"required": [
"key"
],
"type": "object"
}
نموذج النتيجة:
{
"oneOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
أمثلة:
اقرأ DEPLOY_ENV.
المعلمات:
{
"key": "DEPLOY_ENV"
}
نتيجة:
"production"
json
يقرأ ملفات JSON أو YAML ويقيم استعلامات JSONPath ضدها.
عقد المزود
- الاسم: مزود JSON
- النقل: مدمج
ملاحظات
- الوصول إلى الملفات مقيد بالحدود الجذرية وحجم الملفات المكونة.
- يجب أن تكون مسارات الملفات نسبية بالنسبة للجذر؛ المسارات المطلقة مرفوضة.
- JSONPath اختياري؛ إذا تم حذفه، يعني الوثيقة الكاملة.
- يؤدي عدم وجود JSONPath إلى قيمة فارغة مع بيانات خطأ (jsonpath_not_found).
مخطط التكوين
حقول التكوين:
allow_yaml(اختياري): السماح بتحليل YAML لملفات .yaml/.yml. الافتراضي: true.max_bytes(اختياري): الحد الأقصى لحجم الملف بالبايت. القيمة الافتراضية: 1048576.root(مطلوب): الدليل الجذري لحل الملفات (مطلوب).root_id(مطلوب): معرف ثابت للجذر المكون (مطلوب).
{
"additionalProperties": false,
"properties": {
"allow_yaml": {
"default": true,
"description": "Allow YAML parsing for .yaml/.yml files.",
"type": "boolean"
},
"max_bytes": {
"default": 1048576,
"description": "Maximum file size in bytes.",
"minimum": 0,
"type": "integer"
},
"root": {
"description": "Root directory for file resolution (required).",
"type": "string"
},
"root_id": {
"description": "Stable identifier for the configured root (required).",
"pattern": "^[a-z0-9][a-z0-9_-]{0,63}$",
"type": "string"
}
},
"required": [
"root",
"root_id"
],
"type": "object"
}
الفحوصات
المسار
حدد القيم عبر JSONPath من ملف JSON/YAML.
- الحتمية: خارجية
- Params required: نعم
- المقارنات المسموح بها: equals, not_equals, greater_than, greater_than_or_equal, less_than, less_than_or_equal, lex_greater_than, lex_greater_than_or_equal, lex_less_than, lex_less_than_or_equal, contains, in_set, deep_equals, deep_not_equals, exists, not_exists
- أنواع المراسي: file_path_rooted
- أنواع المحتوى: application/json, application/yaml
حقول المعلمات:
file(مطلوب): المسار إلى ملف JSON أو YAML.jsonpath(اختياري): محدد JSONPath اختياري.
مخطط المعلمات:
{
"additionalProperties": false,
"properties": {
"file": {
"description": "Path to a JSON or YAML file.",
"type": "string"
},
"jsonpath": {
"description": "Optional JSONPath selector.",
"type": "string"
}
},
"required": [
"file"
],
"type": "object"
}
نموذج النتيجة:
{
"description": "JSONPath result value (dynamic JSON type).",
"x-decision-gate": {
"dynamic_type": true
}
}
أمثلة:
مثال 1: قراءة النسخة من config.json (مسار نسبي للجذر).
المعلمات:
{
"file": "config.json",
"jsonpath": "$.version"
}
نتيجة:
"1.2.3"
مثال 2: إرجاع الوثيقة الكاملة عند حذف jsonpath.
المعلمات:
{
"file": "config.json"
}
نتيجة:
{
"version": "1.2.3"
}
http
تقوم القضايا بتحديد طلبات HTTP GET وإرجاع رموز الحالة أو تجزئات الجسم.
عقد المزود
- الاسم: مزود HTTP
- النقل: مدمج
ملاحظات
- يتم تطبيق قوائم السماح الخاصة بالمخططات والمضيفين مع تثبيت حل DNS لكل طلب.
- الوجهات الخاصة/المحلية محظورة بشكل افتراضي ما لم يتم تمكينها صراحة.
- الردود محدودة الحجم ومجزأة بشكل حتمي.
مخطط التكوين
حقول التكوين:
allow_http(اختياري): السماح بروابط http:// النصية. الافتراضي: غير مفعل.allow_private_networks(اختياري): السماح بعناوين الوجهة الخاصة/المحلية/التكرارية. الافتراضي: غير مفعل.allowed_hosts(اختياري): قائمة السماح الاختيارية لأسماء المضيفين.hash_algorithm(اختياري): خوارزمية التجزئة المستخدمة لاستجابات body_hash. الافتراضي: “sha256”.max_response_bytes(اختياري): الحد الأقصى لحجم الاستجابة بالبايت. الافتراضي: 1048576.timeout_ms(اختياري): مهلة الطلب بالمللي ثانية. الافتراضي: 5000.user_agent(اختياري): سلسلة وكيل المستخدم للطلبات الصادرة. الافتراضي: “decision-gate/0.1”.
{
"additionalProperties": false,
"properties": {
"allow_http": {
"default": false,
"description": "Allow cleartext http:// URLs.",
"type": "boolean"
},
"allow_private_networks": {
"default": false,
"description": "Allow private/link-local/loopback destination addresses.",
"type": "boolean"
},
"allowed_hosts": {
"description": "Optional allowlist of hostnames.",
"items": {
"type": "string"
},
"type": "array"
},
"hash_algorithm": {
"default": "sha256",
"description": "Hash algorithm used for body_hash responses.",
"enum": [
"sha256"
],
"type": "string"
},
"max_response_bytes": {
"default": 1048576,
"description": "Maximum response size in bytes.",
"minimum": 0,
"type": "integer"
},
"timeout_ms": {
"default": 5000,
"description": "Request timeout in milliseconds.",
"minimum": 0,
"type": "integer"
},
"user_agent": {
"default": "decision-gate/0.1",
"description": "User agent string for outbound requests.",
"type": "string"
}
},
"type": "object"
}
الفحوصات
الحالة
إرجاع رمز حالة HTTP لعنوان URL.
- الحتمية: خارجية
- Params required: نعم
- المقارنات المسموح بها: equals، not_equals، greater_than، greater_than_or_equal، less_than، less_than_or_equal، in_set، exists، not_exists
- أنواع الروابط: url
- أنواع المحتوى: application/json
حقول المعلمات:
- url (مطلوب): عنوان URL للاستعلام.
مخطط المعلمات:
{
"additionalProperties": false,
"properties": {
"url": {
"description": "URL to query.",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
}
نموذج النتيجة:
{
"type": "integer"
}
أمثلة:
استرجاع الحالة لنقطة نهاية الصحة.
المعلمات:
{
"url": "https://api.example.com/health"
}
نتيجة:
200
body_hash
إرجاع تجزئة لجسم الاستجابة.
- الحتمية: خارجية
- Params required: نعم
- المقارنات المسموح بها: exists, not_exists
- أنواع الروابط: url
- أنواع المحتوى: application/json
حقول المعلمات:
- url (مطلوب): عنوان URL للاستعلام.
مخطط المعلمات:
{
"additionalProperties": false,
"properties": {
"url": {
"description": "URL to query.",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
}
نموذج النتيجة:
{
"additionalProperties": false,
"properties": {
"algorithm": {
"enum": [
"sha256"
],
"type": "string"
},
"value": {
"description": "Lowercase hex digest.",
"type": "string"
}
},
"required": [
"algorithm",
"value"
],
"type": "object"
}
أمثلة:
هاش جسم نقطة النهاية الصحية.
المعلمات:
{
"url": "https://api.example.com/health"
}
نتيجة:
{
"algorithm": "sha256",
"value": "7b4d0d3d16c8f85f67ad79b0870a2c9f1e88924c4cbb4ed4bb7f5c6a1d1b7f9a"
}
الراحة
يصدر طلبات HTTP GET محددة ويعيد قيم JSONPath المستخرجة أو رؤوس الاستجابة.
عقد المزود
- الاسم: مزود REST
- النقل: مدمج
ملاحظات
- GET فقط في V1. تم تأجيل POST عمدًا إلى إصدار مستقبلي.
- تتطلب فحوصات JSON نوع المحتوى application/json أو متغيرات vendor +json.
- تستخدم دلائل REST anchors نوع rest_request مع بيانات التعريف الخاصة بالطلب القياسي.
- تم تقييد رؤوس الاستعلام: يتم رفض أسماء الرؤوس المحجوزة والمدارة بواسطة المصادقة.
- للتحقق من رموز الحالة فقط، استخدم مزود http المدمج.
مخطط التكوين
حقول التكوين:
allow_http(اختياري): السماح بروابط http:// النصية. الافتراضي: غير مفعل.allow_private_networks(اختياري): السماح بعناوين الوجهة الخاصة/المحلية/التكرارية. الافتراضي: غير مفعل.allowed_hosts(اختياري): قائمة السماح الاختيارية لأسماء المضيفين.auth(اختياري): أحد نوعي المخططين. القيمة الافتراضية: null.default_headers(اختياري): رؤوس ثابتة اختيارية تُضاف إلى كل طلب.hash_algorithm(اختياري): خوارزمية التجزئة المستخدمة لتجزئة جسم الاستجابة في بيانات التعريف الخاصة بالمرساة. الافتراضي: “sha256”.max_response_bytes(اختياري): الحد الأقصى لحجم الاستجابة بالبايت. الافتراضي: 1048576.timeout_ms(اختياري): مهلة الطلب بالمللي ثانية. الافتراضي: 5000.user_agent(اختياري): سلسلة وكيل المستخدم للطلبات الصادرة. الافتراضي: “decision-gate/0.1”.
{
"additionalProperties": false,
"properties": {
"allow_http": {
"default": false,
"description": "Allow cleartext http:// URLs.",
"type": "boolean"
},
"allow_private_networks": {
"default": false,
"description": "Allow private/link-local/loopback destination addresses.",
"type": "boolean"
},
"allowed_hosts": {
"description": "Optional allowlist of hostnames.",
"items": {
"type": "string"
},
"type": "array"
},
"auth": {
"default": null,
"oneOf": [
{
"type": "null"
},
{
"additionalProperties": false,
"properties": {
"api_key_header": {
"description": "API key header name.",
"type": "string"
},
"api_key_value": {
"description": "API key value or environment variable reference.",
"type": "string"
},
"basic_password": {
"description": "Basic auth password or environment variable reference.",
"type": "string"
},
"basic_username": {
"description": "Basic auth username or environment variable reference.",
"type": "string"
},
"bearer_token": {
"description": "Bearer token value or environment variable reference.",
"type": "string"
}
},
"type": "object"
}
]
},
"default_headers": {
"additionalProperties": {
"type": "string"
},
"description": "Optional static headers added to every request.",
"type": "object"
},
"hash_algorithm": {
"default": "sha256",
"description": "Hash algorithm used for response body hashing in anchor metadata.",
"enum": [
"sha256"
],
"type": "string"
},
"max_response_bytes": {
"default": 1048576,
"description": "Maximum response size in bytes.",
"minimum": 0,
"type": "integer"
},
"timeout_ms": {
"default": 5000,
"description": "Request timeout in milliseconds.",
"minimum": 0,
"type": "integer"
},
"user_agent": {
"default": "decision-gate/0.1",
"description": "User agent string for outbound requests.",
"type": "string"
}
},
"type": "object"
}
الفحوصات
json_path
احصل على جسم استجابة JSON واستخرج قيمة باستخدام JSONPath.
- الحتمية: خارجية
- Params required: نعم
- المقارنات المسموح بها: equals, not_equals, greater_than, greater_than_or_equal, less_than, less_than_or_equal, lex_greater_than, lex_greater_than_or_equal, lex_less_than, lex_less_than_or_equal, contains, in_set, deep_equals, deep_not_equals, exists, not_exists
- أنواع الروابط: rest_request
- أنواع المحتوى: application/json
حقول المعلمات:
headers(اختياري): النوع: كائن.jsonpath(مطلوب): محدد JSONPath.- url (مطلوب): عنوان URL للاستعلام.
مخطط المعلمات:
{
"additionalProperties": false,
"properties": {
"headers": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"jsonpath": {
"description": "JSONPath selector.",
"type": "string"
},
"url": {
"description": "URL to query.",
"type": "string"
}
},
"required": [
"url",
"jsonpath"
],
"type": "object"
}
نموذج النتيجة:
{
"description": "JSONPath result value (dynamic JSON type).",
"x-decision-gate": {
"dynamic_type": true
}
}
أمثلة:
استخراج حالة الموافقة من استجابة API.
المعلمات:
{
"jsonpath": "$.approved",
"url": "https://api.example.com/v1/decision/42"
}
نتيجة:
true
رأس
احصل على قيمة رأس الاستجابة بواسطة اسم الرأس.
- الحتمية: خارجية
- Params required: نعم
- المقارنات المسموح بها: equals, not_equals, contains, in_set, exists, not_exists
- أنواع الروابط: rest_request
- أنواع المحتوى: نص عادي
حقول المعلمات:
header_name(مطلوب): اسم رأس الاستجابة لاستخراجه.headers(اختياري): النوع: كائن.- url (مطلوب): عنوان URL للاستعلام.
مخطط المعلمات:
{
"additionalProperties": false,
"properties": {
"header_name": {
"description": "Response header name to extract.",
"type": "string"
},
"headers": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"url": {
"description": "URL to query.",
"type": "string"
}
},
"required": [
"url",
"header_name"
],
"type": "object"
}
نموذج النتيجة:
{
"oneOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
أمثلة:
اقرأ رأس استجابة ETag.
المعلمات:
{
"header_name": "etag",
"url": "https://api.example.com/v1/config"
}
نتيجة:
"\"abc123\""