وثائق أصول Core

توثيق محرك حالة العالم الحتمي ومراجع API.

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

المعاملات

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

نظرة عامة

تتدفق جميع تغييرات الحالة عبر نقطة النهاية /v1/write/namespaces/{namespace_id}/commit كمعاملات. يقوم برنامج الكتابة بالتحقق من صحة العمليات وتنفيذها وإضافتها إلى سجل الالتزام قبل إرجاع استجابة النجاح. وهذا يعني أن كل تغيير يمكن تدقيقه وإعادة تشغيله حسب التصميم.

الهيكل

طلب الالتزام

{
  "actor_id": "lab-operator-17",
  "policy_id": null,
  "operations": [
    { "op": "OperationName", "args": { ... } },
    { "op": "AnotherOperation", "args": { ... } }
  ],
  "idempotency_key": "optional-unique-key",
  "metadata": {
    "custom_field": "optional user metadata"
  },
  "origin": {
    "client": "assetcore-sdk",
    "source": "batch-import"
  }
}

عملية الظرف

كل عملية لها نفس هيكل الظرف. هذه الوحدة هي ما يجعل التحقق والأدوات موثوقة عبر جميع المجالات.

{
  "op": "OperationName",
  "args": {
    "field1": "value1",
    "field2": 123
  }
}

حقول

حقول الطلب

الحقلالنوعمطلوبالوصف
operationsمصفوفةنعمقائمة العمليات التي سيتم تنفيذها
actor_idسلسلةلامعرف الممثل لتتبع التدقيق
policy_idسلسلةلامعرف السياسة (للاستخدام المستقبلي)
idempotency_keyسلسلةلامفتاح فريد لإزالة التكرار
metadataكائنلابيانات تعريف المستخدم المنعكسة في الاستجابة
originكائنلابيانات تعريف الأصل الاختيارية المنعكسة في الاستجابة

حقول مظروف العملية

الحقلالنوعمطلوبالوصف
opسلسلةنعممعرف العملية
argsكائننعممعلمات محددة للعملية

حقول الاستجابة

الحقلالنوعالوصف
namespaceعدد صحيحمساحة الأسماء التي تم تنفيذ المعاملة فيها
commit_idسلسلةمعرف الالتزام غير الشفاف المستخدم للالتزامات العكسية
outcomeسلسلةCommitted أو RolledBack
world_seq_startعدد صحيحرقم تسلسل العالم الأول في الالتزام
world_seq_endعدد صحيحرقم تسلسل العالم النهائي في الالتزام
event_countعدد صحيحعدد الأحداث المنبعثة
start_time_msعدد صحيحوقت بدء المعاملة (بالملي ثانية منذ البداية)
commit_time_msعدد صحيحوقت الالتزام للمعاملة (بالملي ثانية منذ البداية)
server_correlation_idسلسلةمعرف الترابط المعين من قبل الخادم للتتبع
client_correlation_idسلسلةمعرف الترابط المقدم من العميل عند توفيره
originكائنصدى بيانات التعريف المقدمة من المتصل
echoكائنصدى بيانات التعريف الخاصة بالطلب بما في ذلك idempotency_key
created_entitiesكائنملخص للكيانات التي تم إنشاؤها أثناء الالتزام

أمثلة

الحد الأدنى من المعاملة

{
  "operations": [
    {
      "op": "CreateContainer",
      "args": {
        "container_id": 1001,
        "kind": { "type": "balance" },
        "owner": null,
        "policies": null
      }
    }
  ]
}

المعاملة مع الاستقلالية

{
  "operations": [
    {
      "op": "CreateContainer",
      "args": {
        "container_id": 1002,
        "kind": { "type": "balance" },
        "owner": null,
        "policies": null
      }
    }
  ],
  "idempotency_key": "create-container-2026-01-15-001"
}

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

{
  "operations": [
    {
      "op": "CreateContainer",
      "args": {
        "container_id": 2001,
        "kind": { "type": "slots", "count": 8 },
        "owner": null,
        "policies": null
      }
    },
    {
      "op": "RegisterClass",
      "args": {
        "request": {
          "class_id": 200,
          "flags": 2,
          "name": "SampleClass"
        }
      }
    },
    {
      "op": "AddInstance",
      "args": {
        "class_id": 200,
        "key": 1,
        "location": {
          "container_id": 2001,
          "kind": "slot",
          "slot_index": 1
        }
      }
    }
  ],
  "metadata": {
    "experiment_id": "exp-001",
    "operator": "system"
  }
}

استجابة:

{
  "namespace": 5001,
  "commit_id": "00000000000000000000000000000001",
  "outcome": "Committed",
  "world_seq_start": 5,
  "world_seq_end": 5,
  "event_count": 3,
  "start_time_ms": 1769800000000,
  "commit_time_ms": 1769800000123,
  "server_correlation_id": "wr-0000000000000001-0000000000000042",
  "echo": {
    "metadata": {
      "experiment_id": "exp-001",
      "operator": "system"
    }
  },
  "created_entities": {
    "classes": [200],
    "containers": [2001],
    "instances": [9001]
  }
}

استجابة إعادة المحاولة غير القابلة للتغيير

عند إرسال نفس مفتاح التكرار مرة أخرى:

{
  "namespace": 5001,
  "commit_id": "00000000000000000000000000000001",
  "outcome": "Committed",
  "world_seq_start": 5,
  "world_seq_end": 5,
  "event_count": 3,
  "start_time_ms": 1769800000000,
  "commit_time_ms": 1769800000123,
  "server_correlation_id": "wr-0000000000000001-0000000000000042",
  "echo": {
    "idempotency_key": "create-sample-2026-01-15-001",
    "metadata": {
      "experiment_id": "exp-001",
      "operator": "system"
    }
  },
  "created_entities": {
    "classes": [200],
    "containers": [2001],
    "instances": [9001]
  }
}

رأس x-asset-idempotency: hit يشير إلى استجابة مخزنة.