Skip to main content

Webhooks API

मेमोरी, चैट, और कार्य घटनाओं के लिए HTTP कॉलबैक पंजीकृत करें — डेटा बदलने पर सूचित हों।


Webhooks API

Webhooks आपको Synapse में घटनाएँ होने पर HTTP कॉलबैक प्राप्त करने की सुविधा देते हैं। बाहरी ऑटोमेशन ट्रिगर करने, सूचनाएँ भेजने, या अन्य सिस्टम्स में सिंक करने के लिए आदर्श।

एंडपॉइंट्स

POST /webhooks

नया webhook पंजीकृत करें।

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"
  }'

प्रतिक्रिया:

{
  "id": "wh_001",
  "url": "https://my-app.com/webhook",
  "events": ["memory.*"],
  "enabled": true,
  "created_at": "2026-06-27T..."
}

GET /webhooks

वर्तमान mind के लिए सभी webhooks की सूची बनाएँ।

curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     https://synapse.schaefer.zone/webhooks

GET /webhooks/:id

एकल webhook प्राप्त करें।

curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     https://synapse.schaefer.zone/webhooks/wh_001

PUT /webhooks/:id

Webhook अपडेट करें (URL, events, secret, या enabled फ़्लैग)।

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 हटाएँ।

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 करता है:

{
  "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=<hex-hmac>

अपने हैंडलर में सत्यापित करें:

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)

पैटर्न: रियल-टाइम सिंक

# 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"])

अगले कदम