Skip to content
تم إنشاء هذه الصفحة وترجمتها بمساعدة الذكاء الاصطناعي. إذا لاحظت أي أخطاء، لا تتردد في المساهمة في تحسينها. تعديل على GitHub

مرجع API

توثّق هذه الصفحة جميع نقاط نهاية REST API التي تعرضها بوابة PRX. الواجهة مبنية على Axum وتستخدم JSON لأجسام الطلبات والاستجابات. جميع نقاط النهاية لها البادئة /api/v1.

Base URL

http://127.0.0.1:3120/api/v1

يمكن ضبط المضيف والمنفذ:

toml
[gateway]
host = "127.0.0.1"
port = 3120

المصادقة

جميع نقاط نهاية API تتطلب bearer token ما لم يُذكر خلاف ذلك.

bash
curl -H "Authorization: Bearer <token>" http://localhost:3120/api/v1/status

أنشئ رمزًا عبر:

bash
prx auth token

الجلسات

إدارة جلسات الوكيل: إنشاء، عرض، فحص، وإنهاء.

POST /api/v1/sessions

إنشاء جلسة وكيل جديدة.

الطلب:

json
{
  "channel": "api",
  "user_id": "user_123",
  "metadata": {
    "source": "web-app"
  }
}

الاستجابة (201):

json
{
  "id": "sess_abc123",
  "channel": "api",
  "user_id": "user_123",
  "status": "active",
  "created_at": "2026-03-21T10:00:00Z",
  "metadata": {
    "source": "web-app"
  }
}

GET /api/v1/sessions

عرض الجلسات النشطة.

معاملات الاستعلام:

ParameterTypeDefaultDescription
statusString"active"التصفية حسب الحالة: "active" أو "idle" أو "terminated"
channelStringallالتصفية حسب اسم القناة
limitusize50الحد الأقصى للنتائج المعادة
offsetusize0إزاحة ترقيم الصفحات

الاستجابة (200):

json
{
  "sessions": [
    {
      "id": "sess_abc123",
      "channel": "api",
      "user_id": "user_123",
      "status": "active",
      "created_at": "2026-03-21T10:00:00Z",
      "last_activity": "2026-03-21T10:15:00Z"
    }
  ],
  "total": 1
}

GET /api/v1/sessions/:id

جلب معلومات مفصلة عن جلسة محددة.

الاستجابة (200):

json
{
  "id": "sess_abc123",
  "channel": "api",
  "user_id": "user_123",
  "status": "active",
  "created_at": "2026-03-21T10:00:00Z",
  "last_activity": "2026-03-21T10:15:00Z",
  "turn_count": 12,
  "token_usage": {
    "input": 4500,
    "output": 3200
  },
  "metadata": {
    "source": "web-app"
  }
}

DELETE /api/v1/sessions/:id

إنهاء جلسة.

الاستجابة (204): لا يوجد محتوى.

القنوات

الاستعلام عن اتصالات قنوات المراسلة وإدارتها.

GET /api/v1/channels

عرض جميع القنوات المُعدّة وحالة اتصالها.

الاستجابة (200):

json
{
  "channels": [
    {
      "name": "telegram",
      "status": "connected",
      "connected_at": "2026-03-21T08:00:00Z",
      "active_sessions": 3
    },
    {
      "name": "discord",
      "status": "disconnected",
      "error": "Invalid bot token"
    }
  ]
}

POST /api/v1/channels/:name/restart

إعادة تشغيل اتصال قناة محددة.

الاستجابة (200):

json
{
  "name": "telegram",
  "status": "reconnecting"
}

GET /api/v1/channels/:name/health

فحص سلامة لقناة محددة.

الاستجابة (200):

json
{
  "name": "telegram",
  "healthy": true,
  "latency_ms": 45,
  "last_message_at": "2026-03-21T10:14:55Z"
}

Hooks

إدارة نقاط نهاية webhook للتكاملات الخارجية.

GET /api/v1/hooks

عرض webhooks المسجلة.

الاستجابة (200):

json
{
  "hooks": [
    {
      "id": "hook_001",
      "url": "https://example.com/webhook",
      "events": ["session.created", "session.terminated"],
      "active": true,
      "created_at": "2026-03-20T12:00:00Z"
    }
  ]
}

POST /api/v1/hooks

تسجيل webhook جديدة.

الطلب:

json
{
  "url": "https://example.com/webhook",
  "events": ["session.created", "message.received"],
  "secret": "whsec_xxxxxxxxxxx"
}

الاستجابة (201):

json
{
  "id": "hook_002",
  "url": "https://example.com/webhook",
  "events": ["session.created", "message.received"],
  "active": true,
  "created_at": "2026-03-21T10:20:00Z"
}

DELETE /api/v1/hooks/:id

إزالة webhook.

الاستجابة (204): لا يوجد محتوى.

MCP

إدارة اتصالات خوادم Model Context Protocol.

GET /api/v1/mcp

عرض خوادم MCP المتصلة.

الاستجابة (200):

json
{
  "servers": [
    {
      "name": "filesystem",
      "transport": "stdio",
      "status": "connected",
      "tools": ["read_file", "write_file", "list_directory"],
      "connected_at": "2026-03-21T08:00:00Z"
    }
  ]
}

POST /api/v1/mcp/:name/reconnect

إعادة الاتصال بخادم MCP.

الاستجابة (200):

json
{
  "name": "filesystem",
  "status": "reconnecting"
}

Plugins

إدارة إضافات WASM.

GET /api/v1/plugins

عرض الإضافات المثبتة وحالاتها.

الاستجابة (200):

