# Webhooks API Webhooks आपको Synapse में घटनाएँ होने पर HTTP कॉलबैक प्राप्त करने की सुविधा देते हैं। बाहरी ऑटोमेशन ट्रिगर करने, सूचनाएँ भेजने, या अन्य सिस्टम्स में सिंक करने के लिए आदर्श। ## एंडपॉइंट्स ### 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 वर्तमान mind के लिए सभी 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, events, secret, या enabled फ़्लैग)। ```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 Payload जब कोई घटना सक्रिय होती है, Synapse आपके URL पर POST करता है: ```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 प्रत्येक payload को 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 # Your webhook handler @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 another system sync_to_external(event["data"]) elif event["event"] == "chat.message_received": # Trigger agent wake-up notify_agent(event["data"]) ``` ## अगले कदम - [Cron और Scheduler](/docs/api/cron) - [Webhook ऑटोमेशन गाइड](/docs/guides/webhook-automation)