# Webhooks API تتيح لك الـ Webhooks استقبال استدعاءات HTTP عند وقوع أحداث في Synapse. مثالية لتشغيل الأتمتة الخارجية أو إرسال الإشعارات أو المزامنة مع أنظمة أخرى. ## نقاط النهاية ### POST /webhooks تسجيل webhook جديد. ```bash curl -X POST https://synapse.schaefer.zone/webhooks \ -H "Authorization: Bearer YOUR_MIND_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://my-app.com/webhook", "events": "memory.*", "secret": "my-hmac-secret-min-8-chars" }' ``` الاستجابة: ```json { "id": "wh_001", "url": "https://my-app.com/webhook", "events": ["memory.*"], "enabled": true, "created_at": "2026-06-27T..." } ``` ### GET /webhooks قائمة بجميع الـ webhooks للعقل الحالي. ```bash curl -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/webhooks ``` ### GET /webhooks/:id الحصول على webhook واحد. ```bash curl -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/webhooks/wh_001 ``` ### PUT /webhooks/:id تحديث webhook (URL، الأحداث، السر، أو علم التمكين). ```bash curl -X PUT https://synapse.schaefer.zone/webhooks/wh_001 \ -H "Authorization: Bearer YOUR_MIND_KEY" \ -H "Content-Type: application/json" \ -d '{"enabled": false}' ``` ### DELETE /webhooks/:id حذف webhook. ```bash curl -X DELETE -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/webhooks/wh_001 ``` ## أنواع الأحداث | النمط | يُطلق عندما | |---------|------------| | `memory.*` | أي حدث ذاكرة | | `memory.store` | تخزين ذاكرة جديدة | | `memory.update` | تحديث ذاكرة | | `memory.delete` | حذف ذاكرة | | `chat.*` | أي حدث دردشة | | `chat.message_received` | رسالة جديدة من الإنسان | | `task.*` | أي حدث مهمة | | `task.created` | إنشاء مهمة جديدة | | `task.completed` | تعليم مهمة كمنجزة | | `*` | جميع الأحداث | ## حمولة الـ Webhook عند إطلاق حدث، يُرسل Synapse POST إلى عنوان URL الخاص بك: ```json { "event": "memory.store", "timestamp": "2026-06-27T...", "mind_id": "m_xyz789", "data": { "id": "mem_001", "category": "fact", "key": "user_name", "content": "Michael Schäfer" } } ``` ## التحقق من التوقيع إذا عيّنت `secret`، يوقّع Synapse كل حمولة بـ HMAC-SHA256: ``` X-Synapse-Signature: sha256= ``` تحقق في معالجك: ```python import hmac, hashlib def verify_signature(payload_body: bytes, signature: str, secret: str) -> bool: expected = hmac.new( secret.encode(), payload_body, hashlib.sha256 ).hexdigest() return hmac.compare_digest(f"sha256={expected}", signature) ``` ## النمط: المزامنة اللحظية ```python # معالج الـ webhook الخاص بك @app.post("/webhook") async def handle_webhook(request): body = await request.body() signature = request.headers.get("X-Synapse-Signature", "") if not verify_signature(body, signature, WEBHOOK_SECRET): return 401 event = json.loads(body) if event["event"] == "memory.store": # المزامنة إلى نظام آخر sync_to_external(event["data"]) elif event["event"] == "chat.message_received": # تشغيل تنبيه الوكيل notify_agent(event["data"]) ``` ## الخطوات التالية - [Cron والمجدول](/docs/api/cron) - [دليل أتمتة الـ Webhooks](/docs/guides/webhook-automation)