json
{
  "plugins": [
    {
      "name": "weather",
      "version": "1.2.0",
      "status": "loaded",
      "capabilities": ["tool:get_weather", "tool:get_forecast"],
      "memory_usage_bytes": 2097152
    }
  ]
}

POST /api/v1/plugins/:name/reload

إعادة تحميل إضافة (تفريغ ثم تحميل مرة أخرى).

الاستجابة (200):

json
{
  "name": "weather",
  "status": "loaded",
  "version": "1.2.0"
}

POST /api/v1/plugins/:name/disable

تعطيل إضافة دون تفريغها.

الاستجابة (200):

json
{
  "name": "weather",
  "status": "disabled"
}

Skills

الاستعلام عن مهارات الوكيل المسجلة.

GET /api/v1/skills

عرض جميع المهارات المتاحة.

الاستجابة (200):

json
{
  "skills": [
    {
      "name": "code_review",
      "source": "builtin",
      "description": "Review code changes and provide feedback",
      "triggers": ["/review", "review this"]
    },
    {
      "name": "summarize",
      "source": "plugin:productivity",
      "description": "Summarize long text or conversations",
      "triggers": ["/summarize", "tldr"]
    }
  ]
}

الحالة

معلومات حالة النظام وصحته.

GET /api/v1/status

جلب الحالة العامة للنظام.

الاستجابة (200):

json
{
  "status": "healthy",
  "version": "0.12.0",
  "uptime_secs": 86400,
  "active_sessions": 5,
  "channels": {
    "connected": 3,
    "total": 4
  },
  "plugins": {
    "loaded": 2,
    "total": 2
  },
  "memory": {
    "backend": "sqlite",
    "entries": 1542
  },
  "provider": {
    "name": "anthropic",
    "model": "claude-sonnet-4-20250514"
  }
}

GET /api/v1/status/health

فحص صحة خفيف (مناسب لفحوصات load balancer).

الاستجابة (200):

json
{
  "healthy": true
}

الإعدادات

قراءة إعدادات وقت التشغيل وتحديثها.

GET /api/v1/config

جلب إعدادات وقت التشغيل الحالية (تُحجب الأسرار).

الاستجابة (200):

json
{
  "agent": {
    "max_turns": 50,
    "max_tool_calls_per_turn": 10,
    "session_timeout_secs": 3600
  },
  "memory": {
    "backend": "sqlite"
  },
  "channels_config": {
    "telegram": {
      "bot_token": "***REDACTED***",
      "allowed_users": ["123456789"]
    }
  }
}

PATCH /api/v1/config

تحديث قيم الإعدادات أثناء التشغيل. تُطبَّق التغييرات عبر hot-reload.

الطلب:

json
{
  "agent.max_turns": 100,
  "memory.top_k": 15
}

الاستجابة (200):

json
{
  "updated": ["agent.max_turns", "memory.top_k"],
  "reload_required": false
}

بعض تغييرات الإعدادات تتطلب إعادة تشغيل كاملة ولا يمكن تطبيقها عبر hot-reload. توضّح الاستجابة ذلك عبر القيمة "reload_required": true.

السجلات

الاستعلام عن سجلات الوكيل وبيانات التشخيص.

GET /api/v1/logs

بث إدخالات السجل الحديثة أو الاستعلام عنها.

معاملات الاستعلام:

ParameterTypeDefaultDescription
levelString"info"الحد الأدنى لمستوى السجل: "trace" أو "debug" أو "info" أو "warn" أو "error"
moduleStringallالتصفية حسب اسم الوحدة (مثلًا "agent" أو "channel::telegram")
sinceString1 hour agoطابع زمني ISO 8601 أو مدة (مثلًا "1h" أو "30m")
limitusize100الحد الأقصى للإدخالات المعادة
streamboolfalseعند تفعيلها، تعيد تدفق Server-Sent Events

الاستجابة (200):

json
{
  "entries": [
    {
      "timestamp": "2026-03-21T10:15:30.123Z",
      "level": "info",
      "module": "agent::loop",
      "message": "Tool call completed: shell (45ms)",
      "session_id": "sess_abc123"
    }
  ],
  "total": 1
}

GET /api/v1/logs/stream

تدفق Server-Sent Events للتتبع الفوري للسجلات.

bash
curl -N -H "Authorization: Bearer <token>" \
  http://localhost:3120/api/v1/logs/stream?level=info

استجابات الأخطاء

تعيد جميع نقاط النهاية الأخطاء بتنسيق موحّد:

json
{
  "error": {
    "code": "not_found",
    "message": "Session sess_xyz not found",
    "details": null
  }
}
HTTP StatusError CodeDescription
400bad_requestمعاملات طلب أو جسم طلب غير صالح
401unauthorizedbearer token مفقود أو غير صالح
403forbiddenالرمز لا يملك الصلاحيات المطلوبة
404not_foundالمورد غير موجود
409conflictتعارض في حالة المورد (مثلًا الجلسة منتهية مسبقًا)
429rate_limitedطلبات كثيرة جدًا؛ أعد المحاولة بعد المهلة المحددة
500internal_errorخطأ خادم غير متوقع

تحديد المعدّل

تطبّق API حدود معدل لكل token:

Endpoint GroupLimit
Sessions (write)10 requests/second
Sessions (read)50 requests/second
Config (write)5 requests/second
All other endpoints30 requests/second

تتضمن جميع الاستجابات ترويسات حدود المعدّل:

X-RateLimit-Limit: 50
X-RateLimit-Remaining: 47
X-RateLimit-Reset: 1711015230

صفحات ذات صلة

Released under the Apache-2.0 License.