// docs / webhooks
Webhooks
FixVibe स्कैन पूर्णता, टर्मिनल विफलताओं, उच्च-गंभीरता निष्कर्षों, लाइव मॉनिटर अलर्ट और निर्धारित रन के लिए हस्ताक्षरित आउटबाउंड वेबहुक भेजता है। डिलीवरी कम से कम एक बार होती है और लगभग 24 घंटे तक पुनः प्रयास किया जाता है।
Setup
Account → Webhooks खोलें, एक HTTPS एंडपॉइंट बनाएं, और एक बार के whsec_ रहस्य को अपने रिसीवर में संग्रहीत करें। वेबहुक सशुल्क योजनाओं पर उपलब्ध हैं।
- Account → Webhooks से एक समापन बिंदु बनाएं।
- चुनें कि कौन से ईवेंट FixVibe को उस समापन बिंदु पर भेजना चाहिए।
- रहस्य को तुरंत कॉपी करें; इसे एक बार दिखाया जाता है और इसे बाद में ही घुमाया जा सकता है।
Events
लॉन्च इवेंट की सतह उन क्षणों को कवर करती है जब टीमें आमतौर पर CI, अलर्ट, या टिकटिंग में शामिल होती हैं:
- scan.completed - जब स्कैन completed पर परिवर्तित होता है तो सक्रिय हो जाता है। पेलोड: स्कैन आईडी, लक्ष्य, मोड, गंभीरता-बकेट गणना, रिपोर्ट का लिंक।
- scan.failed - टर्मिनल-विफलता अधिसूचना। पेलोड: स्कैन आईडी, विफलता का कारण और उपलब्ध होने पर रिपोर्ट लिंक।
- finding.created - प्रति गंभीर या उच्च खोज पर उत्सर्जित। इवेंट स्पैम से बचने के लिए कम गंभीरता डिफ़ॉल्ट रूप से scan.completed में सिमट जाती है।
- monitor.alert.fired - जब प्रमाणपत्र पारदर्शिता लॉग, DNS रिकॉर्ड, या खतरा-खुफिया डेटाबेस परिवर्तनों का पता लगाते हैं तो Unlimited योजना सक्रिय हो जाती है।
- schedule.run.queued - जब शेड्यूलर पुन: स्कैन करता है तो सक्रिय हो जाता है। CI ऑर्केस्ट्रेशन के लिए उपयोगी।
पेलोड आकार
प्रत्येक डिलीवरी एक ही लिफाफे का उपयोग करती है: <code>id</code>, <code>type</code>, <code>created_at</code>, और ईवेंट-विशिष्ट <code>data</code>।
{
"id": "8f1c4e2a-8c3a-4b6f-9c0d-9b1e8f3c2a4d",
"type": "scan.completed",
"created_at": "2026-05-15T10:20:30.000Z",
"data": {
"scan": {
"id": "8f1c4e2a-8c3a-4b6f-9c0d-9b1e8f3c2a4d",
"target_hostname": "staging.example.com",
"mode": "passive",
"status": "completed",
"findings_count": { "critical": 0, "high": 1, "medium": 2, "low": 3, "info": 4 },
"report_url": "https://fixvibe.app/dashboard/scans/8f1c4e2a-..."
}
}
}Signing
FixVibe HMAC-SHA-256 के साथ सटीक कच्चे JSON शरीर पर हस्ताक्षर करता है। ईवेंट डेटा को पार्स करने या उस पर भरोसा करने से पहले हस्ताक्षर सत्यापित करें। शीर्षलेख:
fixvibe-signature: t=<timestamp>,v1=<hex hmac>fixvibe-event: scan.completedfixvibe-delivery: <uuid>(निष्क्रियता कुंजी)
import { createHmac, timingSafeEqual } from "node:crypto";
function verify(rawBody: string, header: string, secret: string) {
const parts = Object.fromEntries(header.split(",").map((p) => p.split("=")));
const signed = `${parts.t}.${rawBody}`;
const expected = createHmac("sha256", secret).update(signed).digest("hex");
const received = Buffer.from(parts.v1 ?? "", "hex");
const calculated = Buffer.from(expected, "hex");
return received.length === calculated.length && timingSafeEqual(received, calculated);
}Retries
किसी भी गैर-2xx प्रतिक्रिया, टाइमआउट, DNS विफलता, या डिलीवरी सुरक्षा अस्वीकृति को लगभग 24 घंटों के लिए घातीय बैकऑफ़ के साथ पुनः प्रयास किया जाता है। डिलीवरी पंक्तियाँ खाता → वेबहुक में प्रतिक्रिया स्थिति, संक्षिप्त प्रतिक्रिया अंश, प्रयास गणना और मृत-अक्षर स्थिति दिखाती हैं।
