Skip to main content

Webhooks API

Реєстрація HTTP-зворотних викликів для подій пам'яті, чату та завдань — отримуйте сповіщення при зміні даних.


Webhooks API

Webhooks дозволяють отримувати HTTP-зворотні виклики, коли в Synapse відбуваються події. Ідеально підходить для запуску зовнішньої автоматизації, надсилання сповіщень або синхронізації з іншими системами.

Кінцеві точки

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

Список усіх webhook-ів для поточного mind-у.

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, події, секрет або прапорець 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

Коли подія спрацьовує, Synapse надсилає POST на ваш URL:

{
  "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=<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)

Шаблон: синхронізація в реальному часі

# Ваш обробник 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"])

Наступні кроки