وثائق بوابة القرار

تقييم بوابة حتمي وقابل لإعادة التشغيل مع قرارات قابلة للتدقيق.

وثائق Asset Core

مزودو الخدمات المدمجين في بوابة القرار

تحميل: providers.json (14 كيلوبايت)

هذا المستند يلخص مقدمي الخدمات المدمجين. المخططات الكاملة موجودة في 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
  • النقل: مدمج

ملاحظات

  • يتم تطبيق قوائم السماح الخاصة بالمخططات والمضيفين من خلال التكوين.
  • الردود محدودة الحجم ومجزأة بشكل حتمي.

مخطط التكوين

حقول التكوين:

  • allow_http (اختياري): السماح بروابط http:// النصية. الافتراضي: غير مفعل.
  • 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"
    },
    "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"
}