تتيح لك واجهة REST API الخاصة بـ Entity Enricher إثراء الكيانات وإدارة المخططات واسترجاع السجلات برمجيًا. جميع الاستجابات بصيغة JSON. يستخدم التقدم في الوقت الفعلي أحداث الخادم المُرسَلة (SSE).
ادمج Entity Enricher في ثلاث خطوات:
GET /api/schema/savedعرض المخططات المحفوظة أو توليد واحد من بيانات عيّنة
POST /api/single/enrich/streamابدأ الإثراء واحصل على معرّف مهمة لبثّ SSE
GET /api/records/{id}استرجاع سجل الإثراء الكامل مع المخرجات المُهيكلة
تتطلب جميع نقاط نهاية API (باستثناء تسجيل الدخول/التسجيل) المصادقة. استخدم ترويسة X-API-Key مع مفتاح وصول المؤسسة:
curl -H "X-API-Key: ent_your_key_here" \
https://your-instance.example.com/api/enrichment/optionsأنشئ مفاتيح API من صفحة مفاتيح API أو عبر POST /api/auth/api-keys. راجع دليل مفاتيح API للاطلاع على تفاصيل أنواع المفاتيح والأذونات.
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
| GET | /api/enrichment/options | النماذج واللغات والاستراتيجيات المتاحة |
| POST | /api/single/enrich/stream | بدء إثراء كيان واحد (يُرجع job_id لبثّ SSE) |
| POST | /api/single/enrich/sync | حجب الإثراء المفرد للعملاء غير المدعومين بـ SSE (Make.com، curl) |
| POST | /api/enrichment/batch/start | بدء إثراء دفعة لكيانات متعددة |
| POST | /api/enrichment/batch/fetch | جلب الكيانات من عنوان URL خارجي |
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
| GET | /api/llm/stream/{job_id} | بث SSE لأي مهمة LLM (الإثراء، المخطط، الدمج) |
| POST | /api/llm/cancel/{job_id} | إلغاء مهمة قيد التشغيل أو متوقفة مؤقتًا |
| POST | /api/llm/continue/{job_id} | استئناف مهمة متوقفة مؤقتًا (مثلًا بعد عدم تطابق التصنيف) |
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
| GET | /api/schema/saved | عرض جميع المخططات المحفوظة |
| POST | /api/schema/saved | إنشاء مخطط جديد |
| POST | /api/schema/generate/stream | توليد مخطط من بيانات نموذجية (SSE) |
| POST | /api/schema/saved/{id}/prompt/stream | تحرير المخطط بالذكاء الاصطناعي باللغة الطبيعية (SSE) |
| POST | /api/schema/analyze-sample | تحليل عيّنة JSON بحثًا عن أسماء خصائص ملتبسة — تلك التي تحتمل عدة قراءات في سياق العنصر الأب، أو لا تحتمل أيًّا منها — وعن العناصر المرتبطة التي تخلط حقائق الكيان بحقائق خاصة بكل أب (تقرير عديم الحالة، مع اقتراحات لإعادة التسمية) |
| POST | /api/schema/saved/{id}/analyze | تشغيل فحصَي الالتباس وتحديد نطاق الهوية على مخطط محفوظ وكتابة تعليقاتهما التوضيحية (وصف معاد صياغته لكل اسم ملتبس) |
| POST | /api/schema/scoping-split | تطبيق عملية فصل واحدة لتحديد نطاق الهوية على مجموعة عيّنات — تنتقل حقائق الكيان المرتبط الخاصة به إلى كائن فرعي خاص بها (حتمية، مجانية، ولا يُحفظ شيء) |
| DELETE | /api/schema/saved/{id}/enrichment-data | حذف بيانات إثراء المخطط — السجلات وحالة الكيان — مع الاحتفاظ بالمخطط (المالك+) |
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
| GET | /api/records | عرض السجلات مع تقسيم الصفحات والتصفية |
| GET | /api/records/{id} | احصل على تفاصيل السجل الكاملة مع مخرجات مُهيكلة |
| POST | /api/records/batch-delete | حذف سجلات متعددة (بحد أقصى 100) |
| POST | /api/fusion/merge | دمج النتائج من نماذج متعددة |
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
| POST | /api/attachments | رفع ملف واحد أو أكثر (multipart/form-data) |
| POST | /api/attachments/base64 | رفع ملف واحد عبر JSON base64 (للعملاء غير متعددي الأجزاء) |
| GET | /api/attachments/{id}/download | تنزيل وحدات بايت الملف الأصلي |
| DELETE | /api/attachments/{id} | حذف مرفق (تنظيف بعد الإثراء) |
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
| POST | /api/schema/saved/{id}/publish | انشر النسخة العاملة من مخطط مرتبط لتصبح العقد الذي يعمل الإثراء وقواعد بياناته وفقه. لا يسري أي تغيير بنيوي قبل تنفيذ ذلك |
| POST | /api/schema/sample/generate/stream | وَلِّد من 1 إلى N كائن JSON كعينات من نوع كيان واحد (يُعيد job_id لـ SSE) |
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
| GET | /api/databases | عرض تسجيلات قواعد بيانات المؤسسة مع أعداد الفروق المعلّقة |
| POST | /api/databases | تسجيل قاعدة بيانات على مخطط |
| GET | /api/databases/{id}/snapshot | نزّل الحالة الكاملة كلقطة .sql — انطلق من الصفر |
| GET | /api/databases/{id}/changes | اجلب نافذة الفروق التالية بترتيب FIFO؛ واطلبها لحجزها من أجل تسليم مؤكَّد الاستلام |
| POST | /api/databases/{id}/ack | الإقرار بالفروق المطبَّقة حتى معرّف معيّن — يحرّر الحجز |
| POST | /api/databases/{id}/clear-acked | حذف الفروق المُسلَّمة والمؤكَّد استلامها |
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
| GET | /api/semantic-concepts | استعرض مفردات المفاهيم، مُرشَّحة حسب النوع ومُقيَّمة مقابل مفهوم مرجعي |
| GET | /api/semantic-concepts/types | عرض أنواع المفاهيم مع أعدادها ونماذج التضمين |
| POST | /api/semantic-concepts/probe | شغّل سلّم الحسم على نص تشغيلًا تجريبيًا — بماذا سيطابق، وإلى أي مدى |
| GET | /api/semantic-concepts/duplicates | أزواج المفاهيم الواقعة أسفل عتبة الدمج مباشرةً |
| POST | /api/semantic-concepts/import | حلّ دفعةً واحدة ملف CSV من نصوص الهويات (يتطلب الإصدار صلاحية المالك) |
| GET | /api/semantic-concepts/export | تصدير المفردات بصيغة CSV |
| POST | /api/semantic-concepts/delete-impact | ما الذي سيتأثر بحذف المفاهيم — أعداد الاستخدام وتكلفة إعادة المزامنة |
| GET | /api/semantic-concepts/migration/status | حالة ترحيل نموذج التضمين، إن كان هناك ترحيل قيد التشغيل |
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
| GET | /api/benchmarks | عرض سيناريوهات القياس المرجعي |
| POST | /api/benchmarks/{id}/run | شغّل سيناريو عبر عدة نماذج — وتُقيَّم كل نتيجة تلقائيًا |
| POST | /api/benchmarks/{id}/reference | احفظ المرجع الذهبي الذي يُقيَّم السيناريو وفقه وتحقّق منه |
| GET | /api/billing/balance | الرصيد الحالي |
| GET | /api/billing/transactions | سجل معاملات الأرصدة، بما في ذلك الإنفاق على التضمين |
| GET | /api/billing/plans | الخطط المتاحة وحدودها |
تستخدم عمليات الإثراء وإنشاء المخطط والدمج تقنية Server-Sent Events لعرض التقدّم في الوقت الفعلي. ابدأ مهمة، واحصل على job_id، ثم اتصل بتدفّق SSE:
| الحدث | الوصف |
|---|---|
| model_started | تبدأ معالجة النموذج |
| expertise_completed | انتهى مجال خبرة واحد (بنتائج جزئية) |
| model_completed | أنهى النموذج مع النتيجة وrecord_id والتكلفة |
| fusion_started / fusion_completed | أحداث دورة حياة الدمج متعدد النماذج |
| entity_started / entity_completed | أحداث خاصة بالدفعات لكل كيان (تتضمن entity_index) |
| completed | حدث نهائي - إغلاق الاتصال |
| error | حدث خطأ على مستوى المهمة |
سير عمل كامل يسرد المخططات، ويبدأ الإثراء، ويبثّ النتائج، ويسترجع السجل النهائي:
import httpx
import json
BASE = "https://your-instance.example.com"
KEY = "ent_your_api_key"
HEADERS = {"X-API-Key": KEY, "Content-Type": "application/json"}
# 1. List saved schemas
schemas = httpx.get(f"{BASE}/api/schema/saved", headers=HEADERS).json()
schema_id = schemas["schemas"][0]["id"]
# 2. Start enrichment
resp = httpx.post(f"{BASE}/api/single/enrich/stream", headers=HEADERS, json={
"entity_data": {"name": "Moderna Inc", "country": "US"},
"schema_id": schema_id,
"models": ["anthropic::claude-sonnet-4-5-20250514"],
"strategy": "multi_expertise",
})
job_id = resp.json()["job_id"]
# 3. Stream SSE events
record_id = None
with httpx.stream("GET", f"{BASE}/api/llm/stream/{job_id}", headers=HEADERS) as stream:
for line in stream.iter_lines():
if not line.startswith("data: "):
continue
event = json.loads(line[6:])
if event["type"] == "model_completed" and event.get("record_id"):
record_id = event["record_id"]
elif event["type"] == "completed":
break
# 4. Retrieve the enrichment record
if record_id:
record = httpx.get(f"{BASE}/api/records/{record_id}", headers=HEADERS).json()
print(json.dumps(record["structured_output"], indent=2))ابدأ إثراء دفعة باستخدام نموذجين وابثّ النتائج مباشرةً:
# Start batch enrichment
JOB_ID=$(curl -s -X POST \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
"$BASE/api/enrichment/batch/start" \
-d '{
"entities": [
{"name": "Pfizer Inc", "country": "US"},
{"name": "Roche", "country": "CH"}
],
"schema_id": "your-schema-uuid",
"models": ["anthropic::claude-sonnet-4-5-20250514", "openai::gpt-4o"],
"strategy": "multi_expertise",
"arbitration_model": "anthropic::claude-sonnet-4-5-20250514"
}' | jq -r '.job_id')
# Stream events
curl -N -H "X-API-Key: $KEY" "$BASE/api/llm/stream/$JOB_ID"
# List resulting records
curl -s -H "X-API-Key: $KEY" \
"$BASE/api/records?type=enrichment&page_size=10" | jq '.records'| الحالة | المعنى | مثال |
|---|---|---|
| 200 | نجاح | اكتمل الطلب |
| 400 | طلب غير صالح | مفتاح النموذج غير صالح أو حقل مفقود |
| 401 | غير مصرّح | مفتاح API مفقود أو غير صالح |
| 402 | الدفع مطلوب | حد الخطة أو الرصيد — استُنفدت الحصة، أو عدد النماذج أو اللغات كبير جدًا، أو ميزة غير متاحة في خطتك. ويحمل نص الاستجابة رمزًا قابلًا للقراءة آليًا إلى جانب التفاصيل. |
| 403 | ممنوع | الدور غير كافٍ لهذه النقطة الطرفية |
| 404 | غير موجود | السجل أو المخطط أو المهمة غير موجود |
| 500 | خطأ في الخادم | فشل داخلي |
تتضمن استجابات الخطأ حقل detail يحمل رسالة خطأ مقروءة للبشر. وتحمل إخفاقات الخطة والفوترة (402) إضافةً إلى ذلك جسمًا منظَّمًا يتضمن code ثابتًا — prompt_limit_reached وinsufficient_credits وmodel_limit_exceeded وbenchmarks_not_in_plan — إلى جانب أرقام الحد والاستخدام ذات الصلة، ليتمكن العميل من التفرّع بحسب السبب بدل تحليل النص. وتُصدر تدفقات SSE نوع الحدث error قبل الحدث النهائي completed إذا أخفق شيء أثناء التدفق.
تُعرَّف النماذج بمفاتيح مركّبة بالصيغة provider_name::model_name. استخدم GET /api/enrichment/options لعرض النماذج المتاحة ومفاتيحها.
معامل النموذج اختياري في الإثراء، وتوليد المخطط، وتوليد العينات: أغفِله (أو مرّر القيمة الحرفية "auto") ليختار الخادم النموذج الافتراضي لمؤسستك — الإعداد الافتراضي المثبّت لكل مهمة إن كان مضبوطًا في الإعدادات، وإلا فالنموذج ذو أفضل نتيجة إجمالية من معايير القياس المصدر للتقييم. يعرض الحقل default_models في استجابة الخيارات ما يحلّ إليه "تلقائي" حاليًا، ويبلّغ حدث SSE من نوع model_auto_selected عن الاختيار في كل مهمة. يحلّ "تلقائي" دائمًا إلى نموذج واحد (ولا يشغّل الدمج أبدًا)؛ ولأجل مسارات قابلة لإعادة الإنتاج، استمر في تمرير نماذج صريحة.
تقيّد خيارات الطلب الاختيار التلقائي: مع enable_web_search: true تُؤخذ في الاعتبار النماذج القادرة على البحث على الويب فقط (يعرض حقل default_models_web_search في استجابة الخيارات معاينةً لهذا الاختيار)، وتتطلب المرفقات الثنائية نموذجًا قادرًا على قراءتها (PDF، الرؤية، الصوت). وعندما لا يستوفي أي نموذج مؤهل القيود، يفشل الطلب بالرمز HTTP 400 no_capable_default_model بدلًا من إسقاط الخيار بصمت.
anthropic::claude-sonnet-4-5-20250514openai::gpt-4ogoogle::gemini-2.5-prodeepseek::deepseek-chatيتضمن التطبيق وثائق API تفاعلية مع أمثلة للطلبات/الاستجابات. يتطلب مصادقة المسؤول للوصول: