Consegna webhook (piano Pro)
Botely fa POST di ogni signal al tuo endpoint con un header firma HMAC-SHA256. Integrazione audit-grade per consumer programmatici.
Setup
Da /app/settings → Delivery → Webhook → inserisci la URL del tuo endpoint. Botely genera uno shared secret (32 byte random) e lo mostra UNA volta — salvalo.
Testa dalla stessa schermata con 'Send test ping'. Il tuo endpoint deve ritornare 2xx entro 5 secondi.
Formato payload
POST con Content-Type: application/json. Header: `X-Botely-Signature: sha256=<hex>` (HMAC del body raw, usando il tuo shared secret), `X-Botely-Event: signal.open` o `signal.close`, `X-Botely-Delivery: <uuid>` (chiave idempotency).
Esempio body: `{ "signal_id": "sig_abc123", "strategy": "v6.4", "event": "open", "coin": "ETH", "direction": "long", "entry_price": 3420.5, "tp_price": 4172.91, "sl_price": 3078.45, "max_hold_minutes": 8640, "signal_timestamp": "2026-05-16T11:23:01Z", "delivered_timestamp": "2026-05-16T11:23:01Z" }`.
Verifica HMAC (Node.js)
```js import crypto from 'node:crypto'; function verify(rawBody, signatureHeader, secret) { const expected = crypto.createHmac('sha256', secret).update(rawBody).digest('hex'); const provided = signatureHeader.replace(/^sha256=/, ''); return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(provided)); } ```
Calcola sui byte RAW del body, non sul JSON parsato. Usa un confronto timing-safe.
Semantica retry
Se il tuo endpoint ritorna non-2xx, Botely ritenta con exponential backoff: 1s, 5s, 30s, 5m, 30m. Dopo 5 attempt falliti la delivery è marcata failed e appare in /app/settings → Delivery → Webhook log.
Usa l'UUID `X-Botely-Delivery` come idempotency key — salva gli ID visti server-side e ignora i duplicati.
Pattern di integrazione comuni
Auto-esecuzione trade via il tuo bot dYdX: ricevi signal, valida firma, piazza l'ordine corrispondente. Attento ai rate limit.
Forward a Slack / Discord interno: ricevi signal, formatta, posta nel canale del team.
Persist per analytics: scrivi su time-series DB per tracciare latenza di consegna e il tuo slippage vs l'entry price del signal